Commit Graph
21284 Commits
Author SHA1 Message Date
JinjingandClaude edbd2c2e6c Chat New line: skip the bubble pull-up when no hover row draws; trim above a leading turn bar
From review: the -mt-6 assumed the user bubble's copy/time row is drawn,
but a message with no timestamp may draw none, and the line would then
reach into the bubble. It now requires a timestamp. An above-row line
followed by its row's own turn bar (a turn opened without a prompt) gets
the same deeper trim as above-turn-bar.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-11-13 12:56:19 -08:00
JinjingandClaude 2e38f2b96b Chat New line: even spacing above and below in both placements
Follows #41735 and its revert #41804; ported onto the restored marker.

After a continuing-turn row (above-row), the row above pulled itself up
by 12px (-mb-3), leaving 8px above the line and 20px below. That row now
keeps its full gap when the line follows it, and the line trims the gap
under it to 14px.

Above the turn bar (after your own sent bubble), the bubble's hover-only
copy/time row counted as blank space above the line. The line moves up
into that row (-mt-6), and the trim under it is deeper (-mb-3), since the
bar has its own top padding.

Seen gaps (visible edge to the rule, rule to the next text) are now about
28px on both sides in both placements, and scale with the chat text size.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-11-13 12:42:23 -08:00
Kelvin Amoaba 87d105b610 fix(github): read a project's GitHub repo when origin is a local path (#42121)
The project catalog keys a repo by its first network remote (upstream,
origin, then the rest), but GitHub issue and PR lookups only read the
remotes named origin and upstream. A repo whose origin is a local bare
repo and whose GitHub remote has another name showed as GitHub-backed
yet Tasks said no GitHub source was detected. Origin's role now falls to
the same remote the project identity picks.

