3 Commits

Author SHA1 Message Date
fb3147f0c9 Inventory-based set reconciliation for Nostr sync
Replace timestamp-based catch-up with proper set reconciliation.
When a peer joins a room it publishes its full filename inventory.
Other peers diff against their own set and re-publish only the
events the newcomer is missing, then send their own inventory so
the newcomer can do the same. Two rounds max, no infinite loops.

Also switched from custom #channel tag (rejected by relays as
unindexed) to standard #t topic tag, and kind 4078 to kind 1.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 23:09:39 -06:00
63ce105114 Update READMEs for Nostr variant and five-variant structure
Root README: updated variant table, API docs with joinRoom/leaveRoom,
Nostr events, build instructions.
Paste README: added paste-nostr description and cross-device sync info.
Nostr README: full documentation for dual-sync architecture.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 22:49:38 -06:00
b5528b0ecf Add Nostr dual-sync variant (folder + relay)
Fifth library variant that keeps folder sync for offline/local use
AND adds Nostr relay sync for cross-device reach via WebSocket.
Both transports run simultaneously - writes go to folder AND Nostr,
sync imports from both and bridges events between them.

Works from file:// since Nostr uses WebSocket (not fetch/WebRTC).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 22:44:39 -06:00