Commit Graph
69 Commits
Author SHA1 Message Date
Raven ScottandCursor 26e86d70e1 fix(mesh): skip gossip when RPC method missing and catch encode errors
Avoid unhandledRejection when pearcord-shared lacks USER_UPSERT (method 0).

Co-authored-by: Cursor <[email protected]>
2026-05-25 00:24:41 -04:00
Raven ScottandCursor 369e2374dd feat(guild): gossip USER_UPSERT and wire swarm connection errors
Sync member profiles over the guild mesh and attach error handlers on
gossip connections to avoid uncaught teardown errors.

Co-authored-by: Cursor <[email protected]>
2026-05-24 23:55:22 -04:00
Raven ScottandCursor 6219474915 docs: note Phase 567 guild.create span metadata
Co-authored-by: Cursor <[email protected]>
2026-05-24 15:00:52 -04:00
Raven ScottandCursor e3d5d5d800 docs: Phase 549 guild-admin depth README
Document v0.8.512 span metadata and test bundle.

Co-authored-by: Cursor <[email protected]>
2026-05-24 13:39:05 -04:00
Raven ScottandCursor 571679af82 docs: Phase 533 guild-admin depth pass README (v0.8.496)
Co-authored-by: Cursor <[email protected]>
2026-05-24 12:09:17 -04:00
Raven ScottandCursor 4baf669ad2 docs(guild): document Phase 513 channel admin spans and UI compositor
Reference phase513 test bundle and CHANNELS.md guild-admin section.

Co-authored-by: Cursor <[email protected]>
2026-05-24 09:34:11 -04:00
Raven ScottandCursor d089cfa104 Docs: note Phase 467 voice gossip guild-loading guard cross-reference
Link VOICE_STATE gossip documentation to syncVoicePanelsDuringGuildLoading
UI guards added in the desktop app for guild switch loading states.

Co-authored-by: Cursor <[email protected]>
2026-05-24 02:29:24 -04:00
Raven ScottandCursor a0d96a18e8 Phase 466: document attachment gossip in README (v0.8.429)
Co-authored-by: Cursor <[email protected]>
2026-05-24 02:19:26 -04:00
Raven ScottandCursor 1f18665891 Phase 465: document message gossip in README (v0.8.428)
Co-authored-by: Cursor <[email protected]>
2026-05-24 02:03:45 -04:00
Raven ScottandCursor 1230cfcc05 Phase 464: document role and channel overwrite gossip paths.
Co-authored-by: Cursor <[email protected]>
2026-05-24 01:51:32 -04:00
Raven ScottandCursor 4969333cf4 Phase 463: document audit gossip paths for P2P compliance trail.
Co-authored-by: Cursor <[email protected]>
2026-05-24 01:42:38 -04:00
Raven ScottandCursor 3faebc5744 docs(guild): note Phase 462 ban/kick/timeout/automod gossip re-verify
Co-authored-by: Cursor <[email protected]>
2026-05-24 01:29:28 -04:00
Raven ScottandCursor ca4a516085 docs(guild): note Phase 461 slash and bot gossip re-verify
Co-authored-by: Cursor <[email protected]>
2026-05-24 01:23:28 -04:00
Raven ScottandCursor 1c8d9b0762 docs(guild): note Phase 460 attachment and embed gossip re-verify
Co-authored-by: Cursor <[email protected]>
2026-05-24 01:17:47 -04:00
Raven ScottandCursor e34e3b082c docs(guild): note Phase 459 emoji/sticker/reaction gossip re-verify
Co-authored-by: Cursor <[email protected]>
2026-05-24 01:11:35 -04:00
Raven ScottandCursor 1e7a449362 feat(channels): deleteChannel and CHANNEL_DELETE gossip (v0.8.421)
Ingest channel delete on mesh; block deleting non-empty categories or
channels that still have threads.

Co-authored-by: Cursor <[email protected]>
2026-05-24 01:04:43 -04:00
Raven ScottandCursor 69b659121d docs: Phase 457 platform channel span wiring note (v0.8.420)
Co-authored-by: Cursor <[email protected]>
2026-05-24 00:53:18 -04:00
Raven ScottandCursor 50e392b931 docs: Phase 455 guild settings guild-loading sync (v0.8.418)
Reference GUILD_SETTINGS.md and platform guild.update span metadata.

