github stablyai/orca v1.4.225

5 hours ago

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 orca CLI, 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 --supervise gains a supervisor that runs from a copy outside the app, and orca serve service install, status and uninstall manage 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.

New Contributors


Full Changelog: v1.4.224...v1.4.225

Don't miss a new orca release

NewReleases is sending notifications on new releases.