What's Changed
- Bump mobile app.json to 0.0.47 by @brennanb2025 in #17102
- feat(i18n): localize onboarding checklist steps to Korean by @hwantage in #17108
- perf(editor): stop re-rendering every code block on each keystroke by @nwparker in #17008
- fix(ci): stop the Linux Electron probe step from starving its own probes by @brennanb2025 in #17071
- test: stabilize process and transcript liveness checks by @nwparker in #17126
- test: widen updater schedule boundary margin by @nwparker in #17130
- Repair scheduled computer-use CI by @nwparker in #17122
- Fix setup-provisioned skills missing at agent startup by @nwparker in #17124
- fix(terminal): recover OMP from stale working directories by @nwparker in #17128
- fix(gpu): persist the safe-graphics marker before the restart prompt by @nwparker in #16945
- feat(i18n): localize Agent Dashboard to Korean by @junyeokk in #17121
- fix(gpu): capture hardware identity in crash reports by @nwparker in #16973
- Pin pnpm and rebalance scheduled E2E by @nwparker in #17133
- Improve worktree palette layout with flex-1 titles by @AmethystLiang in #17273
- perf(markdown): skip closed-search update renders by @nwparker in #17162
- test(cross-version-wire): derive skew expectations from the baseline under test by @brennanb2025 in #17178
- perf(markdown): skip unmatched list tokenizer scans by @nwparker in #17134
- perf(markdown): update code highlighting incrementally by @nwparker in #17147
- perf(markdown): cache repeated syntax highlighting by @nwparker in #17158
- build: upgrade to pnpm 12 by @nwparker in #17156
- chore: update oxlint and oxfmt by @nwparker in #17150
- Make worktree palette hint rows keyboard-clickable by @AmethystLiang in #17272
- test(shared): stop two suites asserting POSIX separators on Windows by @JahyunBaek in #16511
- fix(terminal): complete OMP stale cwd recovery by @nwparker in #17154
- fix(worktree): ignore orphan remote-tracking refs in branch conflicts by @JahyunBaek in #16699
- Raise rich Markdown size limit to 600 KB by @nwparker in #17288
- Clarify automation history unavailability and improve recovery UX by @AmethystLiang in #17284
- fix(browser): close guest-owned split tab by @AmethystLiang in #17281
- perf(worktrees): resolve watcher targets concurrently by @nwparker in #17166
- perf(startup): skip disabled diagnostic serialization by @nwparker in #17176
- perf(startup): stop rescanning persisted pane tabs by @nwparker in #17179
- perf(editor): skip unchanged review-note reflows by @nwparker in #17212
- perf(ssh): cache legacy worktree clean fallback by @nwparker in #17213
- perf(markdown): reuse rich-mode eligibility per render by @nwparker in #17219
- perf(terminal): bound stalled setup-split grid polling by @nwparker in #17228
- perf(browser): release popup origin bar contents by @nwparker in #17234
- perf(renderer): index unread completion tabs once per snapshot by @nwparker in #17246
- perf(terminal): index accepted input pane ownership by @nwparker in #17287
- perf(automations): narrow status observer updates by @nwparker in #17249
- perf(renderer): gate pending agent-status retries by @nwparker in #17254
- perf(worktrees): batch-prune stale local metadata by @nwparker in #17278
- perf(terminals): drop disposed queued inspections by @nwparker in #17187
- Fix md file rendering 2 by @AmethystLiang in #17295
- test(persistence): give the 130k-leaf pane alias scale test headroom by @nwparker in #17323
- fix(memory): hydrate retained PTYs before diagnostics by @nwparker in #17308
- fix(crash): suppress Linux namespace SIGTERM reports by @nwparker in #17315
- Prime native cache before E2E fanout by @nwparker in #17280
- Split speech session lifecycle by @nwparker in #17123
- Split terminal output scheduler pipeline by @nwparker in #17131
- Split mobile browser pane modules by @nwparker in #17141
- Prune resolved max-lines suppressions by @nwparker in #17142
- Split pane tree equalization logic by @nwparker in #17145
- Extract mobile troubleshoot screen styles by @nwparker in #17146
- Split external automation manager by @nwparker in #17149
- Split main window service attachments by @nwparker in #17151
- Split hosted review creation checks by @nwparker in #17152
- Split automation dispatch event handling by @nwparker in #17155
- Split settings navigation metadata by @nwparker in #17157
- Split daemon initialization lifecycle by @nwparker in #17161
- Split GitLab item dialog by @nwparker in #17165
- Split relay dispatcher layers by @nwparker in #17174
- Split mobile host screen layers by @nwparker in #17181
- Split runtime file client layers by @nwparker in #17188
- Split ports panel layers by @nwparker in #17194
- Split runtime environments pane layers by @nwparker in #17198
- Split local PTY provider responsibilities by @nwparker in #17206
- Split CDP bridge responsibilities by @nwparker in #17215
- Split relay Git handler responsibilities by @nwparker in #17217
- Split Linear item drawer responsibilities by @nwparker in #17231
- Split telemetry event schema responsibilities by @nwparker in #17235
- Split resource usage status responsibilities by @nwparker in #17244
- Split remote terminal multiplexer responsibilities by @nwparker in #17248
- Split Git worktree responsibilities by @nwparker in #17253
- Split Codex hook service responsibilities by @nwparker in #17260
- Split web runtime session responsibilities by @nwparker in #17263
- Split GitHub project view read path by @nwparker in #17266
- Split Claude runtime auth responsibilities by @nwparker in #17268
- Split runtime RPC server responsibilities by @nwparker in #17270
- Split Settings page responsibilities by @nwparker in #17271
- Split filesystem watcher responsibilities by @nwparker in #17274
- refactor: split Codex account service modules by @nwparker in #17277
- Split Activity page responsibilities by @nwparker in #17283
- Split accounts pane responsibilities by @nwparker in #17286
- chore(deps): bump electron 43.4.1 and other meaningful runtime deps by @nwparker in #17330
- fix(ci): stop hourly/adhoc mac builds from executing native pnpm via node by @nwparker in #17331
- chore: enable React correctness lints by @nwparker in #17285
- fix(native-chat): keep a tab launch draft out of split sibling composers by @nwparker in #16883
- fix(windows): stage node-addon-api headers before process-tree rebuild by @nwparker in #17332
- perf(mobile): slow certified terminal inventory sweeps by @nwparker in #17182
- fix(sidebar): keep project header labels from switching to the repo name by @nwparker in #16877
- fix(linear): collapse duplicate per-team status rows in the Tasks filter by @nwparker in #16879
- fix(pi): stop the titlebar spinner on settlement and idle compaction by @nwparker in #16880
- fix(add-project): use the entered group name when opening a folder by @nwparker in #16881
- test(vitest): adapt happy-dom OffscreenCanvas canvas mocks by @nwparker in #17336
- refactor(native-chat): isolate resolved bridge view by @nwparker in #17339
- fix(bench): report counterbalanced WSL Git medians by @OrcaWin in #13474
- test(e2e): cover session upgrade and Windows terminal recovery by @AmethystLiang in #17289
- feat(browser): address-bar convergence — previews and browser tabs convert in place (STA-5681) by @Jinwoo-H in #16998
- fix(orchestration): recover stripped task deps by @Pr1p in #16743
- fix(build): preserve Electron during binary repair by @nwparker in #17334
- STA-5496: offer Orca Browser for SSH terminal links by @Jinwoo-H in #16503
- Enable React static component and purity lints by @nwparker in #17337
- fix(window): keep automated Electron launches out of the foreground by @nwparker in #17347
- fix(scripts): stop pnpm-cli-invocation test leaking npm_execpath into the fallback case by @nwparker in #17340
- fix(remote): focus host-delegated split panes by @Jinwoo-H in #16886
- fix(terminal): restore lossy initial remote snapshots by @Jinwoo-H in #17113
- test(cross-version-wire): compare published fields per frame by @nwparker in #17301
- fix(diagnostics): measure reconciled IME typing latency by @nwparker in #17171
- fix(native-chat): preserve IME composition across async updates by @nwparker in #17169
- fix(tests): match showInactive() in paired-client-window-reveal spec by @nwparker in #17362
- perf(rpc): compile Zod request schemas lazily by @nwparker in #17353
- test(e2e): match the paired-client reveal assertion to showInactive() by @nwparker in #17363
- perf(preflight): cache WSL CLI probes per distro by @nwparker in #17350
- Consolidate the renderer now-clock and drop the epoch setState round-trip by @nwparker in #17358
- fix(linear): surface truncation when a deduplicated status exceeds the state-id cap by @nwparker in #17342
- Revert "perf(rpc): compile Zod request schemas lazily" by @nwparker in #17368
- fix(cli): name PowerShell when it strips quotes from JSON flags by @nwparker in #17351
- fix(diagnostics): count case-only worktree nesting on macOS by @nwparker in #17364
- test(wsl): guard probes that report failure as a negative answer by @nwparker in #17352
- fix(wsl): scan agent sessions only in running distros by @OrcaWin in #17072
- fix(browser): apply the app-wide HTTP proxy to embedded browser sessions by @brennanb2025 in #15536
- refactor(preflight): rename execCommandInWsl to execCommandInWslOrThrow by @nwparker in #17375
- ci: gate PRs on a real input method, and prove the lane engaged one by @nwparker in #17365
- docs(ime): codify desktop composition regression checks by @nwparker in #17172
- Open linked reviews in Orca browser by @Jinwoo-H in #17360
- refactor(preflight): rename execLocalPreflightCommand to execLocalPreflightCommandOrThrow by @nwparker in #17380
- chore(deps): remove pdfjs-dist release exception by @nwparker in #17372
- fix(terminal): render the IME caret and give the candidate anchor one owner by @nwparker in #17170
- chore(deps): restore pdfjs-dist release-age exception until it ages out by @nwparker in #17385
- fix(terminal): mask the agent composer's dim placeholder during a preedit by @nwparker in #17377
- fix(linear): stop the filter coverage warning firing on complete selections by @nwparker in #17376
- chore(deps): pin the pdfjs-dist release-age exception to 6.3.289 by @nwparker in #17389
- fix(native-chat): replay a draft clear dropped mid-composition by @nwparker in #17392
- Revert waiting for setup before agent startup by @AmethystLiang in #17418
- test: correct 8 stale specs surfaced by the test-detected-bugs sweep by @nwparker in #17434
- fix(automations): stop vetoing Escape for overlays the page does not own (STA-5207) by @nwparker in #17431
- fix(tasks): keep the remembered GitHub scroll offset instead of clobbering it (STA-5949) by @nwparker in #17433
- perf: overlap independent worktree create preflight by @nwparker in #17386
- fix(session): deduplicate editor records during restore by @nwparker in #17370
- fix(updater): accept GitHub release asset redirects on Windows by @nwparker in #17369
- perf(wsl): place worktrees inside the distro when the project runs in WSL by @nwparker in #17387
- perf(worktree): prepare checkouts while the composer is open by @nwparker in #17290
- Fix select all in the native chat composer by @brennanb2025 in #17294
- Fix PR unlink for auto-detected reviews by @brennanb2025 in #16898
- fix(relay): reap owned PTYs when the daemon dies on an uncaught exception (STA-5697) by @brennanb2025 in #16894
- fix(native-chat): keep agent responses selectable by @brennanb2025 in #17437
- refactor(mobile): split tasks route into focused modules by @nwparker in #17438
- perf(git): bound git subprocess execution with an atomic admission scheduler by @brennanb2025 in #16874
- fix(native-chat): recover a transport-unconfirmed send instead of wedging the queue by @brennanb2025 in #17383
- fix(native-chat): preserve structured chat across rollback by @brennanb2025 in #17439
- test(codex): pin Codex read-repair with a real-binary contract check by @brennanb2025 in #17300
- fix(worktree): complete a create Git can confirm but cannot list by @nwparker in #17388
- fix(cli): resolve a WSL shell's Linux path to the UNC-stored worktree by @nwparker in #17440
- fix(dashboard): make preview-terminal clipboard commands work on Windows by @nwparker in #17441
- fix(relay): mint PTY ids that carry the relay incarnation instead of a restarting counter by @brennanb2025 in #16901
- perf(worktree): overlap finalization head probes by @nwparker in #17443
- Upgrade xterm to 6.1.0-beta.303 and generate the addon patches by @nwparker in #17335
- Respect explicit server placement for owner-pinned remote browser links by @AmethystLiang in #17361
- test(e2e): make the cold-hydration spec check its own captured snapshot by @brennanb2025 in #17031
- fix(ssh): match the exact worktree created by @nwparker in #17472
- fix(relay): propagate worktree listing failures by @nwparker in #17473
- fix(cli): resolve WSL mounted-drive worktree paths by @nwparker in #17474
- fix(paste): exclude xterm helper textareas from text ownership by @nwparker in #17475
- fix(pi): settle OMP status from the agent_end contract by @brennanb2025 in #17209
- Split up combined-diff viewer into feature-organized modules by @AmethystLiang in #17341
- Fix opening HTTPS URLs from headless runtimes by @brennanb2025 in #17467
- fix(mobile): dismiss the keyboard after sending to an agent by @brennanb2025 in #17059
- perf(terminal): assemble queued output chunks linearly by @nwparker in #17500
- fix(native-chat): paste images in structured Codex chat by @brennanb2025 in #17498
- fix(agent-hooks): route reminted pane keys to canonical identity (STA-3993) by @brennanb2025 in #15714
- perf(terminal): fast-path chunks without agent status markers by @nwparker in #17514
- Fix orchestration CLI recovery, settled-Dispatch mail, and guide defects by @brennanb2025 in #16919
- Fix duplicated Codex startup command in new agent tabs by @nwparker in #17488
- Show remote host failure details in a submenu by @brennanb2025 in #17062
- Speed up CI dependency and computer E2E setup by @OrcaWin in #17513
- fix(agents): preserve manual mode for newly added defaults by @OrcaWin in #17515
- fix(settings): let Escape close settings from the search field by @OrcaWin in #17516
- feat(browser): edit a page annotation's comment and intent inline in the tray by @Sahir619 in #17511
- fix(omp): read Pi/OMP static state-title markers and retire stale spinners by @brennanb2025 in #14602
- fix(agents): keep OMP identity and forward ask/approval events by @brennanb2025 in #15713
- fix(jira): shape user-typed create fields and seed reporter with viewer by @NiZZioN in #17456
- Stabilize Tiptap editor instance across prop changes by @AmethystLiang in #17526
- refactor(agents): remove dead hook IPC and derive shared agent defaults by @trs-80 in #16089
- Prevent stale search commits from keystroke timer races by @AmethystLiang in #17495
- fix(jira): negotiate user-field support with remote hosts by @OrcaWin in #17532
- Fix GitHub task list scroll restoration by @AmethystLiang in #17547
- feat(native-chat): preview pending image attachments by @brennanb2025 in #17517
- fix(perf): index mirrored agent tab mappings for cleanup by @nwparker in #17476
- perf(renderer): cache structured session tab projection by @nwparker in #17477
- perf(agent-status): coalesce deferred freshness scans by @nwparker in #17496
- perf(dashboard): build sidebar bucket counts without cards by @nwparker in #17497
- fix(tasks): restore scroll position when reopening GitHub item details by @AmethystLiang in #17524
- perf(mobile): index slept worktree identity lookups by @nwparker in #17512
- perf: avoid rebuilding shell wrappers during path checks (double agent invocations artifacts) by @nwparker in #17548
- perf(packaging): ship one native runtime per target by @nwparker in #17528
- fix(remote): preserve standing host reconnect intent by @brennanb2025 in #17067
- perf(agent-hooks): coalesce Codex transcript poll timers by @nwparker in #17481
- Make file download a bit more obvious by @AmethystLiang in #17617
- fix(persistence): stop rejected UI trailing flush loops by @Jinwoo-H in #17378
- perf(packaging): prune Linear SDK source maps after packaging by @nwparker in #17530
- perf(build): minify desktop JavaScript bundles without dropping crash context by @nwparker in #17527
- perf(worktree): parallelize head identity metadata reads by @nwparker in #17449
- perf(memory): prune claimed PTY subtrees by @nwparker in #17450
- perf(renderer): narrow app root settings subscriptions by @nwparker in #17451
- perf(filesystem): avoid per-entry directory promises by @nwparker in #17452
- perf(worktree): overlap configured path filesystem probes by @nwparker in #17453
- perf(renderer): avoid remote PTY selector allocations by @nwparker in #17454
- perf(mobile): compare terminal themes without serialization by @nwparker in #17455
- perf(renderer): stabilize window visibility action selector by @nwparker in #17457
- perf(renderer): cache startup action selector by @nwparker in #17458
- perf(mobile): project home host connection maps once by @nwparker in #17459
- perf(mobile): summarize diff review counts in one pass by @nwparker in #17460
- perf(git): classify status line-stat inputs once by @nwparker in #17461
- perf(browser): use reverse guest tab lookup by @nwparker in #17462
- perf(renderer): cache project host setup projection reads by @nwparker in #17463
- perf(shared): classify folder workspace repos in one pass by @nwparker in #17464
- perf(shared): project automation list in one pass by @nwparker in #17466
- perf(renderer): index folder workspace host ownership by @nwparker in #17468
- perf(shared): index git history merge parents lazily by @nwparker in #17469
- perf: index structured TUI process ownership lookups by @nwparker in #17478
- perf(browser): group client-hosted row publication by @nwparker in #17479
- perf(renderer): cache active terminal chrome projection by @nwparker in #17480
- perf(main): summarize workspace space rows in one pass by @nwparker in #17483
- perf(ssh): index source spans by ID by @nwparker in #17504
- ci(release): publish main-process source maps with each release by @nwparker in #17630
- fix(remote): re-activate the pending host surface on paired PTY attach (STA-5291) by @nwparker in #17429
- fix(browser): accept an empty --value in cookie set and --pass in set credentials by @2sumtech in #17226
- perf(renderer): memoize active worktree editor files by @nwparker in #17484
- fix(browser): show immediate feedback during reload by @Jinwoo-H in #17635
- perf(wsl): warn at project-add when the tree sits on a Windows drive by @nwparker in #17636
- feat(docs): publish OSS docs with stable releases by @nwparker in #17622
- test(git): pin FETCH_HEAD lock order in the admission lifetime test by @nwparker in #17641
- perf(packaging): prune JS source maps from all packaged node_modules by @nwparker in #17638
- perf(rpc): restore compiled Zod request schemas without override by @nwparker in #17374
- docs: clarify release cutover ordering by @nwparker in #17652
- test(updater): fix startup-scheduling flake from leaked timers in abandoned module instances by @nwparker in #17649
- ci(docs): skip releases without docs source by @nwparker in #17656
- refactor(packaging): prune declaration and source-map artifacts in one walk by @nwparker in #17659
- perf(relay): account pending PTY output incrementally by @nwparker in #17639
- fix(worktree): gate agent activation on the live surface census, not renderer state (STA-5701) by @nwparker in #17428
- test(updater): cancel the real timers an abandoned updater instance leaks by @nwparker in #17663
- fix(daemon): bound the whole boot-recovery sequence with one budget (STA-5732) by @nwparker in #17427
- perf(relay): index PTY source-credit send spans by @nwparker in #17490
- perf(relay): stop ACK boundary scans at first pending boundary by @nwparker in #17491
- fix: close readiness gaps found by merged-change audit by @nwparker in #17159
- perf(diff): defer large diffs until user loads them by @AmethystLiang in #17521
- Add show-more button for recent tabs in empty-query palette by @AmethystLiang in #17693
- fix(serve): keep Chromium switches out of CLI redirect by @Jinwoo-H in #17633
- fix(codex): re-land WSL direct-home cutover with counsel findings fixed by @brennanb2025 in #16854
- fix(orchestration): submit staged mail pointer while working by @Jinwoo-H in #17470
- fix(orchestration): explain invalid send message types by @Jinwoo-H in #17487
- test: cover high-value recent PR regression contracts by @Jinwoo-H in #17489
- fix(mobile): unblock targeted SSH session tab refresh by @Jinwoo-H in #17486
- fix(runtime): isolate paired terminal creates from host focus by @Jinwoo-H in #17713
- fix(runtime): publish remote control outages to host surfaces by @brennanb2025 in #17531
- fix: satisfy GitLab hook and test lint gates by @AmethystLiang in #17694
- fix(native-chat): preserve large structured command results by @brennanb2025 in #17707
- Revert "fix(native-chat): preserve large structured command results" by @brennanb2025 in #17719
- feat(ssh): batch process evidence in PTY inventory by @brennanb2025 in #17525
- fix(lint): merge duplicate process-table-snapshot imports by @nwparker in #17724
- fix(native-chat): reland large structured command results by @brennanb2025 in #17720
- test(cursor): widen Windows hook spawn budget to fix ETIMEDOUT flake by @nwparker in #17721
- test(native-chat): fix flaky transcript watch-error initial-snapshot recovery test by @nwparker in #17722
- test(updater): stop a slow module import from failing the next test by @nwparker in #17726
- fix(artifacts): raise desktop sharing limit to 5 MiB by @Jinwoo-H in #17708
- fix(terminal): preserve large agent prompt pastes by @Jinwoo-H in #17718
- fix(serve): install supervisor disconnect quit after app environment init by @spellbook96 in #16762
- perf(terminal): cut cold worktree-switch attach latency by @nwparker in #17667
- perf(codex): share one launch-prep hook install across a spawn burst by @nwparker in #17669
- fix(skills): narrow computer-use discovery boundary by @Jinwoo-H in #17736
- Preserve user-set workspace names across branch changes by @Jinwoo-H in #17448
- perf(terminal): drop the headless snapshot cache, keep the spawn lock by @nwparker in #17752
- perf(git): bound ref and worktree scans by @nwparker in #17655
- Show live tool progress in native chat by @brennanb2025 in #17597
- fix(startup): install the app environment with the userData decision by @nwparker in #17755
- Activate terminal splits before inherited CWD resolution by @nwparker in #17601
- docs: update Android APK link to 0.0.47 by @AmethystLiang in #17764
- perf(renderer): avoid combined-diff tree rebuilds during progressive loads by @nwparker in #17643
- Standardize documentation formatting: line wrapping, tables, and imports by @AmethystLiang in #17765
- fix(remote): distinguish SSH transport from runtime availability by @brennanb2025 in #17710
- fix(browser): scroll oversized viewport presets by @Jinwoo-H in #17569
- fix(relay): close review findings from #17525 by @nwparker in #17763
- fix(diff): close large-diff deferral review findings from #17521 by @nwparker in #17758
- fix(terminal): keep restored OSC-8 ranges across a no-op resize by @nwparker in #17759
- ci(release): gate signing behind release preflight by @Jinwoo-H in #17773
- refactor(test): organize SSH and terminal recovery support by @nwparker in #17751
- Serialize filesystem watcher batch flush operations by @AmethystLiang in #17602
- Automations ux improvement by @AmethystLiang in #17626
- perf(relay): cache process-table descendant indexes by @nwparker in #17646
- fix(terminal): mount one surface per workspace id in the workbench (STA-4846) by @nwparker in #17432
- test(ci): retry Windows teardown EPERM and restart evaluate misses by @nwparker in #17780
- Avoid Linear read re-fetches when workspace scope is unchanged by @AmethystLiang in #17529
- fix(browser): refuse DevTools for offscreen guests by @Jinwoo-H in #17485
- test(e2e): remove source control golden race by @Jinwoo-H in #17784
- refactor(runtime): split OrcaRuntimeService and compatibility tests by @nwparker in #17605
- test(e2e): do not treat a destroyed renderer as a relaunched runtime by @nwparker in #17785
- ci(release): tolerate legacy tags without source maps by @Jinwoo-H in #17788
- perf(renderer): collapse duplicate reveal atlas rebuilds by @nwparker in #17762
- fix(worktree): reject Windows drive-qualified shared paths in the symlink guard by @nwparker in #17793
- fix(gitlab): stop the native glab known-hosts probe waking an idle WSL distro by @nwparker in #17789
- fix(git): resolve WSL drvfs Git metadata pointers on a Windows host by @nwparker in #17790
- fix(worktree): run the create-base warm-up on the routed git host by @nwparker in #17794
- fix(wsl): drop the linked-worktree Git route cache after worktree mutations by @nwparker in #17791
- perf(dev): share one Electron dist per repo instead of per worktree by @nwparker in #17664
- perf(renderer): fetch host lineage once per connect, narrow sidebar ack subscriptions by @nwparker in #17761
- fix(crash-reporting): record Linux MemAvailable at process-gone by @nwparker in #17733
- perf(worktree): resolve the WSL workspace root off the main thread when preparing by @nwparker in #17792
- fix(dev): make reclaim report real sizes on Windows and keep setuid intact by @nwparker in #17800
- fix(windows): repair the install-dir package ACL that blanks the window by @nwparker in #17740
- fix(i18n): correct zh-CN translation for editor view toggle buttons by @Aealen in #13723
- ci(release): prevent signing on workflow reruns by @Jinwoo-H in #17802
- feat(dev): sweep the backlog of idle dev Electron bundles by @nwparker in #17803
- fix(docs): align OSS docs presentation and SEO by @nwparker in #17809
- refactor(git): accept a caller-named WSL distro on the metadata path resolver by @nwparker in #17804
- perf(wsl): single-flight the async WSL distro list by @nwparker in #17805
- fix(cleanup): follow WSL-written gitdir pointers on a Windows host by @nwparker in #17806
- fix(native-chat): stop rendering tool output as the agent's streaming reply by @brennanb2025 in #17782
- fix(native-chat): keep the attachments on a Claude turn that pasted images by @brennanb2025 in #17801
- fix(native-chat): stop unjournaled provider frames from killing the structured session by @brennanb2025 in #17813
- refactor(mobile): split session and terminal surfaces by @nwparker in #17595
- fix(agent-send): acknowledge delivery when picker closes before send completes by @AmethystLiang in #17835
- fix(mobile-native-chat): retire an image echo glued with the send beside it by @brennanb2025 in #17783
- refactor(renderer): split oversized UI surfaces by @nwparker in #17610
- refactor(renderer): split runtime and store modules by @nwparker in #17611
- refactor(preload): split bridge API modules by @nwparker in #17612
- refactor(main): split backend services and startup by @nwparker in #17670
- Import browser cookie search to tab by @AmethystLiang in #17627
- docs(wsl): note that the distro VHDX is a high-water mark, not a leak by @nwparker in #17900
- fix(worktree): reclaim a prepared checkout whose discard failed in-process by @nwparker in #17899
- fix(git): give WSL-hosted repos one FETCH_HEAD lock lane by @nwparker in #17898
- fix(wsl): read untracked line counts through the host's worktree spelling by @nwparker in #17897
- fix(git): read the diff working tree and stamp through the host path spelling by @nwparker in #17896
- perf(worktree): make head-identity refresh incremental by @nwparker in #17843
- Move mobile search button to bottom left floating by @AmethystLiang in #17808
- Add startup delivery diagnostics and success announcements by @AmethystLiang in #17814
- Increase artifact content size limit to 10 MiB by @AmethystLiang in #17910
- fix(wsl): resolve conflict and working-tree probes in the host path namespace by @nwparker in #17895
- perf(git): cache sparse-checkout annotation on worktree listing by @nwparker in #17859
- fix(git): narrow fork-remote fetch refspecs to tracked branches by @nwparker in #17887
- fix(ai-vault): avoid large Codex scan timeouts by @djegor315-sketch in #17889
- fix(wsl): resolve sparse-checkout and diff-stamp gitdirs through the caller's distro by @nwparker in #17932
- fix(ci): age adhoc releases by publishedAt, not createdAt by @AmethystLiang in #17984
- fix(runtime): defer websocket heartbeat startup probe by @Jinwoo-H in #17810
- fix(dev): skip blocking keychain diagnostic by @brennanb2025 in #17877
- Revert mobile search button floating layout by @AmethystLiang in #17990
- fix(ssh): stop an unanswered native-deps probe from wiping a healthy relay by @nwparker in #17979
- fix(task-page): restore behavior lost in the UI split by @nwparker in #17926
- refactor: name split modules for what they contain by @nwparker in #17927
- fix(renderer): restore behavior the UI split dropped by @nwparker in #18002
- refactor(task-page): fold the task page into one provider-grouped tree by @nwparker in #18008
- fix(linux): give the CLI one entrypoint by extracting the AppImage once by @nwparker in #15081
- fix(native-chat): ignore stale restored working status by @brennanb2025 in #17995
- fix(daemon): keep attach cancellation behind client timeout by @Jinwoo-H in #17816
- fix(worktrees): reclaim orphaned pr-* fork remotes by @nwparker in #17842
- test(child-process): make the import ratchet able to fail by @nwparker in #18026
- fix(palette): recompute quick-action availability when runtime status changes by @nwparker in #18027
- refactor(mobile): pin the terminal WebView payload and split its widest slice by @nwparker in #18028
- fix(git): recover commit ref badges on Git older than 2.43 by @nwparker in #17923
- fix(agents): clear the unread completion marker when acknowledging agents by @nwparker in #17924
- fix(dev): keep the shared Electron dist writable for the dev app by @nwparker in #18035
- fix(worktrees): retire runtime-host metadata a scan proved gone by @nwparker in #17901
- test: stop two suites failing for reasons unrelated to their subject by @nwparker in #18036
- feat(app): open Markdown files from the OS in the floating workspace by @nwparker in #17906
- test(orchestration): fail loudly on an unexpected second detection call by @nwparker in #18037
- fix(preload): make a dropped bridge key a compile error by @nwparker in #18025
- fix(review-notes): classify send failures and mirrored tabs by @Jinwoo-H in #18023
- fix(github-project): sort and group empty field values last in both directions by @nwparker in #17921
- perf(worktree): batch remote conflict probes, re-arm the prepared checkout by @nwparker in #17829
- perf(git-common): bound the fs-stat fan-out in the worktree pollers by @nwparker in #17839
- test(relay): bind test WebSocket servers to loopback by @nwparker in #18045
- perf(git): pack the loose refs Orca's own fetches leave behind by @nwparker in #17857
- Add Copy Session ID menu item to terminal tabs by @AmethystLiang in #18039
- feat(telemetry): measure macOS stale-daemon adoption and cwd denials by @Jinwoo-H in #18043
- fix(terminal): preserve panes when restored PTY owner is unverifiable by @brennanb2025 in #17860
- fix(worktree): restore the stale-cleanup signal after the module split by @nwparker in #18058
- chore(deps): resolve 81 of 83 Dependabot alerts in docs/site and mobile by @nwparker in #18061
- perf(git): skip the sparse probe for worktree listings that never read it by @nwparker in #18050
- fix(worktree): widen git-common watch on event-batch overflow by @nwparker in #17916
- perf(worktree): fix the prepared-checkout hit rate and make misses visible by @nwparker in #17863
- fix(session): stop two hosts sharing one workspace-session bucket by @nwparker in #17912
- fix(daemon): let a create wait out an in-flight session teardown by @OrcaWin in #18063
- ci(release): make Windows release gates deterministic by @Jinwoo-H in #18067
- Prevent deleted workspace browser snapshot resurrection by @Jinwoo-H in #17779
- fix(ssh): stop a failed worktree scan from publishing authoritative emptiness by @nwparker in #17833
- fix(preload): type the ssh terminateSessions bridge result by @nwparker in #18079
- fix(ssh): stop orphaning live relays when an endpoint is taken over by @nwparker in #17821
- fix(ssh): stop expiring relay-reset leases when the force-stop threw by @nwparker in #17962
- test(ssh): ratchet the relay reattach-failure exit as unverified, not proven by @nwparker in #17963
- fix(relay): name why node-pty could not load, instead of guessing four causes at once by @nwparker in #17891
- fix(runtime): reclaim a fenced agent-session spawn from host inventory by @nwparker in #17976
- fix(runtime): scope create-dedupe inventory to the owning host by @nwparker in #17983
- fix(runtime): scope both reconcile call sites to the owning host uniformly by @nwparker in #18004
- fix(remote): stop unlabelled inventories and replayed rows authorising destruction by @nwparker in #17981
- perf(worktree): defer fork-PR remote creation from create-time to first use by @nwparker in #17922
- fix(agent-status): report a stale pane that still holds a PTY as unverifiable, not idle by @nwparker in #18012
- fix(ssh): stop a markerless native-deps probe from deleting both native modules by @nwparker in #18011
- perf(worktrees): gate worktree metadata hygiene on evidence, not on every listing by @nwparker in #18034
- fix(ssh): repair a rebuildable node-pty failure once, instead of asking the user to reconnect by @nwparker in #17907
- perf(ssh): share relay native deps across bundles instead of recompiling per install dir by @nwparker in #18033
- docs(windows): document the EDR signal surface by @OrcaWin in #17856
- docs(win): keep -EncodedCommand for the PTY OSC 133 bootstrap (MDE finding declined) by @OrcaWin in #17875
- fix(build): pin config/scripts LF so Windows can run their tests by @OrcaWin in #18056
- test(ci): ratchet Windows-gated tests into both registration lists by @OrcaWin in #18047
- fix(tooling): run oxlint gates without a Windows .cmd shim by @OrcaWin in #17894
- fix(relay): guard all three delivery release paths, and explain a restoring source by @nwparker in #18038
- test(ssh): dockerized relay fault injection with verdict assertions by @nwparker in #18017
- Update WeChat community to group 8 by @AmethystLiang in #18095
- Auto-focus editor when opening new markdown file by @AmethystLiang in #18071
- Fix incorrect open file cmd: prevent file creation for spaced input by @AmethystLiang in #18054
- fix(remote-terminal): stop three latches that only cleared on an event that could never arrive by @nwparker in #17945
- fix(automations): report an unverifiable process loss as lost, not failed by @nwparker in #17967
- fix(terminal): stop a restarted client publishing away its own SSH reattach identity by @nwparker in #17881
- fix(web): declare a socket dead even when its probe cannot be sent by @nwparker in #17838
- docs(ssh): record that an app update strands relay-backed terminals as
unverifiableby @nwparker in #17972 - feat(editor): add Show Whitespace toggle option in diff viewer by @hwantage in #15120
- fix(relay): fail an oversized response instead of closing the client by @nwparker in #17968
- fix(ssh): keep remote PowerShell commands inside what sshd's cmd.exe accepts by @nwparker in #17947
- fix(native-chat): keep disabled CLI models out of the Claude picker by @brennanb2025 in #18055
- fix(wsl): name an explicit Windows cwd for wsl.exe spawns by @nwparker in #17834
- fix(pty,remote): close the pty master fd leak, and two remote-terminal defects by @nwparker in #17914
- fix(orcad): stop demanding a spawn-helper only macOS builds by @nwparker in #18122
- fix(settings): surface why CLI registration failed by @nwparker in #18125
- perf(renderer): index worktree owner lookups instead of rescanning every workspace by @nwparker in #18130
- fix(ssh): close the pty master fd leak on relay hosts too by @nwparker in #17920
- fix(linux): land the reviewed Linux packaging stack on main by @nwparker in #18100
- docs(linux): say which package to install and how updates arrive by @nwparker in #18123
- fix(relay): stream an oversized fs.listFiles reply instead of refusing it by @nwparker in #17954
- Display favicons for browser website entries by @AmethystLiang in #18099
- test: simplify remote pane link routing to server-hosted placement by @AmethystLiang in #18219
- Graduate Agents activity view with filtering, persistence, and performance improvements by @AmethystLiang in #18222
- ci: checkout PR head for reusable E2E by @AmethystLiang in #18230
- revert(native-chat): drop the speculative Fable model-switch detections by @brennanb2025 in #18215
- fix(agents): stop a deeper vendor helper from stealing a pane's agent identity by @brennanb2025 in #18062
- perf(git): answer remote-URL questions from one subprocess, not one per remote by @nwparker in #18158
- fix(diff-comments): stop review refreshes from blanking inline comment cards by @nwparker in #18142
- perf(editor,source-control): batch closed-tab model sweeps, drop 40 store subscriptions by @nwparker in #18144
- perf(keybindings): stop recomputing shortcut labels on every render by @nwparker in #18145
- perf(sidebar,terminal): memoize terminal-title agent classification and lineage projections by @nwparker in #18148
- perf(renderer): stop the mobile sync key rehashing every dirty file on each keystroke by @nwparker in #18154
- perf(terminal): stop shipping every agent spinner title frame to the renderer by @nwparker in #18155
- perf(terminal): one registry sweep per watcher pass, not one per workspace by @nwparker in #18157
- perf(persistence): build the state file once per save instead of seven times by @nwparker in #18161
- Sta 6308 add copy session id option to terminal tab context menu by @AmethystLiang in #18070
- perf(platform): resolve the immutable platform payload once instead of ~19x/sec by @nwparker in #18135
- perf(sidebar): stop rebuilding per-card selector records on every store write by @nwparker in #18133
- perf(renderer): stop three always-mounted selectors rescanning the store on every write by @nwparker in #18136
- perf(renderer): reconcile hydrated workspaces in one store write by @nwparker in #18150
- perf(windows): drop the unread Memory flag and share one process-table projection per snapshot by @nwparker in #18151
- fix(terminal): stop a hidden pane's cursor blink deterministically by @nwparker in #18152
- perf(startup): stop an unreachable SSH host from gating local terminal restore by @nwparker in #18164
- perf(pty): stop startup history GC freezing the main process for seconds by @nwparker in #18165
- fix(process-table): fail a short
pscapture loudly, and stop a resume spending 49 of them by @nwparker in #18166 - perf(terminal): repaint only the rows an agent redraw touched by @nwparker in #18169
- perf(diff): stop redrawing the whole combined-diff file tree on every section load by @nwparker in #18140
- fix(github): bound and coalesce the Orca star check so gh children cannot pile up by @nwparker in #18239
- test(editor): isolate prefix bleed in the batched model sweep, drop a dead export by @nwparker in #18240
- perf(renderer): build useRef seeds once instead of every render by @nwparker in #18159
- Make terminal error overlays opaque by @brennanb2025 in #18231
- fix(terminal): confirm an unrecognized foreground before downgrading agent prompts by @Jinwoo-H in #18238
- Add automation runs dashboard with pagination and filtering by @AmethystLiang in #18226
- Fix agent dashboard setting configure by @AmethystLiang in #18245
- fix(native-chat): show pasted images while they save, and make them previewable by @brennanb2025 in #18118
- refactor(process-table): extract the correlation indexes into their own module by @nwparker in #18246
- fix(terminal): replay paired-runtime snapshots at the host's grid by @nwparker in #18132
- perf(remote): apply the no-evidence inspection cadence to remote panes (30 -> 4 host round trips/min/idle pane) by @nwparker in #18146
- Auto e2e tests autofix scheduled ci 1h run 32 20260902T0700 by @AmethystLiang in #18227
- perf(renderer): drop react-markdown and the emoji catalog off the boot path (-371 KB eager JS) by @nwparker in #18149
- fix(i18n): add the three activity keys #18245 left out of en.json by @nwparker in #18250
- perf(diff): window the combined-diff file tree rows on large reviews by @nwparker in #18236
- perf(renderer): stop six timers from ticking behind a hidden window by @nwparker in #18134
- perf(sidebar): stop re-allocating 423 workspace descriptors and 193 bucket projections per recompute by @nwparker in #18241
- fix(gh): reap the whole gh/glab process tree at the deadline on POSIX by @nwparker in #18258
- fix(ssh): reclaim relay PTYs the client has provably lost, on host attestation only by @nwparker in #17831
- fix(ssh): stop a late SFTP stream error crashing main, and keep the relay socket inside sun_path by @nwparker in #17862
- fix(watcher): route relay watch-root capacity refusals off the fast ladder by @nwparker in #17950
- fix(ssh): log an unanswered native-deps probe instead of launching silently by @nwparker in #18000
- fix(ssh): declare a wedged relay link lost, and stop reading silence as a verdict by @nwparker in #17817
- fix(remote-runtime): make every advertised recovery attempt reachable, and stop two recovery latches by @nwparker in #17822
- fix(relay): retire PTYs the host proves are gone, and stop two per-poll scan storms by @nwparker in #17832
- fix(remote-terminal): keep the stream stall deadline armed on unacknowledged credit by @nwparker in #17871
- fix(ssh): answer every MFA stage, stop dialling an unclaimed alias, and say where a clone failed by @nwparker in #17946
- test(e2e): pass testInfo to startDockerSshRelayTarget in the freeze repro by @nwparker in #18257
- Align worktree host labels across desktop and mobile by @brennanb2025 in #18237
- fix(relay): signal capacity loss instead of dropping, hanging, or truncating by @nwparker in #17870
- test(e2e): un-rot the SSH freeze repro and probe two failure modes nothing covered by @nwparker in #17940
- fix(activity): persist the agents unread filter and grouping by @AmethystLiang in #18255
- fix(path): stop seeded user bin dirs from outranking the inherited PATH by @nwparker in #18265
- fix(ssh): resolve the worktree's execution host instead of guessing from one repo row by @nwparker in #17909
- fix(ssh): route four host-blind seams through the resolved execution host by @nwparker in #17919
- docs: update localized Android APK links to 0.0.47 by @AmethystLiang in #18292
- fix(ssh): decide remote-vs-local from the resolved execution host, not a raw field by @nwparker in #18294
- feat(providers): dispatch git and filesystem providers by execution host by @nwparker in #18296
- fix(worktrees): stop a resolved-worktree snapshot answering for repos it never saw by @nwparker in #18295
- fix(runtime): route runtime Git by resolved execution host, not repo connectionId by @nwparker in #18307
- fix(native-chat): show images in Codex structured chat by @brennanb2025 in #18266
- fix(native-chat): make structured Codex launches race-resistant by @brennanb2025 in #18251
- fix(runtime): route runtime filesystem commands by resolved execution host by @nwparker in #18325
- fix(ssh): stop respawning an agent onto a PTY the relay just proved alive by @nwparker in https://github.com/stablyai/orca/pull/17951
- fix(ssh): stop respawning panes on client-side-only absence evidence by @nwparker in https://github.com/stablyai/orca/pull/17957
- perf(relay): stop two unbounded growth terms behind the long-session SSH slowdown by @nwparker in https://github.com/stablyai/orca/pull/17818
- fix(remote): stop a colliding path key, a dead conflict state, and a live-PTY removal from losing tabs by @nwparker in https://github.com/stablyai/orca/pull/17948
- fix(remote): resolve the spawn cwd, the node manager dir, the vault host and the scrollback seed by @nwparker in https://github.com/stablyai/orca/pull/17952
- fix(wsl): stop runWslProcess inheriting a removable spawn directory by @nwparker in https://github.com/stablyai/orca/pull/17837
- fix(ssh): let an expired lease reattach its orphan instead of stranding it by @nwparker in https://github.com/stablyai/orca/pull/17965
- fix(ssh): give supersession and id-recycling their own lease marks by @nwparker in https://github.com/stablyai/orca/pull/17966
- fix(ssh): compare lease and runtime pty ids in one form so pane recovery runs by @nwparker in https://github.com/stablyai/orca/pull/17969
- fix(ssh): require a host death certificate before recreating a pane, and unstick expired leases by @nwparker in https://github.com/stablyai/orca/pull/18013
- Treat domain paths as URLs, not new files by @AmethystLiang in https://github.com/stablyai/orca/pull/18340
- fix(relay): stop reviving a PTY into a directory that is gone from the host by @nwparker in https://github.com/stablyai/orca/pull/18351
- fix: Claude quota unavailable when macOS $USER contains @ by @rudironsoni in https://github.com/stablyai/orca/pull/16673
- perf(history-gc): drop 12,259 startup syscalls by using dirents and deleting a log-only size scan by @nwparker in https://github.com/stablyai/orca/pull/18314
- fix(memory): close two per-id map reaper gaps and ratchet the pty-exit reaper by @nwparker in https://github.com/stablyai/orca/pull/18320
- perf(sidebar): memoize the lineage ancestor index and precompute sort labels by @nwparker in https://github.com/stablyai/orca/pull/18318
- perf(combined-diff): stop rebuilding whole-section derived state on every section load by @nwparker in https://github.com/stablyai/orca/pull/18321
- perf(terminal): cut per-pane store listeners from 48 to 17 by @nwparker in https://github.com/stablyai/orca/pull/18322
- perf(main): one shared terminal-wait sweep, halved SIGWINCH ps forks, chunked wait-blocked carry, hoisted redraw regex by @nwparker in https://github.com/stablyai/orca/pull/18315
- perf(persistence): stop rewriting redundant bytes in the profile store by @nwparker in https://github.com/stablyai/orca/pull/18317
- perf(agent-status): memoize pane routing, cache the freshness minimum, clone staged state once per transaction by @nwparker in https://github.com/stablyai/orca/pull/18323
- perf(file-explorer): stop rebuilding the whole visible tree twice per directory refresh by @nwparker in https://github.com/stablyai/orca/pull/18319
- feat(native-chat): unify local agent entrypoint routing by @brennanb2025 in https://github.com/stablyai/orca/pull/18248
- perf(browser-pane): share one rAF loop across client-hosted page overlays by @nwparker in https://github.com/stablyai/orca/pull/18313
- fix(cleanup): route workspace cleanup by resolved execution host, not repo connectionId by @nwparker in https://github.com/stablyai/orca/pull/18358
- perf(editor): stop reclassifying the whole markdown document on every render by @nwparker in https://github.com/stablyai/orca/pull/18324
- feat(ssh): host-stamped remote foreground identity by @brennanb2025 in https://github.com/stablyai/orca/pull/18078
- fix(ssh): pick the eligible expired lease, not the first one matching a pane by @nwparker in https://github.com/stablyai/orca/pull/18366
- perf(renderer): take the English catalog and the xterm WebGL addon off the boot graph by @nwparker in https://github.com/stablyai/orca/pull/18326
- fix(repos): route icon and remote-identity probes on a resolved execution host by @nwparker in https://github.com/stablyai/orca/pull/18377
- feat(cli): make terminal close the canonical workspace teardown by @Jinwoo-H in https://github.com/stablyai/orca/pull/18073
- fix(source-control): route hosted reviews by resolved execution host by @nwparker in https://github.com/stablyai/orca/pull/18382
- docs(ssh): document keep-alive-until-reset as the default grace by @nwparker in https://github.com/stablyai/orca/pull/18383
- fix(ssh): route the remaining expired-lease readers through the reattach predicate by @nwparker in https://github.com/stablyai/orca/pull/18378
- chore(workspaces): drop the dead workspaceCleanup:hasKillableLocalProcesses IPC by @nwparker in https://github.com/stablyai/orca/pull/18386
- fix(git): share the worktree-list and unmerged-entry porcelain parsers with the SSH relay by @nwparker in https://github.com/stablyai/orca/pull/18389
- perf(renderer): index diff comments, skip no-op hydration, drop duplicate normalizes by @nwparker in https://github.com/stablyai/orca/pull/18375
- fix(crash-reporting): record Orca-initiated tree kills so a killed renderer is decidable by @nwparker in https://github.com/stablyai/orca/pull/18367
- perf(renderer): narrow vault and editor subscriptions off the every-write path by @nwparker in https://github.com/stablyai/orca/pull/18374
- perf(renderer): park hibernation and panel-watchdog work behind a hidden window by @nwparker in https://github.com/stablyai/orca/pull/18373
- perf(hot-paths): delete allocation-only work in sort, explorer, monaco, rpc, snapshots by @nwparker in https://github.com/stablyai/orca/pull/18372
- chore(cloud): add the relay fence broker, ops console, Terraform root, scripts, and 24 cloud-* workflows by @Jinwoo-H in https://github.com/stablyai/orca/pull/18413
- fix(cloud): stop asking setup-node to cache the pnpm store in the relay workflows by @Jinwoo-H in https://github.com/stablyai/orca/pull/18432
- fix(cloud): stop passing manage_artifact_dns to the relay root by @Jinwoo-H in https://github.com/stablyai/orca/pull/18442
- Fix table header transparency with opaque background by @AmethystLiang in https://github.com/stablyai/orca/pull/18499
- chore(cloud): pin staging relay c3 to the director's image by @Jinwoo-H in https://github.com/stablyai/orca/pull/18508
- chore(cloud): close the Workload Identity cutover onto stablyai/orca by @Jinwoo-H in https://github.com/stablyai/orca/pull/18509
- fix(terminal): flush xterm's parked renderer resize when releasing the pause latch by @Jinwoo-H in https://github.com/stablyai/orca/pull/18510
- fix(settings): indent the Agent sleep "Sleep after" sub-setting by @brennanb2025 in https://github.com/stablyai/orca/pull/18379
- fix(relay): stop self-closing the control socket on unknown messages by @Jinwoo-H in https://github.com/stablyai/orca/pull/18400
- fix(release): restore version and harden staging confirmation by @Jinwoo-H in https://github.com/stablyai/orca/pull/18515
- fix(mobile): stage-aware relay dial bound so a slow cell is not hung up on by @Jinwoo-H in https://github.com/stablyai/orca/pull/18518
- fix(cloud): bound and yield the relay's global cell-inventory lock by @Jinwoo-H in https://github.com/stablyai/orca/pull/18521
- fix(git): share one failed-command error-text reader between local and the SSH relay by @nwparker in https://github.com/stablyai/orca/pull/18398
- refactor(git): share push-target resolution between local and the SSH relay by @nwparker in https://github.com/stablyai/orca/pull/18406
- fix(dashboard): open remote sessions from every agent reveal path by @nwparker in https://github.com/stablyai/orca/pull/18403
- fix(cli): reject runtime selectors on
host listandenvironment list(#18105) by @nwparker in https://github.com/stablyai/orca/pull/18405 - fix(cli): report worktree-listing host coverage and stop the row cap starving remote hosts (#18104) by @nwparker in https://github.com/stablyai/orca/pull/18417
- test(cloud): derive both reachability directions for the relay inventory census by @Jinwoo-H in https://github.com/stablyai/orca/pull/18524
- fix(ssh): measure pane idleness in the unit the sweep's kill operates on by @nwparker in https://github.com/stablyai/orca/pull/18415
- Fix scope of workspace-creation-project tour target by @AmethystLiang in https://github.com/stablyai/orca/pull/18502
- fix(i18n): extract translateSearchKeyword calls so settings-search keywords reach en.json by @imgusev in https://github.com/stablyai/orca/pull/18040
- fix(i18n): distinguish Duplicate from Copy in Simplified Chinese by @weibiansanjue in https://github.com/stablyai/orca/pull/18065
- fix(i18n): localize remaining onboarding UI by @mors119 in https://github.com/stablyai/orca/pull/17992
- feat(mobile): structured native Codex chat by @brennanb2025 in https://github.com/stablyai/orca/pull/18074
- fix(cloud): run the rehome control job under pipefail by @Jinwoo-H in https://github.com/stablyai/orca/pull/18537
- fix(ssh): stop pane adoption certifying a death from the relay's not-found union by @nwparker in https://github.com/stablyai/orca/pull/18531
- fix(ssh): close the macOS relay's per-terminal pty fd leak by @nwparker in https://github.com/stablyai/orca/pull/18534
- fix(worktrees): route managed worktree removal by resolved execution host by @nwparker in https://github.com/stablyai/orca/pull/18529
- fix(worktrees): resolve the execution host at both worktree-create entry points by @nwparker in https://github.com/stablyai/orca/pull/18545
- feat(native-chat): restore the terminal/chat switcher for bridge chat only by @brennanb2025 in https://github.com/stablyai/orca/pull/18532
- fix(ssh): resolve a pane's binding from the target partition, not the stale local copy by @nwparker in https://github.com/stablyai/orca/pull/18546
- fix(i18n): ship the onboarding integration capability strings in the boot catalog by @Jinwoo-H in https://github.com/stablyai/orca/pull/18539
- docs: document localization workflow in AGENTS.md by @tmchow in https://github.com/stablyai/orca/pull/6204
- feat(i18n): localize Orca Account settings and navigation to Korean by @hwantage in https://github.com/stablyai/orca/pull/15849
- feat(i18n): add French UI locale by @foXaCe in https://github.com/stablyai/orca/pull/16455
- docs: add Ukrainian README translation by @iho in https://github.com/stablyai/orca/pull/16124
- fix(terminal): make wrapped-line search rewind iterative and bound its scans by @nwparker in https://github.com/stablyai/orca/pull/18402
- refactor(agents): one pane-identity resolver behind six thin adapters (tranche 0) by @brennanb2025 in https://github.com/stablyai/orca/pull/18243
- fix(cloud): retry the committed-winner collision codes in relay schema startup by @Jinwoo-H in https://github.com/stablyai/orca/pull/18553
- fix(i18n): repair French locale drift breaking static analysis by @nwparker in https://github.com/stablyai/orca/pull/18550
- fix(relay): reject malformed percent-escapes on upgrade instead of throwing by @Jinwoo-H in https://github.com/stablyai/orca/pull/18547
- fix(mobile): restore terminal input when reopening worktrees by @shaharmor in https://github.com/stablyai/orca/pull/16239
- perf(orchestration): project explicit columns so the graph publish stops recompiling SQL by @nwparker in https://github.com/stablyai/orca/pull/18420
- perf(renderer): gate the tab strip's worktree subscriptions and fix the orchestration batch's self-invalidating cache by @nwparker in https://github.com/stablyai/orca/pull/18428
- perf(terminal): scan only new tail lines for the wait-blocked sentinel by @nwparker in https://github.com/stablyai/orca/pull/18437
- perf(terminals): spend one inspection start on a whole cadence round by @nwparker in https://github.com/stablyai/orca/pull/18438
- perf(ipc): index worktree owners instead of rescanning the repo list per lookup by @nwparker in https://github.com/stablyai/orca/pull/18416
- perf(paths): guard the no-op regex passes on the path-comparison hot path by @nwparker in https://github.com/stablyai/orca/pull/18418
- perf(images): probe raster headers instead of decoding whole payloads, memoize repo icon validation by @nwparker in https://github.com/stablyai/orca/pull/18421
- perf(startup): stop the persistence startup milestone from timing its own details closure by @nwparker in https://github.com/stablyai/orca/pull/18439
- perf(persistence): stop dead SSH leases pinning metadata, retire unreachable tombstones by @nwparker in https://github.com/stablyai/orca/pull/18430
- perf(worktrees): classify each worktree once, defer the SSH meta index, drop the conflict-path probe by @nwparker in https://github.com/stablyai/orca/pull/18433
- perf(startup): overlap the runtime capability refresh with the session-tabs inventory by @nwparker in https://github.com/stablyai/orca/pull/18460
- perf(worktrees): converge the trash sweep instead of re-walking doomed trees by @nwparker in https://github.com/stablyai/orca/pull/18429
- perf(source-control): sort branch entries before filtering, gate projections by view mode by @nwparker in https://github.com/stablyai/orca/pull/18426
- perf(renderer): load the project-location and feedback dialogs on click by @nwparker in https://github.com/stablyai/orca/pull/18440
- perf(renderer): narrow the App-root badge and terminal pty-set subscriptions by @nwparker in https://github.com/stablyai/orca/pull/18444
- perf(persistence): stop double-traversing the persisted session at load by @nwparker in https://github.com/stablyai/orca/pull/18458
- perf(main): take the idle ownership poll off the main thread and batch pending marker probes by @nwparker in https://github.com/stablyai/orca/pull/18425
- perf(startup): stop queueing window creation behind the proxy apply and i18n by @nwparker in https://github.com/stablyai/orca/pull/18436
- fix(cloud): recalibrate the relay monitor's exhausted-retry freeze to a measured bar by @Jinwoo-H in https://github.com/stablyai/orca/pull/18569
- perf(runtime): stop the expired-SSH-lease sweep from rescanning every tab layout by @nwparker in https://github.com/stablyai/orca/pull/18409
- perf(persistence): stop writing every worktree metadata row twice by @nwparker in https://github.com/stablyai/orca/pull/18451
- Revert "docs: add Ukrainian README translation" by @OrcaWin in https://github.com/stablyai/orca/pull/18570
- Revert "docs: document localization workflow in AGENTS.md" by @OrcaWin in https://github.com/stablyai/orca/pull/18571
- perf(remote): read the repo catalog once per publish, not once per worktree by @nwparker in https://github.com/stablyai/orca/pull/18410
- fix(windows): make the install-dir ACL repair rescue the launch it runs in by @nwparker in https://github.com/stablyai/orca/pull/18361
- perf(ssh): coalesce concurrent git.listWorktrees reads by @nwparker in https://github.com/stablyai/orca/pull/18419
- fix(ports): route the status-bar popover scan to the workspace's host by @iverJisty in https://github.com/stablyai/orca/pull/17048
- perf(ipc): build the filesystem allowed-root list once per authorization by @nwparker in https://github.com/stablyai/orca/pull/18423
- fix(cloud): recalibrate the relay monitor's postgres-retry freeze to a measured bar by @Jinwoo-H in https://github.com/stablyai/orca/pull/18580
- docs(cloud): reconcile the 2026-08-23 retry figure with the gate metric by @Jinwoo-H in https://github.com/stablyai/orca/pull/18581
- fix(ssh): stop the daemon's own services from blocking the superseded-relay reap by @nwparker in https://github.com/stablyai/orca/pull/18586
- fix(terminal): warn about remote work when closing the window or quitting by @nwparker in https://github.com/stablyai/orca/pull/18593
- fix(crash-reporting): bound replay-guard wedge bursts in the ring without losing their spans by @nwparker in https://github.com/stablyai/orca/pull/18441
- fix(crash-reporting): stop claiming kills that never landed, and leave proof when the own-Chromium pid set is unreadable by @nwparker in https://github.com/stablyai/orca/pull/18578
- fix(terminals): add equality bailouts to the tab pane-expansion actions by @nwparker in https://github.com/stablyai/orca/pull/18332
- fix(crash-reporting): sample system memory before the process is gone by @nwparker in https://github.com/stablyai/orca/pull/18356
- fix(ssh): move Windows file writes off PowerShell 5.1 stdin onto sftp by @nwparker in https://github.com/stablyai/orca/pull/18596
- fix(relay): stop taking the fleet-wide cell inventory lock on per-connection paths by @Jinwoo-H in https://github.com/stablyai/orca/pull/18606
- fix(hosts): resolve a folder workspace's SSH host from the repo's host, not its raw connectionId by @nwparker in https://github.com/stablyai/orca/pull/18598
- docs: add WeChat group 9 QR code by @AmethystLiang in https://github.com/stablyai/orca/pull/18608
- fix(relay): release the ConPTY conin handle after teardown, not before it by @nwparker in https://github.com/stablyai/orca/pull/18601
- fix(relay): observe Windows PTY child processes instead of answering false by @nwparker in https://github.com/stablyai/orca/pull/18591
- fix(runtime): let a scoped worktree listing report the host it could not cover by @nwparker in https://github.com/stablyai/orca/pull/18645
- fix(pty): close the pseudoconsole and dispose the conout worker on Windows self-exit (F24) by @nwparker in https://github.com/stablyai/orca/pull/18635
- test(pty): make the F24 patch pins catch the regressions they name by @nwparker in https://github.com/stablyai/orca/pull/18660
- fix(remote): stop a disclosure list latching the mirror completeness gate by @nwparker in https://github.com/stablyai/orca/pull/18619
- Keep attention glyph knockout white when row is selected by @AmethystLiang in https://github.com/stablyai/orca/pull/18679
- Add tab scrollbar by @AmethystLiang in https://github.com/stablyai/orca/pull/18526
- Shorten orchestration skill description under the Agent Skills 1024-char limit by @Jinwoo-H in https://github.com/stablyai/orca/pull/18683
- Fix status bar render loop in runtime target hook by @Jinwoo-H in https://github.com/stablyai/orca/pull/18685
- fix(mobile): separate image attachment paths from following prompt text (STA-4847) by @brennanb2025 in https://github.com/stablyai/orca/pull/15690
New Contributors
- @junyeokk made their first contribution in #17121
- @JahyunBaek made their first contribution in #16511
- @Pr1p made their first contribution in #16743
- @Sahir619 made their first contribution in #17511
- @NiZZioN made their first contribution in #17456
- @trs-80 made their first contribution in #16089
- @2sumtech made their first contribution in #17226
- @spellbook96 made their first contribution in #16762
- @djegor315-sketch made their first contribution in #17889
- @rudironsoni made their first contribution in https://github.com/stablyai/orca/pull/16673
- @imgusev made their first contribution in https://github.com/stablyai/orca/pull/18040
- @mors119 made their first contribution in https://github.com/stablyai/orca/pull/17992
- @foXaCe made their first contribution in https://github.com/stablyai/orca/pull/16455
- @iho made their first contribution in https://github.com/stablyai/orca/pull/16124
- @iverJisty made their first contribution in https://github.com/stablyai/orca/pull/17048
Full Changelog: mobile-android-v0.0.47...mobile-android-v0.0.48