Co-authored-by: Cursor <[email protected]>
2026-05-24 00:31:40 -04:00
Raven ScottandCursor c1f5bece04 docs: Phase 447 roles/permissions cross-polish cross-reference
Document role/overwrite gossip and Phase 447 test bundle for guild
permission mesh flows.

Co-authored-by: Cursor <[email protected]>
2026-05-23 22:58:42 -04:00
Raven ScottandCursor e5289947f9 Broadcast and receive EMOJI_DELETE and STICKER_DELETE gossip.
Peers merge emoji/sticker removals via guild-emoji-delete and guild-sticker-delete events.

Co-authored-by: Cursor <[email protected]>
2026-05-23 17:24:40 -04:00
Raven ScottandCursor 38bfbedda1 feat(slash): gossip SLASH_COMMAND_DELETE handler
Emit and receive slash command removal events on the guild mesh.

Co-authored-by: Cursor <[email protected]>
2026-05-23 17:05:15 -04:00
Raven ScottandCursor e29e4cce53 feat(webhooks): gossip WEBHOOK_UPSERT and WEBHOOK_DELETE handlers
Merge channel webhook metadata from mesh without ingesting secret tokens.

Co-authored-by: Cursor <[email protected]>
2026-05-23 16:53:30 -04:00
Raven ScottandCursor 11da523a6e Fix guild joinMesh flush so EPIPE does not abort guild open.
Stop awaiting swarm.join, swallow flush rejections, and honor skip-flush env for faster opens.

Co-authored-by: Cursor <[email protected]>
2026-05-23 13:02:39 -04:00
Raven ScottandCursor 02e5e43cc9 perf(mesh): bounded swarm flush on joinMesh with background continue
Race flush against PEARCORD_GUILD_SWARM_FLUSH_MS and emit mesh-flush-timeout
when continuing without blocking guild open.

Co-authored-by: Cursor <[email protected]>
2026-05-23 04:15:25 -04:00
Raven ScottandCursor 929ea4d194 feat(guild): default nsfwGateEnabled on guild create (v0.8.174)
New guilds ship with age-restricted gate enforcement enabled by default so
NSFW channels require explicit acknowledgement unless the owner disables it.

Co-authored-by: Cursor <[email protected]>
2026-05-22 22:48:38 -04:00
Raven ScottandCursor f7a7129422 Add nsfw flag on guild channel records
Persist age-restricted channel marking for sidebar badges and P2P gossip sync.

Co-authored-by: Cursor <[email protected]>
2026-05-22 22:35:52 -04:00
Raven ScottandCursor 19d23bde7f Add userLimit field for voice and stage channels
Store 0–99 member cap on channel rows for P2P join enforcement and sidebar display.

Co-authored-by: Cursor <[email protected]>
2026-05-22 22:25:37 -04:00
Raven ScottandCursor d9cd75151a feat(guild): moveChannelToParent for category drag-drop (v0.8.168)
Move channels between categories with position compaction in the old parent.

Co-authored-by: Cursor <[email protected]>
2026-05-22 21:55:28 -04:00
Raven ScottandCursor fa0af043c2 feat(guild): reorderCategories for category position updates
Support sidebar category drag-reorder by reassigning category channel
position indices with P2P CHANNEL_UPDATE gossip.

Co-authored-by: Cursor <[email protected]>
2026-05-22 21:08:22 -04:00
Raven ScottandCursor 630f41841a feat(guild): reorderChannelsInParent for sibling channel positions
Support P2P channel tree reorder by reassigning position indices for
channels sharing the same parent category or uncategorized root.

Co-authored-by: Cursor <[email protected]>
2026-05-22 21:03:24 -04:00
Raven Scott 6013e7f871 docs: full module READMEs (v0.8.103 platform audit) 2026-05-22 13:39:40 -04:00
Raven ScottandCursor 85b14c2516 feat(mesh): gossip message search request/response (v0.8.86)
Wire RPC 77/78 to message-search-request and message-search-response events
with gossipMessageSearchRequest/Response helpers.

Co-authored-by: Cursor <[email protected]>
2026-05-22 08:02:39 -04:00
Raven ScottandCursor c3ca4b1208 feat(guild): gossip signed audit CSV sync on guild mesh (v0.8.81)
Broadcast and ingest RPC AUDIT_EXPORT_CSV_SYNC with platform event
audit-export-csv-sync for live signed audit export propagation.

