mika kuns and Claude Sonnet 4.6
ec4ec44603
feat(ui): add worker log state and 30s timer to shell VM
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-23 14:56:58 +02:00
mika kuns and Claude Sonnet 4.6
f906e7086c
feat(ui): add WorkerLogLevelToBrushConverter with tests
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-23 14:53:03 +02:00
mika kuns
e80e3fccc0
feat(ui): subscribe to WorkerLog SignalR event
2026-04-23 14:49:43 +02:00
mika kuns
e8056553fd
feat(worker): emit WorkerLog for merge, discard, reset
2026-04-23 14:47:45 +02:00
mika kuns
ea4d2d7c0c
feat(worker): emit WorkerLog events from TaskRunner
2026-04-23 14:46:10 +02:00
mika kuns
0a7fcae137
feat(worker): add WorkerLog SignalR event
2026-04-23 14:19:04 +02:00
mika kuns
80f6669585
feat(data): add WorkerLogLevel enum
2026-04-23 14:17:31 +02:00
mika kuns
ea7694566d
docs(superpowers): add worker-log footer implementation plan
2026-04-23 14:11:39 +02:00
mika kuns
da19eb807b
docs(superpowers): add worker-log footer design spec
2026-04-23 13:56:09 +02:00
mika kuns
0d37473575
docs(self-update): add implementation plan
2026-04-23 13:52:36 +02:00
mika kuns
6a4bf676ff
docs(self-update): add design spec for app + installer self-update
2026-04-23 13:44:52 +02:00
mika kuns
a135485339
docs(superpowers): add default-agents plan and design spec
2026-04-23 13:08:23 +02:00
mika kuns
3c420acd54
style(ui): polish list sidebar, kbd chips, and session terminal
...
- Introduce .list-count style for sidebar badges (brighter on active row).
- Bind list header More button to the correct OpenSettingsCommand.
- Give the per-list gear the standard icon-btn look.
- Center-align kbd chip content and title-bar/icon button content.
- Drop the kind-marker column in SessionTerminal and always show the
scrollbar so the terminal feels like one.
2026-04-23 13:08:17 +02:00
mika kuns
5ced1b97a6
refactor(ui): redesign list settings and merge modals with custom chrome
...
Both modals now use SystemDecorations=None with a draggable title bar,
sectioned layout matching the rest of the island shell, Escape-to-cancel,
and themed brushes instead of hard-coded colours. ListSettings adds a
Browse... button that reads agent frontmatter from arbitrary .md files.
2026-04-23 13:08:09 +02:00
mika kuns
1344beba56
fix(ui): select task on left-click even when reorder is disabled
...
The tunnel pointer handler returned early when CanReorder was false,
so clicking a row in smart/virtual lists never updated the details
pane. Select first, then bail out of the drag path; also skip drag
initialisation on nested buttons so the done-toggle click still fires.
2026-04-23 13:08:02 +02:00
mika kuns
c8c8bb4a47
feat(ui): replay persisted task log when selecting a task
...
Read the task's LogPath on selection and feed each line through the
live-stream parser so Claude output stays visible across app restarts.
Tail-caps at 2000 lines to avoid flooding the UI.
2026-04-23 13:07:54 +02:00
mika kuns
6f725d12f5
feat(ui): add queueing and scheduling from task row context menu
...
- Right-click on a task row exposes Send to queue / Remove from queue
and Schedule for... / Clear schedule actions.
- New virtual:queued list in the sidebar with live count.
- Sidebar counts are now computed (open per list, running, queued,
review) and refreshed on task- and worker-side events.
- Sending a task to the queue wakes the worker so it starts immediately.
2026-04-23 13:07:48 +02:00
mika kuns
9952ff98f2
feat(ui): use ClaudeTask icon for window and taskbar
...
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.
2026-04-23 13:07:38 +02:00
mika kuns
4a6d96b90e
feat(installer): show version info and offer worker restart in settings
...
- Surface Latest version and flag unparseable pre-release tags in
VersionLabel so users know why auto-update was skipped.
- Prompt to stop/start the worker service after Save, since the
worker only reads its config at process start.
2026-04-23 13:07:31 +02:00
mika kuns
2690332d13
feat(installer): record data directory in install manifest
...
Write the resolved DbPath parent into the manifest so UninstallRunner
can honour customised data locations instead of always assuming
~/.todo-app. Older manifests fall back to the default path.
2026-04-23 13:07:23 +02:00
mika kuns
31218fc205
feat(installer): harden database init and service setup steps
...
- InitDatabaseStep: create DbPath parent directory so custom paths work
- RegisterServiceStep: pass obj= argument so ServiceAccount is honoured
- StartServiceStep: poll for RUNNING state so downstream steps don't race
2026-04-23 13:07:16 +02:00
mika kuns
cc01871407
chore(settings): allow context7 MCP tools
2026-04-23 13:07:07 +02:00
mika kuns
e70ae7f6ce
feat(ui): add Restore default agents button to Settings modal
2026-04-23 12:21:02 +02:00
mika kuns
1830273a9d
feat(ui): add RestoreDefaultAgentsAsync to WorkerClient
2026-04-23 12:19:44 +02:00
mika kuns
1a10e6fa09
feat(worker): expose RestoreDefaultAgents hub method
2026-04-23 12:18:49 +02:00
mika kuns
df57c2bc05
feat(worker): seed default agents on startup
2026-04-23 12:15:28 +02:00
mika kuns and Claude Sonnet 4.6
990be09bd7
feat(worker): add DefaultAgentSeeder for first-launch agent seeding
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-23 12:12:55 +02:00
mika kuns
e275f67a5e
build(worker): ship DefaultAgents folder in build output
2026-04-23 12:09:13 +02:00
mika kuns and Claude Sonnet 4.6
ff3de1d100
feat(worker): add bundled default agent definitions
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-23 12:08:16 +02:00
Mika Kuns
a4e313dbad
improve Frontend
2026-04-22 17:09:00 +02:00
Mika Kuns
7de5510735
fix(ui): session terminal scrolls to end after layout so last line is fully visible
2026-04-22 15:42:02 +02:00
Mika Kuns
5e54275842
fix(ui): pin AgentStrip above metadata footer, terminal sits above it
2026-04-22 15:38:34 +02:00
Mika Kuns
6ac88235a7
fix(ui): session terminal auto-sizes to output, caps at 420px before scrolling
2026-04-22 15:34:47 +02:00
Mika Kuns
c599fdcb8c
refactor(ui): single scrollable DetailsIsland body with agent-settings gear flyout, remove Notes
2026-04-22 15:16:40 +02:00
Mika Kuns
b0b15e474e
feat(ui): always-visible Steps section at top of DetailsIsland with add-step input
2026-04-22 15:08:07 +02:00
Mika Kuns
839f862b7d
fix(ui): move agent-settings expander out of capped scroller so it expands properly
2026-04-22 13:50:35 +02:00
Mika Kuns
2901a769d8
fix(ui): use PlaceholderText instead of obsolete Watermark in ListSettingsModalView
2026-04-22 13:33:49 +02:00
Mika Kuns
e74e7eecf4
docs: refresh CLAUDE.md files for agent settings UI
2026-04-22 13:31:28 +02:00
Mika Kuns and Claude Sonnet 4.6
bba577888b
feat(ui): per-task agent settings in DetailsIsland
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-22 13:29:57 +02:00
Mika Kuns and Claude Sonnet 4.6
5784dbee94
feat(ui): open ListSettingsModal via context menu and gear button
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-22 13:27:05 +02:00
Mika Kuns
5348220e60
feat(ui): add ListSettingsModalView
2026-04-22 13:22:39 +02:00
Mika Kuns
cd0b95ef9a
feat(ui): add ListSettingsModalViewModel
2026-04-22 13:20:42 +02:00
Mika Kuns
fc1cfe59ec
feat(ui): WorkerClient supports list/task agent settings + ListUpdated event
2026-04-22 13:18:16 +02:00
Mika Kuns and Claude Sonnet 4.6
7c312161bb
feat(worker): add hub methods for list and task agent settings
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-22 13:16:46 +02:00
Mika Kuns
480eb0817a
feat(data): add TaskRepository.UpdateAgentSettingsAsync
2026-04-22 13:10:21 +02:00
Mika Kuns
1b94fa5c44
feat(data): add ListRepository.DeleteConfigAsync
2026-04-22 13:09:03 +02:00
Mika Kuns
02464b7f89
docs(plans): agent settings UI implementation plan
2026-04-22 12:06:31 +02:00
Mika Kuns
68f461d0e1
docs(specs): agent settings per list and per task UI reimplementation
2026-04-22 12:01:20 +02:00
Mika Kuns
cfb410dd4d
Merge task: Improve the Readme
2026-04-22 11:34:13 +02:00
Mika Kuns
b378fbf550
chore(settings): allow context-mode MCP tools locally
2026-04-22 11:03:43 +02:00
Mika Kuns
cb43bcdd10
docs(plans): add 2026-04-21 open-items consolidation
2026-04-22 11:03:40 +02:00
Mika Kuns
31420574db
feat(ui): show status messages and real diff-stats in DiffModal
...
- 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.
2026-04-22 11:03:37 +02:00
Mika Kuns
07dee31847
fix(data): use UTF-8 encoding for git process stdio
...
Ensures non-ASCII git output (branch names, paths, commit messages) is
read and written without locale-dependent corruption.
2026-04-22 11:03:24 +02:00
Mika Kuns and Claude Sonnet 4.6
4debd5ce09
fix(ui): disable Merge button after worktree is no longer Active
...
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 >
2026-04-22 10:36:09 +02:00
Mika Kuns and Claude Sonnet 4.6
1495c63e3d
fix(worker): return Blocked when MergeAbortAsync fails to avoid stuck repo
...
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 >
2026-04-22 10:30:44 +02:00
Mika Kuns and Claude Sonnet 4.6
953d93179d
fix(worker): honour targetBranch in MergeAsync by checking out before merge
...
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 >
2026-04-22 10:25:35 +02:00
Mika Kuns
1bc7fcc609
feat(ui): add Merge button to DiffModal
2026-04-22 09:53:11 +02:00
Mika Kuns
c911717a3b
feat(ui): add Merge command to DiffModal
2026-04-22 09:53:07 +02:00
Mika Kuns
949911f6c8
feat(ui): attach MergeModal to DetailsIsland
2026-04-22 09:53:03 +02:00
Mika Kuns
f3a58a6515
feat(ui): wire DetailsIsland ApproveMerge through MergeModal
2026-04-22 09:52:59 +02:00
Mika Kuns
ee4cd706ef
chore(app): register MergeModalViewModel
2026-04-22 09:47:19 +02:00
Mika Kuns
e11b01951e
feat(ui): add MergeModalView
2026-04-22 09:46:33 +02:00
Mika Kuns
3d0cc4ffed
feat(ui): add MergeModalViewModel
2026-04-22 09:46:20 +02:00
Mika Kuns
4585b20f80
feat(ui): add MergeTaskAsync and GetMergeTargetsAsync to WorkerClient
2026-04-22 09:44:48 +02:00
Mika Kuns
c53b5878cf
feat(worker): expose MergeTask and GetMergeTargets on WorkerHub
2026-04-22 09:44:22 +02:00
Mika Kuns
c13ae437f7
chore(worker): register TaskMergeService
2026-04-22 09:43:34 +02:00
Mika Kuns
5780879629
test(worker): cover GetTargetsAsync and dirty-tree block
2026-04-22 09:41:31 +02:00
Mika Kuns
2bcd5ef9bd
test(worker): cover merge conflict auto-abort
2026-04-22 09:41:31 +02:00
Mika Kuns
63eb860e40
test(worker): cover diverged non-conflicting merge
2026-04-22 09:41:30 +02:00
Mika Kuns
e80ac7de49
test(worker): cover TaskMergeService removeWorktree path
2026-04-22 09:41:30 +02:00
Mika Kuns
3331c24898
feat(worker): implement TaskMergeService happy path
2026-04-22 09:37:35 +02:00
Mika Kuns
1c20d8f846
feat(worker): scaffold TaskMergeService with pre-flight checks
2026-04-22 09:36:16 +02:00
Mika Kuns
77a1460e3a
feat(git): add ListConflictedFilesAsync
2026-04-22 09:31:36 +02:00
Mika Kuns
21a1870fd7
feat(git): add MergeAbortAsync
2026-04-22 09:29:24 +02:00
Mika Kuns
3ebbdb3f6e
feat(git): add MergeNoFfAsync returning (exitCode, stderr)
2026-04-22 09:27:47 +02:00
Mika Kuns
535d0c5558
feat(git): add IsMidMergeAsync
2026-04-22 09:25:10 +02:00
Mika Kuns
2d807aa606
feat(git): add ListLocalBranchesAsync
2026-04-22 09:23:35 +02:00
Mika Kuns
93ee7b72d5
feat(git): add GetCurrentBranchAsync
2026-04-22 09:22:41 +02:00
Mika Kuns
32ef1b389a
docs: clarify merged-with-cleanup-warning result shape
2026-04-22 09:17:43 +02:00
Mika Kuns
0885518a68
docs: add worktree merge implementation plan
...
23 TDD-sized tasks covering GitService additions, TaskMergeService,
SignalR surface, MergeModal view/vm, and wiring into DetailsIsland
plus DiffModal. Each task: failing test -> implement -> green -> commit.
2026-04-22 09:16:38 +02:00
Mika Kuns
944d3bd3e8
docs: add worktree merge design spec
...
Captures decisions for merging a task worktree into a target branch:
merge-commit strategy, dual UI entry (Details island + DiffModal),
per-merge cleanup checkbox, pre-flight + abort-on-conflict.
2026-04-22 09:08:44 +02:00
Mika Kuns
fb89e02b02
docs: note ResetTask hub method and TaskResetService
2026-04-21 17:46:00 +02:00
Mika Kuns
58c8210afa
fix(ui): correct Reset button tooltip wording
2026-04-21 17:44:50 +02:00
Mika Kuns
2ce6b7bd3a
feat(ui): add Continue and Reset buttons to agent strip
2026-04-21 17:44:00 +02:00
Mika Kuns
f90d3d8375
fix(ui): early-return in ResetAsync when ConfirmAsync is unwired
2026-04-21 17:42:36 +02:00
Mika Kuns
b03e858a8f
feat(ui): add Continue and Reset commands to DetailsIslandViewModel
2026-04-21 17:40:32 +02:00
Mika Kuns
2278b516ea
feat(ui): add ContinueTaskAsync and ResetTaskAsync to WorkerClient
2026-04-21 17:37:41 +02:00
Mika Kuns and Claude Sonnet 4.6
219a231f32
feat(worker): expose ResetTask hub method
...
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 >
2026-04-21 17:35:37 +02:00
Mika Kuns and Claude Sonnet 4.6
74eb36d3c0
feat(worker): add TaskResetService for discard + reset flow
...
Orchestrates worktree discard, task reset to Manual, and SignalR broadcast.
Includes integration tests (happy path + running-task rejection).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-21 17:31:52 +02:00
Mika Kuns
202236a45b
feat(data): add TaskRepository.ResetToManualAsync
2026-04-21 17:26:01 +02:00
Mika Kuns
88be19a231
test(worker): strengthen DiscardAsync test (cleanup + branch assertion)
2026-04-21 17:23:58 +02:00
Mika Kuns and Claude Sonnet 4.6
44203f3c67
feat(worker): add WorktreeManager.DiscardAsync for task reset
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-21 17:21:08 +02:00
Mika Kuns
133774cb86
docs: add implementation plan for continue and reset buttons
2026-04-21 16:47:51 +02:00
Mika Kuns
a3bb557d76
docs: add spec for continue and reset buttons on failed tasks
2026-04-21 16:43:54 +02:00
Mika Kuns
23f8fddc4d
docs: add UI-rewrite notes, plans, and stream-formatter spec
2026-04-21 15:56:19 +02:00
Mika Kuns
a180e8446c
chore(worker): tweak launchSettings
2026-04-21 15:56:14 +02:00
Mika Kuns
0406d35b61
style(ui): polish islands and remove terminal traffic-light dots
2026-04-21 15:56:07 +02:00
Mika Kuns
e6b37624a1
feat(ui): add settings modal and wire to worker hub
2026-04-21 15:55:53 +02:00
Mika Kuns
fca5d57fef
feat(worker): extend ClaudeArgsBuilder with MaxTurns and PermissionMode
2026-04-21 15:55:40 +02:00
Mika Kuns
cfb9ca1ca4
feat(worker): add WorktreeMaintenanceService for idle-worktree cleanup
2026-04-21 15:55:35 +02:00