## kdlbs/kandev — v0.93.0…v0.94.0

_197+ commits._

### Features
- **feat: improve MCP discovery and canvas authoring prompts (#3522)** (3bae1a7)
- **feat(queue): move automation toggles to session scope (#3465)** (d61e06a)
- **feat(web,backend): show a distinct icon for tasks parked on background work (#3402)** (6597f8b)
- **feat(backend): enforce required store parity (#3459)** (a08f2b3)
- **feat(agents): resolve unique advertised model variations (#3472)** (cb1ffd0)
- **feat(ui): confirm saved view deletion (#3461)** (5ee5161)
- **feat(agents): activate reviewed runtime defaults on startup (#3471)** (bcdb0ce)
- **feat(tasks): simplify launch-step destination (#3466)** (ce512d1)
- **feat(web): serve native HTML previews (#3375)** (5cf74c4)
- **feat(tasks): preview task launch destination and prompt (#3425)** (ec5249b)
- **feat(sidebar): add automatic task color rules (#3180)** (3173c2b)
- **feat(storage): add progressive storage analysis (#3429)** (3119b08)
- **feat: add DeepSeek API Balance to plugin registry (#3452)** (1ddce60)
- **feat(mcp): add append mode to update_task_plan_kandev (#3448)** (177b559)
- **feat(desktop): add consent-aware repository discovery** (d796cf1)
- **feat(executor): per-profile opt-in for unprivileged user namespaces** (9b9f347)
- **feat(plugins): expand task fields for integrations** (5f5b1f0)
- **feat(web): add chat-submit-decoration plugin slot over the send button (#2990)** (2a8bd21)
- **feat: add plugin-backed canvases (#3111)** (d74e858)
- **feat(auth): organization units, tenancy, roles and scopes for team access (#2919)** (481359d)
- **feat(plugins): add task manager to marketplace (#3406)** (ae54619)
- **feat(tasks): show and set task priority on the kanban board (#3333)** (f441399)
- **feat(plugins): move shortcuts into plugin settings (#3384)** (e4eb278)
- **feat(auth): resolve session hostnames (#2741)** (15c0c35)
- **feat(web): show and move a task's workflow step from the kanban preview (#3329)** (b067fac)
- **feat(agents): add Goose ACP agent support (#3313)** (884418b)
- **feat(tasks): edit task dependencies (#3308) (#3323)** (76825c1)
- **feat(web): support right-click session actions in the kanban preview panel (#3321)** (32ccd3d)
- **feat(settings): split system data and storage pages (#3348)** (db3a113)

### Fixes
- **fix: restore MCP status after task switches (#3547) (#3552)** (c21f1f0)
- **fix: recognize leading [canceled] in Cursor stream-reset errors (#3544)** (baa00e7)
- **perf: stream frontend diagnostic captures (#3540)** (b7a71e6)
- **fix: preserve queued turn state during workflow transitions (#3542)** (2512563)
- **fix(tasks): recover cleanup preparation for missing worktrees (#3541)** (48f6c77)
- **fix: expand saved prompts on workflow-free launches (#3539)** (d1eb528)
- **fix(office): stop multi-agent reviews from deadlocking by default (#3515)** (ecd3efc)
- **fix(e2e): parse run-e2e.sh options after a leading -- and bound the docker info probe (#3518)** (1dd6d4b)
- **fix(office): reject empty slug on skill update (#3509)** (769f2cc)
- **fix(backend): stop routine tasks from getting office skills they can't run (#3502)** (fc1fc3a)
- **fix: protect referenced secrets from deletion (#3500) (#3503)** (907ee91)
- **fix: guard archived session recovery and preserve launch errors (#3519)** (258bfab)
- **fix: remove host model warnings from profile selectors (#3521)** (867b2da)
- **fix(office): stop agents showing idle while a successor run works (#3516)** (401947f)
- **fix(office): name the children in the children-completed wake prompt (#3510)** (00f394c)
- **fix(backend): retry SSH agentctl handshake rejection instead of failing the launch (#3511)** (dfb5340)
- **fix(backend): stop discarding step_complete's handoff before the next step reads it (#3446)** (ad32c6b)
- **fix(orchestrator): stop messages sent during a step move from vanishing (#3494)** (623ed4e)
- **fix(web): retract empty-turn notice once real agent output lands (#3499)** (7435bc2)
- **fix(backend): stop DST fall-back from firing automations twice (#3490)** (77e3cfc)
- **fix(office): stop routines from bricking after their first fire (#3488)** (dff6543)
- **fix(office): tell the CEO which agent failed, not "Error: unknown" (#3485)** (56b2417)
- **fix: prevent plan editor crash during task switches (#3493)** (18d38c1)
- **fix(agents): recover managed runtime capability probes (#3483)** (e3d4352)
- **fix(deps): address Dependabot vulnerabilities (#3450)** (3d042e9)
- **fix: recognize visible Dockview chat panels (#3481)** (4ea3ccf)
- **fix(office): grant record_step_decision capability to decision-seat holders (#3463)** (ffa42a8)
- **fix(web): preserve pending git action ownership (#3373)** (d17812f)
- **fix(ci): use trusted preview deploy command (#3456)** (ed50fb0)
- **fix(web): hide inactive repository providers (#3470)** (0057022)
- **fix: preserve scroll position across task switches (#3474)** (410a274)
- **fix(web): stabilize archive confirmation surface (#3460)** (52948cd)
- **fix(office): stop Mark fixed from leaving an auto-paused agent stuck (#3464)** (4e9556a)
- **fix(ci): stabilize failing main e2e runs (#3462)** (c2f61fd)
- **fix: recover failed task launches safely (#3437)** (3fba828)
- **fix(github): retry PR auto-fix turns without outcomes (#3458)** (3c6af41)
- **fix(backend): stop restarts from leaving the API stuck in "starting" (#3445)** (cd78236)
- **fix(backend): stop a manual route retry from deadlocking against a context reset (#3443)** (b4aa51d)
- **fix(backend): stop workflow triggers from re-running actions right after a restart (#3447)** (902f11d)
- **fix(office): stop reviewer and approver comments showing under the assignee's name (#3444)** (0b368b3)
- **fix: preserve PR status colors across reload (#3454)** (4da737a)
- **fix(tasks): bound clarification response submissions (#3439)** (66b41c8)
- **fix(web): refine queued message row controls (#3449)** (1bd150d)
- **fix: stabilize flaky e2e workflows (#3453)** (5965a65)
- **fix(tasks): protect dirty worktree deletion (#3426)** (2c4a0f4)
- **fix(web): preserve Kanban column width while dragging (#3345) (#3423)** (b4d594c)
- **fix: suppress invalid task timestamps (#3434)** (28eb911)
- **fix: keep PR walkthrough links canonical (#3438)** (039142d)
- **fix(backend): break approver-first tie when neither quorum seat sits at the current step (#3442)** (7cb5d8c)
- **fix(backend): stop Sprites prepare truncating git history and leaking the clone token (#3411)** (8c72bc0)
- **perf: isolate task surface rendering (#3226)** (bab9e64)
- **fix: keep draft PR icons muted (#3424)** (fed9059)
- **fix(web): keep new-file input focused after menu close (#3419)** (cf53250)
- **fix: auto-fix GitHub PR merge conflicts (#3418)** (5e9d143)
- **fix(tasks): hide human assignee when auth is disabled (#3417)** (c4ca73e)
- **fix: classify backend reload diagnostics (#3414)** (b086f41)
- **fix(agent): stop dynamic agent handoffs from leaking secrets and mangling text (#3407)** (9dea4b1)
- **fix(office): show agents as working while a run is in flight (#3401)** (723173a)
- **fix(backend): stop manual Retry from starting a second agent when a route already resumed (#3399)** (1b8f0f8)
- **fix(ssh): read the stdin environment to EOF for bash on macOS (#3385)** (b241649)
- **fix(ssh): brace refspec variables for zsh login shells (#3383)** (f199f07)
- **fix: harden prompt history and saved prompt aliases (#3369)** (2a29104)
- **fix(web): contain mobile Kanban archive confirmation (#3430)** (0edee49)
- **perf(web): isolate sidebar task tree renders (#3435)** (cafc717)
- **perf(web): isolate kanban task update renders (#3436)** (7954eba)
- **fix: preserve remote OpenCode auth providers (#3382) (#3421)** (782c8a4)
- **fix(web): preserve latest task-create workflow (#3413)** (73a3994)
- **fix(web): load and scroll to unloaded prompts (#3412)** (5af573c)
- **fix: preserve workflow move handoff prompts (#3409) (#3415)** (57ed887)
- **fix(web): keep a usable agent selected when the executor changes (#3388)** (9714016)
- **fix(web): stop a stale session snapshot from reverting a model switch (#3379)** (241650f)
- **fix(web): preserve transcript position on task switch (#3405)** (59a01b6)
- **fix(agent): stop a slow MCP server from stalling Claude for hours (#3398)** (fe8db46)
- **fix(ci): stabilize immutable runtime image resolution (#3397)** (0c9b1ec)
- **fix(ci): align merge approval cleanup contract** (545e293)
- **fix(ci): repair stale approval merge-state query** (792fdf6)
- **fix(backend): restore PostgreSQL domain store parity (#3372)** (fd918e8)
- **fix: open registered repository links in file viewer (#3400)** (b72c5ff)
- **fix(web): make passthrough composer touch-safe (#2809) (#3303)** (2a23d12)
- **fix(backend): stop dynamic-route retries from double-launching the same prompt (#3360)** (3e7214e)
- **fix(terminal): support PostgreSQL task terminals (#3371) (#3378)** (fc532ab)
- **fix(tasks): preserve detached workspace ownership (#3366) (#3374)** (ddcc4fc)
- **fix(backend): recover dynamic agent routes stuck in starting with no owner (#3362)** (f91fd46)
- **fix(ci): use built-in token for runtime pin PRs (#3365)** (ed80524)
- **fix: reject stale executor transition workspaces (#3354)** (b557cf4)
- **fix(backend): stop disabled dynamic routing from resuming pending retries (#3361)** (541f37b)
- **fix: backfill feeder pulls after task-tree lifecycle changes (#3376)** (b0a5232)
- **fix: make accordion menu the default (#3368)** (077b492)
- **fix(orchestrator): launch the dynamic fallback successor outside the agent.failed dispatch (#3356)** (d845d86)
- **fix(mcp): prevent silent internal bridge request loss (#3364) (#3367)** (ddbf381)
- **fix(web): compact TUI MCP strategy selector (#3370)** (0ef4886)
- **fix(orchestrator): make kanban boards recover from agent failures too (#3315)** (4a7b283)
- **fix(backend): stop retries from hammering a failed credential after a restart (#3357)** (3efa5a8)
- **fix(worktree): resolve Windows resume share-access violation (#3353)** (97c296c)
- **fix(web): keep change action spinners visible (#3339)** (256c0fc)
- **fix(web): detect backend restarts in open pages (#3346)** (fa6720f)
- **fix: quiet Claude passthrough by default (#3305) (#3317)** (1d07b55)
- **fix(routing): classify OpenCode period usage limits so dynamic routing can advance (#3320)** (66d110b)
- **fix(web): restore compact coarse-pointer file tree rows (#3326)** (e895684)
- **fix(web): keep model selector visible after model switches (#3349)** (1f25ecf)

### Backend
- **release: publish 0.94.0** (bf819a0)

### Tests
- **test(office): cover mark-fixed skipping tasks reassigned to another agent (#3504)** (86141dd)
- **test(orchestrator): make the route-claim regression test catch the race it is for (#3489)** (19888d6)
- **test(office): prove a dropped children-completed wake gets recovered (#3486)** (3182f82)
- **test(backend): cover manual-resume task-scoped coalescing at the repository layer (#3487)** (c308538)
- **test(office): cover distinct assignee wakes for repeated task rejections (#3408)** (cfd4206)
- **test: resolve the reply-turn row by message id, not shared turn id (#3318)** (820dc3b)
- **test: stabilize reset prompt admission race (#3241)** (099fd98)

### Docs
- **docs: correct stale unique-index precondition for office session identity (#3513)** (5f0459d)
- **docs: mark shared access features experimental (#3428)** (5d2abae)

### Chore
- **chore: consolidate backend literals and docs formatting (#3508)** (296a1bd)
- **chore(office): remove a garbage collector that never ran (#3495)** (7e2df64)
- **chore(backend): remove dead office-session index classifier (#3455)** (a98d895)
- **ci: add selectable external CI runners (#3451)** (89cddc2)
- **ci: schedule runtime pin updates for Friday (#3422)** (188fb09)
- **chore: update managed runtime pins (#3416)** (c112ec9)
- **ci: bound backend test step summaries (#3410)** (698ef63)
- **refactor(gitlab): remove legacy websocket request API (#3431)** (e4cbdfa)
- **refactor(worktree): remove unused recreator (#3432)** (1dede7a)
- **refactor(agent): remove deprecated model fetcher cache (#3433)** (2d414e1)
- **refactor(office): stop hand-syncing the dispatcher's active-state list with the SQL filter (#3274)** (c4a9f58)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/kdlbs/kandev?utm_source=github-action)._