Commit Graph
19848 Commits
Author SHA1 Message Date
OrcaWinandOrcaWin 8f368c1df0 refactor(i18n): read render-path translations from useTranslate in settings (repository, browser, terminal, runtime environments, ssh) (#39356)
Applies pnpm i18n:reactive-translate --helpers. Output is unchanged: t delegates
to translate() and helpers default the threaded parameter.

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-07 14:57:09 -08:00
Kelvin Amoaba a18165e046 fix(mobile): make the device store's size accounting and page writes safe (#39408)
Count a key changed twice in one write once, keep the per-bucket estimate an upper bound, and redo a seed pass that missed files at the next foreground instead of trusting it as exact.

The page store refuses a bad key or an over-cap value before posting anything, keeps its calls in call order and inside the bridge's in-flight cap, and checks deferred slots. The shell reads only the keys that surely fit the reply budget, so no value is decrypted twice.
2026-11-07 22:56:59 +00:00
Kelvin Amoaba 679d343741 perf(mobile): merge the page bundle's small shared chunks into one (#39343)
* perf(mobile): merge small route-shared page chunks into one

* refactor(mobile): share the merged page build with the route closure check

* build(mobile): check in the chunk sweep and drop the unused route closure helper

* refactor(mobile): count page chunks in one place
2026-11-07 22:56:39 +00:00
OrcaWinandOrcaWin 26179069b6 test: remove 763 low-value tests (#39604)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-07 14:44:04 -08:00
OrcaWinandOrcaWin 8da13a8e6d test: remove 585 low-value tests (#39600)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-07 14:23:58 -08:00
OrcaWinandOrcaWin ddba7e3dc5 fix(ci): sync render-path translate baseline with settings group cards (#39595)
#39253 merged after #39353's CI ran, adding one translate() call in TerminalPane.tsx and removing one in CliSection.tsx.

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-07 14:02:38 -08:00
OrcaWinandOrcaWin 60003df154 feat(i18n): make render-path translation reactive to the UI language (#39353)
Add useTranslate()/useIntlLocale() backed by a TranslationScopeProvider whose key
changes only with the active language or its own resources, an AST codemod that
rewrites render-path translate()/getIntlLocale() calls and threads the hook values
into render-called helpers, a helper analysis report, and a ratchet that keeps
render-path module translate() calls from growing. Apply the codemod to
components/native-chat.

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-07 13:44:33 -08:00
OrcaWinandOrcaWin 0956e333d3 test: remove 313 low-value tests (#39592)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-07 13:35:39 -08:00
OrcaWinandOrcaWin ed67e11362 test: remove 255 low-value tests (#39587)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-07 13:16:01 -08:00
5bb273776e perf(memory): run ps without a shell on each Resource Manager poll (#39445)
The Resource Manager samples every 2 s while visible. execFile runs ps
directly instead of through /bin/sh -c, one fewer process per tick, with
the same arguments and output.

The collector test mocked child_process.exec; it now mocks execFile.

Co-authored-by: m4air <m4air@Mac.localdomain>
Co-authored-by: Neil <neil@stably.ai>
2026-11-07 12:58:54 -08:00
OrcaWinandm4air 9138c7b699 perf(file-explorer): select the active worktree's git status and expanded dirs (#39442)
The explorer subscribed to the whole gitStatusByWorktree and expandedDirs
maps, so a status or expansion write in any other worktree re-rendered it.
It only reads the active worktree's entry, so select that entry instead.

Co-authored-by: m4air <m4air@Mac.localdomain>
2026-11-07 12:53:38 -08:00
NeilandCopilot 0b22e904e3 perf(terminal): avoid reparsing xterm inline color styles (#39482)
Set RGB and contrast-adjusted colors through CSS properties instead of serializing and reparsing the complete inline style. Regenerate the pinned xterm runtime patches and lock hash without changing terminal scheduling or recovery.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-11-07 12:53:11 -08:00
OrcaWinandOrcaWin e3385d659b docs(contributing): explain the local Vitest transform cache (#39586)
Repeat `pnpm test` runs reuse transforms; raw `vitest` skips the cache.
Prompted by https://github.com/stablyai/orca/discussions/39390.

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-07 12:51:25 -08:00
Neil 05af4b2a66 chore(native-chat): remove rail wake comments (#39585) 2026-11-07 12:50:24 -08:00
Brennan Benson c3534a9954 feat(settings): show each settings group as a titled card (#39253)
* feat(settings): group settings into titled cards so section boundaries are clear

Each settings group now shows its title above its own card, with hairlines
between rows, replacing one shared card where group headers looked like rows.
Adds SettingsGroup; SettingsSection drops its outer card when a pane is built
from groups, and SettingsRow/SearchableSetting mark rows for the dividers.

* fix(settings): use status-warning tokens for the task sources banner

* fix(settings): avoid subtree-restyling :has() spacing and keep orchestration search copy

* fix(settings): keep agent catalog rows mounted when an agent moves from available to installed

* fix(settings): hide groups that search empties and divide rows inside multi-row wrappers

* fix(settings): drop pane-wide :has scans, keep group headers when search empties a card

Ruling D2/E2/S3 on #39253 review: outermost rows own dividers, only an empty
card hides (direct-child selector) so header actions like Remove Project stay,
and panes declare grouped statically. Also restores the whole-header Alt-click
for the release channel, gives App Icon and the Windows admin row stable cards,
and removes wrapper divs that kept emptied cards visible.

* test(settings): Option-clicking the Updates version line reveals the release channel switcher

* test(settings): stub the updater API without a type assertion
2026-11-07 12:37:16 -08:00
OrcaWinandOrcaWin a299de5630 test: remove 438 low-value tests (#39580)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-07 12:36:38 -08:00
Neil b0ac9ae521 refactor: organize native chat composer and conversation owners (#39534) 2026-11-07 12:26:03 -08:00
OrcaWinandOrcaWin 76ffc1f046 test: remove 618 low-value tests (#39576)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-07 12:06:11 -08:00
Brennan Benson c6e243d640 feat(native-chat): add /fork to fork a chat from its latest response (#39257)
* feat(native-chat): add /fork to fork a chat from its latest response

Typing /fork in a native chat now runs the same fork as "Fork from this
response", through the newest response still in context, instead of
passing the text to the agent. It is offered only where the host and
agent can fork, and answers with a composer notice while a response is
still running, before any response exists, while a fork is opening, or
when text follows the command.

* fix(native-chat): keep /fork off the transcript rows' fork surface

* fix(native-chat): read /fork's response from the hook's latest input
2026-11-07 11:56:39 -08:00
Brennan Benson 133bc99e5a Keep waiting chat input in one ordered queue (#39271)
* Prepare queue rows to preserve accepted delivery intent

* Keep waiting native chat input in one ordered queue

* Keep a typed view of admitted queue records

* Keep the removed queue caption in the runtime catalog

* Remove the unused queue barrier caption

* Keep queue writes local and preserve accepted send provenance

* Read the sender from the queued admission request

* Keep continuation fixture clock within its operation window

* Remove deleted queue-barrier test from ratchet baseline

* Keep ratchet baseline change scoped to the deleted test

* Filter historical acceptance reads before loading payloads

* Instrument cached acceptance cursor once per fixture

* Restore original personal provenance after legacy card cleanup

* Complete legacy sender fixture metadata

* Narrow admitted history record types

* Reconstruct accepted personal proof after restoring original admissions

* Use the fixed clock for historical queue fixtures

* Consolidate queue source and type imports

* Preserve admission refusals and failed startup ownership

* Keep manual queue holds independent of later turn endings

* Remove obsolete mobile queue barrier expectations

* Keep journal format initialization independent of its decoder

* Assert returned-row recovery for released send clients

* Preserve Stop assertion across handoff-only publication
2026-11-07 11:35:38 -08:00
OrcaWinandOrcaWin d1bc1f7c9b test: remove 354 low-value tests (#39570)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-07 11:33:46 -08:00
Brennan Benson a20b16a595 Redesign Antigravity chat sign-in settings (#39248)
* Redesign Antigravity chat sign-in settings

Settings rows for method, project and location; one full-size Sign in
button named for the method; a status badge; the chat runtime install
row inside the card; and no save error while Enterprise fields are
still empty.

* Use primitive variants for Antigravity sign-in styling

* Drop Antigravity sign-in strings translated on main after removal

* Announce settled sign-in, keep Change account after a cancelled switch, reset paste form per flow
2026-11-07 11:32:13 -08:00
OrcaWinandOrcaWin bd9483483c test: remove 395 low-value tests (#39568)
* test: remove 396 low-value tests

* test: remove 395 low-value tests

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-07 11:20:25 -08:00
Brennan Benson d307cf015e fix(agents): workspaces created on a paired host use the host's launch settings (#38670)
* fix(agents): workspaces created on a paired host use the host's launch settings

Creating a workspace with agent picks or a draft could launch the paired host's agent with desktop settings, or lose the picks during recovery. Let capable hosts compose those launches from their own settings and preserve the user's inputs through fallback creation. Older hosts retain their existing requests.

* fix(agents): workspaces created on a paired host use the host's launch settings

When a workspace is created on a paired computer, agent picks and Arguments can be replaced by this computer's defaults or dropped during recovery. Keep explicit choices with the submission and let the paired computer resolve its own launch settings.

Preserve older-host request behavior, disabled-agent draft substitution and prompt submission, and restore the composer if compatibility preparation fails.

* fix(agents): workspaces created on a paired host use the host's launch settings

Keep the submitted choices available when a background launch has no prepared startup carrier. Tighten the regression checks for restored composer names, legacy commands and prompt submission so recovery preserves the user's work.

* fix(agents): workspaces created on a paired host use the host's launch settings

Creating a workspace on a paired machine could ignore its agent settings or lose a draft while the terminal connected. Keep the selected launch inputs and the pending text together through fallback and reconnect, and never replay partially written input. Preserve older hosts' launch commands and ordinary new-tab prompts' editable behavior.

* fix(agents): workspaces created on a paired host use the host's launch settings

Keep a workspace's pending prompt attached to its original terminal while the pane reconnects. Stop automatic delivery before reporting a final failure, retain the recoverable text, and recognize a launch handed off to the paired host even before its tab appears. Avoid delaying creation on a redundant host status request.

* fix(agents): workspaces created on a paired host use the host's launch settings

New workspaces on a paired computer could lose their first prompt when the terminal briefly disconnected. Delayed delivery could also continue after reporting failure, or leave terminal-only agents without an accessible copy of their prompt.

Keep pending prompts through attachment loss, stop content writes when automatic delivery ends, and offer the existing composer to recover unsent text. Preserve launch identity without inventing empty Arguments or treating missing metadata as a replacement.

* fix(agents): workspaces created on a paired host use the host's launch settings

A replacement pane can learn its terminal before the layout catches up after reconnecting. Re-registering the effective launch settings then dropped the original first-prompt identity.

Recover that identity from the existing verified terminal binding so later remounts keep the same pending prompt.

* fix(agents): workspaces created on a paired host use the host's launch settings

A terminal binding can identify the launch before its effective Arguments are known. Keep permission notifications working in that state without assuming a launch-settings recipe exists.

* fix(agents): workspaces created on a paired host use the host's launch settings

Keep an unsent prompt attached to its launch when a paired host briefly disappears, so reconnecting the same terminal can finish delivery. Clear the rest of the exited pane's status as before, and release the binding after delivery or a confirmed end.

Offer Copy prompt when automatic delivery finally fails, so the prompt can be pasted into the terminal that already opened. Keep creation-failure Reopen separate.

* fix(agents): preserve paired prompt recovery across transport updates

Resolve the consumed startup token through the pane's verified binding instead of reading renderer ownership during every remote attach. Keep the transport's host-authoritative exit and reconnect behavior and its fixture guards.

Settle pending prompt delivery when the host reconfirms a closed surface, including after it discards the terminal's exit record. Update the remount fixture for the Windows PTY model binding.

* fix(agents): merge duplicate imports flagged by type-aware lint

* test(agents): fix type assertions in paired launch fixtures

Type the repository rows, mutable agent choice and terminal tab used by
launch regressions. Reuse the session binding across its real installers
and document the partial-fixture adapters required by the runtime APIs.

Keep the RPC, remount and prompt-delivery assertions unchanged.

* fix(agents): route workspace terminals through their owning host

Creating a terminal for an existing workspace could send it to another focused server. Resolve its owning host when no explicit route was supplied, and keep the host-shaped draft regression within the shared startup contract so renderer checks do not pull in main-process code.

* test(agents): align launch fixtures with runtime dependencies

Retain real i18n exports while replacing translation output, hoist the terminal restore toast spy, and supply the explicit host environment used by paired terminal callers. Keep the existing behavior assertions unchanged.

* fix(agents): isolate prompt failure notice dependencies

Load the prompt failure notice only when a settled hosted launch needs it,
so workspace recovery consumers do not initialize toast and localized agent
catalogs just by importing delivery code. Keep prompt retirement and its
recoverable draft synchronous, and preserve the existing Copy prompt action.

Restore the ordinary new-tab failure toast's original invocation and verify
that Fix Checks retains its edited request through the activation handoff.

* test(agents): route legacy wire launches to their fixture host

Pass the paired environment explicitly in legacy terminal-creation fixtures,
matching real launch callers instead of relying on the focused host. Keep
all compatibility and accepted-creation assertions unchanged.

* fix(agents): preserve paired work-item completion without a startup plan

Blank-terminal work-item launches on paired hosts now keep their successful activation result. If the agent command cannot be built, show that error once instead of reporting an activation failure.

* refactor(agents): deliver paired creation prompts once like agent tabs

Drop the retained hosted-prompt lifecycle (pending map, rebind, deadline,
terminal retirement, token recovery). After the host creates the session the
desktop attempts the prompt once; failure shows the prompt-not-sent toast with
Copy prompt.

* fix(agents): silence prompt failures after closing a workspace terminal

Closing a paired workspace terminal before the agent was ready could report a prompt failure after that terminal was gone. Use shared launch completion and existing tab records to keep deliberate closes silent while preserving one Copy prompt notice after an interrupted delivery. Prepared launches now decide client delivery from the host request.

* fix(agents): report every failed paired prompt delivery

A paired host can retract its tab from inventory without the user cancelling the launch. Always report a failed prompt attempt with Copy prompt, using the same single-attempt completion as agent tabs.

* test(agents): name host-session fixture mock types
2026-11-07 11:12:43 -08:00
OrcaWinandOrcaWin 0586dab175 test: remove 265 low-value tests (#39565)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-07 10:44:54 -08:00
OrcaWinandOrcaWin ba0fc2d956 test: remove 329 low-value tests (#39560)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-07 10:27:06 -08:00
buf0-bot[bot] 97f0dd7a04 Update README downloads badge (#39561)
Co-authored-by: buf0-bot[bot] <252831055+buf0-bot[bot]@users.noreply.github.com>
2026-11-07 18:20:34 +00:00
OrcaWinandOrcaWin e97b290cb8 test: remove 835 low-value tests (#39558)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-07 10:13:20 -08:00
Neil 4d33cd22cc refactor: group native chat session reads and delivery by owner (#39526) 2026-11-07 10:02:15 -08:00
OrcaWinandOrcaWin b0d15b6103 test: remove 587 low-value tests (#39553)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-07 09:48:15 -08:00
Neil 7ccc3c2e50 refactor: group native chat media, links and appearance owners (#39511)
* refactor: place native chat media and link code with defining owners

* refactor: preserve code control copy protection after relocation

* style: format rebased native chat owner imports
2026-11-07 09:37:06 -08:00
OrcaWinandOrcaWin 7ec3e7935b test: remove 676 low-value tests (#39550)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-07 09:30:22 -08:00
OrcaWinandOrcaWin eb9312fc7c test: remove 660 low-value tests (#39547)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-07 09:18:17 -08:00
OrcaWinandOrcaWin 3d8c3a899d test: remove 571 low-value tests (#39546)
* test: remove 571 low-value tests

* test: make tooltip render type portable

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-07 09:08:59 -08:00
OrcaWinandOrcaWin 4243da77d5 test: remove 414 low-value tests (#39539)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-07 08:41:24 -08:00
Neil c231b5d7da refactor: place renderer store state with defining feature owners (#39508) 2026-11-07 08:19:02 -08:00
OrcaWinandOrcaWin 5c5c7ca235 test: remove 283 low-value tests (#39533)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-07 08:11:30 -08:00
OrcaWinandOrcaWin 5f226987f1 test: remove 279 low-value tests (#39527)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-07 07:58:19 -08:00
OrcaWinandOrcaWin 5c487a8be4 test: remove 328 low-value tests (#39525)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-07 07:44:08 -08:00
OrcaWinandOrcaWin 9b98b38506 test: remove 137 low-value tests (#39522)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-07 07:20:11 -08:00
OrcaWinandOrcaWin e280eb0734 test: remove 125 low-value tests (#39513)
* test: remove 124 low-value tests

* test: remove 125 low-value tests

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-07 06:59:05 -08:00
OrcaWinandOrcaWin 5bd03f75f5 test: remove 124 low-value tests (#39509)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-07 06:46:19 -08:00
OrcaWinandOrcaWin deb834db05 test: remove 244 low-value tests (#39507)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-07 06:33:36 -08:00
Neil b165e387d3 refactor: retain settings owners and current test policy (#39451) 2026-11-07 06:25:50 -08:00
OrcaWinandOrcaWin cc6900fc0b test: remove 193 low-value tests (#39506)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-07 06:20:37 -08:00
b07b0432a4 fix(cursor): write workspace trust where cursor-agent reads it (#38807)
* fix(cursor): write workspace trust where cursor-agent reads it

cursor-agent names ~/.cursor/projects/<dir> by replacing every
non-alphanumeric character with '-', collapsing repeats, and trimming
dashes. Orca only replaced Windows-illegal characters, so paths with
'_', '.', spaces or non-ASCII got a marker cursor-agent never reads and
the trust menu appeared on every fresh worktree.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* test(cursor): cover space, non-ASCII and Windows paths in the trust slug test

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
2026-11-07 09:09:52 -05:00
OrcaWinandOrcaWin 3c4990dc03 test: remove 263 low-value tests (#39504)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-07 06:07:51 -08:00
OrcaWinandOrcaWin bd68461280 test: remove 264 low-value tests (#39500)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-07 05:56:06 -08:00
OrcaWinandOrcaWin c39a1b3627 test: remove 665 low-value tests (#39498)
* test: remove 262 low-value tests

* test: remove 665 low-value tests

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-07 05:43:22 -08:00
Kelvin Amoaba 7234301afb fix(mobile): finish Android dictation on a call, alarm or leaving the app (#39492)
* fix(mobile): finish Android dictation on a call, alarm or leaving the app

A transient audio-focus loss (call, alarm, assistant) left the mic recording
silence, and pausing the activity closed the mic only to reopen it on resume,
splicing a silent gap into the dictation. Both now end the recording and emit
an interruption, so dictation finishes and inserts what was heard. The
dictation hook also finishes when the app goes to the background, which
covers iOS and shells without this native change.

* fix(mobile): keep a dictation that is waiting on the Android mic prompt

* fix(mobile): keep Android recording state consistent across the focus and JS threads

* refactor(mobile): name the Android pause path for what it does and stop retaking focus on resume

* fix(mobile): keep what the open mic heard when leaving during a pending host start

* fix(mobile): close the open mic at once when leaving during a pending host start

* fix(mobile): a second page capture end waits for the stop already in flight
2026-11-07 13:30:50 +00:00