lint-staged 16.4.0 walks the whole worktree several times before any
linter runs. On a cold stat cache that made small commits take over a
minute. Extend the existing lint-staged patch:
- getDeletedFiles: replace the serial `ls-files --deleted` with
`diff-files -D` (parallel preload, fsmonitor bypassed) plus
assume-unchanged entries, filtered by the same lstat rule, so the
deleted-file contract is unchanged.
- getUnstagedFiles: `status --untracked-files=no`; the `??` lines were
already discarded.
- config discovery: list tracked config files only. A nested config
must be tracked or staged to apply; untracked configs at the repo
root are still found.
Run lint-staged directly from the hook; husky already puts
node_modules/.bin on PATH, so `pnpm exec` only added startup time.
* 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
* test: remove low-value automation and shared suites
* test: retire stale gate references and stabilize retained fixture date
---------
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
* fix(mac): give Orca's main executable its own Mach-O UUID
macOS Local Network privacy identifies an app by its main executable's
UUID. The packaged executable is stock Electron's, so it shares that UUID
with every other app on the same Electron version and macOS can apply
another app's Local Network decision to Orca. Rewrite LC_UUID in every
slice to a value derived from the app id, executable name and CPU type,
before signing.
* fix(mac): re-sign rewritten executables ad hoc, cover the terminal host, assert UUIDs at release
Rewriting LC_UUID breaks Electron's linker ad hoc signature, and arm64
kills unsigned code, so identity-less local builds (where app signing is
skipped) produced an Orca.app that died at launch. Re-sign the rewritten
executable ad hoc, outside the bundle so codesign does not treat it as
the bundle; real signing replaces it later.
The terminal host's executable is a stock Node binary whose UUID is
shared by every copy of that Node release, so give it its own stable
UUID the same way. Packaging and release verification now fail when a
shipped executable does not carry its expected UUID.
* fix(mac): scope the executable UUID rewrite to the main app
The terminal host gets a separate design; leave it unchanged here.
* fix(speech): spell near misses of dictionary terms the term's way
* fix(speech): ship the common-word list as a 2% Bloom filter to fit the phone page budget