feat(installer): add SystemCheckPage with blocking-error gating
Adds a new wizard page (positioned right after Welcome, FreshInstall only) that auto-runs EnvironmentCheckService on entry and shows one row per check with status icon, localized title/message, and hint+help-link on failure/unknown. A "Recheck" button re-runs it, guarded against re-entrancy. IInstallerPage gets a BlocksNavigation default member; WizardViewModel's Next button now binds to CanGoNext, which the current page can veto (used here while a check run is in flight or a blocking Error+Failed result is present — Warnings and Unknown results never block). The summary line names the blocking checks so a disabled Next is self-explanatory. Wires up DI for the check pipeline (IProcessRunner, IPortOwnerResolver, per-run ClaudeCliLookup) and adds the checks.* / installer.systemCheck.* locale keys in en.json + de.json. Visual appearance is NOT verified — needs a manual pass in the running installer.
This commit is contained in:
@@ -481,6 +481,17 @@
|
||||
"registerMcp": "Register MCP server with Claude",
|
||||
"registerMcpHint": "Runs 'claude mcp add' so Claude can view and manage your ClaudeDo tasks. You can change this later."
|
||||
},
|
||||
"systemCheck": {
|
||||
"title": "System Check",
|
||||
"subtitle": "ClaudeDo checks your system before installing.",
|
||||
"recheck": "Recheck",
|
||||
"summary": {
|
||||
"running": "Checking your system…",
|
||||
"ok": "Everything looks good.",
|
||||
"warnings": "{0} warning(s) found.",
|
||||
"blocking": "{0} problem(s) must be fixed: {1}"
|
||||
}
|
||||
},
|
||||
"paths": {
|
||||
"title": "Data Paths",
|
||||
"subtitle": "Configure where ClaudeDo stores its data.",
|
||||
@@ -525,6 +536,40 @@
|
||||
"continueAnyway": "Continue anyway"
|
||||
}
|
||||
},
|
||||
"checks": {
|
||||
"git": {
|
||||
"title": "Git",
|
||||
"hint": "Install Git and make sure it is on PATH."
|
||||
},
|
||||
"gitIdentity": {
|
||||
"title": "Git Identity",
|
||||
"hint": "Set your git identity: git config --global user.name \"...\" and user.email \"...\"."
|
||||
},
|
||||
"ports": {
|
||||
"title": "Ports",
|
||||
"hint": "Free the port, or change it on the Worker page after install."
|
||||
},
|
||||
"writeAccess": {
|
||||
"title": "Write Access",
|
||||
"hint": "Choose a different install directory, or run the installer as administrator."
|
||||
},
|
||||
"claudeCli": {
|
||||
"title": "Claude CLI",
|
||||
"hint": "Install the Claude CLI and make sure it is on PATH."
|
||||
},
|
||||
"claudeVersion": {
|
||||
"title": "Claude CLI Version",
|
||||
"hint": "Update the Claude CLI to a newer version."
|
||||
},
|
||||
"claudeAuth": {
|
||||
"title": "Claude Login",
|
||||
"hint": "Run 'claude auth login' to sign in."
|
||||
},
|
||||
"permissionModeAuto": {
|
||||
"title": "Permission Mode",
|
||||
"hint": "Update the Claude CLI to a version that supports --permission-mode auto."
|
||||
}
|
||||
},
|
||||
"planning": {
|
||||
"conflict": {
|
||||
"windowTitle": "Merge conflict",
|
||||
|
||||
Reference in New Issue
Block a user