chore: sync private v4.8.0 (eece754) - #30
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
v4.8.0.sync/v4.8.0-eece754.Release notes
Fixed
external-review.tsheadless args and non-null assertion in cadence batch test (unblocks tag CIpublish-npm/sync-public).cursor/agent-kit.jsonand.cursor-plugin/plugin.jsonto 4.8.0 (L0 inventory test)Changed
auto mode,run all (batch auto mode),human-in-the-loop (manual); STOPPED cues preserved) and looping Mode meta icon while executing (display-only; HANDOFF Mode tokens unchanged).cursor/context/flight-log.jsonEarlier history on flight boundary (new plan / queue start / Plan none); keep within-flight cap 15; Gaps natural-voice guidance (handoff template + L0); softer idle/support/warning chrome (Quota pause / Heads up); ADR amend2026-07-27_mc-flight-log-panel.mdexecuting→next_up→queued→completed_in_queue→ others), not approved-queue index; ADR amend2026-07-26_cockpit-run-plan-all-queue-awareness.mdMONITOR_FEED_CAPsingle source of truth insemantic-model.mjs, exposed asmissionControl.monitorFeedCap(dashboard.html no longer duplicates the literal)dashboard/lib/semantic-model.d.mtssotsc --noEmit -p packages/cliaccepts the orchestrator test.mjsimportlaunch_visible_terminal()alias (launch_background_terminalremains)activate) instead of OS Terminal focus;--focus-terminal/AGENT_KIT_AUDIT_FOCUS_TERMINAL=1rollback; honesty ban on silent agent-shellclaude -punchanged (2026-07-28_audits-headless-terminal-honesty.md)/plan-review-triageWrite residuals plan: enqueue via/backlog-addcontract in-session (write-confirm Ask → plan file + HANDOFF Backlog; no Gate B / clipboard/start-projecthappy path); batch uniform Write residuals may enqueue one combined plan (2026-07-28_triage-write-residuals-via-backlog.md)2026-07-27_mc-flight-log-panel.md)agent_stepfeed for active-plan completed/running to-dos (kindsrun_plan/handoff/delivery/agent_step; display cap 20); glossary amend (2026-07-27_crew-monitor-vs-plan-monitor-glossary.md)Fixed
Mission Control: delete orphaned Field Report attention-stack render helpers + CSS from
dashboard.html(Flight Log Gaps-only); retarget pinning tests; rewrite/field-report-resolveand getting-started so they no longer describe Resolve all / Review all MC UIMission Control Flight Log (ex-Field Report card): HANDOFF Gaps only as current (large) + past (smaller) clickable cards; gitignored
.cursor/context/flight-log.jsonhistory ledger (cap 15); ADR2026-07-27_mc-flight-log-panel.mdOpt-in Mission Control LAN broadcast:
/dashboard-broadcast,agent-kit dashboard-broadcast,npm run dashboard:broadcast; non-loopback bind requiresMISSION_CONTROL_TOKEN; static/snapshot/SSE gated; config writes stay loopback-only (2026-07-27_mission-control-opt-in-lan-broadcast.md)ADR: Mission Control opt-in personal LAN broadcast (
/dashboard-broadcast+ token gate); narrowly supersedes personal-local-only for trusted LAN only;/dashboardstays loopback-first (2026-07-27_mission-control-opt-in-lan-broadcast.md)ADR:
/plan-review-triagebatch HITL when multi-path outcomes are uniform (one Ask; durable heading on every target; sequential fallback when mixed); Field Report Review all paste target unchanged (2026-07-27_plan-review-triage-batch-uniform-hitl.md)Dogfood memory: wait-monitor false-ready on pre-existing
plan-monitor-*.md(existence-only poll); freshness gate + mandatory chat--wait-monitor(errors/2026-07-27_audits-wait-monitor-stale-preexisting.md; ADR2026-07-27_audits-wait-freshness-enforce.md)Plan audits launcher:
--wait-monitorfreshness (mtime >= arm-epochor<!-- audits-wait-fresh: created|updated -->); dry-run prints arm-epoch and stale/missing; exit3on stale timeoutADR: mandatory chat
--wait-monitorwith freshness gate and same-session triage Ask; ban Final HANDOFF "after monitor lands" as happy-path continue (2026-07-27_audits-wait-freshness-enforce.md)Dogfood memory: cadence WARNING already-clear claim-check is a no-op close (empty ledger + dismissed window id =
subject_resolved; cancel triage/product-fix when owed set empty) (decisions/2026-07-27_cadence-warning-already-clear-claim-check.md)Dogfood memory: autonomous launch then manual
donecontinuation dual-fence (errors/2026-07-27_audits-autonomous-launch-manual-done-continuation.md); docs Troubleshooting row for wait-then-triagePlan audits launcher: optional
--wait-monitor/--wait-timeout(default 900s) to poll forplan-monitor-<slug>.mdafter visible arm or standalone; exit0created/ok,3timeout,4soft-fail while waiting; dry-run prints wait path/timeout (ADR2026-07-27_audits-post-spawn-monitor-watch-continue.md)ADR: post-spawn monitor watch then continue to
/plan-review-triageAsk after visible autonomous audit arm (honesty until monitor file exists; triage and/git-prodHITL intact) (2026-07-27_audits-post-spawn-monitor-watch-continue.md)externalPlanReviewconfig keys for autonomous audits:mode(paste|autonomous),midBatchAudits,preflight(off|warn|block); Mission Control Config allowlist + UI; example + docs + guards testsL0 audits pre-flight on
/continue-plan,/run-plan,/run-plan-all,/hotfix(preflightoff/warn/block); exhaustion and/run-plan-allmid-batch arming prefer visible autonomous launch whenmode: autonomousDogfood memory: paste dual-fence, invisible agent-shell
claude -p, and bare/plan-review-triagefootguns (errors/2026-07-27_audits-*); prefer-autonomous decision noteAudits ADR: autonomous plan review contract (visible auto-launch, mid-batch + queue-end audits, audits pre-flight on plan-run commands; paste-only demoted to fallback) (
2026-07-27_audits-autonomous-plan-review-contract.md)Plan audits launcher: visible auto-launch (
--autonomous/ configmode: "autonomous") via macOS Terminal.app or Linux emulator;--paste-onlyfallback;--dry-run; mid-batch--batcharms; soft-fail ifclaudemissing; headless CLI always passes--printGlossary ADR: Crew Monitor (Mission Control live-activity UI) vs
plan-monitor-*.md/ Field Report external-review evidence; file/DOM/CSS conventions unchanged (2026-07-27_crew-monitor-vs-plan-monitor-glossary.md)/hotfix: L0 command for narrow urgent work (confirm → mini plan ≤4 to-dos →/run-plantick contract); ADR2026-07-27_hotfix-command-mini-plan.mdMission Control product posture ADR: personal local-only (loopback-first); remote/shared multi-user auth/CSRF rejected as product goal (
2026-07-27_mission-control-personal-local-only-posture.md)Changed
2026-07-27_mc-flight-log-panel.md)/continue-plan) + Run (auto) (/run-plan); header Add all → Run all (still copies/run-plan-all); copy-only paste unchanged (data-focus-key="checklist-add-all"stable). ADR2026-07-27_mc-checklist-run-manual-auto-labels.md/plan-review-triageStep 6 + HITL table: multi-path uniform batch Ask (durable heading per file); mixed sequential fallback; external-review / Review all / queue-end copy prefer one paste + one Ask when uniform (does not reopen wait-freshness or cadence-clear owners)--force --autonomous --wait-monitoron autonomous arm; AwaitShell until exit0|3|4; mid-batch one arm+wait (or one--batch+ wait_all); queue-end triage with explicit path list (/run-plan,/run-plan-all,/plan-external-review, HITL gate table; ADR2026-07-27_audits-wait-freshness-enforce.md)plan-monitor-<slug>.mdthen continue into/plan-review-triageAsk (/run-plan,/plan-external-review,/run-plan-allqueue-end); mid-batch waits for file only (no mid-queue triage Ask); never claim finished without the file;/git-prodstays separate (ADR2026-07-27_audits-post-spawn-monitor-watch-continue.md)#now-execution-panel): Spotlight stack — Gaps alert above the stepper when present; Current step remains the sole full body; Previous/Next compact muted one-liners; meta + copy actions as a quiet footer (CSS/markup order only; ADR2026-07-27_mc-current-mission-spotlight-stack.md)/run-planAuto no-regression hygiene: never co-pack Task with staging AwaitShell / parallel heavies; first-tick Auto cooldown recommend (15000) wheninterTickCooldownMsis0without changing the global default; plan authoring splits docs-only vs product ticks for more inline-first (ADR2026-07-27_auto-run-no-regression-invariants.md)plan-monitor-*.mdevidence (DOM#hero-activity, CSS.monitor-row*, icon kindmonitorunchanged)npx/install.mdinstalls kit L0 only; Mission Controldashboard/runs from an agent-kit tree that shipsdashboard/start.mjs(README, getting-started, install.md prerequisites Node 20+)/agent-kit-onboardnotes Mission Control as optional post-essentials (not a blocking readiness check)feat/fix/docs/chore/prviarefs.commitType; cyan ✔ fallback); live-actions-only allowlist unchanged (run_plan/handoff/delivery)Fixed
.attention-actions-per-planso bulk CTAs and the per-plan Copy review list read as two visual tiers (copy-only behavior and button order unchanged)--batchshell targets copy viadata-copy-*(not onclick JS literals) with paste-only toast/title honesty.content,.panel-scroll-body,.live-activity-feed) use--mc-scroll-gutterso inner cards clear the 6px scrollbar thumb; panel scroll-offset preserve unchanged/run-planinline_first: clarify ignore-unless-lightweight (not force-inline); failed worker_type / productread_scope/ findings checks ignore the flag and stay Task; no silent inline after Task API-limit abort (context-guardian+ stop table); ADR2026-07-27_run-plan-inline-first-qualification-gap.md/plan-review-triagebare (no paths): select untriaged monitors (git-fresh → HANDOFF-aligned → scan), never "newest mtime wins" alone; external-review launcher + prompt print explicit/plan-review-triagepath lists after review so batch monitors are not missed behind bulk-touched older filesinstall.md: include.cursor/scripts/field-report-cadence-bump.shso the drag-install table matchesL0_ARTIFACTS/ registry (canonical-inventory test)listUnreviewedReviewTargetsrecords every External-report slug before the triage gate so terminal plans with an already-triaged monitor are not counted as owed (cadence ADR §4)--mc-header-control-size: 24px) so hover fill no longer flushes the 32px header borders; tighter trailing pad (--mc-header-pad-x-end) so More sits closer to the IDE ellipsis; HANDOFF health treats present idle Plan (none/ null) as ok (missing/unparsable HANDOFF still warns)Added
/continue-planplus a short new-chat hint when HANDOFF Mode is manual / continue-plan (idle Quiet cockpit still Copy/start-projectonly; continuous/queue keep plan path + staging CTAs). ADR2026-07-27_mc-manual-mode-next-step-ctas.md#navMoreBtn/.nav-more-menuoverflow escape (position: fixed+positionNavMore/ trigger-rect / resize); locks the 2026-07-25 clip fix so header chrome edits cannot silently regress (mirrors Checklist Actions overflow test)- **Gaps:**in the Current mission panel (parseHandoffMarkdown+now.gaps; hide when absent/none); closes deferred residual R-06/run-planticks (default 3) or/run-plan-allqueue complete when unreviewed work remains; gitignored cadence ledger +fieldReportReviewCadenceconfig; batch--batchpaste-only launcher + per-plan CTAs;/field-report-resolveacceptsattention:cadence:<windowId>(ADR2026-07-27_field-report-activity-review-cadence.md)Changed
docs/getting-started.md(Ask before unit, one phase per chat, suggest/git-staging, new chat →/continue-plan) plus an all-modes which-command-next chooser; cross-links fromautogit/plan-routine.md§5 and README (no Gate A/B or tick-contract rewrite)autogit/plan-routine.md: authoring notes forinline_first(opt-in only; ignore-unless-lightweight; good/bad YAML; ADR/docs ticks usedocs-repo+ allowlistedread_scope) so false opt-in does not burn Task quota (ADR2026-07-27_run-plan-inline-first-qualification-gap.md)HOST, no remote hosting without a separate auth plan, resource vs Agent-quota boundary) indocs/getting-started.md; README Dashboard links to the section#navMoreMenustays an explicit manual dogfood gate (DevTools rect / screenshot vs overflow ancestors); CI keeps the PR #403 string/regex lock only (ADR2026-07-26_mission-control-plugin-ux-validation-depth— no JSDOM/Playwright). Operator steps live on theescapes nav More menu…harness comment./run-plantick-close, worker Rules,autogit/gitupdate.mdstaging Prompt, and command-worker template: reinforce add-by-name staging for.cursor/memory/plan-monitor-*.md(no broadgit addof memory WIP)title/aria-labeluses a documented HTML mirror ofPROMPT_RESUME_GUIDANCE(ESM cannot load in the inline script); tests lock the two strings together/start-project,/backlog-add),/continue-plan, memory-loop CHECK,/git-staginghygiene, and named agent prompts consult theme-matched.cursor/memory/plan-monitor-*.md(andplan-review-*audits); Field Report detection and external-review arming unchanged (ADR2026-07-27_plan-monitor-consumer-awareness.md)/plan-review-triagemulti-path skips already-triaged and no-open-residual paths; per-row Copy triage unchanged.panel-scroll-bodyscroll offsets (and re-opens Checklist Actions when the plan key still exists); still yields to in-flightpendingAnchorScroll.attention-guidancecard body); toast unchanged; copy-only past-chat picker contract preserved/run-plan+ external plan review: enforceexternalPlanReview.autoRemediate(default false) as a findings-only remediation gate (fix-agent Task vs residuals backlog plan); review workers must not auto-fix product code; launcher injectsautoRemediateinto the Claude prompt;/run-plan-allsubagent template carries the rule (ADR2026-07-27_review-workers-findings-only-autoremediate.md)/field-report-resolve: prompt claim-check returnsansweredandsubject_resolved(path/plan evidence basenames only); dismiss when either is true. DashboardisPromptClearedByPlanLifecyclestays exact-*.plan.md-refs-only (intentional divergence). ADRs2026-07-25_mission-control-field-report-source-contract/…-dismissalsamended 2026-07-27./run-plan-all: external plan review Ask/paste runs once at queue end only; mid-queue advances without review pause (non-stop after confirm); Field Report owed covers skipped monitors; supersedes per-plan pause ADR (2026-07-27_run-plan-all-external-review-queue-end.md):active→scale(0.98)) applies only to interactive controls (.health-item,.empty-state-btn); removed from static.cardpanels and dead.plan-card:active;prefers-reduced-motionoverrides stay in sync- **Gaps:**machine field and single-plan- **Mode:**vocabulary; quota-stop Mode pattern (— STOPPED: API/usage limit);/continue-planAPI-limit pre-flight mirrors/run-plan; Ask-questions numbered-list fallback cross-link after Auto→GrokAdded
Mission Control: primary Home return outside the More menu (clickable header brand +
#headerHomeBtnbeside refresh, section-title Home back on secondary views); overflow Home kept as secondaryAPI limit enforcement (audit Phase 2):
/run-plan//run-plan-allpre-flight refuse after an API/usage-limit HANDOFF stop until operator confirms recovery; Auto continuous runs recommendinterTickCooldownMs15000 (default stays0); Mission Control Config hint; ADR amend + decision2026-07-27_api-limit-enforcement-levers.md; getting-started model/quota tip; no Mission Control SSE/poll throttle as Agent quota fixAPI limit enforcement audit (Phase 3 close-out): durable plan-review audit Phases 0–3; dogfood checklist verified (limit hit → clean stop → HANDOFF → operator recovery on 2026-07-27, including consecutive Task aborts)
/run-plan-allconsolidation apply helper:.cursor/scripts/run-plan-all-consolidate.shregistered as L0 (install /l0.ts/ registry; dry-run default,--apply --approved, drop/archive, HANDOFF queue rewrite, merge checklist; backlog CRUD must not rewrite in-flight queue); also alignsrun-plan-all.mdand backlog CRUD commands intol0.ts/ Port B with the registryCLI plan-loop harness:
run-plan-all-orchestratordecision helpers + vitest guards (confirm Ask blocks dispatch, malformed summary does not advance cursor, HANDOFF queue field round-trip, in-window implement forbid for transcript 606a14a5)docs/getting-started.md:/run-plan-alloperator path (when to use, six-way confirm Ask table, resume mid-queue, named-model tip, Checklist Add all); cross-link fromautogit/plan-routine.mdReferencesConsumer autoupdate check (opt-in, notify-only):
agent-kit update --check [--json] [--respect-prefs] [--stamp]; config prefsupdateCheck.enabled/intervalDays(default off) andupdateApply.auto(defaultfalse); sessionStart advisory viasession-plan-guard.py; Mission Control Config toggles check prefs only; factory/dev registry skip; apply remains/updateAsk HITL (never silent L0 write)Mission Control Checklist: Add all header button (empty and populated) copies
/run-plan-allfor chat paste (chatInput); copy-only, no Run queue / HANDOFF writes/updateslash command: consumer-mode Agent Kit layer update from the public registry (version compare, diff, Ask confirm, protected paths respected; distinct from public sync)Cursor theme: replace filled astronaut-helmet SVG with stroke helmet mark (matching
agent-kit-cursor-theme.svg). Normalized viewBox for 16px chrome,currentColorstroke. Remove root staging file.Cursor theme: redraw spaceIconSvg kinds (current-mission, monitor, field-report, checklist, more-sections) in the thin stroke language (0.5px, matching logo-cursor). Update stroke-width assertion in plugin-ux-validation test.
Cursor theme: extend spaceIconSvg with section icons for More menu (overview, plans, activity, agents, skills, commands, health, git, memory, terminals, processes, config). Replace decorative colored dots in #navMoreMenu with section icons. Keep live status dots (health, git, terminals, processes) intact.
Mission Control Field Report: restore unanswered agent-prompt rows (transcript scan →
buildAgentPromptItems) with copy-only Copy chat id (pastChatPicker) and Copy resolve (/field-report-resolve attention:prompt:<chatId>); Resolve all includes visible prompt ids with report idsMission Control design tokens:
--mc-radius-pill(999px) for slash-command-style status capsulesBacklog CRUD slash commands (already released via #358; not re-authored here):
/backlog-add,/backlog-edit,/backlog-delete,/backlog-cancelMission Control Config tab: More-menu Config section edits allowlisted
.cursor/context/config.jsonprefs (autoHandoff,interTickCooldownMs,externalPlanReview.*,agentPersona) via loopbackPUT/PATCH /api/config(merge-safe; ADR2026-07-26_mission-control-config-write-allowlist.md)Agent Personas: chat/CLI character packs under
registry/personas/(persona.json, schemapersona-pack.json) with config keyagentPersona; bounded compatibility reads for legacyworkspaceSkinMission Control Cursor Interface Skin: compact astronaut-helmet mark (
dashboard/logo-cursor.svg) for header and favicon whendata-dashboard-skin="cursor"; Legacy keepsdashboard/logo.svgMission Control Current mission execution timers: discreet total and per-stage (to-do) elapsed in
now-meta, gitignored local observation ledger (.cursor/context/mission-timing.json), freeze on completed, omit on idle; live text tick while executing (ADR2026-07-26_mission-control-execution-timers.md)Cursor Auto API hit-limit remediation: ADR-lite with symptom matrix (7 rows), hard-stop decision tree, and operator playbook (Phase 0-1)
/run-planand/run-plan-allstop tables: API / usage hit limit stop condition, revert to-do topending, HANDOFF with stop reason, recommended model switch (Phase 1)Context-guardian: quota-blocked session section — hard stop with HANDOFF, not "keep coding"; operator message to switch off Auto or wait for quota reset (Phase 1)
Optional inter-tick cooldown (
interTickCooldownMs) in.cursor/context/config.jsonfor long/run-planLoop and/run-plan-allqueues (Phase 2)Model guidance for long runs: prefer named model (Claude Opus, Sonnet 4.6, Composer 2.5 Fast) over Auto; parallel heavy Tasks discouraged (Phase 2)
Field Report owed unreviewed plans:
buildOwedReviewItemsdetects terminal-lifecycle plans (completed/parked/archived) with no matchingplan-monitor-<slug>.md; emitsoweditems (capped at 8) with copy-only external review command (pasteDestination: terminal); dismissable via ID-only dismissals store; source-contract ADR amendedField Report dashboard renders boxed Unreviewed plans group with plan name + copy external review command (
pasteDestination: terminal); empty states distinguish "no monitors", "no unreviewed plans", and "both clear"; existing Blocking/Debt monitor rows unchangedMission Control cockpit understands the
/run-plan-allqueue:parseHandoffMarkdownparsesRun queue,Queue cursor,Queue status, andQueue outcomes(false-negative policy on backtick noise); the semantic model exposesmissionControl.runQueue,now.nextUpPlan, and per-planqueueRole/queueIndex; a completed Current mission names the next-up plan on the Next row instead ofNone: mission completewhen the queue has more work; Checklist sorts by approved queue order with additive Next up / Queued / Executing role pills (lifecycle pills and executing-only shimmer unchanged; copy-only, no dashboard queue writes; ADR2026-07-26_cockpit-run-plan-all-queue-awareness.md)Checklist plan lifecycle: HANDOFF Backlog parser accepts both
Backlog plans(canonical) andBacklog(short alias) field labelsChecklist plan lifecycle: never-started plans (
completed: 0, inProgress: 0) classify as Backlog instead of Incomplete — fixes0 of Nfalse positives for Gate-A queued plans/start-projectGate A: single composite question merges active-plan disposition and write confirmation — four options with active plan (backlog+write, park+write, modify, cancel), four without (write, write+backlog, modify, cancel); Gate B always offersAdd to backlog(Mode STOPPED) distinct fromStop here(plan stays active); fallback rule: one numbered list per message/updateregistered as L0 inregistry/registry.jsonand listed indocs/coherence-inventory.mdso consumer installs receive the slash commandMission Control More menu: Home item at the top returns to Overview (
showSection('overview')) while keeping keyboard roving and Skins radiosFixed
dashboard/logo-cursor.svgheader/favicon strokes use hardcoded#e4e4e4(Cursor--text-primary) instead ofcurrentColor, which resolves to black under the<img>tag (same class of bug as the Legacy logo fill fix)Changed
/run-planinline-first: lightweight docs-only to-dos (CHANGELOG, memory index, L0 markdown close-out) implement in-session during orchestrated runs whenread_scopeis docs-only and there is no findings contract;inline_first/force_taskplan frontmatter; ADR2026-07-27_run-plan-inline-first-lightweight-todos.md(quota mitigation after delegation enforcement)/run-plan-allexternal plan review: queue-end only (non-stop mid-queue); mid-queue skips stay Field Report owed; ADR2026-07-27_run-plan-all-external-review-queue-end.md(supersedes per-plan pause)/run-plan-allPO synthesis: mandatory Task(explore) viacommand-worker-prompt.md(main window reviews report + confirm Ask only; inline fallback if Task unavailable);autogit/plan-routine.mddelegation table rowMission Control Checklist pills (lifecycle + queue-role) and Current Mission badge: character mark + UPPERCASE label (CSS
text-transform: uppercase; JS maps stay Title Case) replaces colored.dot; queue-role pill joins the stroke-free solid-fill family (border: none,--mc-radius-pill, solid*-bgsurface); next-up mark uses inline SVG monochrome fallback (⏩︎ never renders as colorful emoji); non-color cue tests updated for the frozen mark table; ADRs2026-07-27_mc-queue-role-pill-stroke-free-marks,2026-07-27_mc-pills-uppercase-labelsMission Control Field Report section icon: redraw
paths['field-report']inspaceIconSvg()as a handheld radio with antenna, speaker grille, and side PTT paddle so the glyph reads as radio PTT (not a person) in Cockpit nav, card title, and empty-state hero; remains distinct from More-menuagentsMission Control live refresh: watch
~/.cursor/projects/<slug>/agent-transcripts/so Field Report prompt Action rows refresh after transcript flush withinWATCH_DEBOUNCE_MS(400ms), not only on the 15s periodic; periodic remains fallback when watch is unavailable (source-contract ADR amended)Mission Control Monitor section icon: redraw
paths.monitorinspaceIconSvg()as concentric rings + sweep wedge so the glyph reads as radar (not a gauge) in Cockpit nav, card title, and empty-state heroMission Control Legacy skin:
dashboard/logo.svgoutline fills use#e2e8f0(header text color) instead of near-black#3C3C3Bso the astronaut mark stays visible on the dark header; highlight layers and blue-cyan gradient unchanged. Cursor skin still useslogo-cursor.svgMission Control Checklist: recent-plan cards replace whole-card Copy path with an Actions dropdown that copies chat commands (
/continue-plan,/backlog-edit,/archive-plan) for Start / Edit / Cancel; copy-only tochatInput; Plans accordion and Field Report path copy unchangedMission Control More menu: inject the 12 section icons via
injectCockpitNavIcons()+spaceIconSvg()and remove duplicated inline SVG markup from#navMoreMenu; live status dots and item aria/onclick attributes unchanged; a11y name-loop covers all 12 section kindsMission Control Field Report: drop portfolio plan-state NOTE kinds (
backlog/parked/incomplete) from the attention stack; Checklist plan cards remain the portfolio surface; empty-state copy covers readiness, unanswered prompts, and External reviews only (source + dismissals ADRs amended; supersedesfield-report-attention-not-portfolio)/field-report-resolveandFIELD_REPORT_ATTENTION_ID_REacceptattention:prompt:<chatId>besideattention:report:<slug>Mission Control chrome icons: header refresh joins the 16px / stroke-1.5 workbench shell with
spaceIconSvgandnowMetaIconSvg; empty-state heroes scale via--mc-chrome-icon-sizemultiples (no hard-coded 32/28px)Mission Control lifecycle, attention-severity, and queue-role pills: use
--mc-radius-pillcapsule geometry (Cursor slash-command style) instead of--mc-radius-smchrome squares; idle monitor chips remain at 999pxMission Control Cursor Interface Skin:
dashboard/logo-cursor.svgswaps stroke line-art for the filled astronaut helmet path (header + favicon at 16px); Legacylogo.svgunchangedMission Control dashboard: remove dead
.attention-group-labelCSS (and two dependent selectors) left after Checklist notes UI removal; no markup emitters remainedMission Control empty states: Cockpit section empties (Quiet cockpit, Listening, All clear, Empty board / Empty hangar) show the matching
spaceIconSvgfineline tab icon centered above the headline via optionaliconKindonrenderEmptyStateCta(decorative; secondary panels unchanged)Mission Control Cursor Interface Skin: replace robot-outline mark with compact astronaut-helmet line art (
dashboard/logo-cursor.svg, path unchanged); global chrome density via--mc-header-height: 32px, header logo on--mc-chrome-icon-size, and shared--mc-status-dot-size: 7pxfor.dot/#statusDot(Legacylogo.svgunchanged)Monitor return-brief hierarchy: icon-only status chips (kind gloss on hover/aria), colors aligned with Current mission / lifecycle solid tokens (
run_planuses executing green), row order chip → structured action line → trailing time, and producer labels as{actor} · action · …for tick/handoff/plan/deliveryMission Control serve: raise
dashboard-data.mjsexecFiletimeout from 15s to 60s (override viaAGENT_KIT_DASHBOARD_DATA_TIMEOUT_MS) so cold snapshots on large dogfood repos no longer flip the badge to Degraded with empty cockpit panels; timeout errors now name the limit explicitlyMission Control empty states: shared
renderEmptyStateCta(headline + support + optional copy-only CTA); cockpit and secondary panels use kit-voice copy; Field Report empty reflects the unified attention inbox (plan-state + readiness + External reviews); CTAs name paste destinations only (no Open)Rename chat/CLI character packs from workspace skins to Agent Personas (
agentPersona,registry/personas/, docspersonas-contract.md/creating-personas.md); Mission Control Interface Skins (legacy/cursor) unchangedField Report unifies plan-state and readiness cards with External reviews in one attention stack (kind + severity pills; severity-first sort); Checklist drops the "Plan states and readiness needing a decision" notes group and keeps plan cards only
Monitor hero identity: prefer kit agent, else
orchestratorfor delivery rows without an agent, else plan name fromrefs.plan, else System; missing timestamps leave the time column empty (no kind-tag duplicate)Monitor classification chips show icon and kind tag at rest (no hover/focus width or opacity expand)
Monitor feed layout polish: calmer row spacing, clearer chip icons/tags, and stronger identity vs label hierarchy (resting-chip and single-roll contracts unchanged)
Monitor delivery labels include a brief ship subject (squash title or first absorbed commit) plus PR # and sha, instead of count-only Shipped/Merged strings
/plan-review-triageWrite residuals plan copies a ready-to-paste/start-project with this goal: …prompt to the clipboard (pbcopy/xclip/clip)Mission Control Checklist cards and Plans rows now show ratio progress bars; executing plans shimmer when motion is allowed, while other lifecycle states remain static
/run-plan-allis now a pure orchestrator: after queue confirmation it dispatches one Task subagent per plan (command, L0 mirrors, ADR) instead of implementing plan to-dos in the orchestrator windowChecklist plan lifecycle:
classifyPlanfall-through checkscompleted > 0 || inProgress > 0before returningincomplete;0 of 0plans returnbacklog(implicit queue)HANDOFF template now includes
Backlog plansandParked plansfields in Work Status sectionMonitor hero feed flattened from agent-grouped headers-and-sub-rows to a single flat newest-first list with inline classification chips (icon + kind tag), identity from agent / orchestrator / plan / System (consecutive identical collapsed), and preserved copy-only keyboard affordance; dead stagger classes replaced with per-row
.monitor-row.stagger-fadeChanged
agent:group undersystem)Removed
FIELD_REPORT_STALE_MS,isFieldReportItemStale,partitionFieldReportByStaleness) — no remaining callers after Phase 1 flatten of blocking section; browser bulk-resolve mirror already deadfieldReportResolveActionand per-row CTAs (113 tests pass)Added
Mission Control Field Report: header bulk CTAs — Triage all copies
/plan-review-triagewith every visible report path (blocking first, then debt); Resolve all copies/field-report-resolvewith every visible attention id; both hidden when empty; newfieldReportTriageAllAction()helper in semantic model (202 tests pass)Mission Control plugin UX validation: assert dashboard HTML never embeds
vscode://orcursor://protocol URIs (locks the copy-only paste-destinations contract after residual A close)Mission Control plugin UX validation: assert all six plan lifecycle keys stay distinguishable without color alone (unique labels, marks, pill text, and aria)
Mission Control: the semantic model emits durable inventory events (
agent,skill,command,memoryadded/removed/changed) with stable ids and previous-baseline dedupe, feeding the upcoming unified Activity feed; the Monitor hero keeps its curated kind allowlist so inventory events never appear thereMission Control: the Activity tab renders a unified newest-first feed merging the full semantic stream (including inventory events) with client diagnostic events, deduped and capped, with type accents, per-source labels, and preserved copy-only targets; per-refresh "Data refreshed" rows are replaced by a summarized last-refreshed heartbeat
Mission Control: the Activity feed gains per-source filter chips (All / Plans / Git / Agents / Skills / Commands / Memory / Terminals / Processes) as a keyboard-navigable radiogroup with focus rings and reduced-motion support, filter-aware empty states, and a
navActivityBadgethat reflects the full unified feed count/archive-plan <plan-file>: copy-only command that removes a plan from the HANDOFF parked list and moves it into.cursor/plans/archive/, confirmed with Ask questions; Mission Control may only copy the command, never mutate in-panel/field-report-resolve <attention-id>: copy-only command that appends a Field Report attention id to local gitignored.cursor/context/field-report-dismissals.json(IDs only, no transcript body); Mission Control Field Report rows expose Copy resolve command/field-report-resolve: per-id claim-check contract — agent must locate, verify, and decide dismiss eligibility for each attention id before appending to the dismissals store; skip when the claim is still open (HITL or triage still required)Mission Control: Skins group in the More menu with Legacy (current palette, default) and Cursor (Cursor-like base chrome with Agent Kit semantic highlights); applied without reload, persisted under the
agent-kit:dashboard-skinbrowser preference, keyboard accessible withmenuitemradioselected stateChanged
No structured findings extracted), capped at ~240 characters so a human can triage from the card without opening the monitor file; triage, dismissal, and lifecycle classification are unchanged (ADR amendment2026-07-25_mission-control-field-report-source-contract.md)2026-07-26_mission-control-field-report-review-debt-inbox.md)/plan-review-triage: supports multi-path sequential walk (/plan-review-triage <path1> <path2> ...) with per-monitor Ask questions gates, path skipping for nonexistent monitors, and stopping contract (Phase 3)/field-report-resolve: bulk copy target wording updated from "Older waits group" to "Field Report header"; documents the Resolve all header button (Phase 3)prefers-reduced-motion: no-preference, disabled under reduce); the executing status chip drops its glow/pulse and keeps green fill plus the ▶ mark as the live cue/plan-review-triage <path>) for paste into a fresh chat; prompt/handoff chrome removed/field-report-resolveaccepts multipleattention:report:<slug>ids in one paste (per-row Copy resolve command; Field Report no longer ships nest-level bulk resolve chrome)currentColor); refreshing spins the icon (respectsprefers-reduced-motion); no-data uses title/aria "Start server" instead of button text/start-project: when HANDOFF already has an active plan, Ask questions for disposition before writing HANDOFF (Add new plan to backlog/Park current plan and activate new/Cancel); never park the active plan silently. Backlog path keeps the current plan active, lists the new plan underBacklog plans, and skips Gate B. Mirrored incursor-plan-handoff,hitl-ask-questions,session-plan-guard, andplan-routine; ADR2026-07-25_start-project-plan-disposition-gate.md/plan-review-triage: every outcome (Write residuals plan, Fix nits only, Ack and stop) must persist a durable## Triage note(or equivalent) on the monitor so Field Report clears untriaged rows; Ack and stop no longer relies on HANDOFF alone/run-planorchestration: review to-dos with a findingsworker_contractdispatch workers with write access so they author plan findings; orchestrator transcription is fallback only (secondhand label + HANDOFF gap). Cross-linked fromautogit/plan-routine.md./run-planstaging-ready: workers must run applicable formatter/linter checks on touched files and report them underTests:/Validation:beforeStaging ready: yes; orchestrator rejects yes without that evidence when formatted/linted files changed (pure markdown with no applicable linter may state none). Mirrored inplan.mdtemplate andautogit/plan-routine.md; cross-links biome format incidents in.cursor/memory/errors/..cursor/memory/plan-review-<plan-slug>.md(versioned audit) at consolidate or plan close; active plans remain gitignored per public-tree guard. Convention inmemory-looprule and ADR2026-07-25_plan-review-findings-durable-home.md; 24h review backfilled inplan-review-24h-full-review-and-fix.md./summarycloses with an Ask questions gate for the next step (Continue where we left off,Something else,Show more detail); chat fallback when the tool is unavailable.Fixed
position: fixed+getBoundingClientRect(same pattern as nav More) so Start/Edit/Cancel are not clipped by#recent-plans-panel/.panel-scroll-bodyoverflow; prefer open above, flip below when space above is tight- **Plan:** name.plan.mdand recover Backlog/Parked/Run queue lists written as##headings when the- **Field:**bullet is missing; session hard rule + format warning steer writers back to bullet fields (ADR2026-07-26_handoff-machine-field-contract.md)windowMstime-window claim was removed from the producer docsrefs.sharestores the copy-only and keyboard contract (role,tabindex,aria-label, copy handler),.monitor-sub-rowgains a token-based hover, and the stagger animation binds behindprefers-reduced-motionlimit), andplan_progressevents carry the plan'sagentautogit/plan-routine.mddocument the plan-levelagent:attribution field (kit agent id from.cursor/agents/, null fallback grouped assystem, distinct from per-to-doworker_type)*.plan.mdreference in the pending question is completed or parked/exhausted; demote External-review rows for the same terminal reviewed-plan lifecycle without marking them triaged (unknown or missing plan refs stay visible)transform-origin: 50%so the icon no longer wobbles off-axissystem-uisans,13px/ weight500chrome labels,16pxicons,12pxdescriptions, separate mono stack) instead of mixed sizes and a mono-in-UI font stack--mc-*structure tokens for radius, spacing, card/header padding, and meta type; Legacy/Cursor skins stay color/surface overrides on the same ladder--orange-bgfor incomplete/warning*.plan.mdrefs count (branch names and monitor paths ignored);Backlog plansis a first-class lifecycle with badge/sort/Checklist notes, mirroring parked zero-open → completedinstall.mdtable includes.cursor/commands/field-report-resolve.mdso the L0 inventory stays aligned withpackages/cli/src/lifecycle/l0.tsneeds_choiceand clear only when the doctor report turns ready oronboarding.deferredItemsrecords an explicit deferral with a reason; readiness rows carry the pillarcheckIdsocollaboration.providermatches theconfirm-provideractiondata:line, count silence only after validated payloads, keep periodic flush off the watch debounce, and generate snapshots asynchronously so the Live badge cannot mask a frozen panelPARKEDat N/N, while parked metadata is preservedorchestrated, instead of reporting a live runPASTE_DESTINATIONSkeys (chatInput,pastChatPicker) forpasteDestinationinstead of human label stringsbuildEditorFileUris,joinRepoRoot) and unusedsystem.repoRootsnapshot field left after the copy-only decision/start-project,/git-prod,/run-plan,/summary): em dash sentence connectors replaced with colons or punctuation per kit hygiene--squash --auto) so CI matches the public repo ruleset (merge commits disallowed)sync-publicCI job fails whenPUBLIC_REPO_TOKENis unset on tag or manual sync runs instead of exiting green with no sync/continue-planHITL gate uses Ask questions with concrete options; typed "yes" is no longer the confirmation pathSource
eece754sync/v4.8.0-eece754