mika kuns
2f1dcdc102
feat(installer): start worker via Process.Start, drop schtasks stop
2026-06-01 12:10:28 +02:00
mika kuns and Claude Sonnet 4.6
133f2d2f1d
feat(installer): register autostart via Startup shortcut, drop scheduled task
...
Replaces schtasks /Create with AutostartShortcut.Install; migrates away
legacy scheduled task and Windows service on upgrade. Removes ScheduledTaskXml.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-01 12:09:07 +02:00
mika kuns and Claude Sonnet 4.6
e2bb43ad6d
feat(installer): add AutostartShortcut helper for Startup-folder lnk
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-01 12:07:32 +02:00
mika kuns and Claude Sonnet 4.6
867dc37228
refactor(installer): extract ShortcutFactory COM helper
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-01 12:05:54 +02:00
mika kuns and Claude Opus 4.7
4963a726de
docs: add worker lifecycle redesign spec
...
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 >
2026-06-01 11:55:08 +02:00
mika kuns and Claude Sonnet 4.6
926471da6b
refactor(ui): migrate PlanningDiffView to ModalShell
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 18:57:22 +02:00
mika kuns and Claude Sonnet 4.6
9be8e6b3e0
refactor(ui): drop double padding in Tasks island header
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 18:57:17 +02:00
mika kuns and Claude Sonnet 4.6
b9e5dfccde
refactor(ui): drop double padding in Lists island header
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 18:57:12 +02:00
mika kuns and Claude Sonnet 4.6
c669370ecf
refactor(ui): class schedule-flyout cancel in TaskRowView
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 18:57:08 +02:00
mika kuns and Claude Sonnet 4.6
4688e884bd
refactor(ui): class merge-section buttons in DetailsIslandView
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 18:57:03 +02:00
mika kuns and Claude Sonnet 4.6
8b21b0e646
refactor(ui): class update-banner buttons in MainWindow
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 18:56:58 +02:00
mika kuns
4a786eb732
refactor(ui): normalize buttons/footer/padding in ConflictResolutionView
2026-05-30 18:54:17 +02:00
mika kuns
cd64f287c3
refactor(ui): normalize buttons/footer/padding in DiffModal
2026-05-30 18:53:49 +02:00
mika kuns
3585ad5ee2
refactor(ui): normalize buttons/footer/padding in WorktreesOverviewModal
2026-05-30 18:53:29 +02:00
mika kuns
990935e67d
refactor(ui): normalize buttons/footer/padding in RepoImportModal
2026-05-30 18:53:07 +02:00
mika kuns
1b5a9285e6
refactor(ui): normalize buttons/footer/padding in UnfinishedPlanningModal
2026-05-30 18:52:18 +02:00
mika kuns
e8f880e72f
refactor(ui): normalize buttons/footer/padding in AboutModal
2026-05-30 18:51:35 +02:00
mika kuns
3228a08c7a
refactor(ui): normalize buttons/footer/padding in MergeModal
2026-05-30 18:50:57 +02:00
mika kuns
ccec791fc1
refactor(ui): normalize buttons/footer/padding in ListSettingsModal
2026-05-30 18:50:32 +02:00
mika kuns
187fb641fe
refactor(ui): normalize buttons/footer/padding in SettingsModal
2026-05-30 18:49:49 +02:00
mika kuns
0a719568ea
refactor(ui): make primary/danger buttons self-contained, drop unused btn.primary
2026-05-30 18:47:17 +02:00
mika kuns and Claude Sonnet 4.6
ccec591ba2
refactor(ui): inherit terminal font for SelectableTextBlock
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 17:54:16 +02:00
mika kuns and Claude Sonnet 4.6
a4cb03b1b5
refactor(ui): use sidebar-pane in PlanningDiffView
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 17:53:56 +02:00
mika kuns and Claude Sonnet 4.6
f53292e134
refactor(ui): use diff-lineno and sidebar-pane in DiffModal
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 17:53:34 +02:00
mika kuns and Claude Sonnet 4.6
539ebecf3a
refactor(ui): use danger-box in MergeModal
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 17:53:07 +02:00
mika kuns and Claude Sonnet 4.6
dff5651db7
refactor(ui): use danger-box in SettingsModal
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 17:52:49 +02:00
mika kuns and Claude Sonnet 4.6
9f49b0131f
refactor(ui): use shared section style in ListSettingsModal
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 17:52:30 +02:00
mika kuns and Claude Sonnet 4.6
fb3a6acf52
refactor(ui): reuse task-row style for worktree rows
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 17:52:12 +02:00
mika kuns and Claude Sonnet 4.6
4f84b15b6a
refactor(ui): use section-divider in DetailsIslandView
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 17:51:46 +02:00
mika kuns and Claude Sonnet 4.6
27b0d51db0
refactor(ui): drop duplicate converters and normalize binding in ListsIslandView
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 17:51:19 +02:00
mika kuns
2a381048fe
refactor(ui): merge task-row styles and add shared section/danger-box/sidebar/accent styles
2026-05-30 17:49:24 +02:00
mika kuns
bddef5abef
refactor(ui): unify text and close button in ThemedDatePicker
2026-05-30 17:40:07 +02:00
mika kuns
51d3ea2e1c
refactor(ui): unify text and close button in ConflictResolutionView
2026-05-30 17:39:18 +02:00
mika kuns
335b422e23
refactor(ui): unify text and close button in PlanningDiffView
2026-05-30 17:38:44 +02:00
mika kuns
08f3babca4
refactor(ui): unify text and close button in DiffModalView
2026-05-30 17:38:09 +02:00
mika kuns
9082f2ed71
refactor(ui): unify text and close button in WorktreeModalView
2026-05-30 17:37:06 +02:00
mika kuns
0f64b1c6e0
refactor(ui): unify text and close button in WorktreesOverviewModalView
2026-05-30 17:36:23 +02:00
mika kuns
dd453874ba
refactor(ui): unify text and close button in RepoImportModalView
2026-05-30 17:33:52 +02:00
mika kuns
00e1d2d6c9
refactor(ui): unify text and close button in UnfinishedPlanningModalView
2026-05-30 17:33:29 +02:00
mika kuns
9a9113542d
refactor(ui): unify text and close button in AboutModalView
2026-05-30 17:33:06 +02:00
mika kuns
8e595a1e43
refactor(ui): unify text and close button in MergeModalView
2026-05-30 17:32:29 +02:00
mika kuns
97fc715856
refactor(ui): unify text and close button in ListSettingsModalView
2026-05-30 17:32:02 +02:00
mika kuns
ed8607d4c9
refactor(ui): unify text and close button in SettingsModalView
2026-05-30 17:31:31 +02:00
mika kuns and Claude Sonnet 4.6
929e0ca1ee
refactor(ui): apply text classes to SessionTerminalView
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 17:29:04 +02:00
mika kuns and Claude Sonnet 4.6
40a36308ae
refactor(ui): apply text classes to AgentStripView
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 17:28:35 +02:00
mika kuns and Claude Sonnet 4.6
b9f5d829c8
refactor(ui): apply text classes to TaskRowView
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 17:27:49 +02:00
mika kuns and Claude Sonnet 4.6
e0dda3e71b
refactor(ui): apply text classes to DetailsIslandView
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 17:27:13 +02:00
mika kuns and Claude Sonnet 4.6
d4c66dea63
refactor(ui): apply text classes to TasksIslandView
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 17:26:10 +02:00
mika kuns and Claude Sonnet 4.6
a132127e9e
refactor(ui): apply text classes to ListsIslandView
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 17:25:48 +02:00
mika kuns and Claude Sonnet 4.6
6e3125e78d
refactor(ui): apply text classes to MainWindow
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 17:24:58 +02:00
mika kuns
b00e4d994f
feat(ui): unify type scale to 11/13/18/24 and add canonical text classes
2026-05-30 17:22:29 +02:00
mika kuns
16717ab9e9
fix(ui): restore resize and full-width rows in WorktreesOverview modal
2026-05-30 17:16:08 +02:00
mika kuns
7af892f410
refactor(ui): consolidate list-section-label into shared section-label
2026-05-30 17:07:47 +02:00
mika kuns
e86464e802
fix(ui): unclip Edit/Preview buttons; enlarge section labels and use mono field labels
2026-05-30 17:02:35 +02:00
mika kuns
df7337810e
docs(ui): add visual-check checklist for normalization pass
2026-05-30 16:53:36 +02:00
mika kuns
8944074997
refactor(ui): fold selected-day White to TextBrush token
2026-05-30 16:52:56 +02:00
mika kuns
fbd5d9f7ca
refactor(ui): tokenize WorktreeModalView font sizes
2026-05-30 16:52:16 +02:00
mika kuns and Claude Sonnet 4.6
5fdd9f0b4c
refactor(ui): tokenize and dynamic-ize PlanningDiffView
...
Convert StaticResource token attrs to DynamicResource, snap font sizes to tokens, replace Consolas,Menlo,monospace with MonoFont DynamicResource, and fold Orange warning color to BloodBrush.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 16:50:43 +02:00
mika kuns and Claude Sonnet 4.6
bce4e0a1e6
refactor(ui): migrate ConflictResolutionView to ModalShell and use dynamic resources
...
Replace manual titlebar/drag handler with ModalShell, move action buttons to footer, convert StaticResource token attrs to DynamicResource, replace OrangeRed with BloodBrush, and use MonoFont DynamicResource.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 16:50:38 +02:00
mika kuns and Claude Sonnet 4.6
229f865e7e
refactor(ui): migrate DiffModal to ModalShell and use dynamic resources
...
Replace manual titlebar/drag handler with ModalShell, move Merge button to footer, convert StaticResource token attrs to DynamicResource, snap font sizes to tokens, use MonoFont DynamicResource, and fold tint color literals to RunningTintBrush/ErrorTintBrush.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 16:50:32 +02:00
mika kuns and Claude Sonnet 4.6
a444033aa9
refactor(ui): migrate WorktreesOverviewModal to ModalShell
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 16:47:32 +02:00
mika kuns and Claude Sonnet 4.6
2265829a29
refactor(ui): migrate RepoImportModal to ModalShell
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 16:45:51 +02:00
mika kuns and Claude Sonnet 4.6
50e05b9140
refactor(ui): migrate UnfinishedPlanningModal to ModalShell
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 16:45:16 +02:00
mika kuns and Claude Sonnet 4.6
538839c004
refactor(ui): migrate AboutModal to ModalShell
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 16:44:41 +02:00
mika kuns and Claude Sonnet 4.6
8d07fc298c
refactor(ui): migrate MergeModal to ModalShell
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 16:44:04 +02:00
mika kuns and Claude Sonnet 4.6
e1bfbb0fa6
refactor(ui): migrate ListSettingsModal to ModalShell
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 16:43:17 +02:00
mika kuns
b1006ac7b0
fix(ui): correct SettingsModal font snap (11px is Mono, not Body)
2026-05-30 16:41:05 +02:00
mika kuns
4f5db367a7
refactor(ui): migrate SettingsModal to ModalShell
2026-05-30 16:40:09 +02:00
mika kuns
c20fbe3613
feat(ui): add reusable ModalShell control
2026-05-30 16:38:02 +02:00
mika kuns and Claude Sonnet 4.6
16b0d1177a
refactor(ui): tokenize ThemedDatePicker
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 16:36:23 +02:00
mika kuns and Claude Sonnet 4.6
a1f05da97b
refactor(ui): tokenize SessionTerminalView
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 16:35:46 +02:00
mika kuns and Claude Sonnet 4.6
0c0c73bc9e
refactor(ui): tokenize AgentStripView
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 16:35:22 +02:00
mika kuns and Claude Sonnet 4.6
3d4a64a8fd
fix(ui): use LineBrush for schedule flyout border and tokenize TaskRowView
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 16:34:25 +02:00
mika kuns and Claude Sonnet 4.6
bff15c9bf3
refactor(ui): tokenize DetailsIslandView
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 16:33:46 +02:00
mika kuns and Claude Sonnet 4.6
f40de4bbe0
refactor(ui): tokenize TasksIslandView
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 16:32:03 +02:00
mika kuns and Claude Sonnet 4.6
e120b0fd70
refactor(ui): tokenize ListsIslandView
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 16:31:39 +02:00
mika kuns and Claude Sonnet 4.6
e8ce725897
refactor(ui): tokenize MainWindow
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-30 16:31:00 +02:00
mika kuns
7a6bfbe1b4
refactor(ui): tokenize IslandStyles values and add shared modal styles
2026-05-30 16:28:47 +02:00
mika kuns
5a25818e3a
feat(ui): set global Inter Tight font default on all windows
2026-05-30 16:24:00 +02:00
mika kuns
f0f8cd103d
feat(ui): add named tint and hairline overlay brush tokens
2026-05-30 16:23:34 +02:00
mika kuns
d52f23f7c8
docs(ui): add UI normalization design spec and implementation plan
2026-05-30 16:22:00 +02:00
mika kuns and Claude Opus 4.7
cfc45118e4
docs: sync CLAUDE.md files with current architecture
...
Release / release (push) Successful in 35s
Drop the removed tag system, fix the retired Manual status and the atomic
queue-claim location, refresh the App DI registrations to the Islands VMs,
update the Data table list, correct a stale test reference, and document the
interface-folder and single-consumer-fold conventions plus the .NET 8 build path.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-30 15:59:43 +02:00
mika kuns and Claude Opus 4.7
1856943925
refactor: merge TaskRunner failure handlers and reuse NullIfBlank
...
Unify the near-identical HandleFailure/MarkFailed into a single MarkFailed that
always persists the failed state and never throws, and replace the inline
null-if-blank checks in ListMcpTools with the existing extension.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-30 15:51:14 +02:00
mika kuns and Claude Opus 4.7
ce9fadc0b5
refactor: fold single-consumer helper types into their owners
...
Consolidate small single-purpose types into the files that own them:
StreamResult into StreamAnalyzer, the Planning context records into
PlanningSessionContext, PrimeClock/PrimeSchedulerOptions into PrimeScheduler,
AgentMcpTools into LifecycleMcpTools, the locator subclasses into
InstallArtifactLocator, LogLineViewModel into DetailsIslandViewModel,
RepoImportItemViewModel into its modal, and StepViewModel into InstallPageViewModel.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-30 15:47:46 +02:00
mika kuns and Claude Opus 4.7
25ee623c42
refactor: remove dead PlanningMergeEvents records and unused RunNowRequestedEvent
...
The PlanningMergeEvents record types were never instantiated (the broadcaster
uses identically-named methods), and RunNowRequestedEvent had no subscribers.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-30 15:42:25 +02:00
mika kuns and Claude Opus 4.7
41da124a31
refactor: extract interfaces to Interfaces folders and consolidate filters
...
Move interface declarations into per-area Interfaces/ subfolders, merge the
small task-list filter classes into StatusFilter/SmartFlagFilter, and simplify
related services, converters and hub DTO handling.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-30 15:41:10 +02:00
mika kuns and Claude Opus 4.7
77100b6b3b
Merge feat/external-mcp-ui-parity: external MCP UI parity for start/observe
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-30 14:37:58 +02:00
mika kuns and Claude Opus 4.7
32daa4a602
docs(worker): correct external MCP tool inventory, drop removed tag tools
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-30 14:16:48 +02:00
mika kuns and Claude Opus 4.7
b41a78ec29
feat(worker): register new external MCP tool classes
...
Wire ListMcpTools, ConfigMcpTools, RunHistoryMcpTools, AgentMcpTools,
LifecycleMcpTools, and AppSettingsMcpTools into the external MCP
container and expose them via WithTools<>().
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-30 14:15:26 +02:00
mika kuns and Claude Opus 4.7
9ea60701d2
feat(worker): add external MCP app-settings read tool
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-30 14:12:18 +02:00
mika kuns and Claude Opus 4.7
5a592c4be6
feat(worker): add external MCP reset-failed-task tool
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-30 14:07:59 +02:00
mika kuns and Claude Opus 4.7
7196aab31f
feat(worker): add external MCP agent-listing tool
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-30 14:05:30 +02:00
mika kuns and Claude Opus 4.7
fec2fe2dda
fix(worker): cap run-log read size and harden run-history tests
...
- GetTaskLog reads at most last 256 KB; prepends truncation marker if file exceeds cap
- Wrap temp-file cleanup in finally block to prevent leak on assertion failure
- Add GetRun_NotFound_Throws, GetTaskLog_RunExistsButNoLogPath_Throws, and GetTaskLog_LargeFile_ReturnsTruncatedTail tests
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-30 14:04:22 +02:00
mika kuns and Claude Opus 4.7
3afe29d721
feat(worker): add external MCP run-history and log tools
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-30 13:59:54 +02:00
mika kuns and Claude Opus 4.7
f3f8af4b11
docs(worker): clarify SetTaskConfig null-clears-override wording
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-30 13:57:59 +02:00
mika kuns and Claude Opus 4.7
c3493a3a74
feat(worker): add external MCP list/task config tools
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-30 13:54:08 +02:00
mika kuns and Claude Opus 4.7
ac2f1d824e
fix(worker): reuse shared hub fake and guard blank list name
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-30 13:51:34 +02:00
mika kuns and Claude Opus 4.7
53f4e2de0f
feat(worker): add external MCP list-management tools
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-30 13:47:02 +02:00
mika kuns and Claude Opus 4.7
99dc08488b
docs(worker): add external MCP UI-parity spec and plan
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-30 13:42:24 +02:00
mika kuns and Claude Opus 4.7
26c4e5771b
feat(worker): run worker as per-user logon task instead of Windows service
...
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 >
2026-05-30 09:39:41 +02:00