Co-authored-by: Cursor <[email protected]>
2026-05-22 07:26:10 -04:00
Raven ScottandCursor f8a999de59 feat(guild): gossip hook failure digest CSV sync on mesh (v0.8.80)
Wire RPC HOOK_FAILURE_DIGEST_CSV_SYNC broadcast and platform event
hook-failure-digest-csv-sync for live signed CSV ingest.

Co-authored-by: Cursor <[email protected]>
2026-05-22 07:18:56 -04:00
Raven ScottandCursor ab7924053f feat(gossip): wire automation digest snapshot RPC 73/74 handlers
Emit automation-digest-export-snapshot and -request events from mesh
gossip so platform can ingest bodies and respond to targeted fetch requests.

Co-authored-by: Cursor <[email protected]>
2026-05-22 05:31:49 -04:00
Raven ScottandCursor 1cf27243be feat(guild): wire AUDIT_EXPORT_ARCHIVE_REQUEST gossip
Emit audit-export-archive-request on RPC 72 in both protomux handlers
and add gossipAuditExportArchiveRequest for mesh archive fetch flows.

Co-authored-by: Cursor <[email protected]>
2026-05-22 04:57:10 -04:00
Raven ScottandCursor d2d64750fb feat(guild): AUDIT_EXPORT_ARCHIVE gossip handler (Phase 100)
Handle inbound audit export archive gossip and expose
gossipAuditExportArchive for platform export retention fanout.

Co-authored-by: Cursor <[email protected]>
2026-05-22 04:44:41 -04:00
Raven ScottandCursor c9c735b6ce feat(guild): HOOK_FAILURE_DIGEST_SYNC gossip handler (Phase 99)
Emit hook-failure-digest-sync on inbound RPC 70 and expose
gossipHookFailureDigestSync for platform digest mesh push.

Co-authored-by: Cursor <[email protected]>
2026-05-22 04:38:46 -04:00
Raven ScottandCursor b98e73ae60 feat(guild): gossip audit export snapshots on guild mesh (Phase 98)
Handle AUDIT_EXPORT_SNAPSHOT inbound gossip and expose
gossipAuditExportSnapshot for platform exportAuditLog fanout.

Co-authored-by: Cursor <[email protected]>
2026-05-22 04:32:09 -04:00
Raven ScottandCursor 9a009c53ef feat(gossip): WORKER_RELEASE_ANNOUNCE handler and gossip helper
Broadcast and simulateGossip support for RPC 68 worker release
announcements alongside existing hook failure alert gossip.

Co-authored-by: Cursor <[email protected]>
2026-05-22 04:17:49 -04:00
Raven ScottandCursor d32d50ec9f feat(gossip): broadcast HOOK_FAILURE_ALERT on hook delivery failure
Adds gossipHookFailureAlert() and mesh handler for RPC 67 so peers
ingest failed automation hook runs into local HookFailureAlertStore.

Co-authored-by: Cursor <[email protected]>
2026-05-22 03:58:46 -04:00
Raven ScottandCursor ac3f370f27 feat(guild): gossip APP_EVENT_RECEIPT on guild mesh (RPC 66)
Emit and ingest app-event-receipt events alongside existing APP_EVENT and
AUTOMATION_MANIFEST_UPSERT handlers. Enables cross-peer automation delivery
visibility for server admins without centralized webhook infrastructure.

Co-authored-by: Cursor <[email protected]>
2026-05-22 03:39:40 -04:00
Raven ScottandCursor 2ac00661b1 feat(mesh): gossipAutomationManifest for AUTOMATION_MANIFEST_UPSERT
Emit automation-manifest on inbound gossip so peers can merge hooks and
automod snapshots without HTTP or central integration servers.

Co-authored-by: Cursor <[email protected]>
2026-05-22 03:20:14 -04:00
Raven ScottandCursor 47f694bdb5 feat(mesh): gossip and ingest APP_EVENT on guild mesh
Expose gossipAppEvent for platform fanout and emit app-event on inbound
gossip so automation listeners sync across peers.

Co-authored-by: Cursor <[email protected]>
2026-05-22 03:15:03 -04:00
Raven Scott 4cd24f48cd feat(guild): gossip channel permission overwrites
Emit channel-overwrite events from mesh RPC 62/63, simulateGossip support,
and gossipChannelOverwriteUpsert/Delete broadcast helpers.
2026-05-22 02:56:26 -04:00
Raven ScottandCursor bbcfd4cbf6 feat(guild): gossip custom roles over pearcord-gossip-v1 (v0.1.1)
Handle ROLE_UPSERT, ROLE_DELETE, MEMBER_CUSTOM_ROLES on mesh and in simulateGossip.

