feat(settings): add Info section with version, runtime, and diagnostics#413
feat(settings): add Info section with version, runtime, and diagnostics#413OfflinePing wants to merge 3 commits into
Conversation
Adds a new "Info" section to the Settings screen that displays: - About card: server version, UI version/source, runtime type (electron/tauri/web), platform, OS with CPU architecture detection, server URL, workspace root - Updates card: placeholder "Check for updates" button, ready for future integration with the existing dev release monitor - Diagnostics card: log scope dropdown (Summary only / Summary + workspace logs), Copy to clipboard, Download .txt — generates a structured diagnostic report with metadata and optional workspace log entries All 7 locales have the new i18n keys (English canonical, others fall back). No server changes needed — version/runtime info comes from existing GET /api/meta and client-side navigator detection. No sensitive data (API keys, env values) is included in diagnostic reports.
|
@OfflinePing - Thanks for the PR A screenshot of how it looks will be helpful |
|
I want you to perform the gatekeeper checks for latest PR state check for regressions |
|
PR builds are available as GitHub Actions artifacts: https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/25578809367 Artifacts expire in 7 days. |
|
Gatekeeper review for latest PR state. I understood the request as: review PR #413 ruthlessly for regressions, implementation quality, and better approaches. I did not make code changes. Findings
The
The UI renders a disabled pill whose label says either “latest version” or “version available”, then separately renders “Check for updates” as plain note text. There is no actionable link to
When
Returning a function from
If clipboard access is denied or unavailable, the button does nothing and gives no feedback. Since browser clipboard permissions are commonly restricted, this should show a failure state or provide download as the fallback message.
VerificationI attempted:
Both are blocked in this worktree because dependencies are missing/unresolved ( RecommendationDo not merge as-is. The diagnostic log export needs privacy hardening first, and the Updates card should either be fully wired to the existing release metadata/action path or removed until it is actually actionable. -- |
|
I will remove them and make sure the users privacy is ensured |
…ction, lifecycle - Redact common secret patterns (API keys, tokens, bearer auth, URL credentials) from diagnostic log exports to prevent accidental credential leaks - Add warning message when "Summary + workspace logs" scope is selected urging users to review output before sharing - Wire Updates card to serverMeta.support.latestServerVersion/Url for stable releases, synced with existing release notification store - Show "Download update" link button when a newer version is available, add Refresh button to re-fetch server metadata - Fix OS/CPU architecture detection: use getHighEntropyValues() async API on Chromium browsers, show "(arm64)" suffix when resolved - Fix SolidJS lifecycle: use onCleanup() instead of returning from createEffect to properly clean up feedback timers - Show clipboard error message when copy fails - Remove unrelated contextUsagePanel.labels.familyCost from all 7 locales
c877261 to
93c4e2f
Compare
|
check again |
|
Re-check of latest PR state after I understood the request as: re-run the gatekeeper review after the author’s follow-up changes. Assumption: the local PR worktree reflects the latest PR branch state. I did not make code changes. Findings
Two of the redaction rules preserve the original secret instead of replacing it:
This means the privacy fix does not actually satisfy the prior blocker. Since the diagnostics feature exports logs explicitly for sharing, this remains a merge blocker.
The resource calls
The async
The warning is an improvement, but there is still no explicit confirmation before copying/downloading logs. Given this feature exports workspace logs, I still recommend requiring a deliberate confirmation step when Previously Raised ItemsResolved or improved:
VerificationI re-ran:
Both remain blocked in this worktree because dependencies are unresolved/missing ( RecommendationStill do not merge as-is. The redaction bug is a hard blocker because it gives a false sense of safety while preserving secrets in exported diagnostics. Fix the redaction replacements, force-refresh metadata for the Refresh action, and correct the unsupported-upgrade update-link logic before another pass. -- |
…onfirmation - Fix two broken redaction patterns that leaked secrets (GitHub tokens appended "-redacted" instead of replaced; API key patterns used no-op $& replacement) - Fix force-refresh race condition by replacing forceNext signal with createResource mutate(), bypassing SolidJS effect scheduling order - Add explicit checkbox confirmation before exporting diagnostic logs containing workspace data, with auto-reset on scope change - Strip pre-release suffixes and leading "v" prefix from version strings before semver comparison to prevent parse failures silently hiding updates - Include async OS architecture (Chromium getHighEntropyValues) in diagnostic report output, not just the UI row - Fix Solid lifecycle: use onCleanup for feedback timer cleanup - Show clipboard failure error message when copy is denied - Consolidate navigator.userAgentData casts into typed UserAgentData interface - Remove 3 unused i18n keys and 1 dead CSS class - Remove redundant refetch() call and hardcoded 3s timeout on refresh button - Remove unrelated contextUsagePanel.labels.familyCost from all 7 locales
|
Check now |
|
Re-check of latest PR state after I understood the request as: re-run the gatekeeper review after the latest fixes. Assumption: the local PR worktree reflects the current PR branch state. I did not make code changes. FindingsNo remaining merge-blocking findings from static review of the updated implementation. Prior Blockers Re-checked
Residual Notes
VerificationI re-ran:
Both remain blocked in this worktree because dependencies are unresolved/missing ( RecommendationFrom static review, this is no longer blocked by the issues I raised. I would still require a clean CI/typecheck/build result before merge because local verification is not possible in this worktree. -- |
Can you please fix this. |
|
@OfflinePing - The workspace log, what is the expectation here? It seems we are collecting all the workspace.log event and these are log events from individual opencode instances. We need to remove this feature for now, rest all are good |
Working on it later this day! Thanks |

Summary
Adds a new Info section to the Settings screen, giving users quick visibility into their CodeNomad version, runtime environment, and a way to collect diagnostic data for bug reports.
Closes #412
Changes
New component:
info-settings-section.tsx— renders three cards:serverMeta.update)New styles:
settings-info.css— info row layout, select row, toast feedback, update noteWiring: Added
"info"toSettingsSectionIdunion, registered nav item and routing case insettings-screen.tsx, imported CSS incontrols.cssi18n: 20 new keys added to all 7 locales (English canonical, others fall back via existing fallback chain)
Design decisions
GET /api/metaendpoint and client-sidenavigatordetectionnavigator.userAgentfor Linux/Windows/macOSVerification
tsc --noEmitpasses (0 errors)vite buildbundles successfully