github stablyai/orca v1.4.254
1.4.254

one hour ago

Git Graph, on-phone dictation & side questions in chat ✨

  • 🌳 See the whole repository: A new Git Graph tab shows local and remote branches and tags, with each commit's details and changed files. Folder workspaces now get Source Control, with a card for each attached repo, and the branch name in Source Control switches or creates a branch in place.
  • 💬 Ask without derailing a chat: In Chat UI, /btw asks a side question in a fork beside the chat while the original keeps running, and /fork branches from the latest response. Chats that open or push to a pull request show a short line when its CI passes or fails.
  • 🎙️ Dictate from anywhere: Phones can turn speech into text on the device (iPhone on iOS 26 or later, and Android), with the computer as fallback. The computer, phones and web client can dictate at the same time, and on-device dictation runs in its own process, so a speech engine crash or hang no longer takes Orca down.
  • 📱 A phone that holds on to your work: Chat sends queue while the desktop is unreachable and go out in order when it's back. Chat drafts, attachments, unsaved file edits and automation drafts survive the app being killed, and screens reopen from what the phone already has.
  • ⌨️ No more typing lag from Codex accounts: Typing could lag across Orca while it linked Codex history between accounts. That work no longer blocks the app. Remote terminals also send a lone keystroke right away and read compressed output from remote hosts.
  • 🔐 Safer pairing and trust: A pairing code stops working once the device that used it saves its own sign-in, desktop and CLI connections to remote servers use the newer encryption, and orca serve refuses connections from public internet addresses unless there's a reason to allow them. Orca asks once per new repo before trusting it for agents.
  • 🎨 Make Orca yours: Import your own app icon, let theme plugins play a looping background video and ship their own fonts, and read Settings in titled cards. Claude Code can match your Orca terminal theme if you say yes.
  • 🤖 Better agent support: Antigravity chats can run on the host's own agy, including Full access chats, and Muse shows its subscription quota in the status bar.

Highlights

  • Chat: /btw asks a side question in a fork and /fork forks from the latest response, with a spinner while the fork opens. Chats show CI results for the pull requests they opened or pushed to, and every waiting message, command and steer now sits in one ordered queue you can move, delete or send from.
  • Phone: Send while the desktop is offline, keep drafts, attachments, file edits and automation drafts across app kills, and see the workspace list, session tabs and Review from memory while they refresh. Large folders load 500 entries at a time with Search all, Review prefetches the next and previous file, and a thin line under the header shows when cached data is refreshing.
  • Dictation: Phones can transcribe on the device, and every device can dictate at once. On desktop the speech model loads before your first dictation (a new setting chooses when to unload it), dictation stops after a minute of silence and keeps what you said, dictated text gets a space before it, and text that can't be inserted is copied instead. The paired web client can dictate through the host.
  • Source control & editor: Git Graph, Source Control for folder workspaces, and an in-place branch picker in the Source Control header. Wholly new and deleted files show one clean tint, Markdown keeps its syntax colors under plugin themes, HTML previews open in the editor's own tab group, and Copy as PNG says when an image is too large instead of claiming it copied.
  • Agents & accounts: The Codex account-history typing lag is fixed. Antigravity chats can run on the host's agy when it's signed in, Antigravity sessions in AI Vault can reveal their artifacts folder, and Muse shows its quota and keeps panes working while background subagents run. The new-tab launch menu is simpler, the agent picker finds models from its submenus, and after a restart agents are told to finish the original task.
  • Remote hosts: Remote terminals respond to keystrokes sooner, desktop chats on remote hosts stream only the new text, and polling slows down while the Orca window is visible but not focused. Managed SSH servers recover after a slow ProxyCommand login and in more dead-server cases, and automations for a managed SSH host go to its own Orca server.
  • Look & feel: Import a custom app icon, use themed menus and clearer segmented controls, and use web fonts and looping background videos from plugins. Theme plugins can also style chat text and selection, which is now easier to read in dark mode. File and browser tabs fit their titles, so more fit before the tab strip scrolls.

