Worker:
- Wire UseWindowsService + Microsoft.Extensions.Hosting.WindowsServices so
SCM's Service Control Protocol handshake succeeds. Previously the binary
exited immediately under sc start, leaving the service registered but
never running.
Installer:
- Pin SDK to .NET 9 (global.json) — SDK 10 dropped win-arm from its RID
graph, breaking restore of the WPF project; .NET 9 keeps win-arm AND
understands the .slnx solution format.
- Force SelfContained=true and default RID=win-x64 when PublishSingleFile
is set, so Rider Publish and CLI produce the same bundle.
- Dark theme: set Background/Foreground explicitly on WizardWindow and
SettingsWindow roots (WPF implicit styles don't cascade to derived
Window types). Custom ComboBox template + ComboBoxItem style so
dropdowns honour the dark palette instead of system defaults.
- Throttle download progress to one report per MB and overwrite the same
UI line (\r prefix marker) instead of appending per chunk.
- Register ClaudeDo in HKLM\...\Uninstall so it appears in Apps & Features.
Copy installer into InstallDir\uninstaller\ for the UninstallString, and
schedule a cmd.exe trampoline to handle the self-delete case when
Apps & Features launches the copy from inside the install dir.
- Treat sc.exe stop exit 1062 (ERROR_SERVICE_NOT_ACTIVE) as success.
- Delete the uninstall registry key during UninstallRunner.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The release workflow runs on a Linux container; building net8.0-windows +
UseWPF=true requires this opt-in property since .NET 8. No-op on Windows.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Removes SourceDirectory field (no longer in InstallContext), adds
dynamic Heading/Subheading/InstallDirEditable for FreshInstall vs Update
mode, and updates XAML to match sibling page style.
Placeholder edit to App.xaml.cs to keep the project building until Task 11
wires the new async detector.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Standalone WPF app (ClaudeDo.Installer) that handles full installation
and ongoing configuration of ClaudeDo. Two modes: wizard for first run,
tabbed settings panel for subsequent launches. Page-based extensibility
via IInstallerPage interface — adding new config sections requires only
one new class.
Install pipeline: dotnet publish, deploy binaries, write configs, init
DB (via SchemaInitializer from ClaudeDo.Data), register Windows Service,
create shortcuts. Dark theme matching the Avalonia app (forest teal accent).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>