v0.42.0
Summary
- Release 0.42.0 (stable)
- Built from v0.41.1...v0.42.0
- Published intentionally from main via tag promotion
Highlights
Features
- Dashboard recovery guardian via systemd user unit (PAN-2253)
- Verify agents ACTUALLY moving every tick + add pan-agent-activity skill
- Surface TROUBLED badge on kanban issue cards (PAN-2305)
- Add 'pan plan --auto --auto-start' to slash-command autocomplete
- Implement PAN-2283 tiered execution dispatch
- Clear troubled from tree badge
- Render troubled issue tree badge
- Expose troubled session metadata
- Tiered execution v2 — vigilant listeners, compaction-point re-tier (PAN-2222) (#2249)
- New Overdeck brand mark — deck-stack logo and favicon
- Mechanical prd-first gate in plan finalize and complete-planning (pan-2234)
- Prd-first planning role and canonical refactor queue
- Reserved swarm dispatch budget (PAN-2212)
- Add Claude Sonnet 5 support
- Sandbox-safe flywheel data surfaces (pan backlog forecast + merge-blockers)
- Substrate-first ranking + tenets spirit-gate for backlog pickup
- Restore flywheel soul + blanket-release auto-pickup (PAN-2187)
- Wire uat stack actions
- Add uat context menu
- Resolve uat inline actions
- Persist uat tree expansion
- Render uat containers as tree rows
- Classify uat stack status honestly
- Warn on unavailable merge backend in queue
- Warn when autonomous merge lacks backend
- Show flywheel merge backend status
- Expose flywheel merge backend status
- Add merge backend status helper
- Finalize pi conversation control contract
- Wire pi conversation controls in composer
- Add pi conversation abort endpoint
- Add pi conversation live controls
- Route pi conversation messages through control channel
- Add conversation control ack registry
- Add pi conversation control channel
- Widen pi extension control api
- Add harness behavior runtime contract
- Add evalite foundation
- Show epic marker in sequence table
- Group forecast cards by epic
- Show epic membership in backlog dag
- Thread epic metadata through reads
- Reap closed issue disk residue
- Reap closed issue residue
- Mark closed-out pipeline journals
- Epic-aware sequencer — exclude epics, model contains edges (PAN-2081 Phase 1)
- Group and de-noise generated release notes
- Add user-facing PR-FAQ section to pan-recap
- Add pan-recap executive daily-recap skill
- Backlog pickup controls on issue cockpit + overlay (PAN-2059)
- Show matching conversation title on the /sessions list
Fixes
- Stop swarm-finalization runaway — terminal-spec guard + durable finalizedAt tombstone (PAN-2367)
- Boot-reconciliation excludes phantom/merged/completed agents via shared skip predicate (PAN-2284)
- Stop rendering dead sessions as working; lock strike allowlist (PAN-1739)
- Commit-guard scripts for flywheel-orchestrator + agent main-push (PAN-2194)
- Recover stranded swarm slots — issue-level finalization + git-derived slot readiness (PAN-2357)
- PAN-2145
- Boot-reconciliation resume-all no-op + stale candidate list (PAN-2338)
- Reconcile strike-PR and UAT-batch merge records (PAN-2311)
- Use async sessionExists in uat-promote-notify (PAN-2294)
- Gitignore .pan/test/result.json to prevent per-merge conflicts (PAN-2325)
- Sync target-branch resolution (PAN-2086)
- Isolate codex role kickoff files (#2340)
- Correct Effect.catchAll misuse in route handlers — status POSTs no longer 500 (PAN-2329) (#2339)
- Fix review feedback delivery fallbacks
- Activity check = READ each agent's output & assess progress, not hash-diff
- Keep smee relay alive (#2320)
- Stop dropping pi/omp messages sent mid-turn and silence control watcher ENOENT spam
- Move workspace dashboard peer port off host port 3011 (PAN-2292)
- Keep deacon patrol watchdog patient (PAN-2293)
- Keep flywheel remediation prompt delivery alive
- Keep deacon patrol watchdog patient
- Allow workspace container dashboard port (#2301)
- Allow tiered slot starts without plans
- Preserve untiered work starts without plans
- Gate UAT train reconciler to primary dashboard (#2291)
- Fix stale file-size baseline
- Move workspace dashboard peer port
- Tokenize boot reconciliation held banner
- Found managed server unit with Type=forking so it survives (PAN-1798)
- Include troubled gates on role session nodes
- Keep dashboard health gate compact
- Guard dashboard identity on health checks
- Route default-stamped no-resume boots to the boot dialog (PAN-2278)
- Prevent patrol heartbeat regression
- Prevent duplicate smee relay processes
- Deliver codex planning kickoff
- Verify remote branch before local squash close-out
- Point test role at durable planning context
- Handle diverged main recovery advice
- Verify squash merge by PR head
- Fix codex planning launcher harness
- Make close-out merge check squash-aware
- Make unstick git repair advice non-destructive
- Fix strike agent reducer projection (#2271)
- Route merge-state reconciler through GitHub App REST when configured
- Repair live feedback delivery gates
- Deduplicate bead issue records
- Restore modal test mocks
- Address PAN-2181 review feedback
- Tokenize boot reconciliation modal
- Extend boot reconciliation grace default
- Serialize planning completion per issue
- Extract ohmypi cost reconcile trigger
- Normalize event payloads at the write door so undefined keys can't poison RPC encode (PAN-2225)
- Age-aware starting-state guard kills the duplicate planner twin (PAN-2159)
- Record rebuild also preserves freshest statusOverrides
- Verdict-POST agent notification uses Effect-level catch
- Let an in-progress swarm dispatch its final item
- Surface slot verification failures instead of dropping them silently
- Swarm eligibility gates dispatch only, not merge/gc (endgame starvation)
- EmitAgentEvent attaches the internal token the heartbeat route requires
- Pan swarm dispatches through the full coordination pass (single door)
- Kill the conversations-list stat storm and index the cost ledger join (PAN-2220)
- Coordinate swarm against the merged plan view so item done-ness survives gc
- Match collapsed paste placeholder on normalized PTY output
- Persist patrol heartbeat at cycle start + fresh watchdog grace after restart (PAN-2219)
- Swarm gc degrades git failures to actions instead of aborting coordination
- Preserve freshest swarm slot assignments across record rebuilds
- Gc liveness guard - never destroy a slot whose agent session is alive
- Replace costs-by-issue N+1 with grouped breakdown queries (PAN-472)
- Extract flywheel start helpers to src/lib to satisfy file-size guard
- Resolve findSpecByIssue from the filename instead of parsing every spec (PAN-2216)
- Stop lifecycle patrol from re-processing ended conversations every tick (PAN-2215)
- Pin flywheel start to the primary worktree root
- Carry Anthropic auth mode and plan into normalized config
- Honor per-issue stuck/deacon-ignored hold in swarm coordination (PAN-2214)
- Avoid pan show state writes for missing agents
- Relaunch missing active orchestrator
- Close approved review pipeline wedges
- Reactive readyForMerge convergence for stuck-after-review (PAN-2198) (#2199)
- Bump file-size baseline for Sonnet 5 model-capabilities growth
- Done-preflight follows .beads/redirect to read the live ledger
- Flywheel orchestrator NEVER edits/commits any file — only dispatches
- Pan backlog forecast reads labels via gh (sandbox-safe), not the server-only issue service
- Trim CLI below file-size guard
- Flywheel harness derives via resolveHarness, not a hardcoded claude-code fallback
- Re-apply pan-2179a kickoff-delivery root to refactored seams (fatal work kickoff + transcript confirmation)
- Planning floor selector + forecast API + role rule (PAN-2173)
- Flywheel-specific stuck thresholds + full-tick nudge (PAN-2174)
- Verification gate rejects plan-only/zombie changesets (pan-2179)
- Untrack .pan/spec.vbrief.json from index (pan-2178)
- Untrack gitignored .pan/spec.vbrief.json + add guard test (pan-2178)
- Protect UAT stack action routes
- Prefer clean uat stops over aggregate health
- Fix flywheel stuck-remediation test expectations
- Relaunch wedged or dead flywheel orchestrator instead of parking it (pan-2160)
- Detect kimi-native context overflow
- Contain auto-merge pr state lookup failures
- Add gh fallback for auto-merge pr state
- Remove unused Settings extraction symbols
- Restore pi idle prompt delivery
- Allow pi control acks without browser origin
- Re-evaluate stale merge-blockers on deacon patrol (PAN-2143)
- De-hardcode workspace database name
- Stale flywheel runs no longer report 'running' (false Live badge) (PAN-2108)
- Make flywheel periodic-sweep instruction harness-aware (PAN-2108)
- Flywheel orchestrator self-heals on death + surfaces death reason (PAN-2108)
- Capture omp exit code on death via launcher exit-status file (PAN-2108)
- Scope tmux-send-keys-guard to work agents only
- Block work agents from self-approving subagent prompts via tmux
- Create empty session and configure survival before sending command
- Idle-nudge points agents at their on-disk brief (PAN-2102)
- Default Kimi (Moonshot) provider to claude-code, not ohmypi (PAN-2102)
- Trip troubled gate on pre-kickoff work-agent crash-loops (PAN-1718)
- Stop false 'Worktree missing' for unresolvable sessions (PAN-1718)
- Resume crashed ohmypi agents + surface crash/readiness diagnostics
- Honor ohmypi readiness timeout
- Extend ohmypi readiness recovery
- Wire terminal close-out lifecycle
- Strip post-merge labels on close-out
- Mark close-out pipeline terminal
- Treat closed-out journals as terminal
- Restore /conv URL when re-clicking an already-selected conversation
- Reconstitute role tools: + mcpServers: as launcher flags (PAN-2090)
- Inject role definitions as system prompt — Claude Code dropped --agent (PAN-2087)
- Reuse daily UAT candidate branch
- Reap orphaned inspect sessions
- Route conversation message retry through the optimistic send path
- Pin package name + version in release-notes install command
- Copy readonly snapshot.recentActivity into mutable read-model field
- Make frontend vitest config work in worktrees
- Resolve frontend deps in worktrees
- Use runner config loader for Vitest
- Fix stale strike workspace setup
- Restore pickup drawer tests
- Put Pickup card on the live cockpit (IssueMissionControl), not dead IssueCockpitBody (PAN-2059)
Performance
- Defer startup context sync off the critical path
- Instrument boot timing to attribute slow startup
- Compress landing images PNG/JPEG -> WebP (25MB -> 1.3MB)
Plus 370 internal changes (refactors, tests, tooling).
Breaking changes
- None explicitly called out in commit subjects. Review the full changelog before upgrading across versions.
Install
npm install -g @overdeck/core@0.42.0