What's Changed
- fix(status-bar): remove pet menu reserved space by @coelho-doti in #13067
- fix(agent-hooks): revive a retired pane on each provider's own new-turn event by @brennanb2025 in #15344
- fix(codex): stop rebuilding shared Codex state from a read that failed (STA-4823) by @brennanb2025 in #15417
- Split pty-connection.ts into focused modules under 400 lines by @AmethystLiang in #15166
- Preserve code editor selections across tab switches by @nwparker in #16132
- fix(agent-status): stop an Antigravity pane reading as Gemini CLI by @brennanb2025 in #15535
- refactor(mobile): reuse repository color helper by @nwparker in #16131
- refactor(skills): centralize observation matching by @nwparker in #16134
- refactor(renderer): use canonical attachment labels by @nwparker in #16135
- Fix renderer starvation blocking settings and worktree switching by @nwparker in #16138
- Fix Ubuntu release dependency lockfile gate (STA-5109) by @Jinwoo-H in #16055
- reland(opencode): session continuity without the command-finished deferral (STA-4557) by @brennanb2025 in #15350
- style(secrets): trim backend probe comments by @nwparker in #16136
- refactor: reuse canonical regex escaping by @nwparker in #16150
- fix(crash-reporting): stamp React #185 boundary attribution as unreliable by @nwparker in #16153
- fix(skills): recover upload admission lifecycle by @Jinwoo-H in #16057
- test(remote): preserve HTML inventory RPC failures (STA-5210) by @Jinwoo-H in #16056
- test(e2e): stabilize paired Quick Open large-tree coverage by @Jinwoo-H in #16058
- docs(cli): document worktree rm branch cleanup by @erishforG in #16167
- fix(workspace-cleanup): name the local context instead of totalling it by @brennanb2025 in #15070
- fix(workspace-cleanup): stop pre-selecting workspaces for deletion by @brennanb2025 in #15152
- fix(runtime): retire terminal snapshot probes before waiter timeout by @nwparker in #16149
- fix(workspace-cleanup): stop a wheel tick setting a filter, and land every filter patch by @brennanb2025 in #15298
- test(agent-status): characterize title-derived agent identity before the resolver change by @brennanb2025 in #16144
- fix(automations): reveal full prompt from detail view by @Jinwoo-H in #16067
- Fix stale task-source flashes in new workspace input by @nwparker in #16145
- fix(terminal): preserve synchronized frames on reveal by @nwparker in #16026
- test(e2e): cover tab-bar agent launches on Windows and WSL by @AmethystLiang in #16110
- test(reliability): protect recent P0 regression invariants by @Jinwoo-H in #16163
- Add keyboard shortcut for workspace deletion by @AmethystLiang in #16271
- fix(workspace-cleanup): read git for a pinned workspace before deleting it by @brennanb2025 in #15370
- fix(codex): stop an unreadable legacy hooks.json from clearing managed trust by @brennanb2025 in #16147
- fix(agent-status): retire panes whose agent process is gone (STA-4612) by @brennanb2025 in #15212
- Improve cmd j ranking with recency by @AmethystLiang in #16281
- feat(workspace-cleanup): name every applied filter in the bar and make it removable by @brennanb2025 in #15300
- Fix rebase race by fetching to private ref before rebasing by @AmethystLiang in #15990
- fix(ai-vault): replace scanner internals with actionable panel copy by @brennanb2025 in #16229
- Fix mail pointer repoint scheduler tests with pending count getter by @AmethystLiang in #16292
- fix(agent-status): clear the pane when a Claude compact finishes (STA-2915, STA-4613) by @brennanb2025 in #15202
- feat(agent-status): add an order-independent title evidence parser by @brennanb2025 in #16148
- fix(workspace-cleanup): stop a sync broadcast reverting a filter you just set by @brennanb2025 in #15369
- fix(popover): wheel-scroll a popover whose scroller is nested, not the content by @brennanb2025 in #16206
- Restore previously-active tab when closing a browser tab by @AmethystLiang in #16306
- feat(agents): distinguish Claude background monitoring (takes over #14205) by @brennanb2025 in #16201
- Sta 5355 automations failed due to orca product issue by @AmethystLiang in #16310
- Split monolithic PTY IPC module into organized submodules by @AmethystLiang in #15172
- perf(renderer): project terminal topology consumers by @nwparker in #16171
- perf(renderer): incrementally index terminal tab owners by @nwparker in #16172
- perf(renderer): gate runtime store projections by @nwparker in #16173
- build(windows): refuse a node-pty that cannot own a PTY tree by @nwparker in #16064
- ci(windows): run the PTY IPC suites on the Windows runner by @nwparker in #16068
- feat(agent-status): add the pane agent identity resolver by @brennanb2025 in #16157
- feat(workspace-cleanup): blockers become labels, not refusals by @brennanb2025 in #16282
- fix(sidebar): stop reporting an interrupted agent as done (STA-5357) by @brennanb2025 in #16312
- fix(crash-reporting): scope renderer crash evidence by @Jinwoo-H in #16313
- fix(popover): use non-passive wheel listener by @brennanb2025 in #16309
- perf(renderer): narrow appearance store subscriptions by @nwparker in #16322
- fix(relay): gate relay control work on proven broker liveness by @nwparker in #16021
- fix(windows): attach interactive login children to the console input device by @brennanb2025 in #15822
- Keep sidebar position when deleting active worktree by @nwparker in #16040
- fix(rate-limits): safely surface Codex RPC exit reasons by @nwparker in #16023
- Fix deleted remote worktree reappearing due to host ID mismatch by @OrcaWin in #16039
- fix(terminal): stop stale multiplex stream handles from swallowing input by @AmethystLiang in #16325
- fix(agent-resume): stop ghost resume tabs after finished turns by @Jinwoo-H in #16308
- test(pty): pin the renderer-liveness guard STA-2373 relies on (STA-5373) by @nwparker in #16345
- fix(startup): stop the PATH seed pinning nvm to its newest install by @nwparker in #16314
- refactor(cli): split orchestration handlers by domain by @nwparker in #16139
- refactor provider clients into domain modules by @nwparker in #16168
- Refactor GitHub store slice into cohesive modules by @nwparker in #16183
- Refactor terminal RPC methods into cohesive modules by @nwparker in #16188
- refactor(relay): split relay entrypoints by @nwparker in #16151
- refactor Git repository host boundaries by @nwparker in #16177
- refactor(renderer): split web preload API by @nwparker in #16181
- Refactor terminal store slice into cohesive modules by @nwparker in #16184
- refactor(renderer): split IPC event bridges by @nwparker in #16185
- Refactor agent hook listener into cohesive modules by @nwparker in #16187
- Refactor loading Store into cohesive domains by @nwparker in #16192
- refactor GitHub backend modules by @nwparker in #16194
- refactor(feature-wall): split animated browser and terminal stories by @nwparker in #16142
- refactor settings maintenance modules by @nwparker in #16169
- refactor Linear workspace surfaces by @nwparker in #16332
- fix(crash-reporting): stop destroying user crash notes by @nwparker in #15252
- feat(orcad): add headless browser providers by @nwparker in #16193
- fix(mobile): preserve relay close recovery codes by @Jinwoo-H in #16293
- refactor(daemon): split oversized PTY services by @nwparker in #16160
- Refactor GitHub Project surfaces and mutations by @nwparker in #16166
- Refactor worktrees IPC into cohesive modules by @nwparker in #16190
- build(windows): drop the packaged node-pty prebuild that can silently replace the patch by @nwparker in #16350
- fix(terminal): stop OMP tab title flapping between OMP and Pi by @nwparker in #16373
- build(orcad): gate orcad's own graph, and prove it loads under plain Node by @nwparker in #16368
- fix(terminal): give OMP Pi's Windows Shift+Enter encoding by @nwparker in #16376
- fix(cli): spawn a version-manager CLI with its own node runtime by @nwparker in #16365
- Add workspace search and improve installation target UI by @AmethystLiang in #16380
- Add background color to search button in sidebar by @AmethystLiang in #16130
- fix(lint): exempt verbatim-moved code from the changed-lines quality gate by @nwparker in #16359
- test(linear): pin project out of the hydration-preserved field set by @nwparker in #16364
- refactor workspace lifecycle modules by @nwparker in #16334
- fix(i18n): localize the keep-awake corner chip by @innocarpe in #14775
- fix(orcad): answer host paths honestly and ship the watcher child by @nwparker in #16369
- fix(cli): pair every resolved CLI with its runtime, and ratchet it by @nwparker in #16383
- refactor(renderer): split composer state by @nwparker in #16182
- refactor agent config and auth services by @nwparker in #16195
- fix(lint): match moved code by ordered near-match, not strict contiguity by @nwparker in #16385
- fix(orchestration): derive inject's agent guidance from the recognized-agent roster by @nwparker in #15874
- test(cli): ratchet the exec/fork family, not just spawn by @nwparker in #16390
- refactor workspace composer and Jira state modules by @nwparker in #16196
- fix(ssh): restore the reconnect model-paint gate dropped by #15166 by @brennanb2025 in #16361
- Refactor mobile home, worktree modal, and RPC client by @nwparker in #16165
- fix(daemon): let PTY inventory recover from a dead terminal host by @nwparker in #16363
- fix(linear): make new-issue dialog popovers scrollable by @GagaKor in #16382
- fix(crash-reporting): correlate concurrent process deaths instead of blaming the renderer by @nwparker in #15251
- refactor(editor): split notebook, editor, and external-watch surfaces by @nwparker in #16143
- refactor source-control AI modules by @nwparker in #16179
- refactor Electron facilities modules by @nwparker in #16333
- refactor(checks): split panel responsibilities by @nwparker in #16186
- refactor(renderer): split repos store slice by @nwparker in #16191
- refactor(rate-limits): split Codex and Claude fetchers by @nwparker in #16140
- refactor terminal coordination modules by @nwparker in #16335
- refactor runtime Git bridges by @nwparker in #16189
- refactor runtime contracts and web transports by @nwparker in #16197
- perf(git): make local Git metadata observation event-driven (no scheduler) by @nwparker in #16404
- refactor(ipc): split repos.ts into focused modules by @nwparker in #16392
- refactor(git): split status.ts into focused source-control modules by @nwparker in #16393
- fix(terminal): stop Orca mangling the OMP/Pi title it writes itself by @nwparker in #16381
- refactor(ipc): split ssh.ts into focused modules by @nwparker in #16394
- refactor(git): split runner.ts into focused command-runner modules by @nwparker in #16395
- fix(cli): seed nvm's default version, not the newest install by @nwparker in #16420
- Deleting skill by @AmethystLiang in #16357
- fix(browser): focus unified tab on browser page palette activation by @AmethystLiang in #16366
- docs(AGENTS): add code-reuse guidance and verification commands by @AmethystLiang in #16451
- fix(remote): stop an empty host inventory settling the mirror by @brennanb2025 in #16414
- fix(native-chat): stop the spinner on a not-yet-flushed transcript by @brennanb2025 in #16493
- STA-4150: client-hosted remote browser (consolidated) by @Jinwoo-H in #15448
- test(perf): warm palette matcher before timing by @brennanb2025 in #16500
- fix(native-chat): retire chat echoes whose transcript row carries the TUI clear byte by @brennanb2025 in #15656
- fix(mobile): recover Relay connections after resume by @Jinwoo-H in #16498
- fix(sidebar): preserve hidden rows in manual order by @Jinwoo-H in #16488
- fix(mobile): avoid unsupported Hermes array sorting by @brennanb2025 in #16506
- perf(github): stop re-spawning the repo-identity probe every 30 seconds by @nwparker in #16450
- fix(sleep): restore agent auto-hibernation for non-Pi agents by @brennanb2025 in #16430
- style(github): trim repo identity cache comments by @nwparker in #16517
- fix(crash-reporting): see the renderer memory the heap counters never report by @nwparker in #16449
- perf(git): only schedule the upstream-ref poll for the repo that has one by @nwparker in #16443
- Add clickable See more button to palette section overflow hints by @AmethystLiang in #16533
- fix(windows): revalidate PTY liveness from the job object, not a forked helper by @nwparker in #16419
- ci: rename cross-platform adhoc workflow by @nwparker in #16536
- fix(updater): surface and degrade renderer shutdown checkpoint failures (STA-5505) by @brennanb2025 in #16497
- refactor(task-page): split task page into focused modules by @AmethystLiang in #15163
- fix(ssh): stop claiming a host was removed before its tombstone label arrives by @nwparker in #16452
- fix: sync tab-cycle shortcuts with rendered group order by @AmethystLiang in #16549
- Route terminal file links to sibling workspace tabs by @AmethystLiang in #16544
- Clarify upstream divergence stats for rebased branches by @AmethystLiang in #16358
- fix(mobile): retain relay during brief backgrounding by @Jinwoo-H in #16543
- fix(contextual-tours): stop measuring 60 times a second while nothing moves by @nwparker in #16453
- fix(windows): restore a CIM fallback for relay hosts with no native binding by @AmethystLiang in #16550
- fix(worktrees): refresh paired clients after external discovery by @Jinwoo-H in #16557
- fix(automations): scope project refs to destination host by @Jinwoo-H in #16552
- fix(ui): restore the light-mode dropdown shadow by @nwparker in #16570
- fix(worktree): stop push-target rollback deleting a sibling's remote by @nwparker in #16569
- test: pin cross-version browser placement test to explicit baseline by @AmethystLiang in #16554
- fix(windows): let a build with no job exports still retire a dead agent by @nwparker in #16563
- fix(terminal): stop detached exit observers pinning evicted panes' xterm buffers by @nwparker in #16551
- fix(settings): use Workspace Directory for the Create-project default path (#14767) by @nwparker in #16583
- docs(windows): correct why the process-tree addon is not installed on relay hosts by @nwparker in #16565
- perf(terminal): stop rebuilding parked-watcher keys on every overlay render by @nwparker in #16596
- perf(sleep): park idle agents in the worktree you are working in (#16211) by @nwparker in #16591
- fix(terminal): blur every suspended pane, not just the retained ones by @nwparker in #16592
- perf(windows): ship the native process table to Windows relay hosts by @nwparker in #16598
- test(git): isolate worktree-shared-directories git config portably (#15409) by @nwparker in #16582
- fix(terminal): stop routing unowned workspaces to the focused runtime environment by @nwparker in #16584
- Show all automations by @AmethystLiang in #16532
- docs: remove tracked design plans by @AmethystLiang in #16663
- feat(i18n): localize CLI-created workspace labels to Korean by @hwantage in #16212
New Contributors
- @coelho-doti made their first contribution in #13067
- @GagaKor made their first contribution in #16382
Full Changelog: v1.4.190...v1.4.191