github stablyai/orca v1.4.198

4 hours ago

Thank you so much for using Orca and for your continued support! ❤️

Please note: It usually takes 48–72 hours for a landed PR to be released (except P0+ fixes). We have many more exciting PRs and features coming in later versions!

Notable changes

  • Improved Codex chat UI is available when Structured Chat is enabled in Experimental settings, with inline file diffs, pane actions, clearer tool output, individual task stops, and structured mobile Codex chat.
  • GitHub Projects Roadmap views now render as timelines; the desktop also adds tab scrolling, narrower tabs, and refreshed notifications.
  • Faster workspace, renderer, editor, terminal, Git, and remote operations, alongside stronger SSH relay and Windows/WSL recovery.

Product experience

Workspaces & projects

  • Fix scope of workspace-creation-project tour target by @AmethystLiang in #18502
  • fix(worktrees): route managed worktree removal by resolved execution host by @nwparker in #18529
  • fix(worktrees): resolve the execution host at both worktree-create entry points by @nwparker in #18545
  • Keep the floating workspace above a working native chat pane by @brennanb2025 in #18692
  • fix(ui): unmount project selector before Add Project handoff by @Jinwoo-H in #18730
  • fix(sidebar): confirm filter reset before revealing active workspace by @nwparker in #18708
  • fix(sidebar): stop ⌘⇧↓ worktree navigation jumping to the first row by @nwparker in #18804
  • Stop evicted and expired worktree preparations by @nwparker in #18951
  • Let worktree creation proceed during stale preparation reclamation by @nwparker in #18967
  • feat(github-projects): render Roadmap project views as a timeline by @NaoyaTatetsu in #17795
  • fix(runtime): let a scoped worktree listing report the host it could not cover by @nwparker in #18645

Editor, browser & UI

Settings & localization

  • fix(settings): indent the Agent sleep "Sleep after" sub-setting by @brennanb2025 in #18379
  • fix(i18n): extract translateSearchKeyword calls so settings-search keywords reach en.json by @imgusev in #18040
  • fix(i18n): distinguish Duplicate from Copy in Simplified Chinese by @weibiansanjue in #18065
  • fix(i18n): localize remaining onboarding UI by @mors119 in #17992
  • fix(i18n): ship the onboarding integration capability strings in the boot catalog by @Jinwoo-H in #18539
  • feat(i18n): localize Orca Account settings and navigation to Korean by @hwantage in #15849
  • feat(i18n): add French UI locale by @foXaCe in #16455
  • fix(i18n): repair French locale drift breaking static analysis by @nwparker in #18550
  • fix(startup): apply the HTTP/1.1 compatibility toggle for migrated profiles, and stop parsing the settings file pre-ready by @nwparker in #18621
  • feat(i18n): localize onboarding flow to Japanese by @tb-soshiro in #18787
  • Improve notification view by @AmethystLiang in #18699
  • fix(source-control): stack the Create PR notice's settings link below its message by @nwparker in #19046

Agents & workflow

Agents & native chat

  • Answer the structured-session support probe without installing the host by @brennanb2025 in #18695
  • feat(native-chat): restore the terminal/chat switcher for bridge chat only by @brennanb2025 in #18532
  • fix(native-chat): clarify active progress by @brennanb2025 in #18705
  • feat(claude): move structured native chat onto the Claude Agent SDK and enable it on macOS and Linux by @brennanb2025 in #18560
  • feat(native-chat): expose split and move-to-pane actions in Chat UI mode by @brennanb2025 in #18714
  • fix(native-chat): render Claude structured chat through the same UI as Codex by @brennanb2025 in #18743
  • fix(native-chat): make document paths and links clickable in chat by @brennanb2025 in #18712
  • feat(native-chat): render agent file edits as inline diff cards by @brennanb2025 in #18765
  • Show Claude background task status in Native Chat by @brennanb2025 in #18757
  • fix(agent-session): refuse a pre-commit structured create with an envelope by @brennanb2025 in #18697
  • fix(native-chat): say when a structured launch fell back to a terminal by @brennanb2025 in #18762
  • fix(native-chat): stop a settling handoff throwing an unhandled rejection at teardown by @nwparker in #18824
  • fix(claude): make the recovery barrier cover an exit still climbing the close ladder by @nwparker in #18826
  • feat(native-chat): label Codex tool rows by what the command actually did by @brennanb2025 in #18760
  • feat(native-chat): model Codex MCP and web-search items instead of leaking opcodes by @brennanb2025 in #18763
  • fix(native-chat): publish structured session status from the host so the sidebar never goes stale by @brennanb2025 in #18776
  • feat(native-chat): stop monitored tasks individually by @brennanb2025 in #18807
  • fix(native-chat): tell a pre-SQLite chat how to carry on by @brennanb2025 in #18808
  • fix(agent-session): never open a sibling terminal on an unproven create by @brennanb2025 in #18735
  • fix(native-chat): repair a structured chat tab permanently fenced by an inherited publication epoch by @brennanb2025 in #18906
  • fix(native-chat): resume a structured chat from Agent Session History by @OrcaWin in #18933
  • fix(native-chat): honor structured routing with saved options by @brennanb2025 in #19040

