Mika Kuns
7363e48496
fix(ui): address code review findings
...
- Fix event handler leak in TaskDetailView.OnDataContextChanged
(unsubscribe from previous ViewModel before subscribing to new one)
- Move FormatFile call off UI thread with Task.Run to prevent freeze
on large log files
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-14 16:47:46 +02:00
Mika Kuns
f8be2c178b
feat(ui): add config override fields to TaskEditorView
...
Adds Model, SystemPrompt, and AgentPath override fields to TaskEditorViewModel and TaskEditorView. Wires agent loading from WorkerClient in TaskListViewModel before opening the editor dialog.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 16:39:50 +02:00
Mika Kuns
699fe8a148
feat(ui): complete Batch 2 — LiveText display, start feedback, modal theming, ListEditor config
...
- Replace LiveLines with formatted LiveText + StreamLineFormatter
- Add log reload from disk for completed tasks
- Add start feedback (starting.../running) on detail and list views
- Apply dark theme (WindowBgBrush, AccentBrush) to editor modals
- Add model/system-prompt/agent-path config to ListEditorView
- Wire config loading/saving in MainWindowViewModel
- Fix duplicate AgentInfo DTO (use canonical Data.Models version)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-14 16:36:40 +02:00
Mika Kuns
0764bb30ab
feat(ui): replace LiveLines with formatted LiveText, add log reload and start feedback
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 16:28:12 +02:00
Mika Kuns
503fd69cd1
feat(ui): add starting state feedback to task list
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 16:27:04 +02:00
Mika Kuns
365ecba990
feat(ui): add StreamLineFormatter for NDJSON stream parsing
...
Parses Claude CLI stream-json output into human-readable text.
Handles text deltas, tool use, results, API retries, and trims large files.
All 13 tests pass.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 16:22:36 +02:00
Mika Kuns
945a1eef11
feat(worker): default to claude-sonnet-4-6 when no model configured
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 16:20:48 +02:00
Mika Kuns
026df8d8f6
feat(ui): add RunNowRequestedEvent and GetAgentsAsync to WorkerClient
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 16:20:39 +02:00
Mika Kuns
95c8cc8372
fix(ui): allow RunNow for any non-running task, not just queued
2026-04-14 15:35:02 +02:00
Mika Kuns
c1c4c75979
refactor(worker): remove MessageParser (replaced by StreamAnalyzer)
2026-04-14 14:12:21 +02:00
Mika Kuns
03728c8e4a
docs(worker): update CLAUDE.md with CLI modernization changes
2026-04-14 14:10:46 +02:00
Mika Kuns
adc5a16afc
feat(worker): add ContinueTask routing to QueueService
2026-04-14 14:04:28 +02:00
Mika Kuns
6cb8012d82
feat(worker): add ContinueTask, GetAgents, RefreshAgents hub methods and RunCreated broadcast
2026-04-14 14:04:17 +02:00
Mika Kuns
76473dd92a
refactor(worker): rewrite TaskRunner with config resolution, retry, and continue support
2026-04-14 14:02:57 +02:00
Mika Kuns
1cdaaf9fd2
refactor(worker): simplify ClaudeProcess to accept pre-built args and use StreamAnalyzer
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 11:45:23 +02:00
Mika Kuns
8825351526
feat(worker): add AgentFileService for filesystem agent management
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-14 11:39:24 +02:00
Mika Kuns
54c4d3cf93
feat(worker): extend RunResult with structured output, session ID, and token metrics
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-14 11:38:39 +02:00
Mika Kuns
f57cdb7cb4
feat(data): extend TaskRepository with model, system_prompt, agent_path columns
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-14 11:37:08 +02:00
Mika Kuns
8b342bcc21
feat(worker): add StreamAnalyzer for rich NDJSON stream parsing
2026-04-14 11:36:58 +02:00
Mika Kuns
dab461cc41
feat(worker): add ClaudeArgsBuilder for dynamic CLI argument construction
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-14 11:35:46 +02:00
Mika Kuns
5232d5f130
feat(data): add GetConfigAsync and SetConfigAsync to ListRepository
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-14 11:34:16 +02:00
Mika Kuns
19a210406e
feat(data): add TaskRunRepository with CRUD and query methods
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-14 11:31:34 +02:00
Mika Kuns
02aaa9da64
feat(data): add ListConfigEntity, TaskRunEntity, AgentInfo models and task config fields
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-14 11:27:04 +02:00
Mika Kuns
36ae6532b4
feat(data): add list_config, task_runs tables and task config columns
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-14 11:25:12 +02:00
Mika Kuns
028cd9a061
style(ui): replace blue selection highlight with dimmed green
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-14 10:58:41 +02:00
Mika Kuns
cd91120552
style(ui): increase text contrast for better readability
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-14 10:54:35 +02:00
Mika Kuns
c3fed45481
style(ui): island layout with Warm Charcoal theme (Rider-style)
...
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 >
2026-04-14 10:52:52 +02:00
Mika Kuns
5f51fe9621
fix(ui): replace deprecated Watermark with PlaceholderText
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-14 10:38:06 +02:00
Mika Kuns
c44aefde77
style(ui): add strikethrough and dimming for completed tasks
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 10:36:06 +02:00
Mika Kuns
ff5e56a6f0
feat(ui): add global keyboard shortcuts (Ctrl+N, Ctrl+L, Ctrl+R, Ctrl+Shift+N)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 10:33:48 +02:00
Mika Kuns
2dcfc7e352
feat(ui): add inline add handlers, checkbox click, and task keyboard shortcuts
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 10:33:45 +02:00
Mika Kuns
a44c104940
feat(ui): add auto-save LostFocus handlers and tag input KeyDown
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 10:31:54 +02:00
Mika Kuns
df132e8be1
style(ui): redesign TaskDetailView with editable fields, tag chips, and accent styling
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 10:30:17 +02:00
Mika Kuns
eb7c1ebf69
style(ui): redesign task rows with checkboxes, inline add field, remove toolbar
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 10:29:44 +02:00
Mika Kuns
2d6b5bbaff
style(ui): redesign MainWindow with reactive layout, sidebar polish, and list header
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 10:27:49 +02:00
Mika Kuns
5b6c095a89
fix(di): register TagRepository in TaskDetailViewModel constructor
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 10:25:22 +02:00
Mika Kuns
f51278e1aa
feat(ui): wire TaskDetail changes back to task list refresh
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 10:25:16 +02:00
Mika Kuns
28a0d9b11f
feat(ui): make TaskDetailViewModel editable with auto-save and tag CRUD
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 10:24:10 +02:00
Mika Kuns
a4da2e23a1
feat(ui): add inline task creation, toggle-done, and list name to TaskListViewModel
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 10:23:58 +02:00
Mika Kuns
0796b3c2d5
feat(ui): add ToggleDone command and checkbox state to TaskItemViewModel
2026-04-14 10:21:47 +02:00
Mika Kuns
3c52e9c67f
feat(ui): add colored dot brush to ListItemViewModel
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-14 10:20:59 +02:00
Mika Kuns
d8c628c15a
style: add Forest Teal accent resources and force dark theme
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-14 10:20:58 +02:00
Mika Kuns
a548d41d18
feat(ui): add CheckboxBorderConverter for task status circles
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 10:20:22 +02:00
Mika Kuns
473e0f71d5
fix(ui): re-evaluate RunNow CanExecute when worker connection changes
...
Subscribe to WorkerClient.PropertyChanged in TaskListViewModel and call
NotifyCanExecuteChanged on every TaskItemViewModel.RunNowCommand when
IsConnected flips, so the button enables immediately on reconnect without
waiting for the next task DB refresh.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-13 15:46:10 +02:00
Mika Kuns
981b8e4a3d
fix(ui): make list and task rows fully hit-testable for clicks
...
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 >
2026-04-13 15:41:23 +02:00
Mika Kuns
7838f081dd
refactor(ui): harden context menu event handling and simplify bindings
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-13 15:16:09 +02:00
Mika Kuns
5d5a583af0
fix(ui): context menu operates on right-clicked item and gates new-task on list selection
...
- 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 >
2026-04-13 15:11:34 +02:00
Mika Kuns
3653dcad01
feat(ui): add context menus for lists and tasks
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-13 15:07:14 +02:00
Mika Kuns
6727cc4e9d
refactor(ui): harden double-click edit handlers
...
Remove redundant SelectedList/SelectedTask assignments (single-tap already
updated selection via binding) and CanExecute guards (always true for
unconditional [RelayCommand]). Set e.Handled = true to stop DoubleTapped
from bubbling to the ListBox.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-13 15:04:19 +02:00
Mika Kuns
db5a447b12
feat(ui): open editor on double-click for lists and tasks
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-13 14:57:20 +02:00