Compatibility & upgrade notes

  • Claude Code theme matching: Orca can now match Claude Code's theme to your Orca terminal theme. It is off for everyone, including new profiles. The next time Claude Code runs, Orca asks once in a toast. Nothing in ~/.claude/settings.json changes unless you accept, and you can change it later in Settings › Appearance › Terminal.
  • Search shortcut: New Mac profiles open search with Cmd+K and have no default shortcut for clearing the terminal. New Windows and Linux profiles use Ctrl+K. Existing profiles keep their shortcuts, including custom and disabled ones.
  • Agent folder trust: The first time you start an agent in a new repo, Orca asks whether to trust the repo or let each agent ask for itself. Repos you already use keep working as before, with no prompt. You can change the answer in the repo's settings.
  • Single-use pairing codes: When an updated phone, browser or Orca pairs with an updated desktop, it switches to its own sign-in and the QR code or link it used stops working. Devices on older apps keep working, and Settings marks devices that still use the original pairing code or older encryption so you know which to update.
  • orca serve and public addresses: orca serve accepts localhost, LAN and Tailscale connections by default and accepts public internet addresses only when there's a reason to. Existing setups keep connecting.
  • Speech model memory: With voice on, Orca now loads the on-device speech model ahead of your first dictation. Use the new Unload Speech Model setting in Settings › Voice to free that memory sooner. Desktop dictation now also stops by itself after a minute of silence.
  • Windows terminal font weight: Terminal text on Windows now uses the font's Regular weight by default instead of Medium, which Windows drew as SemiBold. macOS and Linux are unchanged.
  • New-tab launch menu: Permissions and Arguments are no longer in the new-tab agent launch menu. They still come from Agent settings.
  • Onboarding: The Antigravity Install button in onboarding is gone. Antigravity has the same Install instructions link as every other agent.

Product experience

Native chat & agents

Ask side questions in a fork, fork from the latest reply, see CI results in chat and keep waiting messages in order.

Agents & accounts

Type without lag while Codex history links across accounts, run Antigravity chats on your own agy, see Muse quota and optionally match Claude Code to your terminal theme.

Dictation & voice

Dictate on the phone itself, from several devices at once, and keep Orca running if the speech engine crashes.

Phone & paired devices

Queue chat sends while the desktop is away, keep drafts and edits across app kills and open screens from what the phone already has.

Terminals, performance & updates

Bound GPU terminal memory, use the real Regular font weight on Windows and stop stray colour replies landing in the shell.

  • Bound WebGL atlas pages and release removed page textures by @nwparker in #39715
  • Use Regular weight by default on Windows by @nwparker in #39457
  • Never type a colour reply into the shell after the program that asked has exited by @nwparker in #37402
  • Derive state instead of syncing it in effects (panels) by @OrcaWin in #38801
  • Let default-matching cell backgrounds follow background opacity by @nwparker in #39372
  • Keep a terminal's last output on exit and stop charging dropped screencast frames by @AmoabaKelvin in #39384
  • Run ps without a shell on each Resource Manager poll by @OrcaWin in #39445
  • Stop painting busy TUI frames twice on non-Windows DOM terminals by @nwparker in #39462
  • Avoid reparsing xterm inline color styles by @nwparker in #39482
  • Preserve decorations on DOM block glyphs by @nwparker in #39615
  • Park and defer restored plain-shell tabs whose sessions no longer exist by @OrcaWin in #39725
  • Overlap independent fs probes; skip per-entry copies by @nwparker in #39729

SSH & remote servers

