Commit Graph
10288 Commits
Author SHA1 Message Date
Neil 72ce0e0412 test: repeat instrumented worktree creation to classify context loss 2026-09-06 06:01:32 -07:00
Neil 198fa8e4d6 test: diagnose worktree creation stages and renderer navigation 2026-09-06 01:09:48 -07:00
Neil e585ee965d test: exercise document visibility WebGL screenshots in rendered CI 2026-09-06 00:39:21 -07:00
Neil 4b2c4592f9 test: exercise document visibility WebGL screenshots in rendered CI 2026-09-06 00:27:37 -07:00
Neil 04842b0cff test: validate combined focus corrections across headful specs 2026-09-05 23:56:57 -07:00
Neil bf936aefa5 test: audit combined headless suite after publication and sidebar fixes 2026-09-05 22:30:40 -07:00
Neil e6517f6e21 test: validate combined deflake changes with dialog cleanup 2026-09-05 21:17:12 -07:00
Neil a8c0c6ba6b test: audit combined application fixes with software WebGL and window manager 2026-09-05 21:10:26 -07:00
Neil eebedf206f fix(tests): provide a window manager for Linux Electron CI (#19007) 2026-09-05 21:08:18 -07:00
Neil 09ee4c1b18 fix(mobile): stop host streams after relay subscription cancellation (#18926)
* fix(mobile): release cancelled relay stream subscriptions

* fix(mobile): keep shared-token relay siblings live on unsubscribe

nativeChat and terminal unsubscribe tokens are deterministic per view target,
and the host evicts on duplicate registration. Skip the unsubscribe RPC while a
live sibling on the same connection still owns that token.
2026-09-05 21:07:46 -07:00
Neil 97526f65ad fix(tests): stabilize divider viewport and pointer-capture event ordering (#19004)
* fix(tests): size divider capture-loss viewport deterministically

* test: advance pointer events before awaiting capture loss
2026-09-05 20:59:33 -07:00
Neil 64374d5dff perf(cli): skip impossible typo distance comparisons (#18977) 2026-09-05 20:04:26 -07:00
Neil 37427bfd1a perf: remember equivalent session tab source identities (#18976) 2026-09-05 20:04:21 -07:00
Neil 78e3721c23 perf(palette): reuse allowed quality arrays during matching (#18966) 2026-09-05 20:04:16 -07:00
Neil 8ed81ceb8d perf(tabs): index saved tab order during hydration repair (#18964) 2026-09-05 20:04:11 -07:00
Neil 0a573ceac8 perf(browser): reuse decoded single-chunk upload buffers (#18960) 2026-09-05 20:04:07 -07:00
Neil 5cc432eead perf(ssh): reuse streamed response idle timers (#18956) 2026-09-05 20:04:03 -07:00
Neil 56626e7daa perf(ssh): reuse and release relay startup buffers (#18953)
* perf(ssh): reuse the searched relay startup prefix

* perf(ssh): release startup banners after relay readiness
2026-09-05 20:03:58 -07:00
Neil 445c1aeaaf perf(speech): reuse the model download idle timer (#18945) 2026-09-05 20:03:53 -07:00
Neil d969af9ecc perf(jira): preserve replacement attachment download singleflight (#18944) 2026-09-05 20:03:48 -07:00
Neil 992360f121 perf(mobile): cancel direct probes when their owner stops (#18940)
* perf(mobile): cancel direct probes when their owner stops

* fix(mobile): fence direct migration after supervisor stop
2026-09-05 20:03:42 -07:00
Neil bf073b833e perf(skills): skip symlink probes beyond discovery depth (#18937) 2026-09-05 20:03:37 -07:00
Neil 6f28e019b5 perf(hooks): use native reverse search for transcript lines (#18936) 2026-09-05 20:03:33 -07:00
Neil d1e62419b6 perf(watcher): stop admitting stats after batch cancellation (#18931) 2026-09-05 20:03:28 -07:00
Neil 9b76ff9217 perf(explorer): avoid redundant dotfile path filtering (#18929) 2026-09-05 20:03:24 -07:00
Neil fb7b75d55d perf(cli): skip feature formatters during help and error startup (#18923)
* perf(cli): load error reporting without feature formatters

* test(cli): follow extracted error reporter in import guard

* chore(cli): track cli-error.ts in deferral equivalence baseline

The equivalence script restores TOUCHED files from the baseline rev to
rebuild the pre-deferral CLI. reportCliError/formatCliError moved from
format.ts into cli-error.ts, so the baseline arm must also drop
cli-error.ts (absent at older revs) or the old tree would still compile
against the new module.
2026-09-05 20:03:19 -07:00
Neil 388e9fb776 perf: avoid rescanning emitted source in analysis guards (#18920) 2026-09-05 20:03:14 -07:00
Neil 4e8e14424d perf: avoid splitting every path during file autocomplete (#18919) 2026-09-05 20:03:08 -07:00
Neil 295684dc6d perf: skip unrelated shared symlink probes during Git status (#18918) 2026-09-05 20:03:02 -07:00
Neil 4204bdf717 perf: avoid repeated Quick Open exclusion string allocations (#18916) 2026-09-05 20:02:57 -07:00
Neil e9d9d42ccc perf: find mobile Markdown placeholder prefixes in one scan (#18914)
* perf: find mobile Markdown placeholder prefixes in one scan

* style: format mobile Markdown benchmark guard

* docs: explain collision-free Markdown prefix length
2026-09-05 20:02:53 -07:00
Neil a07d8fe19c perf: avoid file-to-file scans when selecting deletion roots (#18913) 2026-09-05 20:02:48 -07:00
Neil 7b44f3c0e3 perf: decode fragmented CLI replies without repeated scans (#18909)
* perf: decode fragmented CLI replies without rescanning accumulated text

* bench: require an explicit CLI framing baseline
2026-09-05 20:02:44 -07:00
Neil b55e0cffca perf(editor): reuse live Markdown search matches across unrelated renders (#18903) 2026-09-05 20:02:39 -07:00
Neil 5a33e2acb0 perf(editor): reuse Markdown source blocks while positioning review notes (#18895) 2026-09-05 20:02:34 -07:00
Neil 926f3ff585 perf(browser): assemble fragmented tunnel frames once (#18893) 2026-09-05 20:02:30 -07:00
Neil bf87b1290f perf(repos): avoid quadratic icon source scans (#18892)
* perf(repos): avoid quadratic icon source scans

* perf: avoid repeated malformed HTML icon scans

* bench: balance icon parser timing samples
2026-09-05 20:02:25 -07:00
Neil 1c41d59203 perf(relay): drain fragmented frame buffers in linear time (#18891)
* perf(relay): drain fragmented frame buffers in linear time

* style: follow block-body lint in relay buffer checks
2026-09-05 20:02:20 -07:00
Neil 712cf1facb test: synchronize large repository recovery with Retry request (#18999) 2026-09-05 19:57:29 -07:00
Neil bedbe5997b test: match explorer filenames independently of git badges (#18997) 2026-09-05 19:45:42 -07:00
Neil 681119dc05 test: isolate window mocks from inherited launch flags (#18989)
* test: isolate mocked window activation from inherited launch flags

* Preserve background window regressions added on main
2026-09-05 19:33:47 -07:00
Neil fd10758eae ci: expose existing E2E spec selection for manual dispatch (#18987) 2026-09-05 19:13:55 -07:00
Brennan BensonandMerge Sim 84432d3aa1 fix(native-chat): repair a structured chat tab permanently fenced by an inherited publication epoch (#18906)
* fix(native-chat): repair a structured tab fenced out by a returning publisher

A publication epoch is retired whenever another publisher takes over a worktree, and a
retired epoch is then rejected forever. But a live publisher can return after transient
interlopers - a `removed:` retraction, then a headless rebuild whose version restarts at
1 - and the structured tab publish inherits the worktree's existing epoch rather than
minting one, so it arrives under the blacklisted epoch and is dropped. The chat tab never
reaches the tab bar.

The fence is right to reject the frame: it cannot tell a returning publisher apart from a
delayed frame queued by a dead generation, whose version can outrank the live cursor. So
the drop is no longer final - it schedules one bounded, debounced authoritative
`session.tabs.listAll`, and only that census may revive an epoch, and only the one it
names current. Subscription frames stay fenced exactly as before.

* fix(native-chat): decay the structured tab repair cap and prune its state

The attempt cap latched: three transient RPC failures left `exhausted` set for the
renderer's lifetime, permanently hiding a chat tab behind a single console warning. It
now decays, so a worktree that has been quiet for a minute gets its full budget back.

The repair map was also missing from the sweep that drops publisher cursors for vanished
worktrees, leaking an entry per deleted worktree. Pruning it there required inverting the
repair lane's dependency on the inventory refresh, which is now injected.

---------

Co-authored-by: Merge Sim <sim@local>
2026-09-05 18:45:34 -07:00
Neil 6d691a4c04 test: bound release checkout lock fixtures and gate delayed imports (#18981) 2026-09-05 18:43:36 -07:00
Neil e7dc9b6099 test: honor background launch in paired client window helpers (#18978) 2026-09-05 18:41:24 -07:00
Neil ef3f507903 ci: verify release ref trust and preserve case twins during checkout (#18980) 2026-09-05 18:38:45 -07:00
Neil 6031c19e9f ci: reduce dependency, checkout, and test deadline overhead (#18968)
* ci: reduce dependency, checkout, and test deadline overhead

* ci: avoid generic E2E jobs for native-only IME changes
2026-09-05 18:20:12 -07:00
Neil d7722a698c test: drain project menu focus restoration before teardown (#18971) 2026-09-05 18:09:53 -07:00
github-actions[bot] 75d4add344 Update README downloads badge 2026-09-06 01:05:38 +00:00
Neil b852aa74a6 fix(ci): store vetted refs in a reftable so case-twin branches don't fail the fetch (#18970)
The adhoc mac and dev-channel Windows builds vet the requested ref by
mirroring every branch and tag of this repo into a scratch bare repo and
proving the commit is reachable. Both runner disks are case-insensitive,
and the repo now has two branches differing only in casing, so the files
backend refuses the fetch outright — the whole job dies before checkout.

reftable keys refs in a table rather than as file paths, so both refs
store and every ref stays in the reachability set.
2026-09-05 18:03:01 -07:00