Thank you so much for using Orca and for your continued support! ❤️
The short version
- SSH and managed servers: New SSH connections now use Orca's managed server. Terminals left running by v1.4.224 keep working in their existing tabs through the upgrade and reconnect; new terminals open on the managed server. Saved port forwards return, Windows managed-host terminals get the
orcaCLI, and managed Claude chats keep their provider running after the desktop disconnects. Hosts that cannot run the managed server show a clear reason; the old SSH fallback is no longer available. - Native chat (experimental): Code blocks and shell commands are highlighted, attached files show as filename pills, and you can edit a queued message even while the agent is asking a question. Codex offers Ultrafast and can stop background commands and subagents; Grok can list and stop its background commands too. A new chat saves its first message immediately, closed chats stay closed, and interrupted replies put Continue in the explanation card. Mermaid diagrams work better in dark mode, and chat visuals can open in their own tab.
- Agents and accounts: Kiro reports agent status and appears in Session History. Claude accounts use separate folders and offer Copy sign-in link instead. Orchestration workers can start as native chats for supported agents, agent launch settings are edited on the workspace's own host, and account switching and MCP settings stay with the selected host.
- Remote work: The Ports panel scans and stops ports on the workspace's own computer, Resource Manager lists that host's processes, and Agent Dashboard can show terminal previews from the owning host. Files, project creation, pull request and merge request actions, account results and settings follow the computer that owns them. Re-pairing the same server keeps its environment, and one unreadable saved record no longer makes the whole server unusable.
- Serving and updates:
orca serve --supervisegains a supervisor that runs from a copy outside the app, andorca serve service install,statusanduninstallmanage a service. Updates preserve Codex sign-in before a headless restart, macOS terminal permissions survive app updates, and automatic terminal restores are paced and limited to avoid runaway restarts. Linux keeps AppImage copies that are still in use and shows a persistent restart banner if a terminal background service's files are gone. - Phone and iPad: Grok, OpenCode, OMP and Pi chats open on the phone. iPad keeps chat drafts and the host sidebar reachable, workspace badges show SSH host health, tool results stay with the right command, and terminal views accept a fresh snapshot after a stream ends.
- Workspaces and automations: You can copy stable tab references and manage workspace references from the CLI, and launch an agent in an existing workspace from the CLI. Folder workspaces appear as automation targets, multi-day schedules display correctly, removed folder workspaces no longer leave blank sidebar rows, and the worktree is ready notification stays until you dismiss it. Feature branches no longer borrow unrelated pull requests.
- Windows, WSL and Linux: Windows notifications no longer freeze Orca, CodeBuddy hooks work without PowerShell 7, and quitting Claude or Codex in cmd.exe or Git Bash removes it from the running list. WSL paths open in Cursor's WSL mode, background work leaves stopped distributions asleep, Windows-drive searches use the host's ripgrep, and Wayland clipboard text stays current.
- Reliability and performance: Orca is more reliable and responsive, with safer terminal restores, stronger connection recovery, less main-thread work, and faster background and CI workflows.
- Also: Nim and Typst highlighting no longer lets a long line freeze the window, HTML previews load authorized web fonts, links open in Orca tabs like they do in Chrome, cancelled browser-tab drags leave tabs clickable, and terminal output, usage counting and project discovery do less work on the main thread.
Known issues
SSH hosts that cannot run the managed server: This version no longer falls back to the old SSH runtime. If the host is unsupported, Settings → SSH Hosts explains why. Use an older Orca version to keep connecting to a host the managed server cannot support (#27214).
The orca command in older SSH terminals: Terminals kept running from v1.4.224 still accept typing, output and resizing, but orca commands are unavailable inside those older terminals. Run them in a new terminal on the same host (#27787).
Tab order after a cold restart: If the terminal background process is killed before Orca reopens, the saved terminal-tab order can disagree with the tab bar. This remains a known layout issue (#27353).
OpenCode 2: If you update from v1.4.219 or earlier, OpenCode 2 panes that were already running may show no status until you restart OpenCode in them. If you downgrade Orca after updating, duplicate OpenCode status plugins are left behind. After opencode run exits, its pane can keep showing "Done"; a fix is pending in #24472.
Product experience
Native chat (experimental)
Code blocks and commands are highlighted, attachments appear as filename pills, queued messages can be edited while a question is open, and interrupted replies offer Continue in the explanation card. Codex and Grok can stop their background work, chats keep their first message and stay closed after you close them, and diagrams work better in dark mode.
- Save a new chat's first message during create by @brennanb2025 in #26332
- A new Pi chat names the model it will run on its first frame by @brennanb2025 in #26821
- feat(native-chat): highlight code blocks and shell commands by @AmoabaKelvin in #26343
- Open a chat visual in its own tab instead of the sidebar by @brennanb2025 in #26728
- Keep Chat UI users with a Terminal default on the terminal, with a chat mode switch in the upgrade tip by @brennanb2025 in #26915
- Let a Codex chat stop a command it left running in the background by @brennanb2025 in #26780
- fix(native-chat): every new-chat request opens its own chat by @brennanb2025 in #26782
- native chat: identify a paired device by its device id, never its credential by @brennanb2025 in #26777
- fix(native-chat): match model picker type to the options menu by @AmoabaKelvin in #26349
- Every agent reports its learned default model once, when a chat starts by @brennanb2025 in #26982
- Floating-workspace chats of every native-chat agent keep links in the folder they started in by @brennanb2025 in #26981
- Keep select-all and copy in a chat from reaching the terminal underneath by @AmoabaKelvin in #26831
- fix(native-chat): accept sends through their own receipt by @brennanb2025 in #26672
- fix(native-chat): edit a queued message in place, even while a question is open by @brennanb2025 in #26886
- fix(native-chat): settle a reply cut off by a server restart by @brennanb2025 in #26460
- fix(native-chat): hide agent message controls while the turn runs by @AmoabaKelvin in #26404
- fix(native-chat): drop the redundant 'Waiting for your answer' line from queued cards by @brennanb2025 in #27073
- feat(native-chat): show attached files as filename pills in the composer by @AmoabaKelvin in #26409
- feat(native-chat): offer Codex Ultrafast as a speed choice by @brennanb2025 in #26962
- Let a Codex chat stop a sub-agent from the background-tasks strip by @brennanb2025 in #27026
- fix(native-chat): lazy WSL tier for Claude, Grok and omp lookup by id by @OrcaWin in #27082
- fix(native-chat): retire the pending image bubble when the CLI records its path as text by @OrcaWin in #27095
- fix(native-chat): retire a first send's echo in transcript time, not this client's by @OrcaWin in #27099
- Keep tool results with the right command and reveal all results on mobile by @nwparker in #26968
- fix(native-chat): give each animation a reduced-motion state by @AmoabaKelvin in #26276
- Let a Grok chat list and stop the commands it left running in the background by @brennanb2025 in #27022
- fix(native-chat): preserve running subagent rows in long chats by @brennanb2025 in #26798
- fix(native-chat): read ZCode conversations in their recorded order by @nwparker in #27142
- fix(native-chat): a new chat's model and effort pickers match their first frame before the agent starts by @brennanb2025 in #27031
- A closed chat tab stays closed instead of coming back on the right by @brennanb2025 in #27205
- Theme Mermaid diagrams for dark mode by @AmethystLiang in #27398
- fix(native-chat): put Continue in the card that says the reply stopped by @brennanb2025 in #27097
- One shared subagent tracker for Claude, Codex and Grok chat rows by @brennanb2025 in #27228
- Session History: resume folder workspace chats in their own folder by @brennanb2025 in #27209
- fix(native-chat): offer resume after restart for chats whose only work was in the background by @brennanb2025 in #27167
- fix(native-chat): keep diagram source mounted and retire reveal history by @brennanb2025 in #26690
- native chat: queued-message actions and question answers accept through their own receipt by @brennanb2025 in #26988
- fix(native-chat): one set of rules for chat text size, colour, hover and focus by @AmoabaKelvin in #26685
- fix(native-chat): use quote icon for Add to chat by @brennanb2025 in #27631
- fix(chat): jump to messages without scrolling animation by @AmethystLiang in #27612
- Native chat: every agent launches through one composed launch path by @brennanb2025 in #27204
- fix(tab-bar): offer Resume in New Native Chat only while the tab's agent is running by @brennanb2025 in #27520
- fix(chat): show hook failure details in error cards by @nwparker in #27824
- Resume dialog: show a finished resume as a result, not a picker by @brennanb2025 in #27732
Agents, accounts & orchestration
Kiro reports its status and appears in Session History, Claude accounts use separate folders and offer a sign-in link you can copy, and orchestration workers can start as native chats. Agent settings, account results and MCP settings stay with the computer that runs the work.
- feat(kiro): report Kiro agent status and list Kiro sessions in history by @w-felipe360 in #26695
- Re-land Claude per-account folders (#24434, #26405) with the upgrade and proxy fixes by @Jinwoo-H in #26801
- Start orchestration workers as native chats for every agent that has native chat by @brennanb2025 in #26776
- Add "Copy sign-in link instead" for Claude accounts (STA-9912) by @Jinwoo-H in #26990
- Keep MCP repository settings on their selected host by @nwparker in #26859
- fix(agents): one host-routed agent-detection entry point by @OrcaWin in #27054
- fix(agent-hooks): route the first-work branch rename by the repo's execution host by @OrcaWin in #27080
- fix(ai-vault): bounded OpenClaw discovery; title filter when a host's search is off by @OrcaWin in #27089
- fix(ai-vault): resume a WSL session only in its own namespace, with a Linux Pi path by @OrcaWin in #27092
- fix(pi): name workflow child rows by their step key, not only the agent by @mmarabel in #26909
- fix(agents): show DeepSeek icon for observed Build sessions by @nwparker in #26863
- fix(zcode): keep Coding Plan credentials and quota tied to the selected account by @nwparker in #24674
- feat(accounts): open ZCode sign-in in the existing setup terminal by @nwparker in #27321
- Honor inactive Claude account retry deadlines by @nwparker in #26936
- fix(accounts): remove a rejected GLM key when restore fails by @parkavenue9639 in #24964
- fix(orcad): install agent status hooks when a managed host starts by @OrcaWin in #27319
- fix(claude): register a short PostCompact hook command by @vampik33 in #25211
- fix(agent-status): keep nested models off parent panes by @nwparker in #26846
- fix(zsh): keep deferred line-init defined for plugins that call it by name by @nwparker in #26842
- Fix Codex usage bypassing configured proxy routing by @nwparker in #26942
- Fix cold proxy authentication in the desktop HTTP client by @nwparker in #26957
- fix(renderer): account switchers and CLI cards follow the focused repo's host by @nwparker in #27687
- Edit agent launch settings on the workspace host by @brennanb2025 in #26479
SSH, managed servers & remote
New SSH connections use the managed Orca server, while terminals left running by v1.4.224 keep working in their existing tabs. Saved port forwards return, remote files open on their own computer, and projects, reviews, settings, ports and processes follow the host that owns them.
- fix(hosts): host registry stops minting client SSH hosts from a server's nested target by @OrcaWin in #26952
- fix(folders): folder workspaces can answer "paired server" by @OrcaWin in #26958
- Allow paired-server files to drop into their own terminals by @nwparker in #26931
- fix(session-tabs): a tab stream the host ends resubscribes on the retry backoff by @OrcaWin in #27098
- fix(ssh): a direct-SSH host republish no longer steals this view's tab selection by @OrcaWin in #27100
- fix(session-tabs): a restored terminal row is retired only by its own host PTY by @OrcaWin in #27101
- fix(terminal): honor the OpenSSH DefaultShell on Windows SSH hosts running orcad by @OrcaWin in #27085
- fix(session-tabs): a returning paired publisher is repaired by an authoritative census by @OrcaWin in #27094
- fix(hosts): the unresolved-owner sentinel is never routable by @OrcaWin in #27111
- fix(runtime): worktree create enforces the lineage host boundary by @OrcaWin in #27114
- fix(repos): every repo catalog uses the host-catalog fence by @OrcaWin in #27116
- fix(web): usage and account switching come from the paired server by @OrcaWin in #27135
- fix(web): Jira reaches the server by @OrcaWin in #27136
- fix(hosts): a server whose status answers is selectable while shared control connects by @OrcaWin in #27137
- fix(cli): orca file open and diff open name their owner by @OrcaWin in #27154
- fix(agents): an old Windows or unknown-platform host asks to update instead of answering its default list by @OrcaWin in #27164
- fix(pairing): advertise a key and fallback port the host can actually serve by @OrcaWin in #27158
- fix(shell): OS open actions follow the file's owner, not the focused server by @OrcaWin in #27165
- fix(pairing): pairing with this same Orca profile is refused by @OrcaWin in #27166
- feat(hosts): servers publish a host descriptor by @OrcaWin in #27193
- feat(ports): host-scoped port scan and stop on the server by @OrcaWin in #27188
- feat(pairing): re-pairing the same server keeps its environment by @OrcaWin in #27197
- fix(cli): check the runtime source before sending by @OrcaWin in #27206
- feat(runtime): the host refuses a request meant for another runtime by @OrcaWin in #27224
- fix(agents): one agent inventory per host and execution context by @OrcaWin in #27225
- fix(files): a paired-server link outside its workspace opens in the host workspace that holds it by @OrcaWin in #27226
- fix(files): client drops on a remote composer upload through the import transaction by @OrcaWin in #27227
- fix(files): links to this computer in a remote terminal open on the client with trusted provenance by @OrcaWin in #27234
- fix(terminals): terminal IDs, agent rows and dashboard rows follow the owner by @OrcaWin in #27243
- fix(terminals): automation runs, CLI tabs and folder-workspace browser tabs follow the owner by @OrcaWin in #27246
- fix(review): review providers resolve the repo on its host by @OrcaWin in #27247
- fix(review): PR reads and actions follow the ownership table by @OrcaWin in #27248
- feat(terminals): dashboard terminal previews from the owning host by @OrcaWin in #27250
- fix(ports): the ports panel scans and stops on the workspace's own host by @OrcaWin in #27258
- fix(skills): say an SSH repo was not scanned instead of dropping it silently by @OrcaWin in #27261
- fix(hosts): agent launch platform and shell come from the execution host by @OrcaWin in #27259
- fix(accounts): a server's late account result stays with that server by @OrcaWin in #27262
- feat(hosts): Resource Manager lists the owning host's processes by @OrcaWin in #27263
- feat(settings): host-owned settings panes choose their host explicitly by @OrcaWin in #27265
- fix(web): the paired server is the web client's only host by @OrcaWin in #27266
- fix(sources): GitHub Projects boards read from the task page's source host by @OrcaWin in #27270
- fix(orcad): provide the orca CLI in Windows managed-host terminals by @OrcaWin in #27324
- feat(ssh): a paired client can manage the server's own SSH hosts (ssh.target-management.v1) by @OrcaWin in #27329
- fix(projects): create on a server's SSH project; Add Project SSH lists the server's targets by @OrcaWin in #27331
- fix(ssh): restore saved port forwards on managed hosts and show their Ports tab by @OrcaWin in #27361
- fix(files): a managed terminal links and opens a host file outside its workspace by @OrcaWin in #27364
- fix(vm): a recipe VM's SSH root runs on a managed Orca server by @OrcaWin in #27366
- fix(ssh): a restore racing a disconnect never leaves a forward behind by @OrcaWin in #27368
- refactor(ssh): connect fails for hosts orcad can't serve; remove the relay client path by @OrcaWin in #27214
- fix(e2ee): stop dropping terminal output on a backed-up legacy connection by @Jinwoo-H in #26528
- fix(remote): move tabs into a split-off group on the server too by @Jinwoo-H in #26522
- fix(runtime): refresh open clients after project setup changes by @nwparker in #26941
- fix(ssh): a fast remote folder listing no longer shows a false error by @nwparker in #26940
- fix(ssh): remove the relay-only remote workspace sync so reconnect never sticks on pulling by @OrcaWin in #27409
- fix(browser): refuse web pages on the agent-browser CDP proxy by @OrcaWin in #27415
- fix(pty): only force-kill processes in the terminal's own Linux session by @OrcaWin in #27422
- fix(runtime): reuse cached worktree rows when the admin probe cannot answer by @OrcaWin in #27445
- feat(runtime): device-key authentication and per-installation key migration (host) by @OrcaWin in #27493
- fix: let managed SSH Claude chats load the agent SDK by @brennanb2025 in #26450
- feat(runtime): session-only browser keys and opt-in for pairing from plain-http pages (host) by @OrcaWin in #27540
- feat(web): the browser signs in with a non-extractable device key, or pairs for this session only by @OrcaWin in #27552
- fix(codex): copy in remote Orca Server Codex sessions reaches your clipboard by @OrcaWin in #27605
- Keep SSH chat providers alive after the desktop disconnects by @brennanb2025 in #26473
- fix(runtime): keep remote servers usable when one saved record can't be read by @nwparker in #27685
- fix(ssh): keep 1.4.224's running terminals working after the upgrade (legacy relay bridge) by @OrcaWin in #27787
- fix(ssh): an old relay terminal's tab shows output again after a reconnect by @OrcaWin in #27951
- fix(ssh): never start a hidden orcad shell for a tab the legacy relay bridge serves by @OrcaWin in #27939
Serving, updates & terminal recovery
orca serve gains supervised operation and service management, automatic terminal restores are paced and limited, and updates preserve more of the server and terminal state. macOS terminal permissions survive app updates, and Linux shows a persistent recovery banner when a terminal background service loses its AppImage files.
- fix(orcad): show help before server startup by @nwparker in #26855
- fix(packaging): unpack the orcad serve-selection entry so orca serve can run it by @OrcaWin in #27404
- fix(linux): stop the AppImage crashpad handler before the mount goes away by @sergeytiron in #23459
- feat(daemon): observe-only fork gate for automatic terminal restores by @OrcaWin in #27424
- fix(linux): launch the AppImage terminal daemon through its own mount by @OrcaWin in #27435
- feat(daemon): pace automatic terminal restores on headless hosts by @OrcaWin in #27428
- feat(daemon): pause automatic restores after a same-boot crash by @OrcaWin in #27433
- fix(serve): report secrets unavailable instead of hanging on an unreachable macOS keychain by @OrcaWin in #27441
- feat(daemon): process-growth breaker that pauses automatic restores by @OrcaWin in #27437
- fix(daemon): drop a legacy daemon that can no longer accept a connection by @OrcaWin in #27436
- fix(daemon): count a claimed agent resume as automatic even without a history seed by @OrcaWin in #27442
- fix(serve): keep the isolated profile off the login keychain by @OrcaWin in #27463
- fix(updater): stop promising a manual update enables remote updates by @OrcaWin in #27464
- fix(updater): install macOS orca serve updates instead of waiting on Squirrel forever by @OrcaWin in #27466
- feat(terminal): declare restore intent and keep deferred panes sleeping by @OrcaWin in #27455
- fix(serve): decide a duplicate or doomed Electron serve before exec by @OrcaWin in #27472
- feat(serve): let the owner resume paused automatic restores by @OrcaWin in #27459
- feat(daemon): cap terminals per execution host by @OrcaWin in #27488
- feat(daemon): one automatic-restore budget per execution host by @OrcaWin in #27492
- fix(daemon): keep tweetnacl out of the relocated Windows daemon-host graph; guard daemon externals at build by @OrcaWin in #27504
- feat(daemon): the host keeps its own record of old-client restores it refuses by @OrcaWin in #27496
- fix(macos): preserve terminal permissions across app updates with a small signed helper by @Jinwoo-H in #27021
- feat(macos): show terminal-host Full Disk Access, tag stable-copy daemons, and give Helpers folder strings by @Jinwoo-H in #27354
- fix(terminal): don't duplicate terminals a newer Orca still runs after a downgrade by @Jinwoo-H in #27577
- feat(serve): supervised mode for orca serve --supervise by @OrcaWin in #27716
- feat(updater): auto-park registered serve supervisors during a desktop install by @OrcaWin in #27722
- feat(serve): orca serve service install|status|uninstall by @OrcaWin in #27744
- fix(serve): initialize the updater in headless Electron serve by @OrcaWin in #27771
- feat(daemon): opt-in OS ceiling on terminal processes, reported per host by @OrcaWin in #27769
- fix(serve): save Codex auth before a headless serve update restart by @OrcaWin in #28001
- fix(serve): explain what to run when an SSH host's orca cannot start or install a server by @OrcaWin in #28003
- fix(linux): keep extracted AppImage copies that something still runs from by @OrcaWin in #28002
- fix(updater): clear a cancelled macOS install request before staging the next update by @OrcaWin in #28010
- feat(serve): run the --supervise supervisor from a copy outside the app by @OrcaWin in #28007
- fix(serve): give the first AppImage serve one unpacking deadline and progress by @OrcaWin in #28015
- fix(daemon): stop giving new terminals to a daemon whose AppImage files are gone by @OrcaWin in #28011
- feat(terminal): persistent banner to restart a terminal daemon whose files are gone by @OrcaWin in #28021
Phone & paired clients
Grok, OpenCode, OMP and Pi chats open on the phone, iPad keeps drafts and the sidebar reachable, SSH workspace badges show host health, and phone terminals accept fresh snapshots after their stream ends.
- fix(mobile): size onboarding slides to the modal sheet on iPad by @Jinwoo-H in #26919
- fix(mobile): one host sidebar on iPad, with the page owning the host area by @Jinwoo-H in #26761
- fix(mobile): keep chat drafts and the sidebar reachable on iPad by @brennanb2025 in #26096
- fix(mobile-pairing): preselect LAN for a signed-out desktop by @OrcaWin in #27145
- fix(mobile): a new pairing scan supersedes a stale relay pairing journal by @OrcaWin in #27157
- fix(mobile): agents for workspaces another runtime owns show why by @OrcaWin in #27196
- feat(push): accept a notification's workspace server by @Jinwoo-H in #26516
- feat(mobile): show SSH host health on the workspace row badge by @Jinwoo-H in #26415
- feat(runtime): let a paired desktop register its phones as phone devices by @Jinwoo-H in #26427
- feat(mobile): relay a paired phone's server-workspace requests through the desktop (hidden) by @Jinwoo-H in #26435
- feat(mobile): let the desktop list its servers and their workspaces for the phone by @Jinwoo-H in #26442
- fix(terminal): phone wake reaches hibernated agent panes in place by @OrcaWin in #27450
- fix(mobile): direct connections use v2 framing and never fall back once v2 is seen by @OrcaWin in #27473
- fix(mobile): open Grok, OpenCode, OMP and Pi chats on the phone by @brennanb2025 in #27212
- fix(mobile): accept a fresh terminal snapshot after a stream ends by @Jinwoo-H in #27539
- feat(mobile): let the OTA page send extra top-level request fields by @Jinwoo-H in #27815
Workspaces, sidebar & tabs
Tabs have stable references you can copy, the CLI can manage workspace references and launch agents in an existing workspace, closed tabs stay closed, and the worktree-ready notification stays until you dismiss it.
- fix(runtime): keep a floating terminal floating when its cwd is inside a workspace by @OrcaWin in #27088
- fix(runtime): automatic tab activation no longer wakes a worktree the host put to sleep by @OrcaWin in #27081
- fix(agents): a session dropped on a pane edge splits the pane in paired-runtime workspaces by @OrcaWin in #27102
- fix(cli): implicit worktree selection is scoped to the caller's host by @OrcaWin in #27108
- fix(runtime): a terminal close commits in the session partition that holds the tab by @OrcaWin in #27119
- fix(terminal): closing a tab is never a silent no-op by @OrcaWin in #27132
- fix(persistence): a session write cannot bring back a tab its partition recorded as closed by @OrcaWin in #27125
- feat(tabs): copy stable tab references by @fabricedge in #26881
- Add CLI commands to manage and find workspace references by @nwparker in #26807
- fix(repos): deleting a project with live terminals warns and needs --force by @OrcaWin in #27172
- fix(composer): preserve explicit workspace names after selecting tasks by @nwparker in #26937
- fix(settings): return current preferences after slow updates by @nwparker in #27199
- Save runtime-started tabs in the tab bar before their terminal starts by @Jinwoo-H in #27083
- fix(runtime): refuse headless tab moves into a group the server doesn't have by @Jinwoo-H in #27381
- fix: save editor-only host sessions during quit by @nwparker in #26848
- fix(sidebar): stop a removed folder workspace from leaving a blank row by @bbingz in #26376
- Keep the 'worktree is ready' toast until dismissed by @brennanb2025 in #27566
- feat(cli): launch agents in existing workspaces by @brennanb2025 in #27794
- fix(cli): honor Chat UI setting for worktree agent creation by @brennanb2025 in #27796
Automations, tasks & source control
Folder workspaces appear as automation targets, multi-day schedules display correctly, selected task names survive composer updates, unrelated pull requests stay off feature branches, and Git history lanes survive unrelated roots.
- Start AI commit messages from the same shell environment chats use by @Jinwoo-H in #26808
- Stop offering Blank Terminal in agent-only pickers (automations) by @Jinwoo-H in #26961
- Start server-run automations' agents through the launch executor by @brennanb2025 in #26820
- Display valid multi-day automation schedules by @nwparker in #26850
- Fix roadmap crash with plugin language packs by @nwparker in #26860
- fix(linear): exclude label groups from assignable labels by @nwparker in #26861
- Preserve Git history lanes through unrelated roots by @nwparker in #26932
- fix(github): stop feature branches from borrowing unrelated PRs by @nwparker in #27332
- fix(composer): ignore delayed PR/MR lookups after you change the form by @nwparker in #26954
- fix(automations): find folder-workspace targets on the Automations page by @OrcaWin in #27416
Editor, files & clipboard
Nim and Typst highlighting no longer lets a long line freeze the window, HTML previews load authorized web fonts, editor-only sessions save on quit, and image pastes on macOS and clipboard text on Wayland are more reliable.
- fix(clipboard): paste a macOS image copied beside its file URL by @benjaminb10 in #27346
- fix(doc-preview): load authorized web fonts in HTML previews by @nwparker in #26849
- Editor: Nim and Typst on the shared TextMate layer, so a long line can't freeze the window by @brennanb2025 in #26987
- fix(linux): keep Wayland clipboard text current by @nwparker in #27772
Browser, skills & feedback
Links open in Orca tabs like they do in Chrome, cancelled drags leave browser tabs clickable, double-click selects a word in the address bar, and skill updates are checked against their ownership.
- Open links and window.open in Orca tabs the way Chrome does by @Jinwoo-H in #26976
- Keep browser tabs clickable after a drag that never starts by @Jinwoo-H in #26986
- refs/heads/update-wechat-qr-code-2 by @AmethystLiang in #27036
- fix(browser): return JPEG bytes for JPEG viewport screenshots by @nwparker in #26856
- fix(settings): reenable terminal link Actions after an old opt-out by @nwparker in #26853
- Require pointer rest before opening activity hover cards by @AmethystLiang in #25931
- fix(browser): double-click in the address bar selects a word, like other browsers by @Jinwoo-H in #27371
- fix(skills): judge official skill updates by ownership, not snapshot matching by @OrcaWin in #27603
- fix(browser): end a page's mount admission whenever it leaves the store by @brennanb2025 in #27755
- fix(browser): end a background page's mount admission after its first load by @brennanb2025 in #27754
Windows, WSL & languages
WSL files open in Cursor’s WSL mode, background work leaves stopped distributions asleep, Windows-drive searches use the host’s ripgrep, and CodeBuddy hooks work without PowerShell 7. Korean menu and check labels are corrected.
- fix(i18n): correct Korean Finder menu label by @nwparker in #26866
- fix(i18n): correct Korean CI check translations by @abruption in #27367
- fix(wsl): open WSL paths in Cursor's WSL mode; ignore Windows-side CLIs in WSL hook setup by @nwparker in #27681
- fix(wsl): restore Windows interop after another distro wipes it by @nwparker in #27682
- perf(wsl): search Windows-drive projects with host ripgrep by @nwparker in #27690
- fix(wsl): stop booting stopped distros for background work by @nwparker in #27684
- fix(terminal-pane): quitting Claude or Codex in cmd.exe or Git Bash removes it from the running list by @brennanb2025 in #27742
- fix(codebuddy): run Windows hooks without requiring PowerShell 7 by @OrcaWin in #27626
Performance & reliability
Terminal output and usage counting do less work on the main thread, project discovery and Git checks stay responsive, Windows notifications stop freezing the app, and port scans stop leaving stuck lsof processes behind.
- Show the usage unit once in the status bar by @AmethystLiang in #26869
- perf(daemon): send PTY output to main as raw bytes, not NDJSON by @outof-place in #27006
- perf(usage): keep per-source usage caches off the main thread by @outof-place in #26980
- Reduce memory used to count Codex usage and avoid partial totals by @nwparker in #26966
- Update Claude usage without rereading the whole conversation by @nwparker in #26967
- fix(agent-hooks): throttle and background last-status.json writes by @nwparker in #26822
- fix(a11y): name Agent Dashboard column regions by @nwparker in #26865
- Keep repository detection off the main registration thread by @nwparker in #26760
- Await Git checks while discovering and importing nested projects by @nwparker in #26790
- Keep folder Git upgrades responsive and recheck project ownership by @nwparker in #26791
- perf(mac): resolve terminal names once per full process capture by @nwparker in #27146
- perf(ai-vault): pipeline fresh transcript discovery with bounded I/O by @outof-place in #27009
- fix(computer-use): clean up completed permission helpers asynchronously by @nwparker in #27347
- perf(runtime): reduce terminal ANSI scanning work by @nwparker in #27344
- perf(main): release startup allocations held by journal sentinel by @nwparker in #27342
- fix(computer-use): release macOS screenshot memory after each request by @f8team in #27374
- perf(worktrees): preserve Git scans when saving sort order by @nwparker in #27343
- perf(worktrees): skip unchanged lineage after sidebar order saves by @nwparker in #27384
- Avoid downloading unchanged paired-runtime session history by @nwparker in #27383
- fix(renderer): jump instead of smooth-scrolling under reduced motion by @AmoabaKelvin in #26796
- perf(daemon): yield between bounded slices of terminal output ingest by @Jinwoo-H in #27578
- perf(zod): use Zod 4.6 validation and compile ACP updates by @nwparker in #27735
- perf(ports): stop leaving stuck lsof processes behind on a dead network mount by @brennanb2025 in #27729
- perf(notifications): stop every Windows notification from freezing Orca by @brennanb2025 in #27731
Relay service
Relay service work improves reconnect handling, database-fault recovery, authentication during outages, capacity placement, staging checks and operational alerts. Several reserve-mode changes remain disabled or preparatory, as noted in their PR titles.
- fix(relay): spread drain placement over a load band instead of one empty cell by @Jinwoo-H in #26802
- fix(relay): a database fault reaching unhandledRejection no longer kills the process by @Jinwoo-H in #26817
- feat(relay): read-only seat feed on cells for the directors' shadow directory by @Jinwoo-H in #26803
- feat(relay): Cloud Storage bucket for the per-cell runtime switch files (targeted apply only) by @Jinwoo-H in #26835
- feat(relay): one-cell flag write workflow with dry run, compare-and-swap and read-back by @Jinwoo-H in #26837
- fix(relay): a lost database reply ends its connection within statement timeout + 10 s by @Jinwoo-H in #26829
- feat(relay): per-cell runtime switches read from Cloud Storage every 5 s by @Jinwoo-H in #26805
- feat(relay): log metrics and alerts for fenced and fatal rejections and the lease shadow (evidence code) by @Jinwoo-H in #26839
- feat(relay): local /ready behind the per-cell readinessLocal switch (off) by @Jinwoo-H in #26812
- feat(relay): dark shadow seat directory poller on directors (step 3) by @Jinwoo-H in #26810
- feat(relay): key id on assignment leases; cells shadow-check the lease (off) by @Jinwoo-H in #26815
- feat(relay): dark shadow seat compare on sticky verify and /v1/resolve (step 3) by @Jinwoo-H in #26813
- feat(relay): read-only /v1/admin/host-whereabouts on directors (step 3) by @Jinwoo-H in #26816
- refactor(relay): share one retry schedule and identity key by @OrcaWin in #27139
- fix(relay): wait through a scheduled reconnect and name why Relay is not ready by @OrcaWin in #27141
- fix(relay): a switch-file read cut off mid-body is asked for again by @Jinwoo-H in #27049
- feat(relay): per-cell switches for the rejection fence and the lost-reply margin by @Jinwoo-H in #27057
- feat(relay): step-5 reserve core: the cell's booking book and the director's placer (inert) by @Jinwoo-H in #27038
- feat(relay): cell reserve mode: book, admit and demote without the database (off) by @Jinwoo-H in #27041
- feat(relay): flip a reserve-mode cell back without disconnecting anyone (E-mix) by @Jinwoo-H in #27043
- fix(relay): read control-error in every state and pace repeated rate limits by @OrcaWin in #27160
- fix(relay): install the desktop Relay provider on demand by @OrcaWin in #27159
- feat(relay): directors place on reserve-mode cells from memory (off) by @Jinwoo-H in #27047
- fix(relay): cells without a seat feed stay out of shadow coverage and switch state by @Jinwoo-H in #27058
- feat(relay): the director that booked a join writes its row about a second later (off) by @Jinwoo-H in #27048
- fix(relay): database sweeps and ops reads skip reserve-mode cells (step-5 census, inert) by @Jinwoo-H in #27046
- feat(relay): log metric and console alert for unreadable cell switch files (evidence code) by @Jinwoo-H in #27024
- feat(relay): alert when a reserve-mode cell trips its dead-man by @Jinwoo-H in #27096
- fix(relay): the cell switch tool changes only the named switches by @Jinwoo-H in #27056
- fix(relay): staging director deploys run as relay-dir with rehome identity, and can register one cell's cap by @Jinwoo-H in #27118
- fix(relay): staging director deploys set the admin identity the director trusts to gha-relay by @Jinwoo-H in #27121
- infra(relay): staging c1 gets a 600/60 cap, and c1/c4 get rehome trust, for the step-5 e2e by @Jinwoo-H in #27117
- feat(relay): a staging cell-flags workflow, trusted by the staging relay deploy identity by @Jinwoo-H in #27113
- feat(relay): a free-form staging load mode on Prove Relay Asia Staging by @Jinwoo-H in #27115
- fix(relay): staging sleep runs under the admission selector instead of refusing by @Jinwoo-H in #27126
- infra(relay): pin staging c1, c2 and c4 to the step-5 image for the staging e2e by @Jinwoo-H in #27339
- infra(relay): keep staging c4 on the serving director image until the director identity bootstrap by @Jinwoo-H in #27351
- infra(relay): pin staging c4 to the step-5 image again after the director identity bootstrap by @Jinwoo-H in #27352
- infra(relay): point the staging deploy at the pre-step-5 image for the reserve guard drill by @Jinwoo-H in #27357
- infra(relay): pin staging c4 to the step-5 image again after the reserve guard drill by @Jinwoo-H in #27360
- refactor(relay): delete the SSH relay server, its build assets and tests by @OrcaWin in #27215
- fix(relay-load): reuse an Asia load principal set for shards past the fourth by @Jinwoo-H in #27403
- fix(relay): report event-loop freezes and keep seat polls off the cell-list read by @Jinwoo-H in #27405
- fix(relay): director reaches Cloud SQL through a proxy sidecar (staging), adoptable deploy shape, event-loop stall alert by @Jinwoo-H in #27406
- chore(relay-staging): declare staging C4 on image E so the director can deploy it by @Jinwoo-H in #27462
- infra(relay): add staging cells c5-c7 at c2's shape for the dead-cell guard e2e by @Jinwoo-H in #27476
- fix(relay): cell-flags tool refuses reserve without readinessLocal=true by @Jinwoo-H in #27460
- docs(relay): director Cloud SQL sidecar enablement and rollback by @Jinwoo-H in #27461
- fix(relay): let the staging admission workflow register and promote c5-c7 by @Jinwoo-H in #27491
- fix(relay): let a host leave a dead reserve cell without an operator fence by @Jinwoo-H in #27458
- fix(relay): a resumed host control adopts the token its hello proved by @Jinwoo-H in #27487
- fix(relay): keep verifying host tokens from the last served keys while auth is down by @Jinwoo-H in #27490
- chore(relay): move the staging cells onto image F by @Jinwoo-H in #27570
- chore(relay): turn on the director Cloud SQL proxy sidecar and stall alert in production by @Jinwoo-H in #27697
- feat(relay): declare Asia spare cell c35 as migration-only by @Jinwoo-H in #27695
- feat(relay): promotion path for Asia spare cell c35 by @Jinwoo-H in #27733
- chore(relay): move Asia cell c35 to the general same-cap lists after promotion by @Jinwoo-H in #27761
Reverted
The new-tab launch routing change and verified mobile pairing links were reverted. The older-SSH-terminal refusal and stop action were superseded by the compatibility bridge that keeps those terminals running.
- Start plain new-tab agent launches through the host's agent.launch by @brennanb2025 in #26489
- feat(mobile): verified https pairing links; custom scheme carries no secret by @OrcaWin in #27475
- Revert "+" new-tab agent launches to the window route (reverts #26489) by @brennanb2025 in #27173
- Revert "feat(mobile): verified https pairing links; custom scheme carries no secret" (#27475) by @OrcaWin in #27693
- fix(ssh): end an older Orca's relay terminals from the connect refusal (STA-10166) by @OrcaWin in #27748
Tests, CI & maintenance
Checks spend less time on repeated setup and waits, layout tests cover managed SSH and mixed-version clients, and internal routing and layout preparation are consolidated. Inert or unused layout work listed here does not enable a new workspace layout in this release.
- refactor(runtime-core): clean up Phase 3-3.8 code by @OrcaWin in #26894
- refactor(execution-host): one connection-to-host helper by @OrcaWin in #26929
- refactor(pty): one remote-runtime PTY id predicate by @OrcaWin in #26930
- refactor(runtime-rpc-terminal-io): clean up Phase 3-3.8 code by @OrcaWin in #26895
- test(e2e): headless layout oracle covers tab moves between groups by @Jinwoo-H in #26857
- Add the inert workspace layout model, Loader and Serializer by @Jinwoo-H in #26748
- refactor(renderer-terminal-runtime): clean up Phase 3-3.8 code by @OrcaWin in #26900
- Add inert layout commands and runtime transitions by @Jinwoo-H in #26749
- refactor(ipc-persistence-shared): clean up Phase 3-3.8 code by @OrcaWin in #26902
- refactor(renderer-ui-store): clean up Phase 3-3.8 code by @OrcaWin in #26903
- [CI] Consolidate Activity tests and remove real-time quiescence wait by @nwparker in #26949
- refactor(providers): local git provider behind the host router by @OrcaWin in #26955
- refactor(runtime): runtime git commands use a provider for every host by @OrcaWin in #26965
- Add an inert read-only layout stream and the layout round-trip self-check by @Jinwoo-H in #26964
- chore(providers): neutral router rationale and typed provider generation by @OrcaWin in #26925
- refactor(runtime): runtime file commands use a provider for every host by @OrcaWin in #26994
- refactor(pty): key the PTY registry by execution host by @OrcaWin in #26995
- [CI] Advance debounce clocks and simplify test fixtures by @nwparker in #26996
- fix(layout): an absent editor or browser map is not a round-trip change by @OrcaWin in #27007
- refactor(pty): PTY controller inventory and startup waits take a host id by @OrcaWin in #26998
- test(search): keep Kiro out of older hosts' expected history-search agents by @brennanb2025 in #27002
- Add the inert layout client for local and remote runtimes by @Jinwoo-H in #27000
- refactor(ssh): register each SSH host's providers as one set by @OrcaWin in #27044
- refactor(ipc): route filesystem git handlers through the host router by @OrcaWin in #27059
- [CI] Reduce fixture work and consolidate related tests by @nwparker in #27063
- refactor(main): route git probe and terminal-artifact provider checks through the host router by @OrcaWin in #27066
- Extract subprocess handling into @orca/process-host by @nwparker in #26963
- refactor(ai-vault, native-chat): one per-call agent root table by @OrcaWin in #27079
- refactor(session-tabs): one authority-repair lane shared by every session-tabs mirror by @OrcaWin in #27093
- ci: skip build:packages on release tags that predate it by @Jinwoo-H in #27110
- ci(release): read the watcher child from the supervisor's slot in the fault harness by @Jinwoo-H in #27120
- [CI] Consolidate tests, retire static scans, and update evidence by @nwparker in #27109
- Speed up process-host import enforcement in CI by @nwparker in #27124
- refactor(shell): the local-open guard takes an owner, not settings by @OrcaWin in #27144
- test(tabs): mock the Copy icon the tab context menu now imports by @OrcaWin in #27162
- test(wire): give the preflight downgrade journey a non-Windows old host by @OrcaWin in #27177
- chore: remove verified unused Orca code by @nwparker in #27175
- [CI] Overlap independent process waits and remove two static tests by @nwparker in #27198
- refactor(wsl): move the WSL guest bundle sources out of src/relay by @OrcaWin in #27174
- refactor(hosts): host authorities and owner resolution by @OrcaWin in #27176
- refactor(hosts): one ingest adapter for fetched rows by @OrcaWin in #27216
- refactor(hosts): stamp events and optimistic rows at ingest by @OrcaWin in #27223
- refactor(runtime): route adapter, split fences, ownership table, combined ratchet by @OrcaWin in #27218
- [CI] Reduce repeated test imports and unrelated runner allocations by @nwparker in #27222
- [CI] Reduce test teardown waits and duplicate CI setup by @nwparker in #27253
- refactor(runtime): owner transports, the creation default and a focus-read ratchet by @OrcaWin in #27275
- refactor(forge): forge reads and edits route by the repo's owner or the task source by @OrcaWin in #27276
- refactor(files): file reads and edits route by the file's owner by @OrcaWin in #27278
- refactor(terminals): terminal input and inspection route by the PTY's owner by @OrcaWin in #27279
- refactor(agents): agent, session and port calls route by their workspace owner by @OrcaWin in #27283
- refactor(github): PR and work-item calls carry the repo owner's host by @OrcaWin in #27289
- refactor(sources): row-less sources and host-less surfaces name their host by @OrcaWin in #27290
- refactor(projects): repo, project group and folder catalog calls route by their owner by @OrcaWin in #27288
- [CI] Reduce repeated test setup and real CLI waits by @nwparker in #27297
- refactor(git): git calls route by the worktree's owner by @OrcaWin in #27291
- [CI] Reduce repeated test setup and unnecessary packaging by @nwparker in #27308
- refactor(worktrees): worktree create, listing, removal and repo hook/ref reads route by their owner by @OrcaWin in #27298
- chore(lint): bypassing owner routing fails lint by @OrcaWin in #27313
- chore(settings): rename "Active Server" to "Default host for new projects" by @OrcaWin in #27286
- [CI] Refresh unit timing weights and reduce repeated test setup by @nwparker in #27315
- fix(cli): preserve alias recovery while guarding destructive suggestions by @nwparker in #26934
- docs(rpc): a paired client runs commands as you; say so when pairing by @OrcaWin in #27317
- ci(e2e): run the layout oracle on PRs that change layout writers by @Jinwoo-H in #27103
- test(relay): deterministic step-5 simulation with invariants 1-8 by @Jinwoo-H in #27040
- test(e2e): pass the catalog owner to the remaining fetchRepos callers by @OrcaWin in #27325
- test(relay): load generator can send two concurrent assigns per host (--duplicate-assign-probes) by @Jinwoo-H in #27107
- test(e2e): pass the catalog owner to the remaining catalog fetches and creates by @OrcaWin in #27338
- test(e2e): cover SSH user journeys on an orcad-managed host by @OrcaWin in #27323
- List the cold-relaunch tab-order swap as known on main by @Jinwoo-H in #27353
- test(native-chat): unmount the cut-turn notice hooks after each test by @OrcaWin in #27358
- Record a display-only snapshot of each paired server's tabs (inert) by @Jinwoo-H in #27359
- fix: keep NUL-separated source literals searchable by @nwparker in #26864
- [CI] Fix test fixtures and reduce unnecessary test setup by @nwparker in #27330
- test(main): fail if the journal's shared no-row error returns (follow-up to #27342) by @nwparker in #27375
- test(runtime): enforce ANSI preview-final pre-filter invariant by @nwparker in #27376
- fix(dev): keep Node-only Quick Open path accumulator out of the renderer by @Jinwoo-H in #27372
- test(e2e): reusable phone-mirror test setup and baseline specs by @Jinwoo-H in #26412
- [CI] Reduce test teardown and scope server qualification by @nwparker in #27380
- perf(ci): overlap Bun typechecking and skip redundant alias scans by @nwparker in #27382
- ci(relay-staging): asia-east2 staging load from a hosted runner by @Jinwoo-H in #27393
- test(ci): point server-scope qualification fixtures at SSH after relay deletion by @Jinwoo-H in #27392
- ci(relay-staging): split the staging load across two hosted runners by @Jinwoo-H in #27402
- test(relay): load generator can reopen a closed phone splice instead of failing the run by @Jinwoo-H in #27379
- refactor(runtime): compose typed file search and listing ownership by @nwparker in #27396
- ci: ship the managed SSH server (orcad template) in hourly and daily builds by @OrcaWin in #27407
- test(e2e): delete helpers orphaned by relay deletion by @OrcaWin in #27411
- ci: drop the relay Windows process-tree job from desktop packaging by @OrcaWin in #27412
- refactor(runtime): remove unused text-search spawn hook by @nwparker in #27418
- test(ssh): hostile-host cells state managed-orcad expectations only by @OrcaWin in #27419
- Add manual cleanup for worktree Electron storage by @nwparker in #27414
- chore(ratchet): one focus-read ratchet by @OrcaWin in #27426
- fix(runtime): scope layout.unsubscribe to the caller's connection by @Jinwoo-H in #27423
- test(ssh): Windows host lane drops relay cells by @OrcaWin in #27421
- refactor(renderer): delete dead owner and settings shims by @OrcaWin in #27430
- chore: delete verified-unused modules and exports by @OrcaWin in #27438
- refactor(rpc): delete the SSH-bridge caller scope by @OrcaWin in #27440
- refactor(rpc): name the terminal.subscribe modules by @OrcaWin in #27444
- refactor(cli): extract the serve supervisor's after-exit decision into a pure policy by @OrcaWin in #27446
- refactor(orcad): shared serve-option validation; no daemon barrel by @OrcaWin in #27443
- [CI] Remove copied probes and advance queued-card test waits by @nwparker in #27447
- test(e2e): one posixShellQuote; docker-ssh-host fixture names (Phase 3.99 0.11b) by @OrcaWin in #27449
- feat(runtime): accept a declared spawn intent from paired clients by @OrcaWin in #27452
- test(e2e): one managed-host setup path and skip gate for the ssh-orcad specs (Phase 3.99 0.11a) by @OrcaWin in #27465
- refactor(ssh): drop the legacy-relay bridge and the relay branch of the terminal gate by @OrcaWin in #27471
- refactor(providers): an ssh: route carries no provider and throws one typed error by @OrcaWin in #27477
- [CI] Clean up runtime test callbacks by @nwparker in #27483
- refactor(runtime): paired sockets authenticate to a device principal by @OrcaWin in #27480
- refactor(rpc): one dispatcher by @OrcaWin in #27486
- refactor(terminal): panes have two transports, local or remote runtime by @OrcaWin in #27489
- refactor(runtime): runtime git and file callers drop SSH arms by @OrcaWin in #27501
- [CI] Remove duplicate terminal backlog test replays by @nwparker in #27503
- refactor(pty): delete the SSH PTY provider and its registry slot by @OrcaWin in #27499
- [CI] Remove a simulated terminal credit correctness check by @nwparker in #27507
- refactor(main): agent detection, automations, skills, AI vault and ephemeral VM drop SSH provider arms by @OrcaWin in #27511
- [CI] Wait for delayed Codex answers before test cleanup by @nwparker in #27516
- refactor(pty): delete relay-fed SSH output intake and projection threading by @OrcaWin in #27515
- [CI] Speed up Mobile test execution by @nwparker in #27521
- refactor(terminal): move the mounted-terminal registry out of the graph file by @Jinwoo-H in #27427
- refactor(layout): add the pane start, exit, first-surface and rename rules (unused) by @Jinwoo-H in #27432
- refactor(ipc): worktree handlers are local or runtime only by @OrcaWin in #27528
- [CI] Run focused checks for Mobile CI tool changes by @nwparker in #27532
- chore(ratchet): layout-writer ratchets for main and renderer by @Jinwoo-H in #27431
- refactor(pty): drop SSH spawn, liveness and kill branches by @OrcaWin in #27529
- feat(workspace-layout): pure old-client translators for layout methods (inert) by @Jinwoo-H in #27534
- refactor(remote): one paired E2EE handshake core for desktop, CLI, web and mobile clients by @OrcaWin in #27523
- refactor(layout): drop unused snapshot receipt fields and add the snapshot read method by @Jinwoo-H in #27536
- refactor(terminal): keep mobile content-fact caches in their producers by @Jinwoo-H in #27537
- refactor(layout): add the per-view store, pane status and runtime leaf-record projection (unused) by @Jinwoo-H in #27535
- fix(ci): a removed layout writer no longer fails other PRs' ratchet check by @Jinwoo-H in #27557
- chore(ratchet): prune main layout-writer baseline after #27529 by @Jinwoo-H in #27554
- refactor(persistence): retire the dead SSH PTY lease writers by @OrcaWin in #27555
- refactor(layout): add the editor tab view type to the layout model (unused) by @Jinwoo-H in #27541
- refactor(rpc): delete host-side terminal source-range acks by @OrcaWin in #27546
- refactor(layout): keep compatibility code in named folders behind one entry by @Jinwoo-H in #27556
- test(perf): layout latency instruments and a main baseline by @Jinwoo-H in #27538
- [CI] Freeze legacy journal partition receipts to reduce test work by @nwparker in #27559
- refactor(terminal): drop the relay-held error token by @OrcaWin in #27564
- refactor(store): delete direct-SSH terminal ledgers by @OrcaWin in #27569
- refactor(terminal): paste reads the live transport by @OrcaWin in #27572
- [CI] Improve test clocks and dependency fixtures by @nwparker in #27574
- refactor(remote): clients connect through a paired-connection handle, not a pairing offer by @OrcaWin in #27533
- Replace three copied new-terminal tab-order blocks with the shared helper by @brennanb2025 in #26771
- test(e2e): layout oracle reads the live runtime layout by @Jinwoo-H in #27560
- test(native-chat): keep #26586's path-link cases as regression tests by @brennanb2025 in #26819
- refactor(renderer): delete the direct-SSH authority and reconnect coordinator by @OrcaWin in #27587
- [CI] Narrow daemon fixture checks and advance coordinator test clocks by @nwparker in #27592
- refactor(renderer): no client SSH operation arms in project creation or native chat by @OrcaWin in #27593
- test(e2e): open the oracle's headless layout stream with a paired connection by @Jinwoo-H in #27601
- refactor(ssh): SSH status copy lives in renderer/src/ssh and says what the build does by @OrcaWin in #27604
- chore(layout): delete the dev-only layout round-trip watch by @Jinwoo-H in #27597
- refactor(renderer): no rebound-settings owner pattern by @OrcaWin in #27607
- refactor(ipc): filesystem and repo handlers are local or runtime only by @OrcaWin in #27609
- refactor(renderer): one default-host read; one catalog fan-out by @OrcaWin in #27613
- [CI] Check real I/O progress during worktree deletion by @nwparker in #27620
- ci: the layout oracle gates merges by @Jinwoo-H in #27600
- test(launch): pin what each agent launcher produces on main today by @brennanb2025 in #27189
- test(pty): pin launch race fixes on both spawn paths before merging them by @brennanb2025 in #27187
- test: run a structured chat against the packaged headless server by @brennanb2025 in #26527
- refactor(providers): delete the SSH git and filesystem providers and relay-only wiring by @OrcaWin in #27644
- refactor(settings): one settings host-scope type and label by @OrcaWin in #27629
- test(e2e): mixed-version, two-client and phone layout baselines recorded on main by @Jinwoo-H in #27688
- ci(e2e): one managed-SSH lane and routing regex; no relay build in e2e setup by @OrcaWin in #27640
- refactor(orcad): deploy and serve orcad through a host transport interface by @nwparker in #27686
- [CI] Fix account fixture timestamps and SSH listing assertions by @nwparker in #27704
- refactor(ssh): one pinned-runtime host target by @OrcaWin in #27709
- refactor(startup): one agent-hook runtime binding set for every host by @OrcaWin in https://github.com/stablyai/orca/pull/27720
- fix(bench): load benchmark sources as file URLs so they run on Windows by @OrcaWin in https://github.com/stablyai/orca/pull/27621
- fix(bench): make bench:idle-cpu build, sample CPU and parse the process table on Windows by @OrcaWin in https://github.com/stablyai/orca/pull/27622
- [CI] Replace Codex fixture executables atomically by @nwparker in https://github.com/stablyai/orca/pull/27747
- Speed up import checks, localization extraction, and CI typechecking by @nwparker in https://github.com/stablyai/orca/pull/27727
- refactor(orcad): transport-neutral command channel and generic stdio bridge listener by @nwparker in https://github.com/stablyai/orca/pull/27689
- Share historical test source and add manual cache cleanup by @nwparker in https://github.com/stablyai/orca/pull/27743
- test(launch): pin what the "+" launchers produce on main today by @brennanb2025 in https://github.com/stablyai/orca/pull/27691
- test(renderer): one runtime-environment bridge fixture by @OrcaWin in https://github.com/stablyai/orca/pull/27780
- refactor(terminal): one remote input hold by @OrcaWin in https://github.com/stablyai/orca/pull/27781
- refactor(shared): dedupe the local-default connection-to-host conversion and the trim helpers by @OrcaWin in https://github.com/stablyai/orca/pull/27797
- refactor(pty): no ipc/pty.ts barrel by @OrcaWin in https://github.com/stablyai/orca/pull/27798
- chore(ratchet): one ratchet baseline library by @OrcaWin in https://github.com/stablyai/orca/pull/27788
- refactor(providers): import provider contracts directly (main) by @OrcaWin in https://github.com/stablyai/orca/pull/27813
- test(daemon): remove clock jitter from startup-budget check by @nwparker in https://github.com/stablyai/orca/pull/27850
- refactor(ssh): delete relay-only GC, takeover and install remnants by @OrcaWin in https://github.com/stablyai/orca/pull/27770
- refactor(cli): serve children spawn through process-host by @OrcaWin in https://github.com/stablyai/orca/pull/27760
- refactor(ssh): remove the ssh-relay-deploy-helpers re-export module by @OrcaWin in https://github.com/stablyai/orca/pull/27961
- refactor(build): relay survivors named for what they are by @OrcaWin in https://github.com/stablyai/orca/pull/27962
- refactor(orcad): orcad artifacts live under orcad/ and node-runtime/ by @OrcaWin in https://github.com/stablyai/orca/pull/27963
- refactor(providers): import provider contracts directly (runtime) by @OrcaWin in https://github.com/stablyai/orca/pull/27965
- refactor(providers): import provider contracts directly (ipc); delete the barrel by @OrcaWin in https://github.com/stablyai/orca/pull/27966
- refactor(renderer): remove the web-runtime-session barrel by @OrcaWin in https://github.com/stablyai/orca/pull/27967
- refactor(renderer): remove the web-session-tabs-sync barrel by @OrcaWin in https://github.com/stablyai/orca/pull/27969
- refactor(renderer): remove the runtime-file-client barrel by @OrcaWin in https://github.com/stablyai/orca/pull/27975
- refactor(renderer): remove the runtime-git-client barrel by @OrcaWin in https://github.com/stablyai/orca/pull/27977
- refactor(renderer): remove the web-terminal-surface-id re-export by @OrcaWin in https://github.com/stablyai/orca/pull/27981
- refactor(renderer): remove the keyboard-handlers barrel and partial re-exports by @OrcaWin in https://github.com/stablyai/orca/pull/27986
- refactor(renderer): name target converters by meaning; drop re-export shims by @OrcaWin in https://github.com/stablyai/orca/pull/27992
- ci: stop new main-process code from freezing Orca with synchronous launches by @brennanb2025 in https://github.com/stablyai/orca/pull/27756
New Contributors
- @w-felipe360 made their first contribution in #26695
- @outof-place made their first contribution in #27006
- @fabricedge made their first contribution in #26881
- @parkavenue9639 made their first contribution in #24964
- @abruption made their first contribution in #27367
- @f8team made their first contribution in #27374
- @vampik33 made their first contribution in #25211
- @benjaminb10 made their first contribution in #27346
- @sergeytiron made their first contribution in #23459
Full Changelog: v1.4.224...v1.4.225