Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
0689055
docs(familiar): design roster-driven companion
BunsDev Jul 30, 2026
0dff2f2
docs(familiar): add implementation plan
BunsDev Jul 30, 2026
9e1c640
feat(familiar): expose daemon roster
BunsDev Jul 30, 2026
6e577b5
feat(familiar): pin on-device session identity
BunsDev Jul 30, 2026
ba311f7
test(familiar): exercise fork rollback
BunsDev Jul 30, 2026
4b48e8a
fix(familiar): serialize session identity lifecycle
BunsDev Jul 30, 2026
6a15817
fix(familiar): make session identity lifecycle atomic
BunsDev Jul 30, 2026
dfa54e0
fix(familiar): clean partial fork staging
BunsDev Jul 30, 2026
ec99f19
fix(familiar): quarantine incomplete forks
BunsDev Jul 30, 2026
9ed4435
fix(familiar): harden session metadata durability
BunsDev Jul 30, 2026
980486b
fix(familiar): validate indexed session ids
BunsDev Jul 30, 2026
33789a4
fix(familiar): roll back failed sidecar sync
BunsDev Jul 30, 2026
6a752ac
feat(familiar): persist profile selections
BunsDev Jul 30, 2026
e00067c
fix(chat): serialize async session creation
BunsDev Jul 30, 2026
dfab1ad
feat(familiar): refresh daemon roster safely
BunsDev Jul 30, 2026
547f4ab
fix(familiar): preserve cached roster failures
BunsDev Jul 30, 2026
8b257da
feat(familiar): bind companion session identity
BunsDev Jul 30, 2026
1be2f92
feat(familiar): add chat identity picker
BunsDev Jul 30, 2026
6d0acd2
fix(familiar): keep active identity labels honest
BunsDev Jul 30, 2026
58aee46
fix(familiar): separate active and next identity
BunsDev Jul 30, 2026
899b25b
fix(familiar): synchronize Spotlight resume profile
BunsDev Jul 30, 2026
cf96fe3
fix(familiar): refresh picker context coherently
BunsDev Jul 30, 2026
4bf8240
fix(familiar): recover cancelled chat context
BunsDev Jul 30, 2026
9f657a9
fix(familiar): close chat identity state gaps
BunsDev Jul 30, 2026
3051017
fix(companion): restore cancelled gate availability
BunsDev Jul 30, 2026
89b502d
fix(companion): recover initial availability cancellation
BunsDev Jul 30, 2026
a581b6d
fix(chat): enforce single session writer
BunsDev Jul 30, 2026
f4ed00a
fix(sessions): reject unsafe storage symlinks
BunsDev Jul 30, 2026
574028e
fix(sessions): normalize storage root checks
BunsDev Jul 30, 2026
e621526
fix(chat): serialize same-session resume
BunsDev Jul 30, 2026
198b66b
fix(companion): fence cancelled session launches
BunsDev Jul 30, 2026
9502dcd
fix(companion): serialize pending cleanup
BunsDev Jul 30, 2026
d830aab
fix(companion): recover cancelled polling retry
BunsDev Jul 30, 2026
35e0d49
fix(sessions): reject intermediate root symlinks
BunsDev Jul 30, 2026
71df89a
fix(sessions): recover incomplete deletions
BunsDev Jul 30, 2026
3abd347
fix(sessions): make transcript indexing idempotent
BunsDev Jul 30, 2026
b4bf3af
fix(companion): bind launches to pairing epoch
BunsDev Jul 30, 2026
96e90c9
fix(familiar): preserve endpoint failure provenance
BunsDev Jul 30, 2026
845acd0
fix(sessions): resync fork marker deletion
BunsDev Jul 30, 2026
ee7c425
fix(companion): keep launch results operation local
BunsDev Jul 30, 2026
61d9e6b
fix(chat): canonicalize Apple storage aliases
BunsDev Jul 30, 2026
3b9b52c
fix(sessions): recover message indexing incrementally
BunsDev Jul 30, 2026
5e935db
build(engine): pin atomic SQLite message writes
BunsDev Jul 30, 2026
1799c3e
fix(sessions): order index publication after append
BunsDev Jul 30, 2026
53ddeb1
fix(sessions): remove empty index ghosts
BunsDev Jul 30, 2026
ffade42
fix(companion): preserve sessions across pairing checks
BunsDev Jul 30, 2026
e96035d
fix(sessions): bound pending index records
BunsDev Jul 30, 2026
dd19863
fix(sessions): migrate legacy empty session rows
BunsDev Jul 30, 2026
5f88714
fix(sessions): durably create storage roots
BunsDev Jul 30, 2026
3cec988
fix(sessions): preserve history on list errors
BunsDev Jul 31, 2026
df7d5dd
fix(familiar): preserve offline companion selection
BunsDev Jul 31, 2026
5e7d005
fix(sessions): resync root parents after restart
BunsDev Jul 31, 2026
5b6a235
fix(sessions): require existing storage parents
BunsDev Jul 31, 2026
c7635db
fix(sessions): provision app support storage
BunsDev Jul 31, 2026
412c128
fix(chat): share Codex account state
BunsDev Jul 31, 2026
3103429
fix(companion): rebind retries to daemon profile
BunsDev Jul 31, 2026
dd574eb
fix(chat): detach routed reset cleanup
BunsDev Jul 31, 2026
f428a1f
fix(sessions): bound fork transcript staging
BunsDev Jul 31, 2026
93259f5
fix(chat): share account state across windows
BunsDev Jul 31, 2026
9c9912d
fix(chat): queue differing routed resets
BunsDev Jul 31, 2026
fc463df
fix(companion): retain attempted retry context
BunsDev Jul 31, 2026
a63c5d1
fix(chat): install turn cancellation before awaits
BunsDev Jul 31, 2026
9a6641d
fix(app): constrain routing to one scene
BunsDev Jul 31, 2026
01dc098
fix(engine): fence streamed operation state
BunsDev Jul 31, 2026
e1231af
fix(auth): retain failed sign-out cleanup
BunsDev Jul 31, 2026
5d44a27
fix(familiar): bound roster and identity data
BunsDev Jul 31, 2026
bad4864
fix(familiar): validate normalized field bounds
BunsDev Jul 31, 2026
9fef674
fix(companion): preserve retry traffic authority
BunsDev Jul 31, 2026
0e6b22d
fix(sessions): preflight persisted state mutations
BunsDev Jul 31, 2026
9e7f2ab
fix(app): retain the root window state
BunsDev Jul 31, 2026
be02256
perf(sessions): bound fork publication work
BunsDev Jul 31, 2026
be03b2d
fix(chat): protect live session ownership
BunsDev Jul 31, 2026
190481a
docs(roadmap): mark Familiar roster complete
BunsDev Jul 31, 2026
9b8ecec
chore(beads): record Familiar release hardening
BunsDev Jul 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions .beads/interactions.jsonl
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,31 @@
{"id":"int-89ec82a741ecf7fb568f472483bfb2ed","kind":"field_change","created_at":"2026-07-22T09:15:07.708446Z","actor":"Val Alexander","issue_id":"pocket-xm3","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Shipped in PR #32 (9b16e41)"}}
{"id":"int-ff1d20225806bf780b603a1bea85bd62","kind":"field_change","created_at":"2026-07-29T22:06:58.328647Z","actor":"Val Alexander","issue_id":"pocket-d3u","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Daemon-backed Claude Chat implemented and fully verified"}}
{"id":"int-69354086c4d25fe8475777c31525b2cc","kind":"field_change","created_at":"2026-07-30T01:49:51.392594Z","actor":"Val Alexander","issue_id":"pocket-hau","extra":{"field":"status","new_value":"blocked","old_value":"in_progress"}}
{"id":"int-0e0b629e94bd8ea0b0b2bd4751e173a1","kind":"field_change","created_at":"2026-07-30T12:07:43.333894Z","actor":"Val Alexander","issue_id":"pocket-eba.2","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Implemented cancellation fences, uncancelled returned-launch cleanup, duplicate-kill protection, and regression coverage; all requested gates pass."}}
{"id":"int-6c9e566bb9fe4c970bfc9a0a017382ec","kind":"field_change","created_at":"2026-07-30T13:20:49.438026Z","actor":"Val Alexander","issue_id":"pocket-eba.3","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Implemented and verified cancellation/generation-safe polling retry settlement."}}
{"id":"int-ef099252adadec679ecf9c1beedc9671","kind":"field_change","created_at":"2026-07-30T16:39:26.665598Z","actor":"Val Alexander","issue_id":"pocket-0jc","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Implemented strict-TDD retry resync fix and passed full Rust gates"}}
{"id":"int-4b4c770aceaccd82c79a6f4df2cc68e9","kind":"field_change","created_at":"2026-07-30T17:00:14.611844Z","actor":"Val Alexander","issue_id":"pocket-anc","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Completed with deterministic red/green lifecycle regression, operation-local launch outcome, session-ID/epoch cleanup guards, and passing focused/full Swift gates."}}
{"id":"int-28f133778f9fb46b7fba4cf22d95b54c","kind":"field_change","created_at":"2026-07-30T17:05:20.359549Z","actor":"Val Alexander","issue_id":"pocket-fjc","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Implemented and verified Apple storage alias canonicalization"}}
{"id":"int-1406b3be65ed6a4a7f65a704409e5d5d","kind":"field_change","created_at":"2026-07-30T17:55:02.676869Z","actor":"Val Alexander","issue_id":"pocket-pfv","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Implemented and verified incremental message-index recovery"}}
{"id":"int-fbb6d72adcac5e215f2f2e803011b629","kind":"field_change","created_at":"2026-07-30T18:36:54.336762Z","actor":"Val Alexander","issue_id":"pocket-kpq","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Implemented strict-TDD baseline invalidation and post-append index publication; focused regressions and full Rust test/check/clippy/fmt pass."}}
{"id":"int-51f4eade99ed7287dbd0b961c078f392","kind":"field_change","created_at":"2026-07-30T19:00:38.342073Z","actor":"Val Alexander","issue_id":"pocket-vsl","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Implemented and verified pending-index empty ghost cleanup in commit 53ddeb1"}}
{"id":"int-05c36e96bc8ad7956931003b0ac2da52","kind":"field_change","created_at":"2026-07-30T21:22:56.803074Z","actor":"Val Alexander","issue_id":"pocket-2zg","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Implemented and verified request-generation/traffic-epoch separation"}}
{"id":"int-c4af61e9d424303f2cae20406df12eff","kind":"field_change","created_at":"2026-07-30T22:24:31.679457Z","actor":"Val Alexander","issue_id":"pocket-539","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Implemented strict pending-record sizing, pre-intent transcript sizing, and safe legacy oversized-marker recovery; focused RED/GREEN and full Rust gates pass."}}
{"id":"int-e68c30140d3f848b91b7434b90563094","kind":"field_change","created_at":"2026-07-30T22:55:08.363331Z","actor":"Val Alexander","issue_id":"pocket-nvv","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Implemented and verified bounded legacy zero-count session migration"}}
{"id":"int-fc8600c012ac8fbcfb07a58e7e312163","kind":"field_change","created_at":"2026-07-30T23:10:35.437776Z","actor":"Val Alexander","issue_id":"pocket-qiz","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Implemented durable root-component parent fsync, rollback/error composition, uncertain-component retry sync, symlink revalidation, and fault coverage in 5f88714"}}
{"id":"int-6ee4c89f2f14ddb078276f0ea9f98bcf","kind":"field_change","created_at":"2026-07-31T00:22:46.492853Z","actor":"Val Alexander","issue_id":"pocket-4cu","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Implemented and verified session-list error preservation, shared refresh state, safe Spotlight behavior, and mutation reconciliation."}}
{"id":"int-0d374281f738411189a709d512856d08","kind":"field_change","created_at":"2026-07-31T00:36:47.078349Z","actor":"Val Alexander","issue_id":"pocket-ska","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Implemented and verified offline Companion familiar profile preservation"}}
{"id":"int-5e9a1851fea4dde84439fe42c3099a74","kind":"field_change","created_at":"2026-07-31T01:18:18.382267Z","actor":"Val Alexander","issue_id":"pocket-cy4","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Implemented and verified restart-safe root parent-chain resync"}}
{"id":"int-d1bcdd874017e9551a85395a79a8d958","kind":"field_change","created_at":"2026-07-31T01:43:08.958041Z","actor":"Val Alexander","issue_id":"pocket-b2s","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Implemented and verified structural existing-parent storage-root rule in 5b6a235"}}
{"id":"int-3b0873eac01f96e9239d1a5ab1d1e2f2","kind":"field_change","created_at":"2026-07-31T01:58:23.240502Z","actor":"Val Alexander","issue_id":"pocket-cz5","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Implemented and verified bounded two-level session storage provisioning"}}
{"id":"int-29ecc5de56182c46dd7960cf746a85f0","kind":"field_change","created_at":"2026-07-31T03:07:30.029004Z","actor":"Val Alexander","issue_id":"pocket-joc","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Implemented root-owned shared EngineClient and persistent chat transition fencing with TDD coverage; focused/full simulator tests, SwiftLint, and generic build pass."}}
{"id":"int-f94c7b8fe90866151dae2218dd357829","kind":"field_change","created_at":"2026-07-31T03:37:25.661362Z","actor":"Val Alexander","issue_id":"pocket-xta","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Implemented and verified normalized cross-daemon Familiar retry rebinding, launch fencing, cleanup/polling pinning, UI context wiring, and regression coverage."}}
{"id":"int-0df2121fd57c235a146e469abea2be25","kind":"field_change","created_at":"2026-07-31T04:14:32.70567Z","actor":"Val Alexander","issue_id":"pocket-bma","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Implemented bounded durable fork transcript staging with overflow, cumulative-boundary, near-limit success, and uncertain rollback recovery coverage; full Rust gates pass."}}
{"id":"int-4f144e6cb38fa11803562c5e79908d41","kind":"field_change","created_at":"2026-07-31T04:51:07.024156Z","actor":"Val Alexander","issue_id":"pocket-adm","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Shared EngineClient ownership across WindowGroup roots with per-window account transition resets, auth fencing, stale model-load protection, and verified tests/build/lint."}}
{"id":"int-1b8ac6f1594fa0fac22cc4f8ead070b0","kind":"field_change","created_at":"2026-07-31T05:02:38.965941Z","actor":"Val Alexander","issue_id":"pocket-agp","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Implemented and verified backend-aware routed reset queueing"}}
{"id":"int-d475ce29fc85f6c0c9954dc495e0c7e1","kind":"field_change","created_at":"2026-07-31T05:56:17.9995Z","actor":"Val Alexander","issue_id":"pocket-2z2","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Implemented and verified in a63c5d1"}}
{"id":"int-f343131641dc3dd555aedfb4236bf5c4","kind":"field_change","created_at":"2026-07-31T06:06:42.681333Z","actor":"Val Alexander","issue_id":"pocket-8xv","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Implemented and verified single-scene Info.plist configuration regression"}}
{"id":"int-6bcd0c607171183d2b15a78c2dd68598","kind":"field_change","created_at":"2026-07-31T06:38:01.23677Z","actor":"Val Alexander","issue_id":"pocket-by6","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Implemented and verified operation generation fencing for streams, OAuth, and model loads."}}
{"id":"int-93d81e06e92fd564574515accb768457","kind":"field_change","created_at":"2026-07-31T07:21:11.228967Z","actor":"Val Alexander","issue_id":"pocket-zwz","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Implemented and verified durable authentication cleanup retry, startup gating, and accessible UI action"}}
{"id":"int-8640d494c7b48cb40a70ffad8d219c35","kind":"field_change","created_at":"2026-07-31T08:41:24.338924Z","actor":"Val Alexander","issue_id":"pocket-eba.5","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Implemented bounded streaming roster decode, centralized identity limits, bounded sidecar I/O/recovery, and source-safe fork validation in commit 5d44a27; focused and full Rust gates pass."}}
{"id":"int-dcb4432e30a681c1a570b28e0bdd19e9","kind":"field_change","created_at":"2026-07-31T13:55:46.345571Z","actor":"Val Alexander","issue_id":"pocket-41m","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"Completed upstream in OpenCoven/coven-code#172; merged commit 4521333d2cdc9b460c9c83bc9e6e1d906e7b3872 is pinned by coven-pocket commit 5e935db with atomicity regression coverage."}}
Loading
Loading