Make remote terminals and chats more responsive, recover managed SSH servers in more cases and lay groundwork for a new relay service.

  • Cut remote keystroke latency and per-frame copies by @nwparker in #39663
  • Desktop and CLI read compressed frames from remote hosts by @nwparker in #39659
  • Stream appends instead of whole items to desktop chats on remote hosts by @nwparker in #39657
  • Workspaces created on a paired host use the host's launch settings by @brennanb2025 in #38670
  • Send managed SSH host automations to its Orca server by @Jinwoo-H in #39160
  • Hide retained folder rows from process listings by @nwparker in #39332
  • Director edge cohort for the relay edge (dark by default) by @nwparker in #39362
  • Cloudflare Worker + Durable Objects relay by @nwparker in #39363
  • Keep old relay channels off the host's own SSH connection by @nwparker in #39435
  • Treat zsh's lowercase 'no such process' as a dead managed server by @nwparker in #39616
  • Wait for a slow ProxyCommand login before giving up on the managed tunnel's ssh -L forward by @nwparker in #39618
  • Finish the move to the managed server once the last relay-era terminal exits by @nwparker in #39621
  • Slow remote polls while the Orca window is visible but unfocused by @nwparker in #39650
  • Coalesce output longer for visible-but-unfocused remote terminal panes by @nwparker in #39660
  • Control liveness on any frame, signed drain op, small-volume alerts by @nwparker in #39706
  • Edge export skip on outage, cohort-exit drain sweep, region-scoped account allow by @nwparker in #39707
  • Opt-in adaptive ACK pacing for alternate-screen streams on slow remote links by @nwparker in #39735
  • Single-use admin tokens (jti), signing key rotation, auth-refresh metrics by @nwparker in #39738
  • Retry failed edge fences, cap edge pushes under row lock, jti on edge admin tokens by @nwparker in #39740
  • Stop recovery snapshots from piling up on slow links; let opt-in pacing engage under floods by @nwparker in #39765
  • Keep valid desktops through JWKS outages, deep object probe, cohort-scaled alerts by @nwparker in #39772
  • Runtime relay edge control (kill/down/permille), no device resurrection on skipped export, faster evacuation by @nwparker in #39773

Pairing, security & trust

Make pairing codes single-use, move remote connections to newer encryption and ask before trusting a repo for agents.

  • Let clients exchange a pairing code for their own token by @nwparker in #38937
  • Exchange the scanned pairing code for a token kept on the phone by @nwparker in #38938
  • A browser's saved device key retires the pairing link it came from by @nwparker in #38947
  • Add server and orca environment add exchange the link for their own token by @nwparker in #38948
  • Show which devices still sign in with their original pairing code by @nwparker in #38949
  • Use E2EE v2 for desktop and CLI connections to remote runtimes by @nwparker in #39218
  • Use E2EE v2 for the pairing token on plain-http pages by @nwparker in #39220
  • Show which paired devices still sign in with older encryption by @nwparker in #39222
  • Ask once per repo before pre-trusting agent folders by @nwparker in #38946
  • Refuse public source addresses on orca serve unless allowed by @nwparker in #39207
  • Keep signed-in devices when the first-seen save fails; report revoked devices on downgraded latched hosts by @nwparker in #39337
  • Remember approved setup scripts; let automations re-approve skipped setup by @nwparker in #39354
  • Remember up to 20 approved setup scripts per repo by @nwparker in #39436

Source control & editor

Browse the whole repo in a Git Graph tab, use Source Control in folder workspaces and switch branches in place.

Workspaces, sidebar & tabs

Use Cmd/Ctrl+K for search on new profiles, place projects between groups and find workspace actions in a tidier menu.

Settings & appearance

Import a custom app icon, read settings in titled cards and get matching toast buttons.

Plugins, themes & CLI

Let themes play a looping background video and ship fonts, and manage folder workspaces and pairing from the CLI.

  • Play a looping video behind app themes by @nwparker in #39450
  • Let plugins ship web fonts for the terminal, editor and interface by @nwparker in #39416
  • Theme tokens for chat text styling and a readable chat selection by @nwparker in #39432
  • Surface reserved-identity install errors for local forks by @bbingz in #12606
  • Don't count time asleep as worker idle time by @petersindex in #28299
  • Pair clients with a running Orca via orca pair by @sunfmin in #36469
  • Forward sidebar and zoom shortcuts from plugin frames by @agustin2606 in #37939
  • Isolate development watcher retries by root by @be0hhh in #38289
  • Resolve workspace context for remote active workspaces by @Pr1p in #38671
  • Let plugin keybindings follow the terminal shortcut policy by @nwparker in #39348
  • Stop terminal inventories for agent status events nobody hears by @nwparker in #39383
  • Deny when a fail-closed hook returns a malformed denial by @nwparker in #39393
  • Stop a late replacing command from repeating the built-in action by @nwparker in #39407
  • Keep a workspace-scoped panel edit made just before a workspace switch by @nwparker in #39413
  • Match folder workspaces by path: and name:, keep same-id ps rows apart by @Jinwoo-H in #39637
  • Set and rm folder workspaces through the folder workspace RPCs by @Jinwoo-H in #39670

