Commit Graph
11 Commits
Author SHA1 Message Date
Raven Scott 9687200dfe docs: full module READMEs (v0.8.103 platform audit) 2026-05-22 13:39:27 -04:00
Raven ScottandCursor 05ea4a1126 feat(contacts): friend presence activity on PRESENCE_UPDATE gossip
Persist and broadcast optional activity on contact mesh presence rows so
friends see Now Playing state P2P alongside custom status.

Co-authored-by: Cursor <[email protected]>
2026-05-22 02:37:22 -04:00
Raven ScottandCursor e5c9b10d7d fix(contacts): use mux-wire wireReady before gossip broadcast
Prevents contacts presence and friend-request gossip from blocking on
protomux fullyOpened() that never resolves on stale connections.

Co-authored-by: Cursor <[email protected]>
2026-05-22 01:37:57 -04:00
Raven ScottandCursor 45c1b29d92 feat(mesh): protomux v3 wire and persistent friend topic links
Migrate contacts gossip to pearcord-drive/mux-wire (protomux v3).
Add _syncFriendTopicLinks so accepted friends stay subscribed to each
other's contacts topics for live presence and profile cosmetics.

Fix _gossipToPeer race: do not leave persistent friend topics early;
delay ephemeral leave until gossip flush completes. Sync friend topics
before CONTACT_ACCEPT. Expose stats.meshLive and friendTopics count.

Phase 62 / v0.8.27 — contacts mesh polish.

Co-authored-by: Cursor <[email protected]>
2026-05-22 00:42:43 -04:00
Raven ScottandCursor 3b9179d10a feat(contacts): PROFILE_COSMETIC_UPDATE on friends mesh
Friends receive profile cosmetics gossip via broadcastProfileCosmetic
and profile-cosmetic events for platform peer cache updates.

Co-authored-by: Cursor <[email protected]>
2026-05-21 23:30:27 -04:00
Raven ScottandCursor 3add6b4207 feat(contacts): broadcast and ingest friend presence on contacts mesh
Add PRESENCE_UPDATE gossip on pearcord:contacts:{userId} so accepted
friends see online/idle/dnd/offline without joining each other's guilds.

- ingestFriendPresence map with TTL-friendly updates
- broadcastPresence on setPresence and mesh rejoin (_lastSelfPresence)
- getFriendPresenceMap for platform listContacts enrichment
- simulateGossip handles PRESENCE_UPDATE for CI smokes

Co-authored-by: Cursor <[email protected]>
2026-05-21 21:03:44 -04:00
Raven ScottandCursor dfab588145 feat(contacts): unblockContact with CONTACT_UNBLOCK P2P gossip
Users can remove blocks locally and notify peers via CONTACT_UNBLOCK.
ingestUnblock clears blocked rows when a remote device unblocks you.

Co-authored-by: Cursor <[email protected]>
2026-05-21 20:41:35 -04:00
Raven ScottandCursor fef965beb3 feat(contacts): block list with CONTACT_BLOCK gossip fanout
blockContact now gossips CONTACT_BLOCK to the peer topic, exposes
listBlocked(), and ingestBlock() for remote block events. Request
ingest still ignores users you have blocked locally.

Co-authored-by: Cursor <[email protected]>
2026-05-21 20:37:12 -04:00
Raven Scott 7addc80fc5 chore: ignore node_modules and drop from index 2026-05-21 20:21:52 -04:00
Raven Scott 9464f20b99 chore: per-package .git with SSH origin (init-org-git) 2026-05-21 20:21:21 -04:00
Raven Scott 86bc401a8f chore: sync local workspace into org repo 2026-05-21 20:19:47 -04:00