Approved design for a Nuxt 3 site at claudedo.kuns.dev: "the page is the
app" concept (3-island layout), build-time release fetch, and a Nitro
release proxy that fronts the self-updater to hide the Gitea URL.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Children fan out from the parent's worktree HEAD and merge via a
generalized planning orchestrator (parent branch + children); child
roadblocks roll up to the parent review card.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Agent offloads out-of-scope work via SuggestImprovement; children run
automatically; new WaitingForChildren state; generalize planning's
parent/child machinery.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Externalize all prose prompts to editable files, collapse system+agent,
add an inline roadblock protocol detected by StreamAnalyzer.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Drop the changelog of completed/verified work — that lives in commits and
code. Keep only pending manual verification, the one open code item, and a
short "decided against" list to prevent re-proposing dropped ideas.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The generic Claude-Mailbox plugin already covers cross-session messaging,
so the ClaudeDo-internal integration is parked. architecture.md and ADRs
are deliberately skipped — per-project CLAUDE.md files are the living
architecture doc, and ADRs add little for a solo project.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
A test that spawns the actual claude binary shouldn't live in the suite —
dotnet test must never invoke Claude. §1.0 step 3 stays a manual check.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Spawns the actual claude binary and asserts exit code 0, a session id,
non-empty result, and output tokens > 0 (plan-verification §1.0 step 3).
Inert unless CLAUDE_AUTHENTICATED=1, since it needs an authenticated CLI.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- TaskRunner: extract worktree-vs-sandbox selection into
PrepareRunDirectoryAsync so RunAsync reads linearly (a small helper, not
a Strategy pattern — overkill for a two-way branch).
- App: drop the public static ServiceProvider locator; inject the provider
via constructor through AppBuilder.Configure(() => new App(services)).
Parameterless ctor + BuildAvaloniaApp() retained for the XAML designer.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Add error-path + git-backed happy-path tests for the five previously
untested ExternalMcpService tools: GetTaskWorktree, GetTaskDiff,
MergeTask (dry-run + not-Done guard), ListWorktrees, CleanupTaskWorktree.
Git-backed cases skip when git is unavailable.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
If WorktreeAddAsync succeeds but the worktrees-row insert throws, the
worktree was left on disk and branch undeleted with nothing tracking it.
Wrap the insert in try/catch and best-effort remove the worktree+branch
(non-cancellable) before rethrowing.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Audit found the backlog stale: many open items shipped, several large
features (localization, weekly report, daily notes, daily-prep) were
missing, and the removed tag system was still treated as live.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Live-switching, JSON locale files, shared ClaudeDo.Localization project,
English-only at launch with data-driven extensibility, installer parity.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Replace Windows-service/scheduled-task deployment docs with the Startup-folder
shortcut mechanism and the App's connection-failure prompt.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Startup-folder shortcut replaces the scheduled task; App only connects and
prompts on connection failure instead of auto-spawning a worker.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
A LocalSystem Windows service can't see the logged-in user's Claude CLI
authentication, so the worker now runs as the current user via a hidden
per-user logon Scheduled Task with restart-on-failure.
- Worker is WinExe (no console window) with a Serilog rolling file sink and
a single-instance mutex so the logon task, app ensure-running, and Restart
button can't fight over the SignalR port.
- Installer replaces the service steps (register/start/stop) with autostart
task steps, migrates the legacy ClaudeDoWorker service away on update, and
removes the task on uninstall. ServicePage drops the service-account UI.
- UI gains a WorkerLocator; the app ensures the worker is running at startup
and the Restart button kills+relaunches this install's worker process.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>