Commit Graph
3589 Commits
Author SHA1 Message Date
bfa941aa06 fix(native-chat): honor Windows environment overrides consistently (#40301)
* fix(native-chat): apply Windows environment overrides consistently

Use the same case-aware composition for native chat launches, preflight,
model discovery and naming. Canonicalize configured Windows names before
account readers and preserve account pins and POSIX case distinctions.

Tracked in #39075.

Co-authored-by: 김태겸 <oharapass@gmail.com>
Co-authored-by: Vitalii Kulish <mancunianez@gmail.com>

* test(native-chat): cover effective Windows catalog changes

* test(native-chat): retain child environment test import after sync

* test(native-chat): verify Windows child environment precedence

---------

Co-authored-by: 김태겸 <oharapass@gmail.com>
Co-authored-by: Vitalii Kulish <mancunianez@gmail.com>
2026-11-09 12:04:26 -08:00
OrcaWinandOrcaWin cff5a151fc test: remove low-value CLI, browser and E2E checks (#40466)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-09 11:58:10 -08:00
Kelvin Amoaba f5da9a9ff5 feat(speech): commit dictation text at each pause with Silero VAD (#39378)
Offline models write out the speech before each pause while recording goes on.
Short noises and slow window-padded decodes are held off the pause cuts, a VAD
error falls back to bounded chunks, and slow phrase decodes are judged per
dictation against the time spoken. The VAD download carries legacy files and
fetches after any GGUF model.
2026-11-09 19:55:11 +00:00
OrcaWinandOrcaWin 0680d9753e test: remove low-value browser, CLI and budget checks (#40459)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-09 11:44:48 -08:00
OrcaWinandOrcaWin 9e128042fa test: remove low-value suites and redundant examples (#40457)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-09 11:31:20 -08:00
OrcaWinandOrcaWin 77781c71f7 test: remove low-value CLI and renderer inventories (#40445)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-09 11:14:08 -08:00
Kelvin Amoaba d291670a01 refactor(speech): remove sherpa-onnx (#39473)
transcribe-cpp is now the only on-device engine on every platform, so
the sherpa-onnx packages, their packaging (extraResources, the darwin
libonnxruntime prune, the native-variant assert and the Linux libstdc++
exemption), the sherpa recognizer in the speech process and the
per-model engine choice all go. Hotwords are written as plain terms.
2026-11-09 18:59:10 +00:00
OrcaWinandOrcaWin 85f58ec64f test: remove low-value CLI, settings and shortcut suites (#40441)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-09 10:53:47 -08:00
Kelvin Amoaba fd46321d85 feat(speech): move the speech models to transcribe-cpp and offer an update for old downloads (#39468)
* feat(speech): move the speech catalog to transcribe-cpp models

Parakeet v2/v3, Whisper tiny and SenseVoice now download their GGUF
builds, which run on transcribe-cpp everywhere, Intel Macs included (on
the CPU). A model still holding its old sherpa-onnx download shows
"Update to the faster version (<size>)"; updating replaces the old
files, and dictating before then says the model needs that update.

The five models with no GGUF build are retired and their users moved
over: the Japanese Parakeet, the Chinese-English Zipformer and the
Paraformer to SenseVoice, and the Korean and Chinese streaming
Zipformers to the new Nemotron 3.5 (28 languages). Nemotron's locale
codes (ko-KR) are matched from the ISO language setting.

* feat(speech): offer the speech model update once after the engine change

A card in the notification corner tells people whose selected on-device
model needs the new download, or whose retired model was replaced, and
starts the same download as Settings > Voice. After a replacement it
offers to delete the retired model's files.

* feat(speech): move retired Korean and Chinese models to SenseVoice and offer Whisper Large v3 Turbo

On transcribe-cpp 0.4.1 with Metal, SenseVoice beat Nemotron 3.5 on Korean
and Chinese FLEURS clips, so the retired Korean and Chinese streaming
Zipformers now move to SenseVoice. Whisper Large v3 Turbo (Q8_0, 886 MB)
joins the catalog as the most accurate choice for Japanese, Korean and
Chinese. Nemotron 3.5 stays, described by the languages it does best.
2026-11-09 18:00:13 +00:00
OrcaWinandOrcaWin fc379afda7 test: remove low-value locale, automation and settings cases (#40437)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-09 09:49:58 -08:00
OrcaWinandOrcaWin 403736b844 test: remove redundant browser matrices and SSH inventories (#40429)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-09 09:18:23 -08:00
OrcaWinandOrcaWin da8396395c test: remove low-value browser, hook and SSH cases (#40423)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-09 09:04:22 -08:00
OrcaWinandOrcaWin f54514ea24 test: prune low-value browser WSL and telemetry coverage (#40418)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-09 08:42:54 -08:00
Kelvin Amoaba 0b8e94aa5c feat(speech): run GGUF models on transcribe-cpp with a CPU fallback (#39326)
* feat(speech): run GGUF models on transcribe-cpp, falling back to the CPU

The speech host child can now load a second engine. A model whose files
are GGUF runs on transcribe-cpp (Metal on Apple silicon, Vulkan on
Windows and Linux, CPU otherwise); everything else stays on sherpa-onnx,
which remains the only engine on Intel Macs.

A GPU that fails to load, errors, stalls for 25 s or crashes the process
moves the dictation to a CPU-only process (TRANSCRIBE_BACKENDS=cpu) that
replays the audio the GPU had not decoded yet, so no words are lost or
repeated. A GPU that crashed or would not load is remembered per
transcribe-cpp version and OS release, and voice.speechGpu = 'off' keeps
it on the CPU.

Packaging copies transcribe-cpp, koffi and the target's native package
into resources/node_modules outside asar, fails when a target's package
is missing, and ships the MSVC runtime beside transcribe.dll on Windows.

No catalog model is GGUF yet, so nothing runs on transcribe-cpp until
the catalog change that follows.

* fix(speech): keep the speech queue running after a failed task, and drop audio frames after a discard

* fix(speech): keep the engine's file reads off the main thread's hot paths

The engine lookup and the GPU failure marker are read once per process
instead of on every dictation start and mobile catalog request, the marker
is written asynchronously, and the child reads the hotwords file with
fs/promises. The baseline moves the existing engine presence checks from
stt-worker-paths to the shared package table and adds the once-per-process
marker reads.
2026-11-09 16:37:03 +00:00
OrcaWinandOrcaWin 26810fe4a8 test: prune low-value terminal and workspace coverage (#40413)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-09 08:29:13 -08:00
OrcaWinandOrcaWin 2f68fb8175 test: prune low-value worktree, SSH and activation coverage (#40406)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-09 08:15:22 -08:00
OrcaWinandOrcaWin 23588ed935 test: remove low-value browser, store and adapter suites (#40399)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-09 07:54:05 -08:00
OrcaWinandOrcaWin 3ce8d75ae9 test: remove low-value agent-hook and row-projection coverage (#40395)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-09 07:35:12 -08:00
OrcaWinandOrcaWin c82839fb7b test: remove agent-hook projections and URL inventories (#40388)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-09 07:14:40 -08:00
OrcaWinandOrcaWin e0bf451bec test: remove thin agent-hook and mobile migration suites (#40382)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-09 06:59:23 -08:00
OrcaWinandOrcaWin 2eaba5b39e test: remove low-value VM, mobile, work-item and terminal suites (#40376)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-09 06:31:53 -08:00
OrcaWinandOrcaWin b2c049a8cb test: remove browser startup and CLI prerequisite mock suites (#40371)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-09 06:21:19 -08:00
OrcaWinandOrcaWin 4c3dc79108 test: remove low-value messaging simulator and editor suites (#40363)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-09 05:44:21 -08:00
OrcaWinandOrcaWin 0a7ce6e78f test: remove low-value bridge speech and lineage checks (#40356)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-09 05:29:01 -08:00
OrcaWinandOrcaWin 3f829c8517 test: remove low-value draft and editor save coverage (#40350)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-09 05:02:05 -08:00
OrcaWinandOrcaWin 12b2ad2536 test: remove low-value composer activation provider and layout coverage (#40342)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-09 04:47:20 -08:00
OrcaWinandOrcaWin 9636b4454b test: remove low-value hook and mirror tests and search benchmarks (#40335)
* test: remove private hook checks and manual search benchmarks

* test: remove masked mirror hydration case and exclusive scaffolding

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-09 04:30:48 -08:00
Neil ef27841e29 refactor: group agent launch, status, and messaging owners (#40313)
* refactor: group agent launch, status, and messaging owners

* refactor: consolidate direct owner imports

* refactor: import pane ownership directly in status listeners
2026-11-09 04:24:18 -08:00
OrcaWinandOrcaWin f637498b34 test: remove obsolete manual tools and duplicate launch coverage (#40317)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-09 03:57:10 -08:00
Pr1pandNeil 4bb808e650 fix(build): bundle browser-extension-preload as a standalone sandboxed script (#39884)
The browser-extension preload was a main-build Rollup input, so it could be
split into shared CJS chunks that a sandboxed preload cannot require. Build it
with the other guest preloads as a self-contained bundle, and share the
one-byte unminified output options between the preload build and sandboxed
bundles so the extension preload stays one-byte in V8.

Co-authored-by: Neil <neil@stably.ai>
2026-11-09 03:48:28 -08:00
Neil 715020e871 refactor: group editor browser document and simulator owners (#40273)
* refactor: group editor browser document and simulator owners

* refactor: update active simulator reliability command links

* refactor: preserve upstream editor and emulator test retirements
2026-11-09 03:44:32 -08:00
OrcaWinandOrcaWin 8d195ef316 test: remove low-value copy suites and manual status benchmark (#40305)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-09 03:39:29 -08:00
Neil ccd4592634 refactor: group renderer workspace ownership and navigation (#40230)
* refactor: group renderer workspace ownership and navigation

* refactor: use the defining WSL rewrite store identifier

* refactor: route new upstream consumers to workspace owners

* refactor: consolidate connection owner test imports

* refactor: preserve upstream review-owner test retirement
2026-11-09 02:38:15 -08:00
Neil fc156aad4b feat(release): publish a server-only Linux tarball for orca serve (#40280)
* feat(release): publish a server-only Linux tarball for orca serve

Each release now also uploads orca-server-linux-x64.tar.gz and
orca-server-linux-arm64.tar.gz (orcad slot from the qualified template, the
pinned Node, and an orca-ide launcher) plus orca-server-sha256sums.txt, so a
Linux host can run orca serve without the desktop package.

The tarballs are packed and smoke-tested (serve --recipe-json, then pair a
second profile) on both architectures, including bare ubuntu:24.04 and
debian:12-slim containers. Upload runs only after the release is published
and nothing depends on it, so it cannot hold the desktop release.

* fix(release): keep the server tarball's launcher env out of its terminals; skip refs that predate it

- The launcher runs the CLI with ELECTRON_RUN_AS_NODE=1, as the packaged app does, and the CLI strips it
  before starting orcad; ORCA_APP_EXECUTABLE and ORCA_SERVE_RUNTIME are cleared.
- Ship Node's LICENSE beside the runtime.
- Skip packing on release refs that predate the scripts, and upload only when both tarballs passed.
- Run the PR smoke when the CLI's serve-runtime selection changes; document service install.
2026-11-09 02:36:00 -08:00
OrcaWinandOrcaWin a163b9fc5b test: remove low-value copy, inventory, and runner assertions (#40282)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-09 10:25:23 +00:00
OrcaWinandOrcaWin 19afa64ee7 test: remove low-value provider and renderer assertions (#40279)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-09 10:11:48 +00:00
OrcaWinandOrcaWin f10be535ca test: remove low-value mobile renderer and rate-limit suites (#40188)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-09 01:46:01 -08:00
OrcaWinandOrcaWin eb3493acb0 test: remove low-value renderer and budget suites (#40222)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-09 01:22:00 -08:00
OrcaWinandOrcaWin ef66245430 test: remove low-value WSL and renderer suites (#40237)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-09 01:15:07 -08:00
Neil 3d2a015a34 ci(release): mirror published downloads to Cloudflare R2 (#40254)
onorca.dev offers an opt-in 'mirror link' (https://downloads.onorca.dev)
next to the GitHub download for when GitHub release downloads 5xx.
Upload the onorca.dev download assets there right after each stable
desktop release and each Android release, instead of polling.

- config/scripts/release/publication/mirror-release-to-r2.sh: retrying,
  resumable download from GitHub, size + sha256 check, S3 multipart
  upload to R2 (no 300 MiB wrangler cap)
- release-mirror-r2.yml: reusable + manual backfill
- release-cut: run after publish-release for stable vX.Y.Z tags only
- mobile-android-release: run before bump-apk-download so the site's
  mirror link never points at a missing APK (success not required)
2026-11-09 01:09:27 -08:00
OrcaWinandOrcaWin 2093801982 test: remove low-value shared and native suites (#40172)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-09 01:02:16 -08:00
OrcaWinandOrcaWin 40abff3220 test: reconcile VM mobile and native test removals with current main (#40154)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-09 01:02:00 -08:00
Neil 920a83889c refactor: move browser contracts and publication to defining owners (#40209)
* refactor: move atomic publication to its filesystem owner

* refactor: group shared browser definitions by feature

* refactor: bind proxy process and session contracts to defining owners

* refactor: consolidate direct session contract type imports

* refactor: retain atomic publication test timing under moved owner

* fix(benchmark): resolve historical tunnel framing source before loading
2026-11-09 00:45:45 -08:00
OrcaWinandOrcaWin 8abac5357e fix(worktrees): offer nested-worktree delete on remote runtime hosts (#40235)
* fix(worktrees): offer nested-worktree delete for remote runtime hosts

A remote host's 'contains another registered worktree' refusal showed only
the raw error. Add worktree.previewNestedRemoval and an approved-plan
worktree.rm path on the runtime, and route the toast's nested-delete dialog
to the workspace's own host.

* fix(worktrees): re-check checkouts between remote nested deletes; scale reply timeout

* chore: compose nested worktree ids; record improved ratchets

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-09 00:37:58 -08:00
Neil 02ad6d9671 feat(cli): add orca vm env doctor to check that an environment can run agents (#40120)
* feat(cli): add orca vm env doctor to check a workspace environment

Checks required CLIs (git plus what the repo manifests imply), agent CLIs
and their sign-in, Git fetch and a dry-run push, the orca.yaml setup script
(optionally re-running it with Orca's runner), and free disk. Pass/warn/fail
with --json; checks live in src/main/environment-doctor for runtime reuse.

* fix(env-doctor): ship the doctor modules in the packaged CLI and share the check formatter

* fix(env-doctor): run Git probes in the C locale so folder detection is locale-independent
2026-11-09 00:09:00 -08:00
Neil 815854777b refactor: give browser, RPC and process contracts concrete owners (#40167)
* refactor: separate execution route and child exit owners

* refactor: move browser data into defining feature owners

* refactor: give runtime RPC entry its shutdown implementation

* refactor: use defining process types and colocate host telemetry test

* docs(process-host): point piped child contract to Node owner

* docs(process-host): clarify both piped contract owners
2026-11-08 23:32:21 -08:00
Neil 6b7d5d6336 fix(remote-runtime): detect a paired host that stays connected but stops answering (#40104)
* fix(remote-runtime): detect a runtime that stays connected but stops answering

The shared control socket only checked ws pings, which a relay hop or a runtime
whose request path is stuck still answers, so a host could read as connected for
hours with no updates (#39785). Ready sockets now send a cheap status probe after
an idle interval; a missed deadline retires the socket so reconnect backoff runs,
and the mark stays in diagnostics until the runtime answers again. Asleep and
manually disconnected hosts are never probed.

orcad also starts a worker-thread watchdog that logs a blocked event loop and,
when run under a service manager, exits after five minutes so it is restarted
(#34410).

* fix(remote-runtime): clear the unresponsive mark on any post-ready frame and ignore late deadlines

Review follow-ups: a reconnected socket that streams frames proves the runtime
answers, so it clears the mark and lets backoff reset; the probe deadline now
sits above the ws liveness window so a dropped link is not blamed on the runtime;
a deadline that fires late after sleep is not counted; integration tests no longer
depend on wall-clock timing.

* fix(remote-runtime): gate the heartbeat on the shared retry hold and isolate the wedged-runtime test

* test(orcad): wait for stdio close before reading the watchdog child's stderr
2026-11-08 23:28:31 -08:00
OrcaWinandOrcaWin a489ef5ba3 test: reconcile approved test removals with current main (#40176)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-08 23:19:51 -08:00
OrcaWinandOrcaWin c0d3d2e0db test: remove 13 low-value suites and redundant cases (#40138)
* Remove low-value file, runtime and chat test cases

* test: remove low-value shared contract and timing suites

* test: remove leaking browser IPC mock suite

* test: isolate legacy relay bridge transport fixture

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-08 21:51:31 -08:00
Neil 39902f398b refactor: bind browser and remote runtime consumers to concrete owners (#40135)
* refactor: use concrete browser and input owners

* refactor: bind remote runtime callers to concrete transport owners

* Use checked subscription mock argument types

* Type browser lease mock with its subscription contract

* refactor: bind sleeping VM status probe test to socket owner
2026-11-08 21:41:28 -08:00