Tests, CI & maintenance

Trim low-value tests, reorganize code by owner, prepare the UI for the React Compiler and keep CI green.

  • Read host capabilities from one status read per connection by @AmoabaKelvin in #39157
  • Organize terminal pane lifecycle and layout owners by @nwparker in #39242
  • Import resolveQueuedInitialCwd from its new home by @brennanb2025 in #39269
  • Organize remaining pane features by owner by @nwparker in #39270
  • Fix main after folder Source Control and pane lifecycle merges by @brennanb2025 in #39273
  • Run the desktop dictation controller on a shared session state machine by @AmoabaKelvin in #39284
  • Update README downloads badge by @buf0-bot[bot] in #39291
  • Organize runtime clients and feature state owners by @nwparker in #39292
  • Stop opening an unused speaker path while dictating by @AmoabaKelvin in #39293
  • Declare pane lifecycle refs as top-level hook calls by @OrcaWin in #39315
  • Remove 439 low-value browser and runtime tests by @OrcaWin in #39318
  • Organize host and terminal owners and remove forwarding shells by @nwparker in #39320
  • Remove 76 low-value fork and UI tests by @OrcaWin in #39321
  • Stop reading and writing refs during pane render by @OrcaWin in #39323
  • Gate React Compiler compatibility with a ratchet by @OrcaWin in #39324
  • Replace getState-in-render live-agent memos with epoch-keyed selectors by @OrcaWin in #39329
  • Remove 212 low-value mobile shell and routing tests by @OrcaWin in #39334
  • Derive drag label and active simulator tab reactively instead of getState in render by @OrcaWin in #39335
  • Spell out logical assignments React Compiler can't lower yet by @OrcaWin in #39339
  • Remove 181 low-value tests and 27 entire suites by @OrcaWin in #39351
  • Make render-path translation reactive to the UI language (hook, codemod, ratchet; native-chat) by @OrcaWin in #39353
  • Reactive translate in settings (repository, browser, terminal, runtime environments, ssh) by @OrcaWin in #39356
  • Remove 364 low-value tests and 45 entire suites by @OrcaWin in #39365
  • Reactive translate in settings (appearance, accounts, agents, source control, mobile, shortcuts, editor, voice) by @OrcaWin in #39366
  • Reactive translate in settings (remaining panes) by @OrcaWin in #39371
  • Reactive translate in sidebar (workspace cards, worktree list) by @OrcaWin in #39375
  • Remove 235 low-value tests and 14 entire suites by @OrcaWin in #39376
  • Reactive translate in sidebar (remaining) by @OrcaWin in #39382
  • Reactive translate in right sidebar (source control, hosted review) by @OrcaWin in #39385
  • Reactive translate in right sidebar (remaining panels) by @OrcaWin in #39388
  • Reactive translate in editor by @OrcaWin in #39394
  • Reactive translate in browser pane and feature wall by @OrcaWin in #39399
  • Reactive translate in plugins and skills by @OrcaWin in #39400
  • Reactive translate in status bar by @OrcaWin in #39401
  • Remove 186 low-value tests and 11 entire suites by @OrcaWin in #39404
  • Reactive translate in task page and automations by @OrcaWin in #39406
  • Make memo invalidators and layout flushes compiler-safe by @OrcaWin in #39414
  • Import defining owners and extract ACP startup by @nwparker in #39417
  • Reactive translate in terminal pane, tab bar and work-item dialogs by @OrcaWin in #39418
  • Reactive translate in pull request page, agent, onboarding, stats, new workspace and feature tips by @OrcaWin in #39421
  • Reactive translate in smaller component areas (activity through maintenance) by @OrcaWin in #39424
  • Reactive translate in smaller component areas (managed runtime through WSL move) by @OrcaWin in #39425
  • Split the device registry and the Monaco theme hook so PR lint passes again by @AmoabaKelvin in #39426
  • Reactive translate in the remaining renderer files (top-level components, app shell, entry points, hooks, lib) by @OrcaWin in #39427
  • Remove 321 low-value tests and 22 entire suites by @OrcaWin in #39429
  • Fail compiler-compat baseline shrinks only in touched files by @OrcaWin in #39440
  • Remove 221 low-value cloud, mobile and journal tests by @OrcaWin in #39449
  • Colocate settings and catalog state owners by @nwparker in #39451
  • Remove 18 low-value native-chat session tests by @OrcaWin in #39459
  • Remove 131 low-value terminal, session and transport tests by @OrcaWin in #39460
  • Remove 32 low-value shared helper tests by @OrcaWin in #39475
  • Tidy the rail wake hook and add tests by @nwparker in #39477
  • Theme background video ships in 1.4.254 by @nwparker in #39478
  • Remove 295 low-value tests by @OrcaWin in #39480
  • Remove 158 low-value tests by @OrcaWin in #39483
  • Remove 242 low-value tests by @OrcaWin in #39487
  • Remove 65 low-value tests by @OrcaWin in #39491
  • Remove 295 low-value tests by @OrcaWin in #39494
  • Remove 665 low-value tests by @OrcaWin in #39498
  • Remove 264 low-value tests by @OrcaWin in #39500
  • Remove 263 low-value tests by @OrcaWin in #39504
  • Remove 193 low-value tests by @OrcaWin in #39506
  • Remove 244 low-value tests by @OrcaWin in #39507
  • Place renderer store state with defining feature owners by @nwparker in #39508
  • Remove 124 low-value tests by @OrcaWin in #39509
  • Group native chat media, links and appearance owners by @nwparker in #39511
  • Remove 125 low-value tests by @OrcaWin in #39513
  • Remove 137 low-value tests by @OrcaWin in #39522
  • Remove 328 low-value tests by @OrcaWin in #39525
  • Organize native chat session and delivery owners by @nwparker in #39526
  • Remove 279 low-value tests by @OrcaWin in #39527
  • Remove 283 low-value tests by @OrcaWin in #39533
  • Organize native chat composer and conversation owners by @nwparker in #39534
  • Remove 414 low-value tests by @OrcaWin in #39539
  • Remove 571 low-value tests by @OrcaWin in #39546
  • Remove 660 low-value tests by @OrcaWin in #39547
  • Remove 676 low-value tests by @OrcaWin in #39550
  • Remove 587 low-value tests by @OrcaWin in #39553
  • Remove 835 low-value tests by @OrcaWin in #39558
  • Remove 329 low-value tests by @OrcaWin in #39560
  • Update README downloads badge by @buf0-bot[bot] in #39561
  • Remove 265 low-value tests by @OrcaWin in #39565
  • Remove 395 low-value tests by @OrcaWin in #39568
  • Remove 354 low-value tests by @OrcaWin in #39570
  • Organize renderer runtime by feature ownership by @nwparker in #39571
  • Remove 618 low-value tests by @OrcaWin in #39576
  • Remove 438 low-value tests by @OrcaWin in #39580
  • Remove rail wake comments by @nwparker in #39585
  • Explain the local Vitest transform cache by @OrcaWin in #39586
  • Remove 255 low-value tests by @OrcaWin in #39587
  • Remove 313 low-value tests by @OrcaWin in #39592
  • Sync render-path translate baseline after settings group cards by @OrcaWin in #39595
  • Remove 585 low-value tests by @OrcaWin in #39600
  • Remove 763 low-value tests by @OrcaWin in #39604
  • Remove 581 low-value tests by @OrcaWin in #39608
  • Remove 468 low-value tests by @OrcaWin in #39614
  • Shorten the Vitest cache note to one line by @OrcaWin in #39623
  • Organize backend runtime by defining owner by @nwparker in #39625
  • Replace the last two bare void reads React Compiler would drop by @OrcaWin in #39626
  • Key external-store reads on the subscription version they already take by @OrcaWin in #39628
  • Key render reads on the version hooks they already call by @OrcaWin in #39629
  • Flag discarded subscriptions and store snapshots React Compiler would cache by @OrcaWin in #39630
  • Remove 282 low-value tests by @OrcaWin in #39632
  • Remove 158 low-value tests by @OrcaWin in #39639
  • Key option support and terminal reads on the snapshots they already take by @OrcaWin in #39641
  • Remove 140 low-value tests by @OrcaWin in #39644
  • Pass new inputs instead of mutating them in five renderer tests by @OrcaWin in #39648
  • Read render-path translations from useTranslate in the settings over-budget files by @OrcaWin in #39654
  • Pass useTranslate's t to sidebar section headers and the setup prompt by @OrcaWin in #39656
  • Remove 559 low-value tests by @OrcaWin in #39661
  • Key tool run and background task words on useTranslate's t by @OrcaWin in #39662
  • Key the naming failure output reader on the failure it reads by @OrcaWin in #39665
  • Stop the dispatcher importing every RPC method by default by @OrcaWin in #39669
  • Give the structured-worker retry suite a load-proof readiness budget by @OrcaWin in #39671
  • Remove 292 low-value tests by @OrcaWin in #39673
  • Read render-path translations from useTranslate in the source-control over-budget files by @OrcaWin in #39674
  • Render the gutter menu in its owner test and read useTranslate there by @OrcaWin in #39675
  • Read the notebook error fallback and copy button title from useTranslate by @OrcaWin in #39678
  • Cut ~70s of CI test time from agent-hooks helper and CLI restart-handoff suites by @OrcaWin in #39679
  • Alias relay-contract subpaths to source in local wrangler config by @nwparker in #39680
  • Drop the default-RPC-manifest guard where no default remains by @OrcaWin in #39684
  • Fake-clock the agent-session start backoff; drop the CLI owner-choice work-count suite by @OrcaWin in #39685
  • Follow the editor's Preview button in the paired HTML preview spec by @OrcaWin in #39686
  • Cut ~20s of CI test time from codex app-server, --no-daemon shell and grid-serialize suites by @OrcaWin in #39687
  • Remove 182 low-value tests by @OrcaWin in #39689
  • Run the distro holder script on a 100ms poll and wait for its own signals by @OrcaWin in #39690
  • Pass useTranslate's t into the plugin manager's list entries by @OrcaWin in #39693
  • Read render-path translations from useTranslate in the review animated visuals by @OrcaWin in #39696
  • Split the browser and feature-wall over-budget files and read useTranslate there by @OrcaWin in #39698
  • Remove 259 low-value tests by @OrcaWin in #39701
  • Finish the status bar's render-path translations by @OrcaWin in #39708
  • Stop re-evaluating connect-pane-pty per test in pty-connection suites by @OrcaWin in #39711
  • Finish IssueDialog and the run history count label on useTranslate by @OrcaWin in #39717
  • Remove 297 low-value tests by @OrcaWin in #39720
  • Finish EditorFileTab and the checks tab actions on useTranslate by @OrcaWin in #39726
  • Render the usage charts in their test and read useTranslate there by @OrcaWin in #39737
  • Remove 357 low-value tests by @OrcaWin in #39743
  • Resolve the diff comment popover's default labels from useTranslate by @OrcaWin in #39744
  • Organize file operations, search and secure storage owners by @nwparker in #39746
  • Drop the workspace cleanup facet rows' work-count assertions by @OrcaWin in #39748
  • Mount the settings nav language test inside TranslationScopeProvider by @OrcaWin in #39754
  • Finish the review notes send menu and resume groups on useTranslate by @OrcaWin in #39755
  • Update README downloads badge by @buf0-bot[bot] in #39760
  • Read AgentLaunchSetupPanel's copy from useTranslate by @OrcaWin in #39761
  • Remove 244 low-value tests by @OrcaWin in #39781

New Contributors

Full Changelog: v1.4.253...v1.4.254

Don't miss a new orca release

NewReleases is sending notifications on new releases.