Commit Graph
559 Commits
Author SHA1 Message Date
Jinwoo-H 3f1f58e30f fix(skills): require fresh bundle staging 2026-08-12 07:54:31 -04:00
Jinwoo-H 15011d128e docs(skills): record physical staging evidence 2026-08-12 07:47:56 -04:00
Jinwoo-H dcc8e19069 docs(skills): record finalization load gate 2026-08-12 06:33:34 -04:00
Jinwoo-H 1a7272aa67 docs(skills): record recovery staging gate 2026-08-12 05:03:59 -04:00
Jinwoo-H 50050bd058 docs(skills): close bearer rollout evidence 2026-08-12 01:16:27 -04:00
Jinwoo-H 56e786fffc docs(skills): record bearer staging rollout 2026-08-12 01:10:47 -04:00
Jinwoo-H 5a05992e26 feat(skills): add unlisted share management 2026-08-12 00:26:00 -04:00
Jinwoo-H 6cff2aa507 docs(skills): keep bundle shares unlisted 2026-08-11 23:27:29 -04:00
Jinwoo-H 5273f527d7 docs(skills): record bundle management and WSL validation 2026-08-11 23:21:42 -04:00
Jinwoo-H e4ff69ccba feat(skills): add private skill bundle sharing 2026-08-11 23:14:25 -04:00
E2E Test 41a7b45c4e docs(skills): record authenticated staging smoke 2026-08-11 17:24:41 -04:00
Jinwoo-H 0bec0a74f6 docs(skills): record staging rollout evidence 2026-08-11 15:59:46 -04:00
Jinwoo-H a07c78f8a7 docs(skills): record cloud main verification 2026-08-11 13:35:54 -04:00
Jinwoo-H 148c3c84dd docs(skills): record merged cloud baseline 2026-08-11 13:33:26 -04:00
Jinwoo-H 46e412d40e docs(skills): record cloud rollout hardening 2026-08-11 13:30:28 -04:00
Jinwoo-H 6ba6107dba docs(skills): record resilience validation 2026-08-11 13:13:37 -04:00
Jinwoo-H 6657b8eaf1 docs(skills): record resumable tenant-isolated sharing 2026-08-11 12:38:54 -04:00
Jinwoo-H b832f45e6f docs(skills): record paired runtime evidence 2026-08-11 12:18:43 -04:00
Jinwoo-H 9e79a325bb test(skills): cover SSH installation journey 2026-08-11 12:08:39 -04:00
Jinwoo-H af5f8d1fe2 docs(skills): record WSL package golden 2026-08-11 11:53:34 -04:00
Jinwoo-H 92c8c6a4c6 docs(skills): record Linux package evidence 2026-08-11 11:49:45 -04:00
Jinwoo-H 55498588b6 docs(skills): record portable archive evidence 2026-08-11 11:42:24 -04:00
Jinwoo-H 37113c2626 docs(skills): record WSL semantics evidence 2026-08-11 11:30:41 -04:00
Jinwoo-H 0aa8c2237c docs(skills): record copy drift evidence 2026-08-11 11:19:35 -04:00
Jinwoo-H 34efe8cc9d docs(skills): record Windows junction evidence 2026-08-11 11:18:03 -04:00
Jinwoo-H f1fc8f7242 docs(skills): record Windows contention evidence 2026-08-11 11:16:26 -04:00
Jinwoo-H c456fdd68e docs(skills): close adversarial ingress gates 2026-08-11 11:05:30 -04:00
Jinwoo-H 6fd37cbcfa docs(skills): record cloud observability evidence 2026-08-11 11:03:08 -04:00
Jinwoo-H 38202d3c1b security(skills): harden private staging 2026-08-11 10:54:51 -04:00
Jinwoo-H ea873c6134 docs(skills): record real Windows workspaces 2026-08-11 10:50:36 -04:00
Jinwoo-H 42de7a0058 feat(skills): bound install diagnostics 2026-08-11 10:44:23 -04:00
Jinwoo-H 5cc9b99011 docs(skills): record Windows long-path gate 2026-08-11 10:37:58 -04:00
Jinwoo-H f21c2866f7 docs(skills): record current Windows validation 2026-08-11 10:35:19 -04:00
Jinwoo-H 9bf732de49 docs(skills): refresh pushed baseline 2026-08-11 10:32:25 -04:00
Jinwoo-H 980e558850 docs(skills): record boundary and host evidence 2026-08-11 10:32:13 -04:00
Jinwoo-H 83d26e09fd docs(skills): refresh implementation evidence 2026-08-11 10:15:11 -04:00
Jinwoo-H 8963bb3bef feat(skills): harden shared installation lifecycle 2026-08-11 10:13:40 -04:00
Jinwoo-H c8e5d0d5c4 docs(skills): record implementation validation 2026-08-11 09:39:14 -04:00
Jinwoo-H 4eeb30ddc8 feat(skills): harden sharing and install lifecycle 2026-08-11 09:38:51 -04:00
Jinwoo-H 9eeb388af5 docs: reconcile skill sharing implementation checklist 2026-08-11 08:41:46 -04:00
Jinwoo-H ff6674e1f5 feat: add private skill sharing and installer 2026-08-11 08:16:39 -04:00
Brennan Benson 915ee50cc2 fix(ui): rename Caffeinate Auto mode to Agent (#13751)
* fix(ui): rename caffeinate auto mode to agent

* fix(ui): center caffeinate radio indicator

* fix(ui): center caffeinate indicator within option
2026-08-10 23:50:41 -07:00
Brennan Benson 4dcb410982 docs: remove restored shell validation report (#13759) 2026-08-10 23:49:38 -07:00
Brennan Benson 7250fde148 fix(codex): repair hook trust before restored shells reconnect (#13745)
* fix(codex): reconcile hooks for restored shells

* docs: move restored shell validation report

* perf(codex): gate retained pane inventory
2026-08-10 23:47:32 -07:00
Neil 1979f5a3e3 refactor(linear): remove replaced team combobox (#13506) 2026-08-10 20:25:16 -07:00
github-actions[bot] 1c1107fc9b Update README downloads badge 2026-08-11 00:33:35 +00:00
Brennan Benson d50adec2d2 feat(ai-vault): isolate scanning from terminal workloads (#13411)
* feat(ai-vault): isolate scanning in service processes

* fix(ai-vault): retire idle service processes

* fix(ai-vault): discard unverified cache processes

* fix(ai-vault): clear relay sidecar cancel watchdog on acknowledgement

A cancelled relay call is settled before its 2s cancel watchdog is armed, so the acknowledgement path bailed out of settle() before clearing the timer. The watchdog then faulted a healthy sidecar two seconds after every aborted scan, killing whatever request had since become active.

* fix(ai-vault): clear the pending restart before scheduling another

recordFault overwrote this.timer, stranding a restart that dispose() could no longer cancel.

* refactor(ai-vault): drop the orphaned first-prompt IPC wrapper

session-first-user-prompt-handler.ts now owns this entry point and routes through the service; the copy left in the read module had no callers.

* fix(ai-vault): retry a faulted cold start before surfacing it

A slow first start surfaced a raw 'did not become ready' error to the caller even though the supervisor was already respawning. Requeue an unsent call once onto the scheduled respawn instead.

Also stop arming the cancellation watchdog for a call the child never received: no acknowledgement is coming, so it killed a healthy service and stalled the lane.

Invalidation bookkeeping and ready-waiter construction move to the state module to stay under the max-lines cap.

* fix(ai-vault): give relay title reads their own lane

Before this branch the relay read title files directly, concurrently with scans. Routing both through one sidecar lane put title resolution behind a list scan that may run up to 130s, so SSH tab titles could lag minutes behind.

Split cache and interactive lanes in both the relay client and the sidecar entry, mirroring the desktop service.

Also: clear the ready deadline on fault, so a sidecar that dies before ready cannot fault its healthy replacement five seconds later; retry an unsent call once across a respawn; and skip the cancellation watchdog for a call the sidecar never received.

Restart/circuit bookkeeping moves to its own module, mirroring the desktop policy, to stay under the max-lines cap.

* fix(ai-vault): degrade relay title resolution on sidecar failure

listSessions already returns a host issue when the sidecar is unavailable; titles propagated the raw RPC error instead. Return no titles so callers fall back to preview text, and keep cancellation propagating.

* fix(ai-vault): scrub the service child environment

The children are forked with a 384 MiB heap cap and no loader, but both
spawn sites handed them the full parent environment, so an exported
NODE_OPTIONS silently raised the cap or --require'd code into them.

Allowlist both, following the plugin worker. The desktop child keeps the
eleven agent-root overrides it resolves its own roots from; the relay
sidecar takes remoteHome and hostPlatform from its init message and so
needs none of them. Both children share one priority module while they
share this one.

* fix(ai-vault): soft-disable relay vault when the service is missing

A missing service threw out of the constructor, so a Vault wiring bug
would abort relay startup and take every PTY on the host with it. The
unsupported-platform branch three lines above already treats a Vault
failure as a soft disable; do the same here.

Threading the service through the two handlers instead of a field also
retires the definite-assignment assertion the throw was propping up.

* fix(ai-vault): drain consumed cache invalidations

invalidatedPaths was re-applied in every request's finally and never
drained, so once N paths had been invalidated every later request paid N
evictions for the life of the process; the 4096 cap only bounded how bad
that got.

The re-apply exists to cover a read that overlapped the invalidation, so
drain once nothing is executing. Clearing unconditionally would drop the
re-apply for a request still running on the other lane.

* fix(ai-vault): keep a busy child through slow invalidation acks

invalidate() reused the 5s ready budget as its acknowledgement deadline
and killed the child on expiry, so a delete issued during a large scan
could kill a healthy process mid-scan and burn a slot toward the restart
circuit.

Fault only when nothing is executing. Fork IPC ordering already puts the
invalidation ahead of any later request, so a busy child owes no ack
here, and the 130s/15s request deadlines still catch a wedged one.

The start-retry predicate moves to the state module to stay under the
line cap, matching the shape the relay client already uses.

* fix(ai-vault): report a failed local scan as a host issue

A local-scope scan let its error escape to the renderer, which paints it
over the session list. Service supervision now produces those errors, so
"AI Vault service restart circuit is open." replaced the list.

Route local scope through the degradation the all-hosts leg and every SSH
leg already use, so it lands as a retryable host issue row instead. Same
result shape either way, so no IPC or wire contract changes.

* test(ai-vault): cover the relay restart circuit transitions

The relay policy shipped without tests. Pin both circuit edges, the
aging-out case, the forced-refresh reopen the relay has and the desktop
does not, and the backoff schedule.

* fix(ai-vault): keep the OpenCode roots in the service child env

The scrubbed allowlist dropped XDG_DATA_HOME and OPENCODE_DB, which the child
reads to locate the OpenCode store and database. The pre-PR worker thread
inherited them, so a user who sets either lost every OpenCode session.

* test(ai-vault): anchor the service spawn env assertion
2026-08-10 15:52:59 -07:00
Neil 6cdd019367 docs(mobile): keep Android links on published release (#13565) 2026-08-10 02:22:35 -07:00
Neil bbcf89e221 chore(mobile): prepare 0.0.43 releases (#13549) 2026-08-10 01:49:33 -07:00
Jinjing 8331fe5995 docs: update GitHub star history chart (#13380)
Refresh README star history graphic to the latest ~40K stars curve (through August).
2026-08-09 15:17:11 -07:00