XS✔ ◾ Move version/build display to Settings → Releases - #1018
Conversation
The version/build info shown at the bottom-left of the main sidebar was UI clutter; it's now surfaced only in Settings → Releases, next to the existing "Current Version" card. Closes #1016
PR Metrics✔ Thanks for keeping your pull request small.
Metrics computed by PR Metrics. Add it to your Azure DevOps and GitHub PRs! |
|
🚀 Pre-release build is available for this PR: |
|
🔭 crows-nest: ready-PR pipeline started — review → address → re-validate → gated merge. |
🔍 Muster review — PR #1018Bottom line: no blocking findings — review advisory only (degraded, single-lens). Review status
Findings summary
What was checkedThe diff ( No issues identified by the lens that ran. Note: because only one lens executed, treat this as advisory rather than a full inspection — no independent second opinion was obtained. |
|
✅ reviewed, addressed, green — awaiting human merge (auto-merge off). Muster review (degraded: codex-rescue lens unavailable) found 0 findings; local build/test/lint and all CI checks are green; PR is mergeable. |
|
🔭 crows-nest: ready-PR pipeline started — review → address → re-validate → gated merge. |
| try { | ||
| const info = await ipcClient.releaseChannel.getCurrentVersion(); | ||
| setCurrentVersion(info.version); | ||
| setCommitHash(info.commitHash ?? ""); |
There was a problem hiding this comment.
[nit] commitHash left stale if loadCurrentVersion fails after a prior success
loadCurrentVersion() only calls setCommitHash(info.commitHash ?? "") on success; on error only a toast fires and neither currentVersion nor commitHash are cleared. If the panel is reopened (isActive toggles) and the IPC call transiently fails after a previous successful load, the 'Build ' line (and the version) keeps showing stale data with no visual indication of the failure. This matches the pre-existing convention for currentVersion in this same function, so it is not a regression introduced by this PR — flagging for awareness only.
flagged by: code-review
There was a problem hiding this comment.
Declined: this mirrors the pre-existing pattern already used for currentVersion in the same function (no clearing on error) — this PR reuses that exact convention rather than introducing new stale-state behavior. Fixing it would mean changing error-handling semantics for currentVersion too, which is out of scope for #1016's UI relocation. Tracked as a follow-up if desired, not addressed here.
|
🔭 crows-nest / muster review — PR #1018 Lenses: code-review + codex-rescue (both ran independently) Findings: 0 blocking, 0 major, 0 minor, 1 nit
Bottom line: no blocking findings — review advisory only, PR is clean and correctly scoped to #1016. |
|
🔭 crows-nest / shipwright — address-review pass on PR #1018 Triage: 1 comment reviewed, 0 agreed, 0 discussed, 1 declined.
No code changes made. No blocking disagreement — head sha unchanged. |
|
🔭 crows-nest: pipeline complete — blocked. Reason: branch protections / required reviews not satisfied ( This isn't a fleet failure — the PR is ready; it just needs a human's approving review before it can merge (auto-merge is off anyway). Please review and approve when convenient. |
|
✅ Automated Release Created Successfully Release Details:
You can monitor the build progress in the Actions tab. |
Summary
The app version and build (commit hash) were shown at the bottom-left of the main sidebar, under the account details — this was UI clutter on the primary screen. This PR removes that display from the sidebar and surfaces the same information in Settings → Releases, next to the existing "Current Version" card.
Closes #1016
What changed
src/ui/src/components/layout/sidebar.tsxuseEffect+ state) and thev{version} ({commitHash})display block from the bottom of the sidebar.src/ui/src/components/settings/release-channels/ReleaseChannelSetting.tsxcommitHashstate, populated from the sameipcClient.releaseChannel.getCurrentVersion()call already used for the version, and rendered as aBuild {commitHash}line under the existing "Current Version" card.src/ui/src/components/settings/release-channels/ReleaseChannelSetting.test.tsxDecisions
getCurrentVersion()IPC call (already returns{ version, commitHash }) rather than adding a new IPC channel.ReleaseChannelSetting.tsx) already calls it too (just previously discardingcommitHash). No new backend surface is needed — this is purely a UI relocation.commitHashis truthy (same conditional-render pattern the sidebar used).commitHashcomes from theCOMMIT_HASHenv var, which is only set by the release CI workflows (release-electron-app.yml,pr-release.yml) viagit rev-parse HEAD. In local/Debug (npm run start) builds it's unset (null), so hiding the line avoids showing "Build " with nothing after it.Acceptance criteria
sidebar.tsx.ReleaseChannelSetting.tsx, which already renders under the "Releases" settings panel (ReleaseChannelSettingsPanel.tsx).Testing
Ran the project's own gates from a clean
npm ciin an isolated worktree:npm run build— passes (tsc, no errors).npm rebuild better-sqlite3 --build-from-source && npx vitest run --exclude 'src/ui/**'— 83 files / 929 tests passed.npm --prefix src/ui test— 45 files / 319 tests passed (includes the 2 new tests for the build line).npm run lint— clean (exit 0). One pre-existinginfo-level finding inCloud360LiveView.tsx(unrelated file, present onmainbefore this change) does not fail the--error-on-warningsgate.npm run format— no additional changes beyond what was already staged.Debug vs Release build verification (per the issue's task):
commitHashis sourced fromconfig.commitHash()→env.COMMIT_HASH, which is only populated by the release workflows (git rev-parse HEADwritten to.envbefore packaging in bothrelease-electron-app.ymlandpr-release.yml). In a Debug/dev run (npm run start, no CI) this env var is absent, socommitHashisnull/empty and the "Build" line correctly does not render — only "Current Version" (fromapp.getVersion(), i.e. thepackage.jsonversion) shows. In a Release/CI-packaged build,COMMIT_HASHis set, so the "Build<sha>" line renders. Both states are covered by the two new tests (commitHash: "abc123"andcommitHash: "").Follow-up items
None — this is a scoped UI relocation with no behavioural changes beyond where the info is displayed.
🤖 Generated with Claude Code