Skip to content

feat(ui): add About SlashIt with build diagnostics - #297

Merged
shingonoide merged 5 commits into
mainfrom
task-0f435f95-5bff-4f48-bd07-1c23e63ae60a
Nov 2, 2026
Merged

shingonoide merged 5 commits into
mainfrom
task-0f435f95-5bff-4f48-bd07-1c23e63ae60a

Conversation

@shingonoide

@shingonoide shingonoide commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Adds an About SlashIt dialog, opened from the Settings page. It shows the product name, version, build type, source commit with its provenance, operating system, executable path, and data directory. A Copy Diagnostics action copies the same facts as plain Label: value lines.

Changes

  • src-tauri/build.rs records the source commit at build time and exposes it to the binary.
  • src-tauri/src/source_provenance.rs classifies the source state. A build is described as an exact commit only when the recorded state proves it. Otherwise the dialog shows that the source is modified or unverified, and it never reports an unverified build as an exact match.
  • src-tauri/src/commands/updater.rs exposes the application metadata and provenance through a Tauri command.
  • src/components/about_dialog.rs renders the dialog and the diagnostics copy action.
  • src/pages/settings.rs adds the entry point. src/services/updater_service.rs carries the matching fields.

Build type is taken from the debug flag. SLASHIT_RELEASE_CHANNEL is intentionally not consulted.

Validation

Run on the change before publication:

  • slashit-ui tests filtered to source_provenance and about updater: 55 passed.
  • slashit-frontend tests filtered to about_dialog: 10 passed.
  • cargo clippy --all-targets for slashit-ui and slashit-frontend: exit 0. The frontend warnings are in files this change does not touch.

Known limitations

  • The dialog's open and close behavior is covered through the state mapping and a generation counter. No test renders the component, so the rendered dialog has not been checked by a component test.
  • The frontend AppAbout type mirrors the backend struct by hand. Nothing cross-checks the two field lists beyond the review.
  • Formatting: the touched files already differ from rustfmt --edition 2021 --check on main. That drift predates this change and is not addressed here.
  • Hosted CI and the desktop acceptance run are the authoritative results for this branch. Confirm them on this PR before marking it ready.

A build made from a tree with uncommitted modifications used to show the
commit it started from as if it were an exact snapshot. The build now
records whether its tree was clean, whether it had modifications, or
whether the state could not be read, and the About dialog labels the commit
with that state. A commit supplied by the builder is reported as unverified,
since the tree it describes is not checked.

Build-time state is read from git status, which leaves ignored build output
out of the result. Cargo reruns the build script when HEAD, the index or any
tracked file changes, so an edit after a build cannot leave a stale record.
A new file that is neither tracked nor staged does not trigger that rerun.

The provenance rules live in a std-only module that build.rs and the
application both compile, so the recorded value and its reader cannot
disagree.
Watch only Git control paths that exist, read Git output without dropping
non-UTF-8 bytes, and list untracked files explicitly so a status
configuration cannot hide them. Document that a commit supplied by the
builder must be a commit id and that frontend assets in dist are outside
the check.
A clean source tree does not show that the packaged frontend matches the
commit: its assets come from the dist/ directory, which Git ignores. The
About dialog therefore never presents a build as an exact match of its
commit. A build with a known commit and a clean tree now reports that
commit as unverified, and a build with uncommitted source changes is still
reported as modified.
@coderabbitai

coderabbitai Bot commented Nov 2, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 2 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

Run configuration
Commits

Reviewing files that changed from the base of the PR and between 14f170b and 1abfa2c.

Files selected for processing: 10
  • src-tauri/build.rs
  • src-tauri/src/commands/gui_admission.rs
  • src-tauri/src/commands/mod.rs
  • src-tauri/src/commands/updater.rs
  • src-tauri/src/lib.rs
  • src-tauri/src/source_provenance.rs
  • src/components/about_dialog.rs
  • src/components/mod.rs
  • src/pages/settings.rs
  • src/services/updater_service.rs

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@shingonoide
shingonoide marked this pull request as draft November 2, 2026 07:58
@shingonoide shingonoide changed the title Task A, About SlashIt feat(ui): add About SlashIt with build diagnostics Nov 2, 2026
@shingonoide
shingonoide marked this pull request as ready for review November 2, 2026 08:54
@shingonoide
shingonoide merged commit 3f462a5 into main Nov 2, 2026
30 of 31 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.

1 participant