## Bug
Clicking the maximize control in the custom title bar makes the main window disappear/hide instead of filling the screen. Restore is then hard or impossible.
## Where
`MainWindow` uses custom client-area chrome, so the OS does not manage maximize:
- `src/ClaudeDo.Ui/Views/MainWindow.axaml:14-16` — `WindowDecorations="BorderOnly"`, `ExtendClientAreaToDecorationsHint="True"`, `ExtendClientAr
ClaudeDo-Task: 7d3d9501a8eb4111b9d433fd917f5a22
- Drive modal title-bar dragging manually via pointer capture + Window.Position;
Avalonia 12's BeginMoveDrag and VisualRoot-as-Window cast no longer work
(VisualRoot is a TopLevelHost). Applies to ModalShell and WorktreeModalView.
- Toggle the MainWindow maximize button between maximize/restore glyphs on
WindowState changes (adds Icon.WinRestore geometry).
- Add the ToggleButton.day-toggle style used by the Prime weekday picker row.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Add list context-menu command (per-list mode) and Help menu entry (global mode) for the WorktreesOverviewModal; register VM and factory in DI.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Drops TagEntity, TagRepository, and tag wiring across data layer, worker,
and UI. Adds RemoveTags migration to clean up schema.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Stops and starts the ClaudeDoWorker Windows service via
ServiceController. SignalR auto-reconnect plus the existing
ConnectionRestoredEvent handle the refresh, so the UI repopulates
counters and the active list once the worker is back up.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replaces fixed 260/*/320 columns with two GridSplitters between Lists/Tasks/Details. Min widths preserved (200/320/280). Right splitter hides when ShowDetails is false.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Self-update for app and installer. Integrates cleanly with the
worker-log-footer feature that landed on main in parallel — the
shell VM now carries both worker-log state and update-check state,
and MainWindow hosts both the update banner and the footer log line.
Conflict resolved in IslandsShellViewModel.cs: kept nullable property
types from main's test-only parameterless constructor work, and added
the UpdateCheck property exposing the injected service.
Expose the .ico as an Avalonia resource, set it on MainWindow, and
swap the custom SystemDecorations=None for BorderOnly so the icon
appears on the taskbar and window can be resized normally.
- 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>
Add a RadialGradientBrush border (DeepBrush center → VoidBrush edges)
filling the island row. Island BoxShadow was already set to IslandShadow
token — no change needed there.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- app: ClaudeTask.ico wired as ApplicationIcon and MainWindow.Icon
via avares URI
- installer: ClaudeTaskSetup.ico wired as ApplicationIcon and embedded
as a WPF Resource so WizardWindow and SettingsWindow can reference it
via pack URI
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Lists (320px) and Detail (500px) borders no longer cap the 3-column
grid — star-sizing (1*:2*:1.5*) now fills the window, reducing the
dead whitespace between columns.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace flat columns with rounded island panels on a dark base.
Remove GridSplitters, add gap-based spacing between islands.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add Background="Transparent" and HorizontalAlignment="Stretch" to the
DataTemplate roots in MainWindow.axaml and TaskListView.axaml so that
DoubleTapped, PointerPressed and ContextFlyout fire reliably across the
entire row surface.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add PointerPressed handlers on list/task item templates that set SelectedList/SelectedTask on right-click before the ContextFlyout opens
- Add CanAddTask guard and NotifyCanExecuteChangedFor on CurrentListId so Add Task menu item is disabled when no list is selected
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
App: build a ServiceProvider in Program.cs (AppSettings, SqliteConnectionFactory,
all repositories, GitService, WorkerClient, all view-models), apply schema, then
hand control to Avalonia. App.OnFrameworkInitializationCompleted resolves
MainWindowViewModel from the container.
Ui:
- AppSettings POCO loaded from ~/.todo-app/ui.config.json (db path, hub url).
- WorkerClient wraps HubConnection with auto-reconnect, exposes IsConnected and
ActiveTasks plus C# events for TaskStarted/Finished/Message/Updated and
WorktreeUpdated; all inbound events are marshalled to the UI thread.
- ViewModels: MainWindow (lists CRUD via ListEditor dialog), TaskList (load by
list, add/edit/delete, auto WakeQueue on agent+queued create), TaskItem
(RunNow gated on connection + status), TaskDetail (description, result, live
ndjson rolling buffer of 500 lines, worktree branch/diff with merge/keep/
discard via GitService), StatusBar, ListEditor, TaskEditor.
- Views: 3-pane MainWindow (lists | tasks | detail) with GridSplitters, status
bar, dialog windows for the editors. Status badges via StatusColorConverter.
- Markdown rendering, folder picker, delete-confirmation, settings dialog and
scroll-to-bottom on the live log are intentionally TODO -- functional
scaffold only.
Tests: also debounce the FIFO queue test (poll instead of Task.Delay(200)) so
the assertion isn't racy when the suite runs alongside the slower git tests.
38 tests pass.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Create .slnx with five projects, wire references (App->Ui->Data,
Worker->Data, Tests->Worker+Data), install Avalonia/MVVM/SignalR.Client/
Sqlite/Hosting packages, and add schema.sql per docs/plan.md.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>