Automations

  • feat(automations): restore column sorting on the list by @nwparker in #18885
  • Shorten orchestration skill description under the Agent Skills 1024-char limit by @Jinwoo-H in #18683
  • fix(orchestration): fence the dispatch CLI preamble so it stops rendering as headings by @brennanb2025 in #18718
  • fix(orchestration): typed error codes for dispatch and worker-start refusals by @Jinwoo-H in #18902
  • fix(automation): keep explicit background launches off screen by @nwparker in #18898

Terminal & CLI

  • fix: use fallback shell readiness and assert fish startup timing by @nwparker in #18755
  • fix(terminal): flush xterm's parked renderer resize when releasing the pause latch by @Jinwoo-H in #18510
  • fix(cli): reject runtime selectors on host list and environment list (#18105) by @nwparker in #18405
  • fix(terminal): make wrapped-line search rewind iterative and bound its scans by @nwparker in #18402
  • fix(terminals): add equality bailouts to the tab pane-expansion actions by @nwparker in #18332
  • Fix status bar render loop in runtime target hook by @Jinwoo-H in #18685
  • fix(agents): detect agent CLIs installed outside a version manager by @nwparker in #18336
  • fix(worktrees): stop a failed worktree scan from being recorded as an authoritative empty listing by @nwparker in #18456
  • fix(browser-pane): stop a dead client-hosted guest from killing the workbench by @nwparker in #18334
  • fix(terminal): stop a hidden pane's unmeasured 80x24 from overwriting a live PTY's size on reattach by @Jinwoo-H in #18706
  • fix(runtime): bound terminal-wait blocked-prompt rules to the live screen bottom by @Jinwoo-H in #18817

Remote & platform

SSH, relay & remote

  • fix(relay): stop self-closing the control socket on unknown messages by @Jinwoo-H in #18400
  • fix(dashboard): open remote sessions from every agent reveal path by @nwparker in #18403
  • fix(cli): report worktree-listing host coverage and stop the row cap starving remote hosts (#18104) by @nwparker in #18417
  • fix(ssh): measure pane idleness in the unit the sweep's kill operates on by @nwparker in #18415
  • fix(ssh): stop pane adoption certifying a death from the relay's not-found union by @nwparker in #18531
  • fix(ssh): close the macOS relay's per-terminal pty fd leak by @nwparker in #18534
  • fix(ssh): resolve a pane's binding from the target partition, not the stale local copy by @nwparker in #18546
  • fix(relay): reject malformed percent-escapes on upgrade instead of throwing by @Jinwoo-H in #18547
  • fix(ssh): stop the daemon's own services from blocking the superseded-relay reap by @nwparker in #18586
  • fix(terminal): warn about remote work when closing the window or quitting by @nwparker in #18593
  • fix(relay): stop taking the fleet-wide cell inventory lock on per-connection paths by @Jinwoo-H in #18606
  • fix(hosts): resolve a folder workspace's SSH host from the repo's host, not its raw connectionId by @nwparker in #18598
  • fix(remote): stop a disclosure list latching the mirror completeness gate by @nwparker in #18619
  • feat(relay-infra): dynamic NAT ports and alerts for the 2026-09-04 stall signals by @Jinwoo-H in #18693
  • feat(relay): tell the phone when its desktop is signed out by @Jinwoo-H in #18698
  • feat(relay-infra): cell crash-rate alert and incident dashboard by @Jinwoo-H in #18717
  • feat(relay): let cells dial Cloud SQL over private IP by @Jinwoo-H in #18720
  • fix(desktop): never replay a refresh token after a timeout; jitter relay lease renewal by @Jinwoo-H in #18719
  • fix(relay-ops): a thrown health fetch is not a health reading; auth probe does not require /ready by @Jinwoo-H in #18723
  • infra(relay): drop the unapplied region label from runtime log metrics by @Jinwoo-H in #18734
  • fix(relay-ops): retry a failed MIG inventory read once before calling a cell's power state unknown by @Jinwoo-H in #18740
  • fix(relay-ops): accept monitor evidence from an ancestor commit with identical monitor code by @Jinwoo-H in #18754
  • fix(relay-ops): retry transient admin-endpoint failures in same-cap verify and rehome jobs by @Jinwoo-H in #18769
  • fix(relay-ops): retry freshness-only preflight failures on the first same-cap wave too by @Jinwoo-H in #18778
  • fix(relay-ops): align the cloud-data freshness bar with Cloud Monitoring publish lag by @Jinwoo-H in #18798
  • fix: recover from an alternate shell install, and close the relay duplicate-echo gap by @nwparker in #18796
  • fix(ssh): compile node-pty from the host's own Node headers instead of nodejs.org (STA-6674) by @nwparker in #18774
  • fix(ssh): let the host say whether it armed the shell-ready marker by @nwparker in #18802
  • fix(relay-ops): per-region cell latency bar and attributable preflight failures by @Jinwoo-H in #18877
  • feat(cli): report SSH host platforms by @nwparker in #18896
  • fix(relay): abandon dead client accepts, jitter and lengthen the control lease, fail direct probes fast by @Jinwoo-H in #18959
  • fix(sidebar): stop a missed pointerup from hiding a remote host section by @nwparker in #19032
  • fix(mobile): stage-aware relay dial bound so a slow cell is not hung up on by @Jinwoo-H in #18518
  • fix(mobile): stop host streams after relay subscription cancellation by @nwparker in #18926

Windows & WSL

  • fix(windows): make the install-dir ACL repair rescue the launch it runs in by @nwparker in #18361
  • fix(ssh): move Windows file writes off PowerShell 5.1 stdin onto sftp by @nwparker in #18596
  • fix(relay): release the ConPTY conin handle after teardown, not before it by @nwparker in #18601
  • fix(relay): observe Windows PTY child processes instead of answering false by @nwparker in #18591
  • fix(pty): close the pseudoconsole and dispose the conout worker on Windows self-exit (F24) by @nwparker in #18635
  • fix(renderer): stop a Node-only process-table module blanking the app at boot by @nwparker in #18814
  • fix(windows): copy the daemon host exe verbatim instead of renaming it (MDE T1036) by @OrcaWin in #17865
  • fix(computer-use): run the Windows runtime as one persistent helper by @OrcaWin in #17858
  • fix(windows): drop EDR-flagged -ExecutionPolicy Bypass from encoded PowerShell by @OrcaWin in #17880
  • fix(windows): read command lines from the kernel, not each process's PEB by @OrcaWin in #17886
  • fix(windows): scan ports natively instead of encoded PowerShell by @OrcaWin in #17861
  • fix(windows): resolve npm/pnpm .cmd shims past cmd.exe by @OrcaWin in #17869
  • fix(windows): sign the NSIS uninstaller via SignPath by @OrcaWin in #17868
  • fix(windows): drop no-op -ExecutionPolicy Bypass from -Command spawns by @OrcaWin in #17873

Mobile

Quality & delivery

Performance: interface & workspace

  • perf: find mobile Markdown placeholder prefixes in one scan by @nwparker in #18914
  • perf(ipc): index worktree owners instead of rescanning the repo list per lookup by @nwparker in #18416
  • perf(worktrees): converge the trash sweep instead of re-walking doomed trees by @nwparker in #18429
  • perf(source-control): sort branch entries before filtering, gate projections by view mode by @nwparker in #18426
  • perf(persistence): stop writing every worktree metadata row twice by @nwparker in #18451
  • perf(sidebar): stop building host projections the row model throws away by @nwparker in #18638
  • perf(sidebar): share one natural-worktree-id scan and drop a redundant row-key join by @nwparker in #18647
  • perf(renderer): index four projections that rescanned their inputs per keystroke by @nwparker in #18747
  • perf(worktree): overlap base refresh with prepared checkout by @nwparker in #18998
  • perf(startup): overlap the runtime capability refresh with the session-tabs inventory by @nwparker in #18460
  • perf(editor): build the closing-fence pattern once per fence, not once per line by @nwparker in #18629
  • perf(right-sidebar): cache the active checks status instead of rebuilding its cache keys per store write by @nwparker in #18631
  • perf(renderer): stop two store selectors allocating on every write by @nwparker in #18632
  • perf(source-control): stop reconciling selection on every panel render by @nwparker in #18637
  • perf(browser): assemble fragmented tunnel frames once by @nwparker in #18893
  • perf(editor): reuse Markdown source blocks while positioning review notes by @nwparker in #18895
  • perf(editor): reuse live Markdown search matches across unrelated renders by @nwparker in #18903
  • perf(explorer): remove redundant dotfile path filter allocation by @nwparker in #18929
  • perf(browser): reuse decoded single-chunk upload buffers by @nwparker in #18960
  • perf(tabs): index saved tab order during hydration repair by @nwparker in #18964
  • perf(palette): reuse allowed quality arrays during matching by @nwparker in #18966
  • perf(renderer): gate the tab strip's worktree subscriptions and fix the orchestration batch's self-invalidating cache by @nwparker in #18428
  • perf(renderer): load the project-location and feedback dialogs on click by @nwparker in #18440
  • perf(renderer): narrow the App-root badge and terminal pty-set subscriptions by @nwparker in #18444
  • perf(worktree): remove redundant creation and terminal startup work by @nwparker in #18793
  • perf(worktrees): classify each worktree once, defer the SSH meta index, drop the conflict-path probe by @nwparker in #18433
  • perf(remote): read the repo catalog once per publish, not once per worktree by @nwparker in #18410
  • perf(ssh): coalesce concurrent git.listWorktrees reads by @nwparker in #18419
  • perf(worktree): skip remote probes with no possible result by @nwparker in #18821

Performance: terminal & remote

  • perf(orchestration): bound the worker terminal archive in linear time by @nwparker in #18622
  • perf(terminal): scan only new tail lines for the wait-blocked sentinel by @nwparker in #18437
  • perf(terminals): spend one inspection start on a whole cadence round by @nwparker in #18438
  • perf(terminal): stop copying every PTY chunk for two startup-error detectors by @nwparker in #18626
  • perf(terminal): use real event-loop yields between chunked writes by @nwparker in #18627
  • perf(terminal): skip the partial-escape-tail walk on ESC-free PTY chunks by @nwparker in #18748
  • perf(persistence): skip rewriting unchanged terminal scrollback snapshots by @nwparker in #18764
  • perf(terminal): cheap-tier process inspection for anchored local agent panes by @nwparker in #18780
  • perf(persistence): stop dead SSH leases pinning metadata, retire unreachable tombstones by @nwparker in #18430
  • perf(runtime): stop the expired-SSH-lease sweep from rescanning every tab layout by @nwparker in #18409
  • perf(relay): per-cell inventory locks, delta counters, and a pool statement timeout by @Jinwoo-H in #18722
  • perf(relay): bound the symlink directory probes a remote readDir fans out by @nwparker in #18752
  • perf(relay): drain fragmented frame buffers in linear time by @nwparker in #18891
  • perf(ssh): reuse and release relay startup buffers by @nwparker in #18953
  • perf(ssh): reuse streamed response idle timers by @nwparker in #18956
  • perf(terminal): gate the Command Code banner scan before building its scan windows by @nwparker in #18628
  • perf(terminals): let idle panes share one process-table capture instead of forking their own by @nwparker in #18742

Performance: core & infrastructure

  • perf(mobile): cancel direct probes when their owner stops by @nwparker in #18940
  • perf(speech): reuse the model download idle timer by @nwparker in #18945
  • perf(paths): guard the no-op regex passes on the path-comparison hot path by @nwparker in #18418
  • perf(images): probe raster headers instead of decoding whole payloads, memoize repo icon validation by @nwparker in #18421
  • perf(startup): stop the persistence startup milestone from timing its own details closure by @nwparker in #18439
  • perf(persistence): stop double-traversing the persisted session at load by @nwparker in #18458
  • perf(main): take the idle ownership poll off the main thread and batch pending marker probes by @nwparker in #18425
  • perf(ipc): build the filesystem allowed-root list once per authorization by @nwparker in #18423
  • perf(git): overlap the three independent submodule status reads by @nwparker in #18623
  • perf(ports): serve unchanged macOS listeners from remembered metadata by @nwparker in #18650
  • perf(persistence): stop the session write re-scanning and rebuilding unchanged state by @nwparker in #18739
  • perf(repos): avoid quadratic icon source scans by @nwparker in #18892
  • perf(watcher): skip remaining filesystem checks after cancellation by @nwparker in #18931
  • perf(skills): skip symlink probes beyond discovery depth by @nwparker in #18937
  • perf(jira): preserve replacement attachment download singleflight by @nwparker in #18944
  • perf(search): assemble fragmented subprocess lines incrementally by @nwparker in #18973
  • perf(startup): stop queueing window creation behind the proxy apply and i18n by @nwparker in #18436
  • perf(settings): commit free-text account settings on a debounce, not per keystroke by @nwparker in #18651
  • perf(claude-usage): reject non-assistant transcript lines before parsing them by @nwparker in #18640
  • perf(native-chat): stop rebuilding every transcript row on every stream frame by @nwparker in #18744
  • perf(automations): reuse collation setup when sorting names by @nwparker in #18823
  • perf(orchestration): project explicit columns so the graph publish stops recompiling SQL by @nwparker in #18420
  • perf(orchestration): project task columns so task reads hit the statement cache by @nwparker in #18641
  • perf(agent-hooks): find spool newlines with Buffer.indexOf, not a per-byte loop by @nwparker in #18639
  • perf(agent-hooks): stop cloning the whole status roster on every hook event by @nwparker in #18642
  • perf(cli): skip feature formatters during help and error startup by @nwparker in #18923
  • perf(hooks): use native reverse search for transcript lines by @nwparker in #18936
  • perf(cli): skip impossible typo distance comparisons by @nwparker in #18977
  • perf(windows): split the process table into two flag sets by @OrcaWin in #17866
  • feat(perf): lint repeated sort setup and schedule regression contracts by @nwparker in #18822
  • perf: decode fragmented CLI replies without repeated scans by @nwparker in #18909
  • perf: avoid file-to-file scans when selecting deletion roots by @nwparker in #18913
  • perf: avoid repeated Quick Open exclusion string allocations by @nwparker in #18916
  • perf: skip unrelated shared symlink probes during Git status by @nwparker in #18918
  • perf: avoid splitting every path during file autocomplete by @nwparker in #18919
  • perf: avoid rescanning emitted source in analysis guards by @nwparker in #18920
  • perf: remember equivalent session tab source identities by @nwparker in #18976
  • perf: avoid repeated whitespace scans in diagnostic redaction by @nwparker in #18908

Testing & reliability

  • test(e2e): follow current sidebar project and activity actions by @nwparker in #18878
  • test(renderer): pin the runtime-target selector identity stability that #18685 fixed by @nwparker in #18625
  • test(child-process): lower DIRECT_IMPORTER_PIN to the ground two PRs took by @OrcaWin in #19009
  • test(pty): make the F24 patch pins catch the regressions they name by @nwparker in #18660
  • test(e2e): stabilize terminal launch and rename menu fixtures by @nwparker in #18928
  • test(cloud): derive both reachability directions for the relay inventory census by @Jinwoo-H in #18524
  • test(e2e): fence SSH recovery and release exited Electron pipes by @nwparker in #18880
  • fix(cloud): run the rehome control job under pipefail by @Jinwoo-H in #18537
  • fix(ports): route the status-bar popover scan to the workspace's host by @iverJisty in #17048
  • fix(crash-reporting): bound replay-guard wedge bursts in the ring without losing their spans by @nwparker in #18441
  • fix(crash-reporting): stop claiming kills that never landed, and leave proof when the own-Chromium pid set is unreadable by @nwparker in #18578
  • fix(crash-reporting): sample system memory before the process is gone by @nwparker in #18356
  • fix(orca-profiles): tell the renderer when a cloud session is revoked by @Jinwoo-H in #18694
  • fix(crash-reporting): make the own-Chromium gate a real choke point, and stop a refusal leaking the root by @nwparker in #18459
  • fix(recovery): fail a renderer recovery reload that never loads, instead of leaving a dead window by @nwparker in #18466
  • fix(test): stop detached git maintenance racing the divergence fixture teardown by @nwparker in #18810
  • fix(cloud): let the same-cap roll isolate Asia cells by @Jinwoo-H in #18811
  • fix(cloud): validate protocol-0 same-cap cell plans without rehome trust lines by @Jinwoo-H in #18818
  • fix(cloud): bound and yield the relay's global cell-inventory lock by @Jinwoo-H in #18521
  • fix(cloud): retry the committed-winner collision codes in relay schema startup by @Jinwoo-H in #18553
  • fix(cloud): recalibrate the relay monitor's exhausted-retry freeze to a measured bar by @Jinwoo-H in #18569
  • fix(cloud): recalibrate the relay monitor's postgres-retry freeze to a measured bar by @Jinwoo-H in #18580
  • fix(git): share one failed-command error-text reader between local and the SSH relay by @nwparker in #18398
  • test: preserve Docker context in isolated VM recipes by @nwparker in #18884
  • test: isolate native crash restoration and refresh stale fixtures by @nwparker in #18883
  • test: pin worker visibility fixture command and handle by @nwparker in #18897
  • test: canonicalize setup fixture paths before worktree lookup by @nwparker in #18912
  • test: align desktop platform oracles with native behavior by @nwparker in #18915
  • test: follow sidebar reveal confirmation with a stable workspace target by @nwparker in #18921
  • test: pin terminal Codex home to an explicit managed account by @nwparker in #18935
  • test: deliver real terminal input and preserve setup reports by @nwparker in #18939
  • test: isolate skill cloud fixture ports across workers by @nwparker in #18942
  • test: align Source Control AI generation fixtures by @nwparker in #18941
  • test: keep artifact share fixtures unexpired across calendar dates by @nwparker in #18955
  • test: make SSH artifact regression fixtures reliable at narrow widths by @nwparker in #18947
  • test: order restart fixture readiness around daemon recovery by @nwparker in #18949
  • test: isolate Source Control generation from shared repository remotes by @nwparker in #18962
  • fix(hooks): register the Claude hook script directly on Windows (#18875) by @OrcaWin in #18905
  • test: drain project menu focus restoration before teardown by @nwparker in #18971
  • test: honor background mode in paired client window helpers by @nwparker in #18978
  • test: bound release checkout fixtures and gate delayed imports by @nwparker in #18981
  • test: isolate window mocks from inherited launch flags by @nwparker in #18989
  • test: match explorer filenames independently of git badges by @nwparker in #18997
  • test: synchronize large repository recovery with Retry request by @nwparker in #18999
  • fix(tests): stabilize divider viewport and pointer-capture event ordering by @nwparker in #19004
  • fix(tests): provide a window manager for Linux Electron CI by @nwparker in #19007
  • test: lower child-process import pin after ACL migration by @nwparker in #19012
  • fix(tests): complete hidden SSH dialog exits during cleanup by @nwparker in #18993
  • test: use a valid repo filter in workspace reveal coverage by @nwparker in #19017
  • test: cover native X11 Hangul-plus-digit PTY bytes in CI by @nwparker in #19013
  • test: await fresh inventory after headless terminal materialization by @nwparker in #19028
  • test: wait for board pointer readiness before marquee selection by @nwparker in #19029
  • test: await reattach replay before checking mouse reset by @nwparker in #19039
  • test: require recorded Git activity in polling regression by @nwparker in #19041
  • test: preserve Windows golden command failures by @nwparker in #19047
  • test: canonicalize Windows fresh-profile fixture path by @nwparker in #19049
  • test: repair Windows paste setup and newline expectations by @nwparker in #19050
  • test: align Windows shell icons with project runtime ownership by @nwparker in #19053
  • test: exercise supported ConPTY keyboard protocol reset by @nwparker in #19054
  • test: reject unsupported app-server in golden agent fixture by @nwparker in #19056
  • test: reject unsupported app-server in WSL golden stub by @nwparker in #19062
  • test: canonicalize native Windows paths during repository teardown by @nwparker in #19064
  • test: run real WSL terminal launch and paste in PR CI by @nwparker in #19072
  • test: restore SSH bulk-open freeze coverage in headed CI by @nwparker in #19081
  • test: enable direct and client-hosted SSH browser coverage by @nwparker in #19090
  • test: reconnect after replacing same-ID runtime pairing by @nwparker in #19094
  • test: enable Docker SSH browser network route coverage in CI by @nwparker in #19095
  • test: repair nested SSH fixture after HUB restart by @nwparker in #19098
  • test: enable localhost SSH terminal and hook journey in CI by @nwparker in #19097
  • test: reuse authoritative SSH connection readiness in localhost fixture by @nwparker in #19102
  • test: follow retained Activity sidebar during pane selection by @nwparker in #19107
  • test: isolate source-control generation repositories per scenario by @nwparker in #19105
  • test: cover SSH reattach replay and enable deterministic Codex CI by @nwparker in #19106

Release, CI & documentation

  • chore: update in-app Android APK link to 0.0.47 by @AmethystLiang in #18745
  • chore(cloud): close the Workload Identity cutover onto stablyai/orca by @Jinwoo-H in #18509
  • refactor(agents): one pane-identity resolver behind six thin adapters (tranche 0) by @brennanb2025 in #18243
  • docs(cloud): reconcile the 2026-08-23 retry figure with the gate metric by @Jinwoo-H in #18581
  • ci(package): retry apt fetches and docker builds behind the Ubuntu mirror by @nwparker in #18797
  • refactor(agent-session-journal): move the session journal onto SQLite by @brennanb2025 in #18652
  • refactor(agent-session): consolidate wire type imports below lint limit by @nwparker in #18930
  • chore(cloud): pin staging relay c3 to the director's image by @Jinwoo-H in #18508
  • refactor(git): share push-target resolution between local and the SSH relay by @nwparker in #18406
  • docs(relay): 2026-09 reconnect findings, checklist, roadmap, and Roll 2 plan by @Jinwoo-H in #18958
  • docs(relay): record Roll 2 phase 0/1 (code merge, image, director deploy) by @Jinwoo-H in #18979
  • docs(relay): Roll 2 cell roll record and checklist ticks by @Jinwoo-H in #19096
  • docs(relay): correct why the ConPTY teardown asset diverges from the desktop patch by @nwparker in #18636
  • fix(release): restore version and harden staging confirmation by @Jinwoo-H in #18515
  • docs: document localization workflow in AGENTS.md by @tmchow in #6204
  • docs: add Ukrainian README translation by @iho in #16124
  • docs: add WeChat group 9 QR code by @AmethystLiang in #18608
  • ci: reduce runner overhead and disposable package compression by @nwparker in #18948
  • ci: skip idle Mac allocations and redundant native compiler setup by @nwparker in #18954
  • ci: reduce dependency, checkout, and test deadline overhead by @nwparker in #18968
  • ci: preserve case-twin release refs through checkout and verify trust by @nwparker in #18980
  • ci: expose existing E2E spec selection for manual dispatch by @nwparker in #18987
  • fix(security): apply the Windows path-hardening ACL that never ran by @OrcaWin in #17884
  • fix(release): stop shipping an unsigned elevate.exe on Windows by @OrcaWin in #18044
  • fix(release): revalidate draft state before patching generated notes by @AmethystLiang in #19019
  • fix(build): pin config/relay-assets LF so one release is one relay hash by @OrcaWin in #19024
  • fix(packaging): ship Claude agent SDK with desktop builds by @brennanb2025 in #19042

New Contributors

Full Changelog: v1.4.197...v1.4.198

Don't miss a new orca release

NewReleases is sending notifications on new releases.