Commit Graph
2100 Commits
Author SHA1 Message Date
OrcaWinandOrcaWin de2dac447a test: remove 512 low-value tests (#36794)
* test: remove low-value suites and cases

* test: remove orphaned preamble snapshots

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-10-31 23:01:58 +00:00
Neil 1526c7e041 refactor: group agent-session background-task modules (#36798) 2026-10-31 15:52:18 -07:00
OrcaWin a489b24748 test: remove 246 low-value tests (#36780) 2026-10-31 21:52:07 +00:00
OrcaWin 0d9e02754e test: remove low-value suites and cases (#36766) 2026-10-31 14:10:00 -07:00
OrcaWin 47a2a953c6 test: remove 206 low-value tests (#36759) 2026-10-31 20:34:03 +00:00
OrcaWin 19d6957127 test: remove 272 low-value tests (#36750) 2026-10-31 19:36:52 +00:00
OrcaWin 10e35fd76d test: remove 226 low-value tests (#36737) 2026-10-31 18:55:29 +00:00
OrcaWin 3c5773c04d test: remove 187 low-value cases including six whole suites (#36724) 2026-10-31 18:05:10 +00:00
Neil 24d1d10da8 refactor(shared): colocate session thread-goal contracts (#36720) 2026-10-31 10:30:42 -07:00
OrcaWin 7556133a5a test: remove 266 low-value cases including 11 whole suites (#36717)
* test: remove low-value suites and cases

* test: update wall-clock baseline after case removal
2026-10-31 17:10:11 +00:00
Neil 4365547899 refactor(shared): colocate legacy session child-work projection (#36711) 2026-10-31 09:48:29 -07:00
OrcaWin 8d475840bf test: remove 16 low-value suites and 138 individual cases (#36710) 2026-10-31 16:00:41 +00:00
Neil 893152fa0c refactor(shared): colocate structured session event coalescer (#36708) 2026-10-31 08:40:13 -07:00
OrcaWin fe4595d6d6 test: remove 11 low-value suites and 157 individual cases (#36703)
* test: remove low-value suites and cases

* test: preserve historical reliability gate evidence
2026-10-31 15:27:20 +00:00
OrcaWin a0f75207ce test: remove 17 low-value suites and 133 individual cases (#36700) 2026-10-31 14:38:33 +00:00
OrcaWin 1da1099dad test: remove 14 low-value suites and 241 individual cases (#36693) 2026-10-31 14:07:33 +00:00
OrcaWin 63fc1f11c5 test: remove 19 low-value suites and 200 individual cases (#36681)
* test: remove low-value suites and cases

* test: shrink stale timeout baseline after removing cases
2026-10-31 13:29:29 +00:00
Neil de53032ea4 refactor: group journal body-admission and producer tests (#36682) 2026-10-31 06:22:18 -07:00
Neil bbd324a57a refactor(renderer): group Jira sorting tests (#36677) 2026-10-31 05:39:25 -07:00
OrcaWin effa751b93 test: remove 10 low-value suites and 130 individual cases (#36672)
* test: remove low-value suites and cases

* test: shrink two stale flaky-pattern baseline counts
2026-10-31 11:59:03 +00:00
Neil 981ad63bbf fix(checks): accept intentionally empty oxlint selections (#36664) 2026-10-31 03:54:52 -07:00
OrcaWin 1afbd1d559 test: remove eight low-value suites and 198 individual cases (#36650)
* test: remove low-value suites and cases

* test: fix retained timestamps and prune flaky baseline

* test: document malformed persisted-provider fixture cast

* test: restore types used by retained divergence regressions
2026-10-31 10:40:53 +00:00
Neil fbc48858f6 fix(test): keep unit-test tooling inside the repo root in nested checkouts (#36657)
* fix(test): keep unit-test tooling inside the repo root in nested checkouts

Vitest's oxc tsconfig auto-discovery walks past the repo for files no
in-repo tsconfig owns, so a worktree nested in another checkout loaded
the enclosing checkout's tsconfig. Pin the transform tsconfig to an
explicit solution file listing the same projects auto-discovery finds.

The local module cache policy hash failed on esbuild warnings from an
ancestor package.json; only warnings located inside the root now fail.

* fix(test): guard the pinned transform tsconfig against project drift

Drop docs/site (no unit test transforms it) so its tsconfig cannot break
every transform, and fail when a project tsconfig is added or removed
without updating the pinned solution.
2026-10-31 02:50:47 -07:00
Neil 1988af6125 ci(e2e): route feature-area sources to their nightly-only e2e specs (#36639) 2026-10-31 01:48:18 -07:00
OrcaWin 9a7068223c test: remove nine low-value suites and 147 individual cases (#36629)
* test: remove low-value suites and cases

* test: shrink flaky-pattern counts after case removals
2026-10-31 01:37:28 -07:00
OrcaWin 5edb1b6f9a test: remove 14 low-value suites and 119 individual cases (#36617)
* test: remove low-value suites and cases

* test: shrink flaky-pattern counts after case removals

* test: remove empty suite and stale release workflow fixture
2026-10-31 00:20:27 -07:00
Neil 84469d881f ci: remove dependency review Slack notification job (#36611) 2026-10-30 23:18:14 -07:00
OrcaWin 72104bfc64 test: remove low-value fixture and forwarding suites (#36600) 2026-10-30 22:55:00 -07:00
OrcaWin 20cd8131e4 test: remove low-value mocked forwarding suites (#36592) 2026-10-30 22:14:41 -07:00
OrcaWin cb5482ae1c test: remove low-value forwarding and presentation suites (#36584) 2026-10-30 21:39:26 -07:00
OrcaWinandOrcaWin beaa519d52 test: remove 16 low-value forwarding and identity suites (#36566)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-10-30 21:01:18 -07:00
Brennan Benson ae09815770 Support automations in Orca Mobile (#31617)
* Add host-owned automations flow to mobile

* fix: resolve initial mobile automation CI failures

* Preserve automation target identity and mobile action state

* Preserve selected automation targets through discovery and terminal launch

* Cover draft reversion after uncertain automation creation

* Preserve automation target and submitted action authority

* Preserve selected hosts and editor operations across restored state

* Refresh mobile web bundle measurements for merged routes

* Fix automation history observation and catalog scaling

* Fix automation mobile presentation and merged launch bindings

* Refresh measured mobile bundle sweep and correct automation test inputs

* Move real-module test loads to collection and consolidate imports

* Use typed row access to count worktree ownership reads

* Refresh selected automation history on matching host events

* Fix automation contract types and merged test imports

* Fix automation theme updates and committed history ownership

* Update folder terminal contract fixtures for canonical host catalogs

* Consolidate historical session activation fixture imports

* Repair automation contract project boundaries and owner type ports

* Preserve acquired automation folder owners and fix integration lint

* Retain terminal pane owners captured at connect

* Use checked pane manager context in owner retention test

* fix: adapt merged editor and terminal test contracts

* fix: preserve captured automation targets and terminal owners

* fix: honor explicit automation source clears and refusal contracts

* test: construct terminal transport mocks with checked types

* test: supply retained-owner context in terminal fixtures

* test: align terminal fixtures with callable mocks and store ports

* fix(mobile): localize automation screens and run details

* fix(mobile): use automation translations in context

* fix: preserve editor owner checks and automation repair guidance

* fix: reconcile captured workspace contracts after main sync

* Repair automation integration tests and retained target diagnostics

* Keep test support owned by registered unit roots

* Expose full blocked automation run reasons in menus

* Anchor mobile bundle envelope to measured route sweep

* fix(mobile): localize coded automation run failures

* fix: preserve automation decisions and captured resource ownership

* fix: qualify remaining automation workspace owner consumers

* fix: preserve resolved watch and child editor owners

* fix(editor): share qualified worktree watch ownership

* fix(editor): reuse immutable repo ownership lookup

* fix: preserve host ownership without duplicate catalog scans

* fix: align automation destination host types and ratchets

* fix: align mobile bundle envelope with measured sweep

* fix(mobile): resolve automation setup policy before save

* test(mobile): qualify reconciled automation target inspection

* fix(mobile): keep server setup consent within its authority

* fix: accept narrow qualified workspace owner snapshots

* fix: reuse qualified owner state for workspace directories

* fix(mobile): localize known automation orphan reasons

* Correct automation controller and Chat harness types

* Refresh editor requests after paired host restart

* Refresh measured mobile web bundle envelope
2026-10-30 20:40:04 -07:00
OrcaWinandOrcaWin c608be9e6d test: remove 17 low-value mock and forwarding suites (#36549)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-10-30 20:21:43 -07:00
Jinwoo Hong 8138232c4f Print concise orchestration CLI output for agents, with --full for the full record (#36498)
Orchestration commands print small flat fields in text and --json by default; --full prints the previous output. Failures exit non-zero with error: <code>: <message> on stderr.
2026-10-30 23:11:56 -04:00
Kelvin Amoaba 97582248e7 feat(mobile): rebuild Home around what needs you, with actions pinned at the bottom (#36520) 2026-10-31 02:47:49 +00:00
Kelvin Amoaba 5e6c0494b3 feat(mobile): compact top bar, bottom search and filter chips (#36535)
* feat(mobile): compact top bar, bottom search and filter chips

Every list screen gets one compact bar (back, centred title, at most two
buttons, the rest in a ⋯ pull-down), with search moved to a wide bar at
the bottom and filters as chips. The workspaces page shows the host name
at the top of the list and folds it into the bar as you scroll.

* test(mobile): pass the Tasks bar's accessory in the host subtitle test

* fix(mobile): stretch filter chips to fill the row; follow moved header controls in render checks
2026-10-31 02:47:30 +00:00
Neil fdc03848a5 fix(plugins): protect every security and destructive string from language packs (#36219)
* fix(plugins): protect every security and destructive string from language packs

Language packs could rewrite trust copy outside a hand-kept list of app
areas (catalog-link dialog, browser-extension Allow/Deny, Node mirror).
Protected keys are now generated from structure: every key in a file that
renders a security surface, a destructive confirmation, or a native message
box, or that carries a // @protected-copy pragma, plus same-directory copy
modules. verify:localization-catalogs fails when the list is stale.

Pack strings are also capped at max(64, 4x English) characters and may not
contain control or bidi characters. Validation stays strict; loading drops
only the offending entries.

* chore(plugins): resync protected copy keys with main

* fix(plugins): cap pack strings in shared strict checks and pin new trust copy

* fix(plugins): keep the packaged CLI off the English catalog

* chore(plugins): resync protected copy keys with main

* chore(plugins): resync protected copy keys with main
2026-10-31 02:22:49 +00:00
OrcaWinandOrcaWin a15989e7d5 test: remove 30 low-value test suites (#36528)
* test: remove 30 low-value test suites

* test: preserve cold restore evidence command history

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-10-30 19:21:44 -07:00
Neil c5f3499c46 chore(scripts): reclaim historical test caches from idle worktrees without --tests-stopped (#36532) 2026-10-30 19:11:50 -07:00
Kelvin Amoaba 36a9024a0b fix(mobile): draw Claude Code's ⏵⏵ mode marker in the Android terminal (#36516)
* fix(mobile): draw Claude Code's ⏵⏵ mode marker on Android terminals

Android ships no font with U+23F4-23F7, so the terminal drew boxes.
Bundle a 664-byte Noto Sans Symbols 2 subset, inline it in both
terminal hosts, append it to the Android font stack only, and load it
with the Nerd font before the WebGL atlas first paints.

* fix(mobile): spell the terminal font probe glyphs as escapes

* refactor(mobile): tidy terminal symbols font wiring
2026-10-31 01:16:24 +00:00
OrcaWinandOrcaWin 9cdb7ae295 test: remove 31 low-value suites from audit batch 850 (#36512)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-10-30 18:13:32 -07:00
Brennan Benson 76cf164cf9 Chat UI leaves Experimental: each agent's Chat or CLI choice decides what opens (#36110)
* Chat UI leaves Experimental: each agent's Chat | CLI choice decides launches

Remove the experimentalNativeChat switch and every gate on it. The Chat
settings page, Default Agent Chat | CLI choice, + menu Chat/CLI rows,
source-control surface choice, Antigravity chat section and orchestration
chat-error switch are always present. What a new launch opens comes only
from the per-agent choice (no saved choice opens a chat) plus the existing
support checks.

- One lookup, nativeChatPreferenceFor, keyed by agent id so host-registered
  agents read the same way; unreadable settings still open a terminal.
- A relayed desktop stamp (nativeChatDefault) maps onto the launched agent;
  an explicit surface still wins. Old phones' createSupport keeps admitting
  by the host's per-agent choice.
- settings.get stops publishing the retired switch keys; nothing in the
  repo reads them from a host.
- Startup chat sync and hydration run when some agent can open as a chat
  or the machine already holds chats.
- The retired key is stripped on load. The one-time upgrade tip from the
  chat upgrade is retired with its audience record; a new record, captured
  once from the raw profile, marks which existing profiles had Chat UI off.
- The window-side AI-button tab path, which only ran with the switch off,
  is deleted.

* Keep profiles that had Chat UI off on the terminal

Existing users who never turned Chat UI on would otherwise see new agent
launches open as chats, since an agent without a saved choice now opens as
a chat. The one-time load step that records the new audience also sets
every known agent to CLI for those profiles, in the same save and only
when the record was absent, overwriting saved chat choices the old switch
masked. Profiles that had Chat UI on and new profiles are untouched.

Browser profiles keep their own settings, so the web client does the same
once: a stored switch that is not on seeds CLI choices, and dropping the
key marks the step done.

Agents first seen after this step open as chats.

* Agents without a saved Chat | CLI choice open as their CLI

An agent with no saved choice now opens in the terminal for everyone,
including fresh installs and agents first seen later. The one-time load
step carries what launches opened while Chat UI was experimental: with
the switch on, every known agent without a saved choice is saved as
chat; with it off, chat choices the switch masked are saved as CLI.
Existing profiles join the launch tip audience whether the switch was on
or off. Browser profiles get the same carry from their saved key.

The startup chat restore and host agent list now run only when some
agent is saved as chat or the runtime holds chats.

* Preserve owned terminal launches and local chat choices

* Clarify chat and terminal support

* Explain worker CLI integration timeout budget

* Use checked annotations for chat graduation test fixtures

* Store agent surface default separately from per-agent overrides

* Preserve explicit Chat intent across default changes

* Preserve current browser settings during host replies

* Correct browser settings factory and regression types

* Name exported launch fixture mock types and clarify agent defaults

* Preserve settings fallbacks and complete launch test lifecycles

* Check allocated tab identity before launch fixture interpolation

* Register combined integration project for compiler parity probes

* Use checked settings in the launch test fixture

* Preserve retired Chat preference data privately

* Align chat E2E fixtures and capture pane lifecycle evidence

* Use typed raw settings in retention contracts

* Consolidate transcript diagnostic imports

* test: align chat fixtures with live pane and native menu contracts

* test: capture relay tab selection loss diagnostics

* test: wait for owned shells before synthetic chat fixtures

* test: preserve all-host visibility in SSH observer

* test: bind synthetic transcript fixtures before provider seeding

* test: assert selected chat owner after narrow image preview

* ci: allow fifth compiler project to complete comparison

* Type the web-terminal fixture's chat map without an assertion

* Right-click the selection itself in the chat copy spec
2026-10-30 17:43:04 -07:00
OrcaWinandOrcaWin be1fceb69d test: remove 39 low-value suites from audit batch 849 (#36491)
* test: remove 39 low-value suites from audit batch 849

* test: remove obsolete shell-contract trigger for deleted suite

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-10-30 17:20:27 -07:00
Blue DaydreamingandNeil 221e958689 fix(readme-links): check mixed-case HTML attributes in README links (#36213)
Match src/href/srcset attribute names case-insensitively so links written
as SRC, HREF, or SrcSet are validated like lowercase ones, while URL case
is preserved.

Fixes #36211

Co-authored-by: Neil <neil@stably.ai>
2026-10-30 16:27:11 -07:00
Neil b586ef9453 ci(e2e): route plugin system sources to the plugin e2e specs (#36477) 2026-10-30 15:37:55 -07:00
OrcaWinandOrcaWin 24bf181d56 test: remove 17 low-value suites from audit batch 848 (#36461)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-10-30 14:35:29 -07:00
Neil 99fdbcf2d9 refactor(jira): colocate row interaction tests (#36362) 2026-10-30 14:06:46 -07:00
OrcaWinandOrcaWin 07142b50a2 test: remove 29 low-value suites from audit batch 847 (#36446)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-10-30 14:04:36 -07:00
Brennan Benson 6a9b1d786f feat(mobile): tap the session title to see its full name, path and host (#30389)
* feat(mobile): tap the session title to see its full name, path and host

A sideways phone caps the title at 160pt beside the tabs, so long worktree names were cut off with no way to read them. Tapping the title now opens a card under the top bar, built like desktop's tab hover card, with the full name, the worktree's path and the host. It fades and slides in over 150ms (fade only with Reduce Motion), and any tap outside closes it.

* fix(mobile): keep the worktree-name reset effect unchanged; type-only View import; lazy card animation value

* fix(mobile): preserve title card bounds and execution host identity

* test(mobile): complete title card platform mocks

* fix(mobile): separate detail card from title trigger

* style(mobile): apply pinned formatter wrapping

* fix(mobile): reopen session details during the closing animation

* style(mobile): wrap the session title imports

* Keep session title activation on one target through card exit

* Host session details above page navigation and retain input scope

* Keep the title target clear as its layout changes

* Clarify title-card types and observer cleanup for checks

* Keep mobile title-card requests and visual exits under one owner

* Make the existing mobile title an explicit web click target

* Keep mobile title details nonmodal through their visual exit

* Follow the active mobile palette in session title details

* Use array syntax for title card motion fixture

* Localize the mobile workspace details hint

* test(mobile): cover title card release to a higher sheet

* Refresh measured mobile web chunk envelope
2026-10-30 13:48:10 -07:00
OrcaWinandOrcaWin 44de854ded test: remove 25 low-value suites (audit 846) (#36434)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-10-30 13:40:57 -07:00