- Count additions/deletions per file as lines are parsed.
- Surface load failures and empty-diff states via StatusMessage.
- Pass the worktree base commit so diffs render against the branch
base, not just the working-tree HEAD.
Add WorktreeStateLabel observable property populated from
entity.Worktree?.State.ToString() in both BindAsync and
RefreshWorktreeAsync. CanMerge now requires WorktreeStateLabel == "Active"
so the button disables after a successful merge with removeWorktree:false.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
If git merge --abort throws, the repo is left mid-merge. Previously the
code logged a warning and returned a conflict result, giving the UI a
stale file list. Now it returns Blocked with an explicit message so the
caller knows manual resolution is required.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add GitService.CheckoutBranchAsync; compare targetBranch to current HEAD
before MergeNoFfAsync and switch when they differ. Returns Blocked if the
branch does not exist. Add three new tests (two service, one GitService).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Wire TaskResetService into DI and add WorkerHub.ResetTask with the
same InvalidOperationException/KeyNotFoundException error-translation
pattern as ContinueTask.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Window controls (min/close) were stroke-only paths — PathIcon fills
geometries, so only max rendered. Swap all three (and BrandCheck) to
closed filled shapes.
- Task rows now have a 1px LineBrush border + rounded 8px box with
subtle AccentSoft hover, matching the mock's visible row separation.
- "Open in explorer" button switched from icon-btn to btn class so it
matches "Open diff" / "Worktree" framing, with a proper Lucide-style
filled arrow geometry.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The Binding had no Path, so it bound to ListsIslandViewModel itself
and the UpperCase converter produced the fully-qualified type name,
which rendered as "CLAUDEDO.UI.VIEWMODELS.ISLAI..." in the header.
Replace with literal Text="NAVIGATOR".
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- A1: list-name eyebrow runs through UpperCase converter.
- D2: + Open-in-explorer icon button in AgentStrip (Process.Start on worktree path).
- D4: DeleteTaskCommand prompts inline confirm Window before deleting; shell
wires Details.CloseDetail to clear Tasks.SelectedTask and Details.DeleteFromList
to reload the current list.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>