Commit Graph
7785 Commits
Author SHA1 Message Date
Brennan Benson c2df7d7206 fix(mobile): preserve reconnect revision evidence 2026-08-01 08:50:18 -07:00
Brennan Benson e9926b7edd fix(mobile): preserve reconnect liveness evidence 2026-08-01 08:32:30 -07:00
Brennan Benson 62a32b6dd1 fix(mobile): close reconnect review races 2026-08-01 08:08:39 -07:00
Brennan Benson ebbb6c15c5 fix(mobile): fence reconnect lifecycle races 2026-08-01 07:42:09 -07:00
Brennan Benson 314f1f5f6b fix(mobile): close control liveness review gaps 2026-08-01 07:00:18 -07:00
Brennan Benson cfba845755 fix(mobile): tolerate reconnect auth retries 2026-08-01 06:23:26 -07:00
Brennan Benson 7752bfb8a9 fix(mobile): close final reconnect review gaps 2026-08-01 06:02:18 -07:00
Brennan Benson 357275ba56 fix(mobile): fence reconnect recovery lifecycles 2026-08-01 05:28:27 -07:00
Brennan Benson 0954f98504 fix(mobile): retain relay recovery on keychain errors 2026-08-01 04:50:37 -07:00
Brennan Benson e4813c8225 fix(mobile): fence reconnect lifecycle races 2026-08-01 04:21:36 -07:00
Brennan Benson 39dc249792 test(mobile): accept reconnect budget consumption 2026-08-01 03:48:33 -07:00
Brennan Benson f7f32c11b5 Merge remote-tracking branch 'origin/main' into brennanb2025/fix-10385-false-connected 2026-08-01 03:46:47 -07:00
Brennan Benson c047e8f88e fix(mobile): close reconnect review races 2026-08-01 03:46:37 -07:00
Neil 16c5526dfd fix(daemon): cover in-flight sleep in PAM watch (#11921)
* fix(daemon): rebaseline in-flight PAM suspension

* test(activity): await portal readiness commits
2026-08-01 03:35:34 -07:00
Neil 33c14bc716 fix(ssh): fall back to OpenSSH for FIDO2 keys (#11913)
Closes #11645
2026-08-01 03:27:42 -07:00
Neil 1f307afa6d fix(terminal): preserve follow output through streaming refocus (#11915) 2026-08-01 03:26:30 -07:00
Neil 76a2317bc0 fix(persistence): stop blocking backup rotation (#11916)
Use async profile probes and serialize the current-time due decision plus mutations under one async owner so sync flushes and detached writers cannot double-shift or miss the recovery interval. Add syscall, timer-liveness, parity, and held-I/O interleaving coverage.
2026-08-01 03:22:36 -07:00
Brennan Benson 7ee1310117 Merge remote-tracking branch 'origin/main' into brennanb2025/fix-10385-false-connected 2026-08-01 03:08:52 -07:00
Neil c79b859758 fix(browser): prevent window.close guest crashes (#11910)
* fix(browser): prevent window.close guest crashes

* fix(browser): guard close before inline scripts

* fix(browser): preserve explicit window close policy
2026-08-01 03:08:11 -07:00
Brennan Benson 403d9d45c0 Merge remote-tracking branch 'origin/main' into brennanb2025/fix-10385-false-connected 2026-08-01 03:07:31 -07:00
Brennan Benson 4e578fce25 fix(mobile): fence reconnect liveness races 2026-08-01 03:07:14 -07:00
Neil e531e796b2 fix(relay): chunk fs.changed notifications to fit the client frame capacity (#11917)
* fix(relay): chunk fs.changed notifications to fit the client frame capacity

emitRelayWatcherEvents published an entire watcher batch as one
fs.changed notification on the ordinary lane. A batch runs routinely
tens of times over the per-frame producer capacity (12,288 bytes against
a Node <=21 socket, 49,152 against Node >=22), and an over-capacity
frame there is not queued or trimmed -- notify() fails admission and
closes the client, tearing down every in-flight request on that
connection. Regressed in 5f7807497e (#11005).

The emitter now sizes chunks against the tightest capacity across
attached clients, measured in encoded bytes through the same envelope
admission measures, and preserves event order. A single event too large
for an empty envelope cannot be chunked, so the ordinary-lane close
remains its backstop: a silent drop on this lane has no resync contract.

* chore(relay): shorten watcher chunking comments
2026-08-01 02:56:52 -07:00
Neil 3a70078ab9 fix(daemon): prevent PAM rejection restart cascades (#11911)
* fix(daemon): back off transient PAM rejection retirement

* fix(daemon): rebaseline PAM evidence after sleep
2026-08-01 02:36:49 -07:00
Brennan Benson 693c43a4a6 fix(mobile): probe timed-out RPCs before reconnecting 2026-08-01 02:21:13 -07:00
Brennan Benson 6e5d06b305 Merge remote-tracking branch 'origin/main' into brennanb2025/fix-10385-false-connected 2026-08-01 01:49:27 -07:00
Brennan Benson 81b479a5f7 Merge remote-tracking branch 'origin/main' into brennanb2025/fix-10385-false-connected 2026-08-01 01:48:28 -07:00
Neil edb5607e28 ci: block new root-level entries (#11903)
* ci: guard repository root additions

* fix: clear existing type-aware lint warnings
2026-08-01 01:48:24 -07:00
Brennan Benson 328b215f73 chore(bench): dedupe fixture imports 2026-08-01 01:48:07 -07:00
Brennan Benson d3f23618e4 fix(mobile): keep reconnect profiles current 2026-08-01 01:47:59 -07:00
Brennan Benson 169ec8f08d fix(mobile): refresh folder workspace catalog (#11767) 2026-08-01 01:42:27 -07:00
Brennan Benson c2e3d13efe fix(mobile): focus Kimi terminal input after touch (#11865)
* fix(mobile): focus terminal input after TUI touch

* fix(mobile): defer terminal focus after WebView taps

* fix(mobile): reset deferred terminal focus on route blur
2026-08-01 01:40:55 -07:00
Brennan Benson 0850bba8a0 fix(mobile): re-probe stalled relay control plane 2026-08-01 01:16:14 -07:00
Brennan Benson 75e0dae045 Merge remote-tracking branch 'origin/main' into brennanb2025/fix-10385-false-connected 2026-08-01 00:48:15 -07:00
Neil 340faaa839 fix(workspaces): use the emojibase shortcode preset for emoji suggestions (#11888)
Swap the worktree-name emoji picker from emojibase-data's `github` shortcode preset to `emojibase`, which carries both `flag_kr` and `south_korea` style flag names, and drop the hand-maintained `kr` entry that patched around the gap. Filter skin-tone aliases so they neither crowd the suggestion list nor clobber base-emoji branch names.

Search now matches anywhere in the shortcode, ranked exact > prefix > word-start > substring, so `:korea` surfaces both Koreas.

Emoji-derived branch names now prefer spelled-out aliases: flags use country names (japan, germany, south-korea) and cryptic stubs are skipped (thumbsdown over no, victory over v).
2026-08-01 00:40:47 -07:00
Jinjing 96c954f3be chore: remove force-added design docs from docs/ (#11891)
Keep only the durable docs already allowlisted for tracking
(STYLEGUIDE, assets, localized readme, and reference compatibility
guides). Drop feature design notes, plans, and repro artifacts that
were force-added past the existing docs ignore rules.
2026-08-01 00:33:20 -07:00
Brennan Benson fa8106d908 Merge remote-tracking branch 'origin/main' into brennanb2025/fix-10385-false-connected 2026-08-01 00:28:04 -07:00
Jinjing ad1e58d966 chore: declutter top-level repo layout (#11890)
Remove one-off incident docs and committed test-results noise, move
dev/repro/bench tools under tests/tools, and relocate i18next config
into config/ so the GitHub root scrolls to the description faster.
2026-08-01 00:25:35 -07:00
Brennan Benson 6629ba6655 fix(mobile): suppress cancelled reconnect failures 2026-08-01 00:15:56 -07:00
Brennan Benson 304a40aab8 Merge remote-tracking branch 'origin/main' into brennanb2025/fix-10385-false-connected 2026-08-01 00:01:35 -07:00
Brennan Benson 1195d5a214 fix(mobile): keep disconnect authoritative 2026-08-01 00:00:30 -07:00
Neil 278a4b28c8 fix(terminal): close async capability review gaps (#11887) 2026-08-01 00:00:12 -07:00
Brennan Benson efa1cb35d2 fix(mobile): honor reconnect profile updates 2026-07-31 23:41:23 -07:00
OrcaWinandNeil c8a22ad0a6 fix(terminal): make snapshot capability lookup async (#11881)
Co-authored-by: Neil <4138956+nwparker@users.noreply.github.com>
2026-07-31 23:38:26 -07:00
Brennan Benson 895cc500d5 Merge remote-tracking branch 'origin/main' into brennanb2025/fix-10385-false-connected 2026-07-31 23:36:13 -07:00
Brennan Benson bc476748a1 fix(mobile): coalesce force reconnect requests 2026-07-31 23:17:38 -07:00
NeilandBrennan Benson 6e7ceafd07 perf(mobile): avoid unchanged worktree catalog payloads (#11735)
* perf(mobile): avoid unchanged worktree catalog payloads

* fix(mobile): isolate catalog snapshots by limit

* review: reassert host truth on unchanged polls; content-address snapshots

Client — the `changed` gate meant an unchanged poll skipped setWorktrees /
setLastKnownWorktrees / setCachedWorktrees, so optimistic local edits
(togglePin, handleDeleteWorktree's failure re-add) and the #8498 cache guard
were no longer repaired while the host catalog was stable. The gate bought
nothing: setCachedWorktrees is an in-memory Map write and areWorktreeListsEqual
already ran every poll, so the steady state still short-circuits on array
identity. All wire savings are unaffected. admit() now just returns the
confirmed rows and HostScreen applies them exactly as it did pre-PR.

Also on the client:
- a stale response from a superseded client/host no longer clears the token the
  current client/host just established
- discriminate on `worktrees` rather than on `'unchanged' in response`, so a
  future catalog field named `unchanged` can't reclassify a full response
- useRef over useMemo for the snapshot client; React may discard memoized values
- hoist WORKTREE_PS_FULL_LIMIT so the truncates-at-200 rationale travels with it

Host — replace the per-limit snapshot cache with a content-addressed id (ETag
semantics). Ownership lives in the id, so concurrent clients, differing limits,
and runtime restarts are correct by construction; this drops the LRU, the
eviction policy, the per-runtime WeakMap, and the retention of up to 8 full
catalogs. The remaining cache is a pure memo: because ids derive from content,
dropping or thrashing it costs CPU and nothing else. Keeping the memo also
keeps the measured steady-state cost — hashing every poll instead measured
2.24ms vs 0.75ms for the compare on a 310KB catalog.

Verified: mobile 2784 passed / 3 skipped, src/main/runtime/rpc 1064 passed,
node + mobile typechecks, oxlint, oxfmt, max-lines ratchet.

* fix(runtime): isolate catalog snapshot memo

---------

Co-authored-by: Brennan Benson <79079362+brennanb2025@users.noreply.github.com>
2026-07-31 23:12:13 -07:00
Brennan Benson e4b7d9cc7d Merge origin/main into brennanb2025/fix-10385-false-connected 2026-07-31 22:56:47 -07:00
Brennan Benson 4c03cdff72 fix(mobile): mount host before opening tasks (#11853) 2026-07-31 20:46:51 -07:00
Brennan Benson ed00ab0f34 fix(ssh): restore relay ownership after app restart (#11860) 2026-07-31 20:45:52 -07:00
Jinwoo HongandOrcaWin c09a2ee251 fix(mobile): open resume workspace route reliably (#11876)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-07-31 20:42:05 -07:00