Agent Deck v1.16.11
Terminal session manager for AI coding agents.
Installation
Homebrew (recommended):
brew install asheshgoplani/tap/agent-deckQuick Install:
curl -fsSL https://raw.githubusercontent.com/asheshgoplani/agent-deck/main/install.sh | bashGo Install:
go install github.com/asheshgoplani/agent-deck/cmd/agent-deck@v1.16.11Changelog
- 06f72a1 Apply suggestion from @boyvinall
- d70c283 Exempt __complete from the generic help-consent test
- 4cfca95 Final polish: CHANGELOG creds-refresh credit, dependabot-automerge lint test, wire CI
- ad32437 Fix NewShellWindow default window-size to match session-creation default
- 7c4d6d2 Fix TestToolIconColor_RegistryMatchesLegacySwitch: add muse to legacy expectation table
- bd01c51 Fix startFastDeathWatcher test call signature after carry/2279 param addition
- 954011f Honor queued remote cancellations
- eaf3c55 Honor queued remote cancellations
- ba82953 Make Discord typing best effort
- dc9ce3e Merge PR #2047 into local integration
- bd79ce7 Merge PR #2095 into local integration
- 3a468da Merge PR #2141 into local integration
- 6d703d7 Merge PR #2142 into local integration
- 7294bc9 Merge PR #2146 into local integration
- fae07a2 Merge PR #2149 into local integration
- 9aa9d06 Merge PR #2150 into local integration
- ae249a8 Merge PR #2186 into local integration
- 3307d50 Merge PR #2190 into local integration
- dbc6e5c Merge PR #2192 into local integration
- ce3d64e Merge PR #2206 into local integration
- e5c4f7c Merge PR #2207 into local integration
- 00dbe19 Merge PR #2208 into local integration
- 366f544 Merge PR #2227 into local integration
- ef3c452 Merge PR #2256 into local integration
- 373ad7c Merge PR #2272 into local integration
- 7cbf113 Merge PR #2273 into local integration
- d05d588 Merge PR #2274 into local integration
- 637829f Merge PR #2275 (updated head f7f4548) into local integration
- c21db86 Merge PR #2275 into local integration
- f1eb2f5 Merge PR #2277 into local integration
- d79bf27 Merge PR #2280 into local integration
- 4a68f16 Merge PR #2287 into local integration
- dcfb6d3 Merge PR #2288 (212ff3b): nonblocking remote polling + SSH cleanup
- edc52e5 Merge PR #2290 into local integration
- 3898261 Merge PR #2291 (fbd1537): remote update --from-build
- efe11a5 Merge PR #2298 into local integration
- 9028f66 Merge carry-e/2100 (0a5f127): #2100 socket-send transport rebased onto e, Codex acceptance fence kept
- f5eb7b4 Merge carry-e/2118 (5429c17): #2118 rebased onto e (settings-panel/home.go conflicts resolved there)
- 97f0265 Merge carry-e/2224 (e8b1d76): #2224 rebased onto e (Codex completion-turn preservation)
- 76f26f6 Merge carry/2051 into local integration
- 1e7a602 Merge carry/2052 (own PR, rebased onto release/v1.16.11-rehearsal)
- 82f0422 Merge carry/2057 into local integration
- 561da2e Merge carry/2072 into local integration
- c277c29 Merge carry/2085 into local integration
- 6fcdcc6 Merge carry/2111 into local integration
- 121a6cf Merge carry/2120 into local integration
- ed3adb7 Merge carry/2145 into local integration
- c61c430 Merge carry/2154 into local integration
- 612f375 Merge carry/2207 (fcc8850): restore bare-array remote sessions --json default, add --with-errors
- f91a351 Merge carry/2229 into local integration
- f3a4a14 Merge carry/2230 into local integration
- 44858a8 Merge carry/2279 (rebased head e03b2ed) into local integration
- 586f48b Merge carry/2289 (d9ea2cb): runtime health metrics, rebased onto #2290
- a1b567b Merge feat/remote-version-preview into local integration
- f9099dc Merge fix/issue-2025 into local integration
- 548a851 Merge fix/issue-2185 (e538e6e): classify open AskUserQuestion/permission menus as interactive-menu substate
- 454ec45 Merge fix/issue-2202 into local integration
- 279c45e Merge fix/switch-stale-destination into local integration
- 096e4ad Preserve remote session JSON errors
- 1cf17bf Preserve remote session JSON errors
- a64433e Regenerate golden TUI fixtures for the muse builtin tool
- 61d692c Revert "Merge carry-e/2224 (e8b1d76): #2224 rebased onto e (Codex completion-turn preservation)"
- 05c1a8c Revert "Merge carry/2230 into local integration"
- 7d3e9c5 Update cmd/agent-deck/completion_cmd_test.go
- 5a9c1d6 changelog: note #2091 in rc.3
- 525919d changelog: note #2102/#1892 in rc.3
- 03797cf changelog: note #2299 in rc.3
- 6e9c5e6 chore(deps): bump actions/upload-artifact from 4.6.2 to 7.0.1
- cbd584d chore(release): fold rc.2 branches
- 26265b7 chore(release): fold rc.4 content
- d08c432 chore(release): fold rc.5 content
- f9f82bc chore(release): fold rc.6 content
- 6ecbc26 chore(release): v1.16.11
- 26eff81 chore(release): v1.16.11 changelog
- 36a1580 chore(send): probe only under --wait, drop the dead gate wrapper
- aa00ef7 chore(tasks): mark the preview-scale plan done
- 0e348cd chore(web): bump sw cache, record group parity rows, refresh baselines
- 8266d43 ci(deps): auto-merge Dependabot patch and minor bumps on green CI
- 805694a ci(go-test): name failing tests and flake status in the job summary
- 08757d3 ci(hooks): keep the undo red proof independent of the search golden
- 7f358d8 ci(hooks): warm the cleanup image from every checkout it tests
- c3d40a1 ci(lighthouse): recalibrate total-byte-weight budget to 387000
- 1a96a45 ci(python-compat): run the stage report tests
- 09974c4 ci(runtime-health): anchor the perf red recipe by content, not history
- e9c2f5d ci(stalled-notify): reconcile against the live PR head and all gating runs
- 19cb5f9 ci(structure): advisory sentrux delta on PRs
- 152c642 ci(workflows): surface PRs stuck in action_required
- 6229af3 ci: apply container VCS setting to the checker invocation too
- fdefdc4 ci: clear the release eval gate and the non-required checks after v1.16.11 (#2305)
- 61066e1 ci: distinguish fleet measurement failures from advisory regressions
- 3a17e38 ci: support disposable Docker checks across runner ownership
- 272c3a5 docs(omp): advertise TUI fork support
- a75f202 docs(results): rc.5 verification report
- b48bb18 docs(results): rc.6 verification report
- 0795b5c docs(send): describe what verifyPromptConsumedAfterLaunch actually checks
- 4d798c2 docs(skills): describe Codex project support
- c163aa0 docs(skills): refresh agent-deck/fleet/session-share against v1.16.11-rc.2, add evals
- 96140df docs(tui): give the copy keys their own home and reconcile the shortcut reference
- c23ce6f docs(ui): describe explicit embedded session selection
- 3fdae93 docs(ui): scope explicit selection to embedded pane switching
- 2a023a5 feat(cli): add --primary window targeting to session output and send-keys
- 1b6136a feat(cli): add bash, zsh, and fish completion scripts
- 6b451e5 feat(cli): expose codex_session_id and resolved_codex_home in JSON output
- eb26bbf feat(conductor): add pi as a supported conductor agent runtime
- 15ef629 feat(conductor): record per-PR stage timestamps as JSONL
- e710abf feat(conductor): ship the GitHub event watcher as an opt-in daemon
- aa57898 feat(config): add send_transport key
- 16a0ce6 feat(config): directory-local .agent-deck/config.toml overrides for [worktree]
- 2fbfb5b feat(ctxinspect):
session context— measure a session's fixed startup overhead - b0dba68 feat(health): per-session event journal and session metrics
- 4d9ff2c feat(hooks): wire the accounts usage feed into every slot's statusLine
- e2fa154 feat(inbox): inspect unresolved records without consuming them
- 4d00418 feat(inbox): manage dead-letter records from CLI and TUI
- 7168f13 feat(inbox): manage dead-letter records from CLI and TUI
- 6fc5255 feat(omp): add OMPSettings config, command/env-file overrides, icon
- 293ff43 feat(omp): add omp command builder and launch/restart dispatch
- 55f9ebd feat(omp): add omp session forking
- 3906602 feat(omp): register .omp/skills as omp's project skills directory
- 92104bb feat(omp): register Oh My Pi tool detection and status patterns
- 271d1b5 feat(omp): wire omp into TUI icon/color/setup-wizard/visibility surfaces
- 80a1c49 feat(pi): consume hook status for pi sessions and add pi-hooks installer
- de9b285 feat(quota): add the Z.ai/GLM provider and
agent-deck usage --refresh - ca45db4 feat(quota): report Claude subscription quota via
agent-deck usage - db47aa4 feat(remote): show remote agent-deck version and live stats in the preview panel
- 3d35dc6 feat(send): deliver to Claude targets over the messaging socket
- 8fe8a9b feat(send): report --wait on a busy socket target as explicitly unverified
- 7295141 feat(session): alternate-session toggle and MRU walk (#2058)
- 307f8c2 feat(session): cap agent-boundary output
- 80cf775 feat(session): context-level controls (none/primer/full) and session primer inspection
- fc72fa2 feat(ui): add accounts field to remote preview panel and header
- ed64702 feat(ui): add embedded terminal layout
- 3def49f feat(ui): configurable sidebar density for the embedded layout
- f55d409 feat(ui): fzf-style fuzzy path suggestions in session and group dialogs
- d633cc5 feat(ui): kill tmux windows from session sub-tabs with d
- 97e9092 feat(ui): make remote preview panel and header content configurable
- af611d4 feat(ui): opt-in ssh field (who is connected over SSH) for preview and header
- 0e02d24 feat(ui): source tool icon and color from the tool registry
- f529968 feat(ui,cmd): golden-frame test and CLI parity for kill-window confirm
- a1e0a3f feat(web): add selectedGroupSignal with mutually exclusive setters
- 0c5b431 feat(web): compute group status breakdown
- ddd901e feat(web): derive new-session defaults from group context
- ac0cb3f feat(web): derive sidebar rows from lifted filter and collapse signals
- 67285a1 feat(web): give a selected group a URL
- 63718f1 feat(web): navigate group headers and collapse them from the keyboard
- b18bef4 feat(web): project group defaultPath, name and level into the client model
- c834e81 feat(web): select groups from the sidebar, chevron owns collapse
- 0d8787c feat(web): ship group defaultPath in the menu snapshot
- d09b559 feat(web): show group stats in the main area when a group is selected
- 31a4841 feat: add an isolated functional build check suite
- 6ec836d feat: add isolated synthetic fleet performance suite and baseline
- 48573a1 feat: add local runtime health metrics and budgets
- b4b17f2 feat: add local runtime health metrics and budgets
- 212deb8 feat: add muse code cli as builtin tool with resume support
- bb213d5 feat: install verified local builds on remotes
- a84dd31 feat: negotiate remote creation fields and forward dialog options
- 78f8c3e feat: switch account and harness for remote deck sessions
- f04e685 fix(#1981): bound consecutive heartbeat skips + tighten picker detector
- c5217c5 fix(#2080 review): anchor picker detection on the last footer in scrollback
- fa3fb29 fix(#2080 review): gate heartbeat on hook-driven busy/interactive state
- f8bb30d fix(attach): dismiss tmux's config-error view so the attach pane is live
- 8b95356 fix(build): share truncateCell after main rebase
- d440f6c fix(ci): apply maintainer's review-hold revisions to structure advisory (#2148)
- 369a561 fix(cli): accept "shell" as an alias for a plain shell session
- 2ce180b fix(cli): confirm before reconciling a session that is still running
- 9a78188 fix(cli): defer to non-TTY refusal instead of shadowing it
- ac626d0 fix(cli): list --json prints [] when there are no sessions
- 90a3c61 fix(cli): notify-daemon and remote add still mutate on bare trailing help
- 47de41e fix(cli): overview names its reconciliation line and lists a small inventory
- a80dc9e fix(cli): refuse to open the TUI for an unrecognized command on a non-TTY
- 6e4d891 fix(cli): remote sessions --json prints [] instead of null for zero sessions
- 0ee2428 fix(cli): treat bare trailing help as help for creds-refresh (#2025)
- ee7bd31 fix(cli): validate --group/--select before the no-TTY gate, not after
- c2ecfb1 fix(cmd): release the embedded terminal on every exit, and say what Enter does
- 2b6dd82 fix(cmd): structured JSON on session window close refusals
- 178314a fix(cmd): wait for terminal restoration on concurrent exits
- c04fac6 fix(codex): recover from an empty hook status file and log a refusal
- bc7709b fix(conductor): correlate late Codex replies
- a2b4156 fix(conductor): make shared AGENTS.md agent-neutral for codex/pi collision
- 8f9d1f8 fix(conductor): recognise the v1.10.x migration generation too
- 58b597f fix(conductor): release waits and migrate guidance
- 5d3193a fix(conductor): retain edits across generated template migration
- 844dbc1 fix(config): bound dir-local worktree values to their own file, not the shared workspace boundary (#2093 P1 round 3)
- de230c2 fix(config): bound untrusted dir-local worktree location/template (P1)
- 98a4d1d fix(context): flag over-limit readings, mark inferred windows, fail closed on the conductor /clear (#2026)
- 6e4b084 fix(context-levels): correct precedence docs, add config/CLI reference, gate remote session primer on older controllers
- 36e902c fix(ctxinspect): address adversarial review findings
- 6c790f6 fix(ctxinspect): reject available-with-cost by its real contract, name the drifted file, rename the footer
- 17b5466 fix(dead-letter): hash raw scanner bytes for purge/retry matching
- ddcad7d fix(dead-letter): hash raw scanner bytes for purge/retry matching
- 7036b6d fix(dead-letter): reconcile carry/2230's DeadLetterRecord with #2111's (#2062)
- 345cbcd fix(deadletter): exclude _unowned from purge; add --json to retry/purge
- 01216e5 fix(done): accept CLAUDE_CONFIG_DIR, account slots and worker-scratch as transcript roots
- de9e52d fix(done): accept conductor and group config dirs as transcript roots
- 5266ae7 fix(hooks): handler checks the installed Stop form before draining
- 6fc6fd4 fix(hooks): lossless settings.json rewrite, pin only known install dirs, read-only status
- eff1983 fix(hooks): pin Claude hooks to the installing binary; status reports PATH shadow and version mismatch
- 87e668c fix(hooks): pin a stable binary path, self-heal stale entries, keep draining marker-less Stop hooks
- bdd44a4 fix(hooks): usage feed wrapper never fails closed; refuse slots it cannot wire
- 9ae3e6a fix(inbox): finish discarding an oversized line across buffer refills
- 0c8dc33 fix(inbox): take the producers' flock in the drain and every sweep; keep _unowned out of the TTL sweep
- bc6f58a fix(inbox): tolerate corrupt and oversized JSONL records (#2057)
- 7563cba fix(launch): cover the --no-wait verifier's own truncation blind spot (#2079)
- eafc6bd fix(launch): pre-accept Claude Code's folder-trust dialog on launch
- 365d3df fix(launch): report spawn death instead of paste-buffer error when pane died
- eb3ccb9 fix(lint): clear the golangci findings on the release branch
- 769d1eb fix(lint): mark the two remaining os.Environ pass-throughs
- db9111a fix(notifier): deliver to any registered parent; child_removed is log-only; inbox drain exit 4 only with --strict
- ffb0efd fix(notifier): nudge subprocess timeout covers the send lock wait
- e547f25 fix(notifier): re-probe the parent's status in the wake-nudge idle gate
- d87b48e fix(omp): add omp to Settings dropdown, Tool Visibility Panel, and New Session preset list
- b9acf59 fix(omp): add omp to Web UI Skills pane tool-support list
- 88ced0a fix(omp): close verification gaps
- 790882a fix(omp): close web-UI picker gap, sync fork-support docs, fix doc comment, add approval-mode test
- a48d524 fix(omp): complete readiness and model support
- 9a9810d fix(omp): honor CLI fork and configured command
- 7a76fe7 fix(omp): implement OptionsPanel interface on OMPOptionsPanel
- 6294826 fix(omp): sync docs-table test and golden frames with rc.6
- 9d12c91 fix(omp): unify fork capability gates
- a0a94a6 fix(omp): wire native --append-system-prompt identity injection, regen stale goldens
- d575e8f fix(output): preserve UTF-8 through ANSI stripping
- f449379 fix(pi): route every hook-status gate through the registry; order pi's emit
- 8a4f866 fix(procowner): close the review holds on the #1873 receipt: identity-checked walk, pidfd signals, fail-closed unverified spawns, deterministic tests
- 27ad3b9 fix(procowner): refuse rather than raw-kill after a failed pin; mark a live pane whose pid is unreadable; enforce the receipt handshake in tests
- b357170 fix(release): merge fixups for the rc.8 composition
- ce17746 fix(remote): close review gaps in poll lifecycle and TUI state
- 2ff44c9 fix(remote): forward 'session context' through the remote passthrough allowlist
- fdaeded fix(remote): forward skill detach and skill attached
- 43250cd fix(remote): honest version/stats labels when builds differ but release matches
- fcc8850 fix(remote): keep
remote sessions --jsona bare array by default - f7c649e fix(remote): keep polling and SSH cleanup nonblocking
- 87cf89e fix(remote): preserve cancellation context and fetch invariants
- ae1ccc7 fix(remote): preserve legacy creation on older remotes
- 3f166a1 fix(remote): preserve legacy creation on older remotes
- f7f4548 fix(remote): refuse legacy multi-repo before creation
- d870e41 fix(restart): import the transcript from another config dir instead of launching --session-id blank (#2269) (#2)
- 6ec849a fix(send): address turn delivery review findings
- 38a097d fix(send): bind wait and stream output to turn identity
- b3ca5e9 fix(send): compare paste marker with hard line breaks, not line count (rc.3 P1)
- 3599655 fix(send): consult the hook busy status before interrupt recovery
- 3cba92c fix(send): count trailing paste-marker breaks; guard session send (rc.4 item 4)
- c14ae7a fix(send): detect a truncated launch --message-file paste before submitting it
- 13da96d fix(send): make the busy probe tri-state and read the hook-driven status
- 053b2e6 fix(send): make the socket transport opt-in, defaulting to tmux
- 5b52496 fix(send): recognise the queue placeholder as the composer element; keep empty attributed replies (#2273 round 2)
- a290bcc fix(send): refuse a truncated transcript instead of replaying from offset 0
- dc54fde fix(send): report a queued delivery on token movement and bind --wait/--stream to the turn (#1978, #2043 round 2)
- e86b715 fix(send): report a socket write as unacknowledged, not submitted
- e70571e fix(send): report queued only on Claude's acknowledgement; harden turn identity and stream boundary; attribute bridge replies (#2273 review)
- 0e605eb fix(send): require the startup-window prompt to persist before typing
- 435b8ca fix(send): resolve the socket target per instance, not per session ID
- afe7e0b fix(send): restart the startup-prompt run when a poll cannot see the pane
- 114ab24 fix(send): serialize concurrent sends to one target with a per-target lock
- 0a5f127 fix(send): tag every socket --wait as unverified, including the idle path
- 8355459 fix(send): three-outcome delivery verdicts; never "NOT delivered" without evidence (#1793)
- 6dd1f7e fix(session): a wrapper owns the pane, so type no export line into it
- 7fdd7a4 fix(session): address round-two output findings
- 9541716 fix(session): bound distinct pending turns
- 66f8973 fix(session): close ownership review gaps
- 2837fd4 fix(session): consult hook completion before classifying a vanished pane as error
- 6c179d9 fix(session): decide "tool not found" in the pane and prepend only safe dirs
- 859d861 fix(session): decouple session-event journal writes from the daemon hot loop
- c9d327a fix(session): document the output budget, bound the read log, keep ASCII fast
- 1af3f4b fix(session): don't let #2303's own-file gate block /clear rollover recovery
- 7e97a4c fix(session): find Codex turns beyond output tail
- 7862c88 fix(session): give plain shell sessions the agent-deck environment and identity file
- c5bc21e fix(session): hand the attribution goroutine its logger and prober
- 920dcae fix(session): harden legacy Codex identity hydration
- 85d0448 fix(session): hydrate legacy Codex identity before send
- 600fca8 fix(session): journal
session send --wait --json/--streamafter their own verdict - d3f4c08 fix(session): journal
session sendafter its verdict, not before - 46a478f fix(session): let a replacement take the replaced row's group slot
- 931f02e fix(session): make the pending-turn bound correct and observable
- 35366ce fix(session): make the receipt CAS cross-process and cancellation authoritative
- 3b24991 fix(session): normalize Codex lock timeout
- 4af87a4 fix(session): own wrapped process trees with a spawn-time receipt (#1873)
- a887905 fix(session): persist restart to owning profile
- 2d1ef04 fix(session): persist restart to owning profile
- 5d6197d fix(session): preserve Codex turn identity for deduplication
- ff2f239 fix(session): preserve Muse resume IDs as literal arguments
- e8b1d76 fix(session): preserve distinct Codex completion turns
- 67c4b27 fix(session): prevent cross-session transcript fallback
- e14a0f2 fix(session): put the user's bin dirs on every spawned session's PATH
- f98e5b2 fix(session): rebase the #1873 ownership receipt onto v1.16.9 and prove the pane-loss contract end to end
- 53162d3 fix(session): reload the resolved profile before computing cross-profile order
- 01f01df fix(session): retain every distinct completion turn
- 3b5fb75 fix(session): retain watcher lifecycle tracking
- e03b2ed fix(session): skip accepted-turn poll on non-wait Codex sends
- b0f017e fix(session): skip bare -c when no transcript exists for continue mode (#2301)
- 9a91c74 fix(session): stop leaking unrelated transcripts into session output
- f6fe4df fix(session): stop misreporting a user turn's string content as a parse gap
- a008861 fix(session): treat an indeterminate session probe as unknown, not absent, when the pane pid is unreadable
- dcf6dc5 fix(session,health): bound the Claude project dir lookup; report append close errors
- 409ea44 fix(status): accurate lights and substates for the six audit defects (A–F)
- b9deda0 fix(status): round-2 review findings on the status-light fixes
- d618882 fix(status): round-3 review findings on the status-light fixes
- 0c4b9e9 fix(status): round-4 review findings on the status-light fixes
- d5665f1 fix(status): stop hook-less codex sessions sticking at running in fresh processes
- da653c1 fix(switch): persist account atomically, archive stale destinations, unblock retries after a failed journal
- 7ffc6d7 fix(sysinfo): run who under LC_ALL=C
- 4aeb699 fix(test): rename ctxinspect assistantLine helper to avoid collision after rebase
- 007ba33 fix(test): update health.Start call sites for the binaryVersion param
- 4836da5 fix(test): use testutil.IsolateHome/IsolateTmuxSocket in ctxinspect TestMains
- e40fca9 fix(tmux): apply aggressive-resize to windows opened by hand (#2259)
- 7bf7851 fix(tmux): apply the window policy to hand-opened windows without shadowing user hooks (#2259)
- b998b15 fix(tmux): assert the pane's own cwd instead of trusting the server's (#2214)
- 98511b3 fix(tmux): bound pane respawn mutation
- f34e539 fix(tmux): bound stalled startup handover
- 16d7243 fix(tmux): bound the viewers cache, honour [tmux.options] on every attach path
- a5c2426 fix(tmux): cd-assert before the pane-cwd guard on the shell-tool path (#2214)
- 4567802 fix(tmux): detect pi 'Working' banner as busy in headless status probes
- e538e6e fix(tmux): distinguish an open interactive menu from idle-at-empty-prompt
- 9906634 fix(tmux): make last-window kill guard atomic and bounded
- 25fdff6 fix(tmux): recover startup timeout status safely
- 042e8a3 fix(tmux): retain sizing policy for Deck shell windows
- 4ceb119 fix(tmux): scope startup timeout to pane generation
- 90947f7 fix(tmux): shared attach follows the active viewer; viewers indicator
- abf3255 fix(tmux): validate timeout generation on return
- e6308f1 fix(tmux): validate window policy overrides, respect a foreign hook slot, add tmux-hooks uninstall (#2259)
- 9ca1125 fix(ui): activate every embedded row by mouse, and page by drawn height
- b7a7539 fix(ui): address embedded terminal review feedback
- 12dd480 fix(ui): adopt upstream VT hyperlink correction
- ee82b4f fix(ui): align embedded navigation with rendered state
- 7de71ab fix(ui): apply a saved embedded_terminal change at the next launch
- 069b529 fix(ui): cap OSC 52 clipboard payloads before decoding
- 5429c17 fix(ui): correct settingsCount after carry-e/2118 rebase conflict
- 87dd407 fix(ui): discard unread input after embedded writer failure
- d286e20 fix(ui): fit the remote preview stats block to the pane; scalable accounts table
- 0c37e63 fix(ui): force UTF-8 on the embedded tmux client
- cb31325 fix(ui): forward embedded terminal OSC 52 selections to the host clipboard
- d0323a4 fix(ui): give remote-group header rows a width budget (finding 12)
- ee518d1 fix(ui): keep keys typed while the embedded client connects, off the router lock
- 4c2f8a7 fix(ui): keep the remote's error record when a dialog-created session dies at spawn
- 4f4cd31 fix(ui): keep the sidebar viewport still while the cursor moves up
- 9fdead7 fix(ui): kill-window confirm re-verifies tmux window identity at confirm
- 3a70761 fix(ui): legacy remote's New Session dialog offers all built-in tools
- ff24b1c fix(ui): make the split divider grabbable, and stop it sticking
- 609dd85 fix(ui): never re-prompt for hooks a CLI install already made
- d9936fc fix(ui): preserve custom tool identity and command override during quick-create (#2199)
- 87d9827 fix(ui): preserve custom tool identity in quickCreateSession (#2199)
- 0d4c1c9 fix(ui): preserve raw input across embedded attach generations
- 37748ac fix(ui): preview clauses never overflow a continuation line; single-line fields share the row budget
- c84a405 fix(ui): recheck embedded input failure after raw reads
- 70e5760 fix(ui): refuse to kill a session's last window
- 8e535e2 fix(ui): repair 9 rendering defects from the 2026-09-18 live UI audit
- 78addcb fix(ui): resize the embedded PTY when dashboard chrome changes
- 5eb1a33 fix(ui): resolve executable command in quickCreateSessionAt for custom/cursor default tools (#2199)
- 2704bc1 fix(ui): strip ANSI before curated-footer key/label substring checks
- bee821f fix(ui): unblock terminal replies before waiting for output
- 7f5deed fix(ui): width-aware header layout, never truncate a field mid-text
- fb76a47 fix(ui): wire ToolColor into GetToolStyle, the actual row-render path (#2136)
- a5cdff9 fix(ui): wrap the Verify tab's measured-figure block instead of clipping it
- 7fb056c fix(ui,tmux): refresh the whole window cache after a kill, not just the killed row
- cece464 fix(ui,tmux,cmd): bind kill-window to the cached row's window id; CLI needs --yes
- ef731c8 fix(usage): bare statusLine wrapper passes AGENTDECK_PROFILE through untouched
- 8bdf330 fix(web): add the stopped status chip, bucket chip matching
- a4c80de fix(web): address PR #2047 maintainer review
- 86e8333 fix(web): block shortcuts behind overlays, guard archived request order
- 72f3346 fix(web): close final-review gaps in group-selection parity
- bf95903 fix(web): cold group/session links render, drop the Tab focus trap
- 5bfbf1f fix(web): create sessions in the selected group, prefilled from its context
- 9bda350 fix(web): drop the group panel's create button, match TUI's Name field
- db2bc70 fix(web): group panel shows archived sessions, matching the TUI
- 3b95ee2 fix(web): group stats panel status dots are invisible (no matching CSS rule)
- bdca321 fix(web): preserve SSE retries after network loss
- d55909a fix(web): recover closed SSE streams after outages
- 47cbffa fix(web): size the shell by the measured viewport so iOS keeps the tab bar and the keyboard clear
- 52b6231 fix: address PR review comments on shell completion
- fbe4276 fix: address review feedback on muse builtin detection, resume, and discovery
- ef53722 fix: aggregate counts, remote model seeding, and outdated-flag audit findings
- 0167ec8 fix: allow remote health reports and validate page size
- 48f3aca fix: allow remote health reports and validate page size
- 6574d29 fix: count ownership probes and verify hydrated status budgets
- 46eb059 fix: count ownership probes and verify hydrated status budgets
- 2d4d386 fix: defer targeted hook cleanup outside TUI deletion handlers
- 2a7d439 fix: derive remote message file parsing from creation flags
- 0cb1f95 fix: follow build environment policy and align summary golden
- ff1ad56 fix: gate heartbeat sends on open picker or unsent composer draft
- e9c087b fix: guard remote creation state and roll back failed startup queries
- a18007f fix: health/doctor session_count on the tracked set, drop orphaned comment
- b96aa6b fix: keep Codex ownership refresh outside status locks
- 67060e5 fix: keep Codex ownership refresh outside status locks
- c624e27 fix: keep Codex web status in sync
- af24dc2 fix: lint (gosec index shape, unused test helper)
- f234a14 fix: make remote creation argument bounds explicit
- 51895de fix: mark-unread (u) no longer reverts to gray on the next reload
- f771de8 fix: nil yolo inherits global config, tmux detection executable-only
- bf88f7a fix: order undo restart after deferred hook cleanup
- d2f295f fix: preserve edits during generated asset publication
- f2e32da fix: prevent multi-client tmux clipping
- b788589 fix: prune orphan hook artifacts and bound kqueue watcher descriptors
- 8cdd330 fix: read current creation registry snapshots without initialization
- 6670ed7 fix: reject incomplete functional membership responses
- f49623c fix: report the committed source archive on a recovery-required switch failure
- f7c02f5 fix: require live completion truth and atomic asset migration
- 654d874 fix: require valid cleanup evidence and removed completion panes
- 142fbcd fix: resolve #2301 transcript check across account slots, protect header badge from base-stats overflow
- fbd1537 fix: retain fresh remote probes when cache writes fail
- 4f6b512 fix: run automatic hook pruning once per data root
- e329e61 fix: session move migrates history across a --group config-dir boundary (#2086 follow-up)
- 3a6ee82 fix: session start acknowledges remain-on-exit sessions that died fast (#2202)
- 1fcc3d9 fix: session-list title width priority (#2201) and session move history migration (#2086)
- 0037be5 fix: share Codex ownership scans across status passes
- fab0431 fix: simplify creation parsing and load the remote catalog in tests
- e1945dc fix: support atomic generated migration on Darwin
- 14a85ea fix: sustained health footer warning, remote drain help text, sample binary version, identity skills hint
- a091eac fix: use fixture path helper and enable measured Linux baseline comparison
- c077791 fix: validate remote switch selectors, refuse missing target harness before any mutation, report source archive exactly
- f8d66e3 merge: fix/final-polish-20260918 into rc.6
- 386dc18 merge: fix/issue-verify-gaps-r2-20260918 into rc.5
- 9cf0702 merge: fix/messaging-20260918 into rc.5
- b4912db merge: fix/remote-attach-20260918 into rc.6
- acf7245 merge: fix/remote-spawn-20260918 into rc.5
- 9961390 merge: fix/small-followups-20260918 into rc.5
- 44ce30c merge: fold PR #2078 into rc.3 (send: startup-window prompt must persist)
- 481ae47 merge: fold PR #2078 into rc.3 (send: startup-window prompt must persist)
- 7521699 merge: fold PR #2103 into rc.3 (web settings visual baseline, #2056)
- e7bfba0 merge: fold PR #2103 into rc.3 (web settings visual baseline, #2056)
- 108e45d merge: fold PR #2144 into rc.3 (conductor stage timestamps JSONL)
- 2bef123 merge: fold PR #2144 into rc.3 (conductor stage timestamps JSONL)
- b31caa3 merge: fold PR #2211 into rc.3 (mark-unread)
- 8c56992 merge: fold PR #2211 into rc.3 (mark-unread)
- 2188e4a merge: fold PR #2217 into rc.3 (launch: report spawn death; fixes #2215)
- 4dc4252 merge: fold PR #2225 into rc.3 (docs skills)
- 5a91562 merge: fold PR #2225 into rc.3 (docs skills)
- 162fa2a merge: fold PR #2248 into rc.3 (web iOS viewport)
- 29c9ffb merge: fold PR #2248 into rc.3 (web iOS viewport)
- fd7eefb merge: fold PR #2257 into rc.3 (--primary window targeting)
- 45410dc merge: fold PR #2257 into rc.3 (--primary window targeting)
- c7d2eff merge: fold PR #2282 into rc.3 (deps upload-artifact)
- c238f00 merge: fold PR #2292 into rc.3 (functional check suite)
- d925b32 merge: fold PR #2293 into rc.3 (fleet perf suite + baseline)
- d6bc1d0 merge: fold PR #2294 into rc.3 (group activity aggregation)
- e58d6a6 merge: fold PR #2294 into rc.3 (group activity aggregation)
- 6832c73 merge: fold PR #2300 into rc.3 (replacement takes the replaced row's group slot)
- 4f71960 merge: fold PR #2300 into rc.3 (replacement takes the replaced row's group slot)
- 54c45d3 merge: fold carry/2070 into rc.3 (#2070)
- 5c28c73 merge: fold carry/2080 into rc.3 (#2080, closes #1981)
- a513a47 merge: fold carry/2147 (web panes/feature routes registry, closes #2137)
- 08a4437 merge: fold docs/skills-refresh-20260918 (skills + evals against v1.16.11-rc.2)
- 978b64f merge: fold feat/session-metrics
- ba6fce7 merge: fold fix/2102-launch-trust-seed into rc.3 (fixes #2102, #1892)
- ba65e79 merge: fold fix/issue-2079 into rc.3 (#2079)
- 718e7ec merge: fold fix/issue-2091 into rc.3 (#2091)
- 5e2fbe9 merge: fold fix/issue-verify-gaps-20260918 (#2025, #2136, #2301, #2062 help pin, tests for #1892 #2185 #2223, header layout)
- ce57d09 merge: fold fix/launch-truncation-20260918 (P1 paste marker regression, rc.3)
- a7b7dd3 merge: fold fix/session-output-identity-2299 into rc.3 (#2299)
- 758c0a6 merge: fold fix/status-lights-20260917 into rc.3 (status lights A-F, hook-lag, substate_detail)
- 8efef81 merge: fold fix/tmux-server-cwd-2214 into rc.3 (#2214)
- 1272467 perf(conductor): delete polling turns
- 359cdec perf: aggregate group activity before walking ancestors
- 090c1b7 refactor(cmd): simplify session window close CLI
- 993aab4 refactor(health): share journal validation and nullable formatting helpers
- 68c606f refactor(messaging): fold duplicated lock and env-prefix helpers
- 020cd49 refactor(session): name the local prelude test, compute the shell export gate once
- 0fb08d2 refactor(web): register panes and feature routes in one table each
- b5bd358 refactor: extract PasteTruncationCheck shared by launch and session-send guards
- b71a272 refactor: simplify #2214/#2062/#2148 changes (code-simplifier pass)
- cb57007 release: v1.16.11 (#2304)
- 61321b2 test(cli): pin inbox dead-letter help to the actually-wired surface (#2062)
- 57ba1fc test(conductor): bind migration fingerprints to recovered source
- 46a1a9c test(conductor): exercise the real Discord on_message for best-effort typing (#2205)
- a5d648b test(conductor): pin migration recognition against the templates that shipped
- 9f93016 test(conductor): typing failure no longer aborts Discord reply path
- 80b340d test(ctxfixture): add a codex, unanchored fixture case
- cd517c9 test(eval): give the embedded evaluator a title that fits the compact rail
- 56da969 test(eval): keep the Hermes hooks prompt out of the embedded and classic evaluators
- f32feca test(eval): parse tmux client widths with printable separators
- 626b111 test(inbox): follow the collapseTurnRetries rename in pre-existing tests
- 49f276a test(inbox): remove the #2062 not-wired gap detector, retry/purge now land
- a734c09 test(omp): scope session-dir host-path check past identity injection
- 18be841 test(remote): make shutdown regression observations race safe
- e7566d0 test(session): compile identity boundary assertion
- 10a2a21 test(session): cover completion-scoped fallback edges
- 1c5e774 test(session): document and verify Muse trust policy controls
- 638ba7f test(session): give each Codex signal path a positive control
- 0997779 test(session): locate Claude matrix transcript
- 617b15f test(session): reproduce distinct completion loss
- 3382e84 test(tmux): verify respawn mutex release
- 364f31e test(ui): deterministic clipboard cancellation, bounded VT waits, remote-row notes
- cee6c62 test(ui): document RemoteSession inapplicability for quickCreateSession (#2199)
- 3de0ff3 test(ui): exercise production embedded UTF-8 request construction
- 3c6a30a test(ui): give every kill-window test its own tmux socket
- 6d835da test(ui): join decoder input before closing its pipe
- 9a8ae82 test(ui): pin the rc.3 dialog flow for a remote spawn death
- 5b744a2 test(ui): regenerate New Session goldens for the merged pill layout and omp harness
- 0f8d750 test(ui): require explicit embedded switcher choices
- c1c3695 test(ui): update hook-cleanup golden frame for the search box fix
- 4d8b3c2 test(ui): verify embedded UTF-8 on the updated contributor head
- 8c2a7d7 test(ui): verify review fixes and hyperlink rendering
- 991ae1e test(web): add keyboard-only guard for n-prefills-from-focused-group
- d70c208 test(web): baselines from the CI platform, not macOS
- 209ee4b test(web): refresh settings drawer visual baseline (#2056)
- a50015d test(web): regenerate shortcuts-dialog baselines on the real browser
Full Changelog: v1.16.10...v1.16.11