Signed OAuth grant CSV (guild bots as application grants) and install
token export CSV follow the bot/slash CSV mesh pattern: oauth-csv-ui,
oauth-csv-mixin, delivery-receipts collections, guild gossip, ui-flow IPC,
deep link ?oauth-csv=1, oauth-errors dev filter, and agentctl journeys.
Adds test:ci-phase696 (static + boot + agentctl) and bumps app to 0.8.671.
Documents OAUTH_GRANT_CSV.md, RELEASE_v0.8.671, and opens Phase 697 on the roadmap.
Implement Phase 695 signed slash command registry CSV and slash invoke
audit export across delivery-receipts, platform gossip (RPC 108/109),
slash-csv-ui modal, agentctl journeys, and test:ci-phase695 regression.
Also backfill relay/worker CSV styles missing from pearcord.css and bump
phase687 boot gate to 0.8.670 for RELEASE_CI continuity.
Store scheduled auto-archive timestamps when creating threads with
autoArchiveMinutes so partition heal can archive expired threads (Phase 679).
Co-authored-by: Cursor <[email protected]>
Return the in-flight join promise when a second joinMesh starts before
swarm.join completes, preventing duplicate listener registration and
double topic joins during guild-open races.
Co-authored-by: Cursor <[email protected]>
This commit captures the current working tree state as requested, including code, docs, dependency, and lockfile updates present in this repository.
Co-authored-by: Cursor <[email protected]>
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]>
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]>
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]>
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]>
Support sidebar category drag-reorder by reassigning category channel
position indices with P2P CHANNEL_UPDATE gossip.
Co-authored-by: Cursor <[email protected]>
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]>
Wire RPC 77/78 to message-search-request and message-search-response events
with gossipMessageSearchRequest/Response helpers.
Co-authored-by: Cursor <[email protected]>
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]>
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]>
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]>
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]>
Adds gossipHookFailureAlert() and mesh handler for RPC 67 so peers
ingest failed automation hook runs into local HookFailureAlertStore.
Co-authored-by: Cursor <[email protected]>
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]>
Expose gossipAppEvent for platform fanout and emit app-event on inbound
gossip so automation listeners sync across peers.
Co-authored-by: Cursor <[email protected]>
- 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]>
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]>
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]>
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]>
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]>
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]>
Wire EMOJI_PACK_UPSERT/DELETE on mesh receive and simulateGossip,
plus gossipEmojiPackUpsert/Delete broadcast helpers for platform.
Co-authored-by: Cursor <[email protected]>
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.
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]>
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]>
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]>
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]>