Commit Graph
17001 Commits
Author SHA1 Message Date
OrcaWin deea8a67ef test: remove terminal close and import setter projection suites 2026-11-12 23:12:58 -08:00
OrcaWinandOrcaWin a0fc70d291 test: remove low-value repo notifier and schema cache suites (#41877)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-12 23:12:20 -08:00
Jinjing 6b160abe52 feat(macos): redesign Full Disk Access toast with prompt count illustration (#41849)
* feat(macos): redesign Full Disk Access toast with prompt count illustration

* fix(macos): stack FDA toast actions on narrow cards so the button never overflows
2026-11-12 23:07:37 -08:00
Brennan BensonandClaude Opus 5.5 842e4e0077 perf(native-chat): draw only the visible rows of an opened tool run (#41552)
* perf(native-chat): draw only the visible rows of an opened tool run

An opened tool run rendered every call it held, so a long autonomous stretch
kept thousands of rows, their DOM and their per-row state alive while only a
dozen were visible in the run's capped box.

The run now owns a keyed window over its rows (the shared TanStack
virtualizer plus the existing row+offset scroll anchor):
- rows keep today's keys and order; small runs and Find-with-a-query draw
  every row through the same keyed tree, so nothing remounts at the switch
- the reader is remembered as a row and offset (pixel top while unmeasured),
  following the end only for new work, and forgetting on close as before
- the box's cap keeps the measured height of opened details, including ones
  scrolled out of view; the full task list now remembers its open state
- the first/last rows, a diff reveal target, recently interacted rows, the
  focused row's Tab neighbours and a text selection's span stay drawn

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(native-chat): finish tool-run follow, keep reveals, bound per-move work

Review repairs for the windowed tool run:
- a follow started by new work always gets its completion frame, so a
  result that adds no row cannot leave it armed to chase later detail growth
- the row anchor restores only when rows arrive or the pane shows again,
  so a diff reveal or the reader's own scrolling is not pulled back
- opened-detail room is kept incrementally and travels with the run's
  remembered position across outer windowing
- focus neighbours, item keys and window rows no longer cost work per move
  proportional to the run's length; selection is tracked only while visible
- thoughts with no words are not keyboard stops; the restored row stays
  drawn until the reader moves

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(native-chat): finish hidden follows, let reveals win, keep draw-all scrolling free

Second review repair for the windowed tool run:
- a follow is certified only by a real, visible tail measurement, and that
  measurement wakes it even when no size changed; a hidden pane resumes it
- a diff reveal cancels any pending restore and follow on every request
- a hidden pane returns to its row (not its reset pixel offset) on show
- draw-every-row mode (Find, short runs) rebuilds nothing as the reader
  scrolls; selection spans re-derive after the pane was hidden
- remembered detail heights are copied only when one changes

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(native-chat): certify a tool-run follow only by a laid-out tail

A follow's landing is confirmed only when the last row that draws something
has a real, non-zero size; a measurement callback carrying a cached or zero
size no longer ends it early, and a run whose rows draw nothing has no
landing to wait for.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(native-chat): keep draw-all tool runs cheap per scroll and prove follow wake paths

Draw-all (Find) no longer records the scroll anchor or rebuilds the selection span
on every scroll, and its trailing spacer skips the end scan. Tests now cover a task
list crossing the window threshold and Find, and pin both follow-completion paths.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(native-chat): skip anchor scans under a wide selection and recover the reader's row after

A selection wider than a window keeps its rows drawn, so recording the anchor on
each scroll would scan them all; recording now waits, as it does under Find. The
reader's row is then taken from the virtualizer's offsets when recording resumes
or the pane hides, so showing it again does not return to an older row.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(native-chat): type the tool-run selection-span gate and settle the anchor on hide

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(native-chat): merge duplicate tool-run window import

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* chore(native-chat): prune the structured session's compiler bailout after the main sync

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(native-chat): keep the tool-run measurement callback current without a render-time ref write

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(native-chat): keep a reader who jumps past an open run's drawn rows where they jumped

The window redraws inside the scroll that moves it, and a restore still pending
from earlier work could run first and send the reader back to the row they left.
The reader's own scroll now points the anchor at their row from the window's
offsets before that redraw.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(native-chat): re-point the anchor on reader scrolls only while the run is windowed

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(native-chat): keep a hidden tool run's saved row from its box's reset offset

A hidden box resets its offset and may report that as a scroll or as the offset
at unmount. Scroll recording (the run's and the anchor hook's) and the hook's
unmount record now wait while the pane is hidden, so the row kept at hide time is
the one a returning reader lands on.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(native-chat): give an opened tool run sole ownership of its reader's place

The run and the shared scroll-anchor hook each decided when a saved row still owned
the box, and each local exclusion left another path for a stale restore or capture.
The run now keeps one row-and-offset place from the window's full measurement model,
admits a landing only on mount or show, lets every reader scroll retire pending
work first, records nothing while hidden, and takes a reveal before any landing.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(native-chat): confirm every tool-run landing correction and model the browser's scroll report in tests

A real change (size, row list, the held row's measurement) now grants a landing a
fresh, bounded confirmation budget, so a correction made after an earlier budget ran
out is still confirmed. A pending landing's own writes no longer re-arm following.
The reader harness delivers the scroll event a browser sends after an offset change.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* test(native-chat): keep the reveal-return case on one memory record and before the reveal's scroll report

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* test(native-chat): return the reader harness's scroll writes to their earlier behaviour (rig-stop ruling)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(native-chat): keep a revealed file's own row as the tool run's saved place

A reveal now records the card's row and offset from the page as the card aligns,
rather than reading the window's size model, which may still hold that row's
collapsed height. Remount tests report the landing's own scroll the way a browser
would; the pinned reveal case needs no report.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(native-chat): read an opened tool run's reader place from the rows actually drawn

The window's size model can hold a row's old height for a frame after it grows, so a
scroll report read through it could record a later row than the reader sees. Capture
now takes the row at the box top from the drawn rows' own geometry, found by a binary
search over the run's in-flow children, and uses the model only where the top lies in
an undrawn gap; a box with no geometry keeps the last place.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* test(native-chat): type the reader-position owner test's rows without assertions

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-11-12 23:06:24 -08:00
OrcaWinandOrcaWin a5f68e9d4f test: remove tab-switch mock projection suite (#41872)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-12 23:00:13 -08:00
Neil d2e2c788a5 refactor: organize WSL guest modules by concrete ownership (#41852)
* refactor: organize WSL guest modules by concrete ownership

* chore: link historical relay evidence to the moved command

* chore: prune retired guest test timing debt
2026-11-12 22:49:12 -08:00
OrcaWinandOrcaWin 1f4ab5b631 test: remove synthetic mailbox and admission pipeline cases (#41863)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-12 22:46:06 -08:00
OrcaWinandOrcaWin 9103a362db test: remove 13 low-value workspace teardown cases (#41851)
* test: prune teardown warning and mock projection cases

* test: prune redundant unstopped PTY projections

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-12 22:26:57 -08:00
Jinjing c68da3937f fix(ui): 36px rows and 13px text in agent launch menus (#41853)
* fix(ui): make agent launch menu rows 36px with 13px text

* fix(ui): keep muted empty-state styling inside the launch row
2026-11-12 22:24:26 -08:00
Kelvin Amoaba d073801990 fix(automations): release a run terminal the user closed on the next tick (#41846)
The retention sweep trusted a closed pane's still-resolvable handle, so a
closed run terminal kept its ids and blocked the automation-run cleanup
reason. runOwnHandle now also requires the PTY's exit verdict, and a slept
pane keeps its keys while the layout still binds the run's PTY.
2026-11-13 06:16:22 +00:00
OrcaWinandOrcaWin 1cd89abca4 test: remove five low-value runtime pipeline suites (#41844)
* test: remove runtime projection suites with low-value fixtures

* test: remove simulated mobile and worker observation pipelines

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-12 22:11:20 -08:00
OrcaWinandOrcaWin b0c0377664 test: remove subprocess and mobile navigation projections (#41842)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-12 21:49:42 -08:00
Jinjing 466937ab54 Improve browser performance (#41830) 2026-11-12 21:37:09 -08:00
Jinjing e9e4de1d27 fix(notifications): lift toasts and corner cards onto a shared notice surface (#41628)
* fix(notifications): lift toasts and corner cards onto a shared notice surface

* fix(notifications): keep corner-card shadows unclipped and match the StarNag toast

* fix(notifications): keep the stack's scrollbar on screen and its overflow off the status bar

* fix(notifications): collapse stack shadow room while scrolling and paint lower cards above upper shadows

* fix(notifications): pair re-pointed surfaces with popover foregrounds and keep close-hover border

* fix(notifications): keep notice text readable on plugin themes and catch card growth in a capped stack

* fix(notifications): track stack cards from mutation records and tidy test types

* fix(notifications): check painted notice colors and outline unfilled secondary buttons

* fix(notifications): paint app-theme notice colors as the exact hex measured, with a one-step margin

* fix(notifications): keep muted panels on the notice surface's polarity for app themes

* fix(notifications): keep toast descriptions and outline buttons readable on notice surfaces

The surface lift now also keeps the 80% toast description blend readable, so
mid-gray dark popovers no longer drop descriptions under 4.5:1. The notice scope
remaps --background with --foreground, so outline buttons keep a dark surface
under light popover text in light-base themes with dark popovers.
2026-11-13 05:36:13 +00:00
OrcaWinandOrcaWin 86cacb133c test: remove low-value runtime, daemon, and automation cases (#41839)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-12 21:34:24 -08:00
Neil 98bcd7943a refactor: organize text generation around concrete owners (#41838)
* refactor: organize text-generation modules around concrete owners

* refactor: combine imports from the defining CLI command owner
2026-11-12 21:30:08 -08:00
Jinwoo Hong 479f564829 perf(orchestration): rank empty-check hint candidates in one pass over the Run (#41779)
* perf(orchestration): rank empty-check hint candidates in one pass over the Run

* perf(orchestration): take the oldest candidate without spreading arguments
2026-11-13 00:18:52 -05:00
Kelvin Amoaba 255716e31d feat(cli): add orca workspace cleanup preview, run and report (#41831)
* feat(cli): add orca workspace cleanup preview, run and report

* fix(cli): sanitize cleanup output and label unknown host values

* fix(cli): sanitize run triggers in cleanup report

* refactor(cli): share keep-reason wording in cleanup output

* fix(cli): label automation-run and orchestration-worker cleanup reasons
2026-11-13 05:12:49 +00:00
OrcaWinandOrcaWin f5c9075f0e test: remove low-value provider and branch cleanup coverage (#41825)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-12 21:02:30 -08:00
OrcaWinandOrcaWin aa736b6650 test: remove narrow mobile and settings navigation samples (#41818)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-12 20:49:14 -08:00
Neil 2050d9fbc6 refactor: group source-control modules by operation ownership (#41812) 2026-11-12 20:41:35 -08:00
Neil 0f80eed95a perf(plugins): pause a plugin's automations in one batched write (#41787)
* perf(plugins): pause a plugin's automations in one batched write

* perf(plugins): limit the automation batch path to pause fields; test batch/single parity
2026-11-12 20:39:03 -08:00
OrcaWinandOrcaWin 038793de64 test: retire narrow runtime and navigation samples (#41813)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-12 20:36:16 -08:00
OrcaWinandOrcaWin f5ab621250 test: remove low-value mobile and source control suites (#41811)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-12 20:31:27 -08:00
Kelvin Amoaba 6484b7a211 feat(workspace-cleanup): remove finished automation-run and released worker workspaces when their rules are on (#41808) 2026-11-13 04:30:59 +00:00
Jinjing faf7c69ffa Revert "Chat New line: draw only when it helps, then fade once seen" (#41735) (#41804)
This reverts commit 6854ab5ae9.

Conflict resolution: native-chat-new-rows-marker.test.tsx (pre-existing) and
native-chat-new-rows-marker.journal.test.tsx (added by #41735) stay deleted, as
#41782 removed/trimmed them on main after #41735 landed.
2026-11-12 20:26:18 -08:00
OrcaWinandOrcaWin 57dbdf8713 test: remove narrow wakeup and worker output checks (#41807)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-12 20:21:00 -08:00
Neil c1364b6d77 test(github): stub the moved gh downloader in the job-log retention benchmark (#41790) 2026-11-12 20:18:22 -08:00
Neil 89bac6f400 fix(plugins): host API 1.7-1.9 release floors are 1.4.259 (#41789) 2026-11-12 20:18:10 -08:00
Neil f3c8ef86b8 perf(sidebar): skip Hidden projects host labels while collapsed (#41788) 2026-11-12 20:17:55 -08:00
Kelvin Amoaba 6514abb90c feat(workspace-cleanup): keep workspaces with unsaved edits from a paired desktop (#41785)
* feat(workspace-cleanup): keep workspaces a paired client has unsaved edits in

* fix(workspace-cleanup): keep each window's unsaved-editor report and send them in order
2026-11-13 04:09:18 +00:00
OrcaWinandOrcaWin 7b91228aa0 test: trim automation lifecycle and reply projection cases (#41801)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-12 20:07:54 -08:00
Neil cc29ae4820 refactor: organize provider modules by defining owner (#41772)
* refactor: organize provider modules by defining owner

* refactor: bind cleanup runner to provider owners
2026-11-12 20:04:13 -08:00
OrcaWinandOrcaWin 96bad75a6d test: remove narrow release and migration checks (#41792)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-12 19:57:21 -08:00
OrcaWinandOrcaWin ddf4aa8d74 test: trim worker release checks and remove precheck suites (#41796)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-12 19:53:48 -08:00
30fa6b4398 fix: explain merged workspace cleanup and keep visible reviews fresh (#41200)
* fix(github): keep the selected workspace's PR on its one-minute refresh

Follow-up reads inherited the priority of whatever entry ran last. A workspace
selected while its cached PR was still fresh never got a foreground entry, so
its follow-ups competed with every visible card for the shared list budget and
were read about every five minutes with 25 visible open PRs. Previously
selected workspaces kept priority 80 forever. Follow-ups now take foreground
priority only while their workspace is selected.

* feat(source-control): say when a merged workspace is safe to delete

Source Control's committed list is a merge-base diff against the base ref. A
squash or rebase merge copies the commits onto the base with new IDs, so the
list looks the same after the merge as before it. A notice now states whether
the merged review contains everything: HEAD is the review's head (or the
provider confirmed it is contained) and nothing is uncommitted.

* fix(sidebar): keep PR status visible on sleeping workspaces

The sleeping moon replaced the review glyph, hiding whether a sleeping
workspace's PR was open, failing or merged. Review status now keeps the lane;
the dimmed row already shows sleep and the accessible label names both.

Co-authored-by: Tobias Diez <code@tobiasdiez.com>
Co-authored-by: alpenshtokk <wawesandways@gmail.com>

* fix(source-control): wait for a git status read before judging a merged workspace

Before the first status read the change count is zero and HEAD may be stale,
so the notice could call a dirty workspace safe to delete. Use the HEAD from
the latest successful status read and say nothing until one completes.

* chore(i18n): ship the merged-review plural copy in the runtime English catalog

* fix: satisfy design-system, cast and flaky-test gates for the merged notice

Use the callout-important token instead of raw purple, let Button own its
type size, build the fixture worktree with the shared factory, pin the test
clock and give the long simulated-time tests a reason for their timeout.

* fix(github): align selected-refresh regression with feature ownership

* refactor(github): give refresh queue aliases their concrete owner

* fix(source-control): preserve cleanup warnings and reserve refresh fairness

* fix(source-control): describe missing merged-head proof as unverified

---------

Co-authored-by: Tobias Diez <code@tobiasdiez.com>
Co-authored-by: alpenshtokk <wawesandways@gmail.com>
2026-11-12 19:49:04 -08:00
Brennan Benson d8c802bf57 Name the terminal's Orca ID item Copy Orca Session ID, matching chat (#41725) 2026-11-12 19:42:21 -08:00
Brennan Benson a37ff2fa62 Show matching settings as a results list in Settings search (#40852)
* Show matching settings as a results list in the Settings sidebar

Typing in the Settings search now replaces the nav with a ranked list of
individual settings (pane title on the second line, matched text marked).
The first result is selected and previewed: its pane opens unfiltered,
scrolled to the setting with the target highlight. Arrow keys move and
preview, Enter or a click picks and keeps the query, Esc or the clear
button returns to the nav while leaving the shown pane open.

The sidebar query no longer filters page content. The Back to app row is
now 48px so its border lines up with the Settings header.

* Highlight settings search targets with a full-bleed bar and find unanchored rows

Matches in the results list are marked with semibold text (the jump palette's
HighlightedText) instead of a grey box. The landed-on row gets a tint from card
edge to card edge with a left bar that fades after ~3s, replacing the inset
grey block that sat off-center in the card padding. Integration provider rows
get anchors, and rows not wrapped in SearchableSetting are found by their
visible label.

* Fit the search highlight to each row's enclosing card

Settings cards pad differently (groups, plain sections, shadcn cards, the
Appearance accordion), so the highlight now measures the gap from the row to
its nearest card's inner edges instead of assuming one gutter. A group title
match highlights that group's card rather than the heading text.

* Give the settings target highlight a single owner

Components applied the highlight through SettingsTargetHighlightContext while the
page effect applied it to whatever element the jump scrolled to; when those
differed (Jira's provider row vs. its card shell) two highlights showed. The
effect now owns it alone, and the context, its provider and the macOS
Permissions prop are removed. Jira and Linear reuse their existing anchor ids.

* Use a plain fading tint for the settings target highlight

Drops the left bar; the tint still spans the enclosing card and fades after ~3s.

* Mark settings result titles with the ranking fold

The title highlight lowercased by hand and skipped titles whose length changed,
so İstanbul matching "stan" (or a query of İ) ranked but was never marked. Fold
per code point with the ranking's own fold and map offsets back to the title.

* Make settings search list-only until a pick and reveal collapsed targets

Typing now only changes the result rows: nothing is selected and the page does
not move until Enter or a click (arrows move the selection only). This removes
previews that discarded the Open in draft, re-ran repo hook checks, mounted a
pane per keystroke and drifted after deep links.

- Rank once on a deferred query, cap the list at 50 with a 'keep typing' hint,
  and skip rendering the normal nav while searching.
- A settings jump dispatches a reveal event from its target; Appearance sections,
  Advanced disclosures and the network/mobile collapsibles (now kept mounted)
  open themselves instead of reading the search query.
- Nested scrollers (Shortcuts) scroll the target into view; General sub-page
  results open their page; mirror recovery deep-links to the mirror field; a
  target that never mounts drops its pending jump; group-title matches use
  data-settings-group.

* Fix follow-ups from the settings search repair review

- Two more e2e specs pick a result with ArrowDown + Enter instead of relying on
  typing to navigate.
- After a jump reveals a growing section, re-scroll once if the row is still cut off.
- Hide 'No settings match' while the deferred ranking catches up.
- The reveal hook is a ref callback so disclosures that mount later still open.
- The Advanced disclosure fixture shows the real forced-open case (unsaved edits).

* Give every settings search result a reachable row

* Type the General sub-page anchors as a list instead of casting map entries

* Keep the reveal callback ref out of render

* Match the e2e shortcut labels to main's sentence-case names

* Highlight the result's card, not its section title or a bare label
2026-11-12 19:39:39 -08:00
Neil 25eba813d3 feat(markdown): open clicked URLs in Orca, middle-click in system browser, and show link menu on hover (#41767)
* feat(markdown): open clicked URLs in Orca, middle-click in system browser, and show link menu on hover

* fix(markdown): share click handling and dismiss stale link edits

* fix(markdown): respect disabled editors and browser availability
2026-11-12 19:38:26 -08:00
Brennan Benson e4fdb8db89 Attribute Git demand and make setup path discovery asynchronous (#41325)
* Attribute Git demand and resolve setup paths asynchronously

* Check detached attribution without requiring an exact span envelope

* Keep invalid setup repository fixtures inside disposable directories

* Retire setup runner synchronous launch allowance

* test: type the canonical Git executor mock import
2026-11-12 19:36:24 -08:00
OrcaWinandOrcaWin 82f90d9f07 test: remove narrow marker and orchestration checks (#41782)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-12 19:33:10 -08:00
Brennan Benson 681d19707c Drop the empty slot under the Permissions setting (#41734) 2026-11-12 19:28:09 -08:00
Brennan Benson 6968a60fb1 Keep Orca responsive during macOS permission helper cleanup (#41764)
* Keep Computer Use permission cleanup off Electron main

* Verify queued permission setup resumes after cleanup
2026-11-12 19:27:57 -08:00
Jinjing 571d29adf4 fix(mobile): open a linked workspace root from a chat link (#36078) 2026-11-12 19:26:30 -08:00
Jinjing 7922a4a0e4 Scroll combined diff panes with sideways wheel input (#21108) 2026-11-12 19:25:22 -08:00
Kelvin Amoaba 900d458c0c perf(workspace-cleanup): keep cleanup scans offline and about 4x faster (#41765)
Scan merge proofs run with lazy fetches and transports off, so partial
clones never download blobs; direct WSL reads forward those variables.
Base and coordinator refs resolve once per repo per scan, and the squash
search lists target commits once and only patch-ids commits that touch
the branch's exact file set.
2026-11-13 03:15:13 +00:00
Kelvin Amoaba c4d844d369 fix(remote): focus the new pane after a paired Cmd+D split (#41773)
The split-focus guard treated the replayed snapshot making the new leaf
active (its own focus intent) as the viewer moving away, so it dropped
the focus call whenever the host's layout push beat the split reply.
2026-11-13 03:12:34 +00:00
OrcaWinandOrcaWin 41e1083b08 test: remove narrow automation policy suites (#41777)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-12 19:12:15 -08:00
Kelvin Amoaba 1449339903 feat(workspace-cleanup): run cleanup rules automatically in the background on each host (#41760)
* feat(workspace-cleanup): run cleanup rules in the background on the owning host

* fix(workspace-cleanup): keep workspaces whose own orca.yaml has an archive script
2026-11-13 03:10:49 +00:00
Jinjing 6854ab5ae9 Chat New line: draw only when it helps, then fade once seen (#41735)
* feat(native-chat): draw the New line only when it helps, then fade it once seen

* fix(native-chat): adapt the New line port to public main (test helper, class-names, no notice field)

* fix(native-chat): a queued send that ran behind a turn with no reply drawn yet still draws the New line

* fix(native-chat): judge a running turn from the host's turn record, not row liveness, for the New line
2026-11-12 19:04:11 -08:00