Fixes #42102
2026-11-13 20:35:58 +00:00
OrcaWinandOrcaWin c12e63619b test: remove low-value RPC recording scenarios (#42123)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 12:35:50 -08:00
Jinjing 2c97e41cc6 fix(worktree-delete): cancel local at-risk ignored-file scans when the delete preview closes (STA-15114) (#41835)
* fix(worktree-delete): cancel local at-risk ignored-file scans when the preview closes (STA-15114)

The delete preview aborts its controller on close/retarget, but the local
branch of getRuntimeWorktreeAtRiskLocalFiles dropped the signal and the
git:atRiskLocalFiles IPC had no cancel channel, so main kept running
queued/active git ls-files and file comparisons for obsolete previews.

Mirror git:status cancellation: a per-request token plus
git:cancelAtRiskLocalFiles aborts the sender-scoped controller whose signal
now reaches readWorktreeAtRiskLocalFiles (admission, git child, compares).
The web shim registers its controller before the worktree lookup and keeps
the typed RuntimeRpcCallError unwrap for old-host fallback.

* fix(worktree-delete): bound abortable web scan responses
2026-11-13 12:27:19 -08:00
OrcaWinandOrcaWin 644a4a8bd4 test: remove low-value RPC recording scenarios and goldens (#42120)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 12:25:26 -08:00
Brennan Benson ff90d6cc68 Keep restored browser tabs from coming back blank (#41490)
* Keep restored browser destinations until requested navigation completes

* test(browser): follow moved orcad page commands
2026-11-13 12:19:08 -08:00
Neil 587562e862 refactor: organize shared sidebar list modules by domain (#42107) 2026-11-13 12:12:51 -08:00
OrcaWinandOrcaWin 13ed693f46 test: remove low-value mobile suites and redundant cases (#42118)
* test: remove low-value mobile chat and lint cases

* test: remove redundant mobile task and terminal suites

* test: remove terminal inventories and recording harness smoke suites

* test: remove redundant mobile transport and worktree cases

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 12:08:57 -08:00
Kelvin Amoaba 255e5c21f5 feat(native-chat): open a subagent in its own view with its prompt, steps and reply (#42066)
* feat(native-chat): open each subagent in its own view inside the chat pane

Clicking a roster entry, an agent in the agents strip or a subagent row in
the sidebar now opens that subagent's own rows in the chat pane, with a bar
to switch between agents and a status bar with its state, Stop and the way
back in place of the composer. Subagent rows are no longer inlined in the
main transcript, which stays mounted underneath so going back keeps the
reader's place. The inline-section machinery is removed.

* fix(native-chat): close a subagent's hover preview when its view opens, and name the strip's open action

An open preview stayed over the subagent's view after its roster row was
hidden, and took the view's first Esc. The agents strip's label now says
it opens the agent rather than showing it in the conversation.

* feat(native-chat): show what the main agent asked a subagent and its reply in the subagent's view

A subagent's view now opens with the prompt the main agent gave it, folded
past a few lines, and ends with its final reply once it settles. Claude's
prompt and reply come from the Agent call its run names; Codex's prompt
comes from the spawn call naming the child, and its reply is already its
last own message.

* chore: drop the deleted delegation file from the node tsconfig and record the removed compiler bailout

* fix(native-chat): subagent view UX round: focus, endings, nested path, status glyphs

Going back hands focus to the entry or strip row that opened the view, else
the composer. Only a completed subagent ends with a reply; a failed one shows
its error and a stopped one says it stopped. Nested subagents get their spawn
path as a breadcrumb, and Back and Esc go to the parent. Every surface uses
the agents strip's status glyph, states lead capitalised and tokens carry
their unit, entries show that they open, the switcher marks the current
agent and numbers unnamed ones, and the status bar fits narrow panes.

* fix(native-chat): switch subagents from the switcher by pointer, and open no preview on handed-back focus

The switcher's modal-less menu closed on pointerdown before the item could
take the click; it is modal now. Focus handed back to a roster entry after a
pointer Back no longer pops its hover preview; keyboard focus and hover still do.

* fix(native-chat): fit the subagent view to main's tool-run provider, install slot and exhaustive state switch

* fix(native-chat): keep a subagent's full reply when its last message is only the start of it

* fix(native-chat): translate the subagent back label with useTranslate so it follows the language
2026-11-13 20:08:08 +00:00
JinjingandClaude 8d22623c07 fix(shortcuts): forward Plugins shortcut from local browser pages (#36744)
* fix(shortcuts): forward Plugins shortcut from browser pages

* fix(shortcuts): preserve text-producing guest chords

* fix(shortcuts): preserve AltGr input in browser guests

* fix(browser): return keyboard to the page after Settings closes

Closing Settings remounts the active browser page. Its activation focus
retry waits a frame for the retained guest to reattach, and a StrictMode
effect re-run cancelled that wait while the activation latch stayed set,
so the page never got focus back (host activeElement stayed BODY). A
re-run that cancels the retry before any focus attempt now clears the
latch so the next run retries.

Also make the Plugins shortcut copy match browser-page behavior and add
guest-dispatch coverage for Linux Ctrl+Alt, macOS Option symbol vs dead
keys, and a German Y/Z layout.

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

* fix(browser): keep the user's focus when a drag restarts page activation

The Settings-close fix re-arms a page activation whose focus retry was
cancelled before it acted. A drag starting or ending also re-runs that
effect, and the re-armed retry took the current focus as its starting
point. A user who picked the address bar while the guest was still
attaching therefore had it treated as the page's starting focus, and the
guest took the keyboard once it attached. The activation now keeps the
focus it began from across restarts until the page deactivates, so a
user focus change made before or during the drag still wins.

Move the focus-address-bar chord listener into its own hook, matching the
history shortcut, to keep the focus hook within the file-size limit.

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

* fix(browser): take the activation's focus snapshot before the drag guard

A page that activated while a drag was already active skipped the focus
snapshot and took it when the drag ended. If the user picked the address bar
during the drag, that pick became the starting point and the guest took the
keyboard once it attached. Take the snapshot when the page activates, before
deferring for the drag.

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

* fix(plugins): let the Plugins shortcut hint wrap in narrow windows

In a window about 700px wide the "Open with ..." hint stayed on one line and
cut off the key combo. The label now wraps like the rest of the description,
and only the key combo stays on one line, moving to the next line whole
when it does not fit.

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

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-11-13 12:06:28 -08:00
OrcaWinandOrcaWin 44689147f8 test: remove low-value mobile and lint suites (#42108)
* test: remove low-value mobile and lint suites

* fix: keep Git runner within lint budget

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 11:58:36 -08:00
Kelvin Amoaba 683fea748d refactor(git): share the admission release that waits for the git child to exit (#42109)
git-exec-file.ts went to 301 lines after #41927 and #41862 merged, which
fails the 300-line lint cap on main. Both callers now use one helper.
2026-11-13 19:38:15 +00:00
Neil a05f21bf8d refactor(git): colocate buffer execution options with command contracts (#42110) 2026-11-13 11:34:58 -08:00
OrcaWinandOrcaWin a36d1ddafd test: remove low-value bridge and native checks (#42105)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 11:15:10 -08:00
Jinjing 12787ce772 fix(git): retry fetches after concurrent ref updates (#41862)
* fix(git): retry fetches after remote-ref update races

* fix(git): preserve fetch contention details through rebase IPC

* fix(git): reject terminal fetch statuses and recheck retry eligibility
2026-11-13 11:05:27 -08:00
Kelvin Amoaba 39ccf4fb56 feat(native-chat): show each subagent's model, current tool and result in the chat (#41766)
* feat(native-chat): show each subagent's model, current tool and result in the roster

Subagent roster rows now carry the child's role, model, reasoning effort,
the tool it is running and the last thing it said, so a row says what the
subagent is doing and, once done, what it found. Codex children take model
and effort from the spawn call; Claude children take the model from their
own messages. A hover card shows the longer text.

* feat(native-chat): name subagent models and roles the way people say them

Show Opus 5.5 · High instead of claude-opus-5-5 · high, reusing the
model-id label and effort picker copy, and General purpose instead of
general-purpose.

* fix(native-chat): read Codex subagent model and effort from its started activity

Current Codex announces a spawn only through subAgentActivity, which carries
the model and reasoning effort the child resolved to.

* fix(native-chat): use the hover card's own spacing variant for the subagent preview

* fix(native-chat): show a subagent's reply as plain text in its roster row and preview

Its last message is markdown; the row now drops backticks, emphasis, list
and heading marks and joins lines into one readable line.
2026-11-13 19:01:39 +00:00
Neil 17a1dc373b refactor: group shared worktree modules by feature (#42093)
* refactor: group shared worktree modules by feature

* refactor: retarget new worktree admission test to moved owner
2026-11-13 10:59:36 -08:00
OrcaWinandOrcaWin 65055509d6 test: remove low-value mobile suites and redundant native input coverage (#42098)
* test: remove low-value mobile and native input cases

* test: prune redundant mobile suites and verify native receiver contents

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 10:48:53 -08:00
Brennan Benson db0e024fed perf(session-search): bound retention cleanup and separate purge timings (#41948)
* perf(session-search): target orphan cleanup and separate purge timings

* chore(session-search): document database row type guarantees

* chore(session-search): allow bounded worker SQL call sites
2026-11-13 10:47:10 -08:00
Brennan BensonandNeil 3bb91aaf36 Keep Git reads responsive during worktree creation bursts (#41927)
* Isolate worktree checkout admission and bound default workers

Co-authored-by: Neil <4138956+nwparker@users.noreply.github.com>

* Prove checkout admission survives caller timeout

* Keep checkout admission coverage compatible with older Git

* Keep aged Git work below interactive priority

---------

Co-authored-by: Neil <4138956+nwparker@users.noreply.github.com>
2026-11-13 10:31:03 -08:00
OrcaWinandOrcaWin 8e604e2f57 test: trim duplicate mobile and internal fixture assertions (#42094)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 10:27:01 -08:00
buf0-bot[bot] 07a29c66bc Update README downloads badge (#42097)
Co-authored-by: buf0-bot[bot] <252831055+buf0-bot[bot]@users.noreply.github.com>
2026-11-13 18:20:36 +00:00
OrcaWinandOrcaWin b1fefd9fcd test: remove low-value mobile Markdown editor coverage (#42090)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 10:06:48 -08:00
OrcaWinandOrcaWin 048eefd3bf test: remove low-value mobile and example coverage (#42087)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 09:55:11 -08:00
OrcaWinandOrcaWin d3a79e606f test: remove low-value image, runtime and cleanup tests (#42086)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 09:45:09 -08:00
Neil 2db7499ae2 refactor: group runtime-environment IPC by ownership (#42081) 2026-11-13 09:35:54 -08:00
OrcaWinandOrcaWin ea92ef7ea0 test: remove low-value runtime and static-analysis cases (#42082)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 09:24:03 -08:00
Kelvin Amoaba 8db56c11ea feat(worktrees): archive a workspace's checkout and restore it later (backend, off) (#41833)
* feat(worktrees): archive and restore a workspace's checkout (backend, off)

* fix(worktrees): keep archived rows through startup GC and Windows path checks

* fix(worktrees): serialize archive and restore, finish interrupted restores

* fix(worktrees): restore prior archive flag, drop leftover marks, keep archived rows out of offline listings

* test(worktrees): fixed timestamp in archived GC test; drop path cast

* feat(workspace-cleanup): archive inactive workspaces from the runner once archive is on

* fix(worktrees): queue bare-id restores and forget the archive mark when deleting an archived workspace

* fix(worktrees): import archive params from their new contract folder
2026-11-13 17:14:37 +00:00
OrcaWinandOrcaWin 6a6b23c910 test: remove low-value packaging and release test cases (#42078)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 09:12:30 -08:00
Kelvin Amoaba 73771e67d0 fix(browser): an agent tab create stops waiting 15 s on a desktop that already missed an ask (#42077)
A paired desktop that sleeps with its socket open let every agent tab create
wait out the full 15 s host-request timeout until the server's heartbeat
dropped the socket. The request registry now remembers a desktop that let an
ask time out and fails the next ask for it at once, until the desktop answers
anything or subscribes again. A new subscription also gets any ask that is
still pending.
2026-11-13 17:05:47 +00:00
OrcaWinandOrcaWin 0a04286445 test: remove low-value mobile and native-build cases (#42076)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 08:58:51 -08:00
Neil dc67a6435f refactor(mobile): organize source control by feature owner (#42073) 2026-11-13 08:49:09 -08:00
OrcaWinandOrcaWin 309f6ca8db test: remove low-value localization and mobile test coverage (#42070)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 08:43:31 -08:00
OrcaWinandOrcaWin 5480f48d5b test: remove low-value runtime packaging and diagnostic suites (#42064)
* test: remove low-value runtime packaging and diagnostic suites

* test: clear scan-progress listeners after AI Vault IPC cases

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 08:34:41 -08:00
Neil 075d6b3b50 refactor(rpc): group request contracts by feature owner (#42063) 2026-11-13 08:21:31 -08:00
OrcaWinandOrcaWin d896198ad6 test: remove low-value workflow and packaging suites (#42062)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 08:09:43 -08:00
OrcaWinandOrcaWin 8025a52e5b test: remove low-value build and CI test suites (#42056)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 07:51:57 -08:00
Kelvin Amoaba a1001409ff feat(browser): a server agent's new tab opens on the paired desktop (#41989)
When a desktop is paired, a tab the server's own agent opens (orca tab create
with no placement) goes on that desktop as a This-device page; otherwise it
stays in the server's own browser. orcad engine tabs reach no client, so on
Linux servers agent tabs were invisible even with a desktop paired.

With a browser of its own to fall back on, the server asks a desktop each time:
a desktop on "Server (streamed)" declines and the tab streams, and a desktop
that does not answer (asleep or gone) leaves it on the server after the
request times out.
2026-11-13 15:49:53 +00:00
Neil 6775615ce4 refactor(preload): organize API modules by feature owner (#42051) 2026-11-13 07:37:49 -08:00
Brennan Benson a42c6d3194 Stop sidebar notice rows from growing on every remeasure (#42050) 2026-11-13 07:34:53 -08:00
Kelvin Amoaba c725692258 fix(native-chat): /compact runs while a Claude chat's background subagent works (#41945) 2026-11-13 15:33:32 +00:00
OrcaWinandOrcaWin a850101549 test: remove low-value relay and contract test coverage (#42053)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 07:32:26 -08:00
OrcaWinandOrcaWin 0cdffd823f test: remove low-value credential and database cases (#42049)
* test: remove low-value credential and database cases

* test: brace the simplified lost-reply proxy condition

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 07:16:53 -08:00
Neil 1af96e86ff refactor(mobile): organize terminal session feature owners (#42046) 2026-11-13 06:59:38 -08:00
OrcaWinandOrcaWin cd4a4a9fb1 test: remove low-value connection and lease cases (#42047)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 06:55:09 -08:00
OrcaWinandOrcaWin 29778c785b test: remove low-value reservation and seat suites (#42042)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 06:42:07 -08:00
Neil e956498414 refactor(mobile): organize terminal modules by responsibility (#42040) 2026-11-13 06:37:45 -08:00
OrcaWinandOrcaWin e7aebd873c test: remove low-value regional rehome and simulation suites (#42037)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 06:19:41 -08:00
OrcaWinandOrcaWin b18029ef48 test: remove low-value relay startup and JWKS checks (#42034)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 06:02:00 -08:00