Skip to content

Smart#176

Merged
JasmineRRod merged 26 commits into
devfrom
smart
Jun 29, 2026
Merged

Smart#176
JasmineRRod merged 26 commits into
devfrom
smart

Conversation

@JasmineRRod

@JasmineRRod JasmineRRod commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

Summary of changes

  1. SMART support on Ubuntu (work in progress).
  2. Drive panel relocated to the left vertical tab.
image image

Still in to-do:

  1. Package smartctl dependency.
  2. Polish look and feel.
  3. Sync top and bottom panels for Benchmark and SMART usage.
  4. Move the event tab to the far right.

out of scope:

  1. smart data portal upload #177
  2. Implement retrieval of SMART data for Windows #59
  3. Implement retrieval of SMART data for MacOS #60

@JasmineRRod JasmineRRod self-assigned this Jun 22, 2026
@JasmineRRod JasmineRRod linked an issue Jun 22, 2026 that may be closed by this pull request
15 tasks

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds initial Linux SMART (smartctl JSON) support with snapshot persistence/replay, and restructures the UI to introduce a left-side main navigation (Drives / Benchmark / SMART) plus a SMART Reports table.

Changes:

  • Introduces SMART data acquisition via a privileged pkexec bash shell, SMART parsing, and GUI rendering in a dedicated SMART tab.
  • Adds persistent SMART snapshot storage (Derby/JPA) and a SMART Reports table for browsing/deleting/replaying snapshots.
  • Adds a new Drives tab and reorganizes the main window layout using a left vertical tab pane and a vertical split-pane.

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 15 comments.

Show a summary per file
File Description
jdm-core/src/main/java/jdiskmark/Smart.java SMART JSON parsing + privileged shell lifecycle + SMART querying
jdm-core/src/main/java/jdiskmark/SmartPanel.java SMART tab UI rendering for NVMe/ATA health sections
jdm-core/src/main/java/jdiskmark/SmartSnapshot.java JPA entity + snapshot save/load/delete APIs (incl raw JSON replay)
jdm-core/src/main/java/jdiskmark/SmartReportsPanel.java Snapshot list UI with selection-to-replay and delete actions
jdm-core/src/main/java/jdiskmark/Gui.java SMART tab refresh, snapshot load, snapshot save wiring
jdm-core/src/main/java/jdiskmark/MainFrame.java UI restructuring: left main navigation tabs + SMART integration
jdm-core/src/main/java/jdiskmark/DrivesPanel.java New Drives tab for selecting benchmark target and test directory
jdm-core/src/main/java/jdiskmark/BenchmarkRunner.java Optional pre-benchmark SMART fetch (Linux)
jdm-core/src/main/java/jdiskmark/App.java Persisted smartEnable config toggle
jdm-core/src/main/java/jdiskmark/MainFrame.form Adds SMART checkbox menu item to Options menu

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread jdm-core/src/main/java/jdiskmark/BenchmarkRunner.java
Comment thread jdm-core/src/main/java/jdiskmark/MainFrame.java
Comment thread jdm-core/src/main/java/jdiskmark/SmartReportsPanel.java
Comment thread jdm-core/src/main/java/jdiskmark/SmartReportsPanel.java
Comment thread jdm-core/src/main/java/jdiskmark/SmartPanel.java Outdated
Comment thread jdm-core/src/main/java/jdiskmark/Smart.java
Comment thread jdm-core/src/main/java/jdiskmark/DrivesPanel.java Outdated
Comment thread jdm-core/src/main/java/jdiskmark/SmartReportsPanel.java Outdated
Comment thread jdm-core/src/main/java/jdiskmark/SmartSnapshot.java
Comment thread jdm-core/src/main/java/jdiskmark/Gui.java
- Add prepare-smartctl.yml workflow to JDiskMark/jdm-deps to build
  smartctl 7.5 from source (ubuntu:22.04, glibc 2.35 target) and
  publish as a GitHub Release asset
- linux-deb.yml: fetch smartctl from jdm-deps before Maven build;
  extend smoke test to verify binary is present and runs
- jdm-deb/pom.xml: inject smartctl/ dir and polkit policy file into
  the DEB during the existing repack step (dpkg-deb -R/-b)
- template.postinst: install net.jdiskmark.smartctl.policy to
  /usr/share/polkit-1/actions/ for branded pkexec prompt
- Smart.java: resolveSmartctlPath() prefers bundled binary at
  \$APPDIR/../smartctl/smartctl with fallback to /usr/sbin/smartctl

    --app-content is silently ignored by jpackage when building DEB packages
    directly. Use the existing repack bash step (dpkg-deb -R/-b) to inject
    smartctl/ and the polkit policy file into the unpacked image before
    repacking. Also make the postinst polkit install non-fatal so headless
    CI runners without polkit installed don't fail the package hook.

commit 7f6b4ef
Author: James Mark Chan <jamesmarkchan@gmail.com>
Date:   Sat Jun 27 18:52:01 2026 -0700
config.gcRetryEnabled = GcDetector.gcRetryEnabled;
config.gcHintsEnabled = GcDetector.gcHintsEnabled;
config.multiFileEnabled = multiFile;
// config.enabledSmart = Smart.smartEnable; --- TODO in config ---

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this line can be removed

Comment thread jdm-core/src/main/java/jdiskmark/BenchmarkRunner.java
Comment thread jdm-core/src/main/java/jdiskmark/MainFrame.java
JasmineRRod and others added 5 commits June 28, 2026 21:43
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
JasmineRRod and others added 6 commits June 28, 2026 22:39
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@JasmineRRod JasmineRRod merged commit 0e0998d into dev Jun 29, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Implement retrieval of SMART data for Ubuntu

3 participants