Co-authored-by: Cursor <[email protected]>
2026-05-22 01:48:23 -04:00
Raven ScottandCursor 9e5572d402 fix(guild): live roster gossip and reliable mesh send (v0.1.1)
- GUILD_SYNC consumers receive members[] from platform bundle builder
- Dedupe hyperswarm connections per peerId before attaching gossip/attach wires
- broadcastGossip: bounded wireReady then always send (matches discovery mesh)

Enables live MEMBER_JOIN, MEMBER_ROLE_UPDATE, and PRESENCE_UPDATE without
simulateGossip in CI smokes.

Co-authored-by: Cursor <[email protected]>
2026-05-22 01:42:30 -04:00
Raven ScottandCursor f2762a9d5b fix(guild): use mux-wire wireReady before guild gossip broadcast
Same bounded fullyOpened wait as discovery and contacts meshes so guild
RPC gossip cannot hang the event loop on half-open protomux channels.

Co-authored-by: Cursor <[email protected]>
2026-05-22 01:37:58 -04:00
Raven ScottandCursor 2977a6dbe2 feat(gossip): GUILD_SYNC bundle for message history on join
Wire RPC.GUILD_SYNC through gossip mesh: gossipGuildSync broadcast,
_onGossip + simulateGossip handlers, and guild-sync event emission.

Existing peers push channel/message/attachment snapshots when new
members connect or MEMBER_JOIN is received. Phase 61 / v0.8.26.

Co-authored-by: Cursor <[email protected]>
2026-05-22 00:37:59 -04:00
Raven ScottandCursor 38534e5549 fix(guild): protomux v3 gossip wire via pearcord-drive/mux-wire
Gossip mesh now uses c.buffer addMessage + wire.send so live P2P message
sync works in Bare (test:gossip-live). Only store mesh sessions when
createChannel succeeds; same pattern for attach/voice/screen channels.

Co-authored-by: Cursor <[email protected]>
2026-05-22 00:26:24 -04:00
Raven ScottandCursor 857a4c7af0 feat(guild): gossip handlers for guild soundboard RPC 57–58
Wire SOUND_UPSERT to guild-sound and SOUND_PLAY to guild-sound-play events,
plus simulateGossip paths for Bare smokes. Add gossipSoundUpsert and
gossipSoundPlay broadcast helpers mirroring sticker gossip.

Co-authored-by: Cursor <[email protected]>
2026-05-22 00:19:42 -04:00
Raven ScottandCursor 174a49dd9a chore: remove accidental self-referential symlink
Co-authored-by: Cursor <[email protected]>
2026-05-22 00:07:32 -04:00
Raven ScottandCursor af7e3276f2 fix(mesh): await open gossip channels before broadcast (v0.8.19)
Make broadcastGossip async and wait for each peer channel fullyOpened
before sending RPC payloads. gossipProfileCosmetic returns the promise
so profile cosmetics (with bannerAttachment) reach connected peers.

Improves P2P delivery reliability for PROFILE_COSMETIC_UPDATE and all gossip.

Co-authored-by: Cursor <[email protected]>
2026-05-22 00:07:19 -04:00
Raven ScottandCursor 04257118d0 feat(guild): gossip and ingest PROFILE_COSMETIC_UPDATE (RPC 56)
Emit profile-cosmetic events from mesh and expose gossipProfileCosmetic
for platform to fanout member banner, bio, and avatar ring metadata.

Co-authored-by: Cursor <[email protected]>
2026-05-21 23:30:26 -04:00
Raven ScottandCursor 2128acc7b1 feat(guild): gossip handlers for emoji pack RPC 54–55
Wire EMOJI_PACK_UPSERT/DELETE on mesh receive and simulateGossip,
plus gossipEmojiPackUpsert/Delete broadcast helpers for platform.

Co-authored-by: Cursor <[email protected]>
2026-05-21 23:14:19 -04:00
Raven ScottandCursor 77b606464d feat(guild): gossip handlers for sticker pack upsert and delete
Wire STICKER_PACK_UPSERT and STICKER_PACK_DELETE on the guild mesh: emit
guild-sticker-pack / guild-sticker-pack-delete events, simulateGossip support,
and gossipStickerPackUpsert / gossipStickerPackDelete broadcast helpers.

