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": "MCP-Server bei Claude registrieren",
|
||||
"registerMcpHint": "Führt 'claude mcp add' aus, damit Claude deine ClaudeDo-Aufgaben sehen und verwalten kann. Du kannst dies später ändern."
|
||||
},
|
||||
"systemCheck": {
|
||||
"title": "Systemprüfung",
|
||||
"subtitle": "ClaudeDo prüft dein System vor der Installation.",
|
||||
"recheck": "Erneut prüfen",
|
||||
"summary": {
|
||||
"running": "System wird geprüft…",
|
||||
"ok": "Alles in Ordnung.",
|
||||
"warnings": "{0} Warnung(en) gefunden.",
|
||||
"blocking": "{0} Problem(e) müssen behoben werden: {1}"
|
||||
}
|
||||
},
|
||||
"paths": {
|
||||
"title": "Datenpfade",
|
||||
"subtitle": "Lege fest, wo ClaudeDo seine Daten speichert.",
|
||||
@@ -525,6 +536,40 @@
|
||||
"continueAnyway": "Trotzdem fortfahren"
|
||||
}
|
||||
},
|
||||
"checks": {
|
||||
"git": {
|
||||
"title": "Git",
|
||||
"hint": "Installiere Git und stelle sicher, dass es im PATH liegt."
|
||||
},
|
||||
"gitIdentity": {
|
||||
"title": "Git-Identität",
|
||||
"hint": "Lege deine Git-Identität fest: git config --global user.name \"...\" und user.email \"...\"."
|
||||
},
|
||||
"ports": {
|
||||
"title": "Ports",
|
||||
"hint": "Gib den Port frei oder ändere ihn nach der Installation auf der Worker-Seite."
|
||||
},
|
||||
"writeAccess": {
|
||||
"title": "Schreibzugriff",
|
||||
"hint": "Wähle ein anderes Installationsverzeichnis oder starte den Installer als Administrator."
|
||||
},
|
||||
"claudeCli": {
|
||||
"title": "Claude CLI",
|
||||
"hint": "Installiere die Claude CLI und stelle sicher, dass sie im PATH liegt."
|
||||
},
|
||||
"claudeVersion": {
|
||||
"title": "Claude-CLI-Version",
|
||||
"hint": "Aktualisiere die Claude CLI auf eine neuere Version."
|
||||
},
|
||||
"claudeAuth": {
|
||||
"title": "Claude-Anmeldung",
|
||||
"hint": "Führe 'claude auth login' aus, um dich anzumelden."
|
||||
},
|
||||
"permissionModeAuto": {
|
||||
"title": "Berechtigungsmodus",
|
||||
"hint": "Aktualisiere die Claude CLI auf eine Version, die --permission-mode auto unterstützt."
|
||||
}
|
||||
},
|
||||
"planning": {
|
||||
"conflict": {
|
||||
"windowTitle": "Merge-Konflikt",
|
||||
|
||||
Reference in New Issue
Block a user