Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
faa9693
feat(hub): friend-accept creates contact row and peer-link handshake
hognek Jul 19, 2026
848a01b
fix(hub): address Kilo findings — block-cascade fallback, token-flow …
hognek Jul 19, 2026
2c951c4
fix(hub): address Kilo round 2 — remove committed keys, fix cascade f…
hognek Jul 20, 2026
e086ceb
fix(hub): address CodeRabbit findings — HubStore close, fingerprint v…
hognek Jul 20, 2026
c78d5be
fix(hub): widen handshake exception boundary and implement block-casc…
hognek Jul 20, 2026
b3188ae
fix(contacts): replace migration with guarded _post_init for peer_fin…
hognek Jul 20, 2026
9acbc8f
fix(hub): normalize endpoints to dict form and guard re-accept on REL…
hognek Jul 28, 2026
15392b8
fix(hub): address 3 small items from jaylfc review on #2043
hognek Jul 29, 2026
9870bc9
fix(hub): move set_contact_status call after both block-cascade branches
hognek Jul 29, 2026
2be8025
fix(tests): repair two security regression tests for #2043
hognek Jul 29, 2026
7c2df2d
ci: retrigger CI after sniffio infra failure in shard (3.13, 4)
hognek Jul 29, 2026
4a4777e
fix(collab): fold send_handshake + deliver_handshake from #2046 into …
hognek Aug 2, 2026
108046e
fix: address CodeRabbit findings on PR #2043 — block-guard, peer_link…
hognek Aug 2, 2026
c454eec
chore: retrigger CI (CLA author fix + doc-gate)
hognek Aug 2, 2026
97096ce
fix(hub): key TOFU contact pin on signing-key fingerprint, not userna…
hognek Aug 13, 2026
5dd9097
fix(hub): report revoke matches + revoke all fingerprint contacts (#2…
hognek Aug 18, 2026
b79acab
fix(contacts): backfill peer_fingerprint for pre-existing rows in _po…
hognek Aug 27, 2026
121d78c
fix(contacts): guard fingerprint backfill against malformed ed25519_pub
hognek Aug 27, 2026
6e6c56f
fix(tests): arm collab_a2_handshake client with CSRF event hooks afte…
hognek Aug 27, 2026
ebae070
docs(changelog): add fragment for #2561 contacts fingerprint keying
jaylfc Aug 28, 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
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,7 @@ data/pending-restart.json
# Stray dev screenshot artifacts
desktop-initial.png
venv/
data/hub/

# Credential material must never be committable. An agent stored a registry
# token at /opt/taos/secrets/ on 2026-07-27 - correct permissions, but inside the
Expand Down
10 changes: 10 additions & 0 deletions changelog.d/2561-contacts-fingerprint-keying.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
### Fixed
- Cross-user contacts are now keyed on the peer's ed25519 signing-key
fingerprint rather than on their username, so a peer who changes or reuses a
username can no longer be confused with an existing pinned contact. Stores
created before this change are upgraded in place on first open: existing rows
have their `peer_fingerprint` backfilled from the stored public key, and rows
whose key is missing or malformed are left unkeyed instead of aborting the
upgrade. Revocation now reports how many contacts matched and cascades to
every contact sharing the revoked fingerprint, and blocking a peer cascades
consistently through both block paths (#2561).
3 changes: 3 additions & 0 deletions docs/design/cross-user-collaboration.md
Original file line number Diff line number Diff line change
Expand Up @@ -427,6 +427,9 @@ lane (real build/test CI, fork-approval rules apply), FLEET = free-model builder
- A1 LEAD: `contacts_store` plus `peer_links` plus envelope sign/verify plus peer
route family plus rate limits.
- A2 LEAD: friend-accept to contact-row plus handshake wiring (hub subscription).
**Deviation:** the peer-link token is minted locally without hub delivery —
the token exchange requires both instances to be online simultaneously, which
is acceptable for a pilot and avoids hub-trust assumptions for bearer tokens.
- A3 HOGNEK: hub sealed-envelope relay endpoints on taos.my (T1, not pilot-blocking,
can trail).
- A4 FLEET (cards): ContactsApp taOS section UI; presence dots; request
Expand Down
Loading
Loading