Commit Graph
100 Commits
Author SHA1 Message Date
mika kunsandClaude Sonnet 5.5 e9c1ff2e70 fix(ui): Mission Control no longer lists finished operations as running
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-01 13:26:05 +02:00
mika kuns c834f17c78 fix(azdo): strip credentials from origin URL in the not-ready message 2026-10-01 12:38:02 +02:00
mika kuns 27dca48c43 Merge branch 'claudedo/387-unit-branch-teil-3-firmen-modus-fetch-pu' 2026-10-01 12:30:13 +02:00
mika kuns 4917533cb4 fix(worker): kept worktree in a company repo opens a PR, unexpected ADO/git errors never fail a task start 2026-10-01 12:25:15 +02:00
mika kuns 93fd6740a1 docs(worker): document company mode (fetch, push, draft PR) and its open smoke tests 2026-10-01 12:18:07 +02:00
mika kuns 674db27f6e fix(worker): keep Git Credential Manager from prompting during company fetch/push 2026-10-01 12:18:06 +02:00
mika kuns 0e6a48e268 feat(prompts): merge helper knows company-repo approve ends in a draft PR 2026-10-01 12:15:20 +02:00
mika kuns 4976ded7ae feat(ui): external services tab with Azure DevOps PAT, draft PR button and link in company repos 2026-10-01 12:13:57 +02:00
mika kuns ec25ed3c75 feat(claude-do): merge Show currently running Worker operations (verify, merge, reb
ClaudeDo-Task: ea44c9dd0c4942bfa3490bc3c1014205
2026-10-01 12:10:49 +02:00
mika kunsandClaude Sonnet 5.5 2dbec543df feat(mission-control): show running Worker operations in a Running now section
Registry of active verify/merge/rebase/worktree-creation operations in the Worker,
GetActiveOperations snapshot + OperationStarted/OperationEnded hub events, and a
Running now section in Mission Control with ticking elapsed time.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-01 12:08:43 +02:00
mika kuns fed0b6ac51 feat(hub): Azure DevOps PAT settings and connection test 2026-10-01 12:06:56 +02:00
mika kuns bc959f25b3 feat(worker): approve in a company repo verifies in the worktree, pushes and opens a draft PR 2026-10-01 12:05:33 +02:00
mika kuns 7f7f237656 feat(worker): company unit roots start from a fetched origin base, local base fast-forwarded best-effort 2026-10-01 11:59:11 +02:00
mika kuns 78f4d182e8 feat(worker): Azure DevOps client and PAT store, ported from pr-create.ps1 2026-10-01 11:55:11 +02:00
mika kuns f85b9cddfd fix(claude-do): merge Hide the "Submit for review" button on list-handler panes in
ClaudeDo-Task: ea129b1c8c2f47cbaa4db19a2bb5b441
2026-10-01 11:52:52 +02:00
mika kuns 61105ff9d3 fix(claude-do): merge Make the merge modal non-modal so a running merge no longer
ClaudeDo-Task: b2b4c74fc265435b9f083f56d0e47546
2026-10-01 11:52:40 +02:00
mika kuns 488c28a9d5 fix(claude-do): merge Prevent dragging completed tasks in the task list
ClaudeDo-Task: 855b766589bf42bc872f03bdbfb9abd5
2026-10-01 11:52:30 +02:00
mika kuns acf3987a8a fix(claude-do): merge Fix the text caret overlapping the last typed letter in the
ClaudeDo-Task: c0619bf81ed645e7a1c861ddc6af5905
2026-10-01 11:52:20 +02:00
mika kuns c33e57b9c7 feat(claude-do): merge Show the task number (#N) on running autonomous tasks in Mis
ClaudeDo-Task: 6cd67a16ec6647c1846880481c497b20
2026-10-01 11:52:09 +02:00
mika kuns 76f260a9a5 feat(git): fetch/push/ff primitives with auth env, no task trailer in company repos 2026-10-01 11:51:28 +02:00
mika kunsandClaude Sonnet 5.5 3d74e3dac5 fix(ui): open the merge modal non-modal so a running merge no longer blocks the main window
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-01 11:50:58 +02:00
mika kuns bc0aa28afb feat(data): worktrees.pull_request_url for the company-repo draft PR 2026-10-01 11:49:30 +02:00
mika kuns 2b2f61d7fc docs(planning): plan for unit branch part 3 (company mode, draft PR) 2026-10-01 11:48:11 +02:00
mika kunsandClaude Sonnet 5.5 0cfc28adb9 fix(ui): hide Submit for review on list-handler panes in Mission Control
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-01 11:44:48 +02:00
mika kunsandClaude Sonnet 5.5 b776fd28d8 fix(ui): prevent dragging completed tasks in the task list
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-01 11:44:17 +02:00
mika kunsandClaude Sonnet 5.5 f66cbca65d feat(ui): show task number in Mission Control activity strip
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-01 11:43:50 +02:00
mika kunsandClaude Sonnet 5.5 335bfe957b fix(ui): add right padding to add-task input so the caret clears the last glyph
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-01 11:41:40 +02:00
mika kuns 2b7b58be37 chore(claude-do): merge Unit-Branch Teil 2: Children per fast-forward in den Unit-Br
ClaudeDo-Task: cd39f83b-f80b-479c-bdeb-55c632dcffd8
2026-10-01 11:37:21 +02:00
mika kuns acd188bca9 fix(worker): block approve of a planning parent with an unfinished child, surface git stderr on ff failure 2026-10-01 11:36:45 +02:00
mika kuns a353897345 docs(external): describe unit-branch routing in the review_task tool description 2026-10-01 11:27:22 +02:00
mika kuns 823368484e docs(worker): document unit branch, child absorb and legacy approve routing 2026-10-01 11:26:17 +02:00
mika kuns 44d94caabc feat(planning): combined diff of a unit is base..head, no integration branch checkout 2026-10-01 11:25:48 +02:00
mika kuns 1f373a5a67 feat(worker): approve a unit parent like a single task, orchestrator only for legacy units 2026-10-01 11:25:48 +02:00
mika kuns 9da522b0c9 feat(worker): fast-forward finished children into the parent's unit branch
Planning parents get their own worktree on Queue plan, children fork from the
unit head and are absorbed via merge --ff-only before Done (ff failure -> Failed,
interactive child approve -> absorb instead of merge to the target).
2026-10-01 11:25:47 +02:00
mika kuns 724ad90f88 feat(git): add ff-only merge and allow a merged worktree without merge commit 2026-10-01 11:25:47 +02:00
mika kuns dc73f138d2 docs(planning): plan for unit branch part 2 (children fast-forward) 2026-10-01 11:13:50 +02:00
mika kuns 07e9f8d60e chore(claude-do): merge Unit-Branch Teil 1: Branch-Naming + Basis-Branch pro Liste
ClaudeDo-Task: e202e601-64c0-4ecb-8dc9-2fb0da01a84a
2026-10-01 11:03:02 +02:00
mika kuns cd5b27c063 fix(planning): return to the list base branch after integration cleanup, not a guessed task branch 2026-10-01 10:55:12 +02:00
mika kuns fb86a3c1bf chore(claude-do): merge Actual highlighting in the Autonomus agount output window
ClaudeDo-Task: 87096034c52f4c869fb1518572c7f49f
2026-10-01 10:55:00 +02:00
mika kuns 9bb0e67a97 feat(ui): colour agent output by kind and stop cutting tool calls at 120 chars
StreamLineFormatter now returns kind-tagged entries (text, tool, edit,
tool result, error, sys, result) instead of a flat string, so the
existing LogKind colours finally apply to stream-json output. Tool
argument/result limit raised from 120 to 500 chars.
2026-10-01 10:49:52 +02:00
mika kuns 8ac272df50 docs(worker): document new branch naming and per-list base branch 2026-10-01 10:49:08 +02:00
mika kuns ae845bf06b feat(ui): base branch field in list settings, real branch names in dialogs 2026-10-01 10:48:32 +02:00
mika kuns 69c7803bdf feat(worker): use the list base branch as worktree base and default merge target 2026-10-01 10:46:21 +02:00
mika kuns 3fe1feadf9 feat(data): per-list base branch, preserved by every config writer 2026-10-01 10:39:49 +02:00
mika kuns 8911408bca refactor(worker): detect untracked worktrees by path instead of branch prefix 2026-10-01 10:37:37 +02:00
mika kuns 814b083a4e feat(worker): name task branches <type>/<number>-<slug> 2026-10-01 10:35:52 +02:00
mika kuns 4a9cff5543 feat(worker): branch type and number rules for task branches 2026-10-01 10:30:51 +02:00
mika kuns 0e4de9e4c0 feat(claude-do): merge Selectable colors for list dots and folders: accent-aware pa
ClaudeDo-Task: 98844480cc1f4e748908d2ce8ac6c50b
2026-10-01 10:30:48 +02:00
mika kuns 68445a9f2a fix(claude-do): merge ConPTY tiles: deliver AltGr characters (@, \, {, }, €, …) as
ClaudeDo-Task: 4abf8b93e1d94c98b122521a8b850a77
2026-10-01 10:29:59 +02:00
mika kuns a6926f53b5 feat(lists): selectable list/folder colors with accent-aware swatches and custom picker 2026-10-01 10:29:53 +02:00
mika kuns d316f3c6a5 feat(claude-do): merge Stream Claude CLI update progress into the footer strip
ClaudeDo-Task: 92130a5d447b4b0da301ce72e42c041a
2026-10-01 10:29:48 +02:00
mika kuns faa91e0661 feat(worker): detect company repos by origin remote pattern 2026-10-01 10:28:54 +02:00
mika kuns db3c7e69e5 docs(plan): unit branch part 1 - naming and per-list base branch 2026-10-01 10:24:43 +02:00
mika kunsandClaude Sonnet 5.5 2b19c8c49d feat(ui): stream claude update progress into the footer strip
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-01 10:24:07 +02:00
mika kunsandClaude Sonnet 5.5 cf3db9197c fix(ui): deliver AltGr characters to ConPTY tiles as text
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-01 10:24:05 +02:00
mika kuns 3dc735b2af docs(spec): per-list base branch and fetch before unit branch 2026-10-01 10:16:32 +02:00
mika kuns 0e9373c083 docs(spec): unit branch and draft PR design 2026-10-01 09:56:36 +02:00
mika kuns 97af85c816 feat(mission-control): swap tiles by dragging their header 2026-10-01 09:07:02 +02:00
mika kuns 16adcad84f docs(worker): note the external MCP DI registration trap 2026-10-01 08:49:53 +02:00
mika kuns 2b40ea2d2b fix(mcp): register ticket import tools in the external MCP container
The external MCP server has its own DI container; TicketMcpTools could not
resolve TicketImportService there, so both tools failed at runtime. Also
surface a skipped import in the prime outcome and treat a sweep where every
project board fails as an error instead of an empty backlog.
2026-10-01 08:49:31 +02:00
mika kuns 7724f5eb70 docs(tickets): document cross-project ticket import and open checks 2026-10-01 08:45:54 +02:00
mika kuns cb775958a7 docs(ui): note the ImportTickets prime radio and the ticket fallback list 2026-10-01 08:45:14 +02:00
mika kuns e35b054a2e feat(ui): tickets + plan day button, fallback list and prime action 2026-10-01 08:44:21 +02:00
mika kuns 9fc2e26edb feat(hub): add RunTicketImportNow and ticket fallback list endpoints 2026-10-01 08:41:12 +02:00
mika kuns 915f2c8352 feat(prime): ImportTickets runs the ticket import before filling MyDay 2026-10-01 08:39:38 +02:00
mika kuns 57c30c4a18 feat(mcp): add get_ticket_import_candidates and import_ticket tools 2026-10-01 08:37:44 +02:00
mika kuns 47583ab1fe feat(tickets): sweep all project boards for assigned tickets and tasks 2026-10-01 08:36:11 +02:00
mika kuns a0b234fe10 feat(data): add ImportTickets prime kind, ticket fallback list and import prompt 2026-10-01 08:33:48 +02:00
mika kuns c34680b42d docs(tickets): implementation plan for cross-project ticket import 2026-10-01 08:31:13 +02:00
mika kuns 5bb49495e4 docs(tickets): switch import source to project-board sweep after live probe 2026-10-01 08:12:17 +02:00
mika kuns 0ac49653c9 docs(tickets): design for cross-project ticket import with day planning 2026-10-01 08:05:58 +02:00
Mika Kuns f3ecb99492 chore(claude-do): merge Customizable Spalten Anzahl in MIssion controll
Changelog / changelog (push) Successful in 2s
Release / release (push) Successful in 43s
ClaudeDo-Task: 99bfb985efb64c02ba3f27b53eae790d
2026-09-30 10:50:21 +02:00
Mika Kuns a2496e056a chore(claude-do): merge Worktrees sollten nach dem Task benannt werden
ClaudeDo-Task: 63f08d944d3341c081267158ef4bbb3e
2026-09-30 10:50:09 +02:00
Mika Kuns 44ec89b0e6 chore(claude-do): Worktrees sollten nach dem Task benannt werden
Durch die GUID namen kann ein User die Worktrees keinem Task zuordnen, und in Rider Müllen mir die Worktrees die BRanches voll. Also sollten wir einfach den Task titel oder Nummer stattdessen nehmen

ClaudeDo-Task: 63f08d944d3341c081267158ef4bbb3e
2026-09-30 10:49:07 +02:00
Mika Kuns a7c3d18533 feat(mission-control): column picker for the overview grid
Auto keeps the pane-count heuristic; 1-4 fixes the column count (capped at
the pane count). Persisted to ui.config.json as MissionControlColumns.
2026-09-30 10:39:23 +02:00
mika kuns 0d029717f8 style(ui): folder chevron and icon take the folder colour 2026-09-30 10:28:14 +02:00
mika kuns 2be8ba5d66 feat(ui): folders slide open and closed, rows below follow 2026-09-30 10:25:17 +02:00
mika kuns 928e3905d9 feat(ui): animate folder expand in the sidebar 2026-09-30 10:19:35 +02:00
mika kuns 60358100be fix(ui): Recent-Sessions Resume/Brief-Buttons fuehren ihren Command wieder aus
Der Click-Handler schloss das Flyout synchron; Button liest Command erst nach dem ClickEvent, das Hide hatte die Bindung da schon geloest.
2026-09-30 10:14:55 +02:00
mika kuns 2a41f7e641 style(ui): smart list rows match the user list row height 2026-09-30 10:13:51 +02:00
mika kuns bb92dc279f feat(lists): assign a colour to a sidebar folder
Tints the folder name and its guide line; picked from a swatch row in the folder settings.
2026-09-30 10:12:41 +02:00
mika kuns 8a31a67c74 feat(report): write weekly report as short bullets with haiku 2026-09-30 10:05:24 +02:00
mika kuns f2ff865dca feat(ui): searchable Material Design icon library for lists and folders 2026-09-30 09:52:34 +02:00
mika kuns 5da8036b9a style(ui): only top-level lists align to the folder chevron 2026-09-30 08:48:36 +02:00
mika kuns cf4b5c507c style(ui): lists start at the folder chevron's edge 2026-09-30 08:43:10 +02:00
mika kuns 3e2d5bab6a style(ui): keep child row highlight clear of the folder guide line 2026-09-30 08:39:20 +02:00
mika kuns 27d2b1d8ef fix(tickets): convert ticket HTML to markdown on import 2026-09-30 08:39:17 +02:00
mika kuns ccd11a8033 style(ui): tighter sidebar tree rows and shallower child indent 2026-09-30 08:34:48 +02:00
mika kuns 9991f1fc1f feat(ui): coloured dots for icon-less lists, guide line under chevron
Lists without an icon show a dot in a stable identity colour (same
palette/hash as Mission Control tiles); "Dot" is the new picker default.
2026-09-30 08:29:46 +02:00
mika kuns 75b78cb2c0 feat(ui): make sidebar folder hierarchy readable
Lists default to the Text icon instead of the folder icon, rows align
across depths with a guide line per open folder, folder names are
semibold, folder counts only show while collapsed and zero counts hide.
2026-09-30 08:21:34 +02:00
mika kuns 05deda8343 docs: add visual verification session notes 2026-09-16 2026-09-30 08:14:26 +02:00
mika kuns 52ba538339 test(worker): cover WorktreeUpdated broadcast on interactive review submission 2026-09-30 08:14:26 +02:00
mika kuns 2558e02ba3 fix(ui): stop row buttons flashing disabled while a row command runs
Shared AsyncRelayCommands disabled every row's button during execution.
2026-09-30 08:13:26 +02:00
mika kuns 81dcaebfba Merge branch 'claudedo/f518b71f990643cfaf73174e8617b2b5'
Drop the unused deferredUntil parameter the branch added to HandoffRequested: the worker still sends three args, so the four-arg client handler would never bind. The reset time already arrives via HandlerHandoffDeferred.
2026-09-29 08:54:14 +02:00
mika kuns 1396649519 Merge branch 'claudedo/ff26e146286f409aacc453247dd86155' 2026-09-29 08:52:02 +02:00
Mika Kuns 87dbb117d7 fix: Interactive sessions no longer Instantly start working
Changelog / changelog (push) Successful in 2s
Release / release (push) Successful in 45s
2026-09-28 14:33:06 +02:00
Mika Kuns 0f82fa67e1 feat(claude-do): merge UI-Prozess loggt auf Platte (ui-.log) + fehlgeschlagene Hub-
ClaudeDo-Task: d2ae3831-733f-4d40-93d7-70c93da11590
2026-09-28 13:39:18 +02:00
Mika Kuns 9f2e63d337 feat(claude-do): merge Ordner in Ordner erlauben (beliebig tief, nur per Drag & Dro
ClaudeDo-Task: dc3d5f8cf9e74821ba99b18e443fe5f5
2026-09-28 13:37:19 +02:00
Mika Kuns 3009ff0f8f fix(claude-do): snake_case Serilog tokens + no Warning-log on cancelled hub calls
Message-template tokens must be snake_case (repo rule) -- fixes 4 PascalCase
tokens introduced in 57dd6766. TryInvokeAsync's swallowing catch also no
longer logs a Warning for OperationCanceledException, which is routine
(e.g. worker shutdown/reconnect), not a failure worth a trace.

ClaudeDo-Task: d2ae3831-733f-4d40-93d7-70c93da11590
2026-09-28 13:32:38 +02:00
Mika KunsandClaude Sonnet 5 0dac047c46 feat(lists): allow nested sidebar folders via drag and drop
Folders can now contain other folders, to arbitrary depth, via a
self-referencing parent_folder_id (ON DELETE SET NULL, same pattern as
lists.folder_id). Nesting/un-nesting is drag-and-drop only: dropping a
folder onto another folder's header middle moves it in, the outer
quarters or any top-level/in-folder drop insert it beside a target.
Dropping a folder into itself or one of its own subfolders is silently
ignored. Deleting a folder releases its lists and subfolders back to
the top level, unchanged from the existing list behavior.

ListFolderNavItemViewModel.Lists became Children (object, mixing lists
and subfolders, mirroring TopLevel) so the existing implicit, type-matched
DataTemplates render nested folders recursively without new XAML, and each
nesting level gets its indent for free from the folder template's own
margin. Folders/RootLists/ContainerOf/PersistOrderAsync/RecomputeFolderCounts
now walk the tree instead of assuming one level.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-28 13:31:26 +02:00