feat(installer): add Diagnose section to SettingsWindow
Re-runs the environment checks against the installed configuration (worker.config.json + detected install dir) without blocking navigation and without auto-running on window open, only on a "Recheck" click. Extracted the check-row rendering and check-run logic (busy state, summary, Recheck command) out of SystemCheckPage into a shared Checks/CheckListViewModel + Checks/CheckListView, composed by both SystemCheckPage (wizard) and the new DiagnosePage (settings) instead of duplicating it.
This commit is contained in:
@@ -161,6 +161,10 @@ regardless of severity (an indeterminate result — e.g. the CLI not found, so v
|
||||
can't be checked — must not strand the user; the underlying `Error`-severity check for the CLI
|
||||
itself, `ClaudeCliCheck`, is what blocks in that case).
|
||||
|
||||
The check-row rendering and the check-run logic (busy state, summary text, Recheck command) live
|
||||
in one place — `Checks/CheckListViewModel.cs` + `Checks/CheckListView.xaml` — composed by every
|
||||
page that hosts a check list, not duplicated per page.
|
||||
|
||||
`SystemCheckPage` (`Pages/SystemCheckPage/`) hosts the check list in the **FreshInstall** wizard
|
||||
only, registered via `PageResolver` at `Order = 1` (directly after `WelcomePage`); `WizardViewModel`
|
||||
filters it back out in `Update` mode along with Paths/Service/UiSettings. Checks run automatically
|
||||
@@ -169,8 +173,15 @@ on page entry (`LoadAsync`, guarded against double-entry). "Next" is disabled vi
|
||||
subscribes to `PropertyChanged` on the current page so a live recheck can flip it back. A "Recheck"
|
||||
button re-runs `EnvironmentCheckService.RunAllAsync` (disabled while already running).
|
||||
|
||||
`DiagnosePage` (`Pages/DiagnosePage/`) hosts the same `CheckListView` in `SettingsWindow` (Config
|
||||
mode only, `ShowInSettings = true` / `ShowInWizard = false`, `Order = 5` — after UiSettings).
|
||||
Nothing here blocks navigation and checks do **not** auto-run on load — only on a "Recheck" click.
|
||||
Unlike the wizard, its `InstallContext` is built from the **installed** configuration
|
||||
(`InstallerWorkerConfig.Load()` for `ClaudeBin`/`SignalRPort`, the shared `InstallContext` for
|
||||
`InstallDirectory`/`ExternalMcpPort`), refreshed on every `LoadAsync()` — not the wizard-default
|
||||
`InstallContext` the DI container hands out, which is only populated once a page's `ApplyAsync`
|
||||
(i.e. Save) runs.
|
||||
|
||||
**Not implemented (see merge-status note above):** a "Claude Help Me" button that launches an
|
||||
external terminal with a live `claude` session for setup troubleshooting, and a Diagnose section
|
||||
in `SettingsWindow` (Config mode) that re-runs the same checks against the installed configuration.
|
||||
Both were speced as follow-up tasks; both blocked before writing any code because their prerequisite
|
||||
(this section) wasn't on `main` yet.
|
||||
external terminal with a live `claude` session for setup troubleshooting. Its footer slot is
|
||||
reserved in `CheckListView.xaml`; still blocked on the same follow-up as before.
|
||||
|
||||
Reference in New Issue
Block a user