Co-authored-by: Cursor <[email protected]>
2026-05-21 22:57:25 -04:00
Raven ScottandCursor 6d10bc40aa feat(guild): gossip and emit guild-boost-ledger events
Handle GUILD_BOOST_LEDGER_APPEND (RPC 51) and expose gossipGuildBoostLedger
for platform attribution sync.

Co-authored-by: Cursor <[email protected]>
2026-05-21 22:33:58 -04:00
Raven Scott 0740592827 feat(guild): gossip STICKER_UPSERT on guild mesh
Handle RPC 49 inbound gossip, emit guild-sticker events, and expose
gossipStickerUpsert for moderators uploading animated stickers.
2026-05-21 22:26:40 -04:00
Raven Scott 0a21f8f323 feat(guild): gossip guild boost updates on mesh
Handle GUILD_BOOST_UPDATE (RPC 48) in inbound gossip, emit guild-boost
events to the platform, and expose gossipGuildBoost for moderators who
add boosts or change banner accent colors.

Depends on pearcord-boosts via git+https for published installs.
2026-05-21 22:14:33 -04:00
Raven ScottandCursor 580be92baa feat(guild): gossip handlers for announcement cross-post and follow
Wire pearcord-announcements RPC 46/47 on the guild mesh.

Co-authored-by: Cursor <[email protected]>
2026-05-21 22:07:24 -04:00
Raven ScottandCursor 47fdaa641a feat(guild): attach screen-share protomux mesh per peer connection
Wire pearcord-screen-share: SCREEN_SHARE_UPDATE gossip handler,
gossipScreenShare/sendScreenMedia, and pearcord-screen-v1 channels
alongside existing voice media channels.

Co-authored-by: Cursor <[email protected]>
2026-05-21 22:03:15 -04:00
Raven ScottandCursor 36e4aceb14 feat(guild): gossip automod config via AUTOMOD_CONFIG_UPDATE
Handle RPC 44 on inbound gossip and expose gossipAutomodConfig() for
platform to broadcast rule changes after server settings saves.

Co-authored-by: Cursor <[email protected]>
2026-05-21 21:54:56 -04:00
Raven ScottandCursor 7ec967bbfb feat(guild): STAGE_SPEAKER_UPDATE gossip ingest and broadcast
Handle RPC 43 on mesh: emit stage-speaker events, simulateGossip support,
and gossipStageSpeaker() for P2P stage role sync across peers.

Co-authored-by: Cursor <[email protected]>
2026-05-21 21:50:00 -04:00
Raven ScottandCursor 5083c5b952 feat(guild): gossip and ingest FORUM_POST_TAGS on guild mesh
Co-authored-by: Cursor <[email protected]>
2026-05-21 21:34:41 -04:00
Raven ScottandCursor 2ebcf9c891 feat(guild): forum channels with createForumThread and deferred thread-meta
Allow thread parents to be text or forum channels. Add createForumThread,
setThreadRootMessage, and infer forumPost from parent type. Defer HyperDB
thread-meta insert until rootMessageId exists (fixes null encode on posts).

Co-authored-by: Cursor <[email protected]>
2026-05-21 21:30:11 -04:00
Raven ScottandCursor 8aeaf33bb5 feat(guild): channel typing gossip via TYPING_START
Wire guild mesh typing indicators for text channels.

- Handle TYPING_START in _onGossip and emit typing event
- gossipTyping() for platform signalTyping fanout
- simulateGossip routes unknown methods through _onGossip for smokes

Co-authored-by: Cursor <[email protected]>
2026-05-21 21:03:45 -04:00
Raven ScottandCursor f9a340ca1c feat(guild): EMOJI_UPSERT gossip emit and simulateGossip handler
Guild mesh now fans out custom emoji rows to peers and supports
deterministic smoke injection for EMOJI_UPSERT payloads.

Co-authored-by: Cursor <[email protected]>
2026-05-21 20:46:39 -04:00
Raven Scott 2610a5dbd3 chore: ignore node_modules and drop from index 2026-05-21 20:21:59 -04:00
Raven Scott b63275c6cc fix: multi-repo local dev (file:../ deps, package exports, missing deps) 2026-05-21 20:14:54 -04:00