Commit Graph
80 Commits
Author SHA1 Message Date
Raven Scott 5fb0e1ac98 feat(shared): add poll and scheduled message RPC + collections (Phase 674)
Add COLLECTIONS.POLLS, POLL_VOTES, SCHEDULED_MESSAGES and RPC types for
guild-scoped poll/schedule mesh gossip so platform-global parity builds on
one shared contract.
2026-06-02 22:18:39 -04:00
Raven ScottandCursor 1f0759c42a Phase 668: embed domain block helpers in unfurl-policy.
Export unfurlSuppressReason, isEmbedDomainBlocked, and
embedHostnameFromUrl for composer preview and dev diagnostics.

Co-authored-by: Cursor <[email protected]>
2026-06-02 20:34:16 -04:00
Raven ScottandCursor 552d72bdec Add markdown-aware unfurl policy for Phase 667 embed depth.
Introduces unfurl-policy.js with code/spoiler/md-link suppression, first-line
wins extraction, and layout gates; wires format-message and index exports plus
unit tests for regression coverage.

Co-authored-by: Cursor <[email protected]>
2026-06-02 20:22:26 -04:00
Raven ScottandCursor ac0c056ace feat(shared): extractUrls helper for multi-embed message parsing (P666)
Export extractUrls up to N unique http(s) URLs; extractFirstUrl delegates
to first entry for backward-compatible unfurl policy.

Co-authored-by: Cursor <[email protected]>
2026-06-02 20:01:39 -04:00
Raven ScottandCursor 6ee72bedc8 Phase 665: group DM attachment byte quota helpers
Export groupDmAttachmentMaxBytes and DEFAULT_ATTACHMENT_MAX_BYTES from
attachment-limits for platform staging enforcement.

Co-authored-by: Cursor <[email protected]>
2026-06-02 19:36:02 -04:00
Raven ScottandCursor 5936408007 Phase 664: groupDmVoiceNoteMaxBytes helper for per-participant quota.
Export groupDmVoiceNoteMaxBytes from voice-note-wire for group DM
voice message size limits divided by participant count.

Co-authored-by: Cursor <[email protected]>
2026-06-02 19:26:13 -04:00
Raven ScottandCursor 37b59b8b6d Add DM poll HyperDB collection identifiers.
Expose DM_POLLS and DM_POLL_VOTES so DmPollStore and platform sync use stable collection names.

Co-authored-by: Cursor <[email protected]>
2026-06-02 17:17:52 -04:00
Raven ScottandCursor 5dddb0b683 Add DM scheduled message policy helpers for Phase 659.
Centralize queue caps, retry backoff, recurrence math, and relative
shortcuts (tomorrow9am) used by platform scheduling and UI validation.

Co-authored-by: Cursor <[email protected]>
2026-06-02 17:09:13 -04:00
Raven ScottandCursor c718f094d5 Add Phase 409 diagnostics redaction and deep-link query allowlist.
Export redactDiagnosticsBundle and filterDeepLinkQuery; enforce allowed
deep-link kinds and strip non-allowlisted settings/explore query keys.

Co-authored-by: Cursor <[email protected]>
2026-06-02 16:41:38 -04:00
Raven ScottandCursor 849747f860 Add VOICE_NOTE_CREATE wire schema and RPC constant.
Export voice-note-wire helpers and VOICE_NOTES collection for Phase 662
voice message gossip and metadata validation.

Co-authored-by: Cursor <[email protected]>
2026-06-02 15:31:24 -04:00
Raven ScottandCursor 776f1d98d4 Add paste validation for invites and pearcord:// deep links (P410-30).
Centralize validatePastedNavigationInput in pearcord-shared so UI, platform,
and protocol can reject dangerous or malformed navigation input before dispatch.

Co-authored-by: Cursor <[email protected]>
2026-06-02 14:47:05 -04:00
Raven ScottandCursor 5985dbf091 feat(shared): add DM scheduled-message schema and parser helpers
Introduce shared delay parsing and scheduled payload normalization helpers
for DM scheduling commands, including bounded send-time validation.

Co-authored-by: Cursor <[email protected]>
2026-06-02 04:11:23 -04:00
Raven ScottandCursor 742e4a1b16 feat(shared): add DM poll expiry metadata parsing/building
Support `--expires` command suffix plus `expiresAt`/`closedAt` poll header
metadata and export default poll expiry constant for platform enforcement.

Co-authored-by: Cursor <[email protected]>
2026-06-02 03:36:42 -04:00
Raven ScottandCursor 9b9dee427e feat(shared): add anonymous DM poll command variants
Extend poll command parsing and payload formatting/parsing to support
anonymous modes (`/polla`, `/pollma`) and preserve the anonymous flag
in poll message headers.

Co-authored-by: Cursor <[email protected]>
2026-06-02 03:27:18 -04:00
Raven ScottandCursor 1ed0ad92e0 feat(shared): add DM poll payload schema helpers
Introduce shared DM poll parsing/building helpers and vote emoji mapping
for phase659 poll creation/voting flows without central services.

Co-authored-by: Cursor <[email protected]>
2026-06-02 03:20:58 -04:00
Raven ScottandCursor 5fc7b6e615 feat(shared): DM_THREAD type and dmThreadTopic helpers v0.8.637
Add dm_thread channel type, per-thread Hyperswarm topic, and deterministic thread channel ids.

Co-authored-by: Cursor <[email protected]>
2026-06-02 01:48:01 -04:00
Raven ScottandCursor 83253a0cb8 feat(shared): USER_PREFS_MIRROR collection constant v0.8.635
Expose collection id for HyperDB pinned-DM prefs mirror wiring.

Co-authored-by: Cursor <[email protected]>
2026-06-02 01:23:40 -04:00
Raven Scott 6418bbf0b9 feat(shared): dmVoiceTopic + RPC.DM_VOICE_SIGNAL for DM calls
Adds pearcord:dm-voice topic helper and RPC 97 for P2P call signaling.
2026-06-02 01:01:36 -04:00
Raven ScottandCursor c126d2d20c Add global presence topic and DM channel meta collection constant.
Expose globalPresenceTopic for Phase 656 contacts mesh and register
COLLECTIONS.DM_CHANNEL_META for HyperDB dm-meta materialization.

Co-authored-by: Cursor <[email protected]>
2026-06-02 00:49:44 -04:00
Raven ScottandCursor 6ca4287b16 Add PRESENCE_VECTOR_SYNC RPC for settings mesh presence merge.
RPC 96 gossips guild presence vector rows across devices on the settings
health wire with max-seq LWW reconciliation.

Co-authored-by: Cursor <[email protected]>
2026-06-01 19:54:32 -04:00
Raven ScottandCursor 0f110ad112 Add settings mesh RPC methods for multi-device sync health.
GUILD_SYNC_HEALTH (94) and SETTINGS_READ_RECEIPT_SYNC (95) support guild
sync health gossip and cross-device read receipt merge on the settings topic.

Co-authored-by: Cursor <[email protected]>
2026-06-01 19:47:10 -04:00
Raven ScottandCursor 6c13e3b86f feat(shared): MEMBER_PAGE_REQUEST and MEMBER_PAGE RPC codes
Add RPC 92/93 for large-guild member roster paging over guild mesh gossip.

Co-authored-by: Cursor <[email protected]>
2026-06-01 19:25:51 -04:00
Raven ScottandCursor cb25f8aad4 feat(sync): add GUILD_SYNC_ACK RPC 91 for joiner watermarks
Joiners report highest ingested message after GUILD_SYNC ingest so owners
can stop redundant full-history pushes during delta replication.

Co-authored-by: Cursor <[email protected]>
2026-06-01 17:54:03 -04:00
Raven ScottandCursor 2a2f57010e Add GUILD_SYNC_REQUEST RPC for joiner-driven history pulls.
Joiners can ask the guild owner to burst GUILD_SYNC on the mesh when wire-ready gossip alone is insufficient.

Co-authored-by: Cursor <[email protected]>
2026-06-01 17:27:03 -04:00
Raven ScottandCursor 27427ac422 feat(guild): add GUILD_TOMBSTONES collection constant
Co-authored-by: Cursor <[email protected]>
2026-06-01 15:33:10 -04:00
Raven ScottandCursor d2cc32d819 feat(guild): add GUILD_DELETE and DIRECTORY_REVOKE RPC values
Co-authored-by: Cursor <[email protected]>
2026-06-01 15:22:43 -04:00
Raven ScottandCursor c44169ee15 fix(rpc): reject invalid method ids and non-empty gossip payloads
encodeRpc now requires method 1–255 and always serializes a non-zero-length
payload buffer so compact-encoding uint length encoding cannot fail.

Co-authored-by: Cursor <[email protected]>
2026-05-25 00:24:39 -04:00
Raven ScottandCursor 48a8fbf871 feat(shared): USER_UPSERT, DM_CHANNEL_UPSERT, and swarm error wiring
Add RPC types for profile and DM channel gossip. Centralize benign P2P
teardown detection and wireSwarmConnection for mesh sockets.

Co-authored-by: Cursor <[email protected]>
2026-05-24 23:55:15 -04:00
Raven ScottandCursor cc3bc3ed06 feat(rpc): add CHANNEL_DELETE gossip opcode (v0.8.421)
Co-authored-by: Cursor <[email protected]>
2026-05-24 01:04:44 -04:00
Raven ScottandCursor d71ccd294b Add EMOJI_DELETE and STICKER_DELETE gossip RPC codes.
Enables P2P propagation when custom emoji or stickers are removed from a guild.

Co-authored-by: Cursor <[email protected]>
2026-05-23 17:24:36 -04:00
Raven ScottandCursor 27d2ac0f67 feat(rpc): add SLASH_COMMAND_DELETE gossip opcode (82)
Allows P2P removal of custom slash command metadata across guild peers.

Co-authored-by: Cursor <[email protected]>
2026-05-23 17:05:14 -04:00
Raven ScottandCursor 2cbd5b67d0 feat(rpc): add WEBHOOK_UPSERT and WEBHOOK_DELETE gossip opcodes
Channel webhook metadata syncs over guild mesh without exposing tokens.

Co-authored-by: Cursor <[email protected]>
2026-05-23 16:53:07 -04:00
Raven ScottandCursor 46d4a3c222 feat(mentions): add contentHasChannelMention for @channel gate
Expose channel-mention detection in shared so platform send path can
reject @channel when the user lacks viewChannel on the parent channel.

Co-authored-by: Cursor <[email protected]>
2026-05-23 07:46:52 -04:00
Raven ScottandCursor b2c898c558 feat(shared): split @everyone and @here mention detection
Add contentHasEveryoneMention and contentHasHereMention helpers so
platform can return distinct permission errors for each mention type.

Co-authored-by: Cursor <[email protected]>
2026-05-23 07:15:25 -04:00
Raven ScottandCursor 318eb245ca feat: add MENTION_EVERYONE permission and mention helpers
Introduce PERMISSION.MENTION_EVERYONE (512) for owner/moderator defaults
and contentHasEveryoneOrHereMention() for send-time enforcement.

Co-authored-by: Cursor <[email protected]>
2026-05-23 07:03:48 -04:00
Raven ScottandCursor e605bb294c Add guildId to pearcord://settings deep link parse and format.
Supports server settings URLs with scope=guild and guildId query for cross-device navigation.

Co-authored-by: Cursor <[email protected]>
2026-05-23 06:45:53 -04:00
Raven ScottandCursor 257f9d0028 Add mention-self CSS class for current-user mentions.
formatMessageContent accepts selfMentionNames and applies mention-self when the rendered @name matches the viewer.

Co-authored-by: Cursor <[email protected]>
2026-05-23 06:33:49 -04:00
Raven ScottandCursor cbd4abc410 Add pearcord://settings deep link parse and format helpers.
Supports optional section and guild scope query params for desktop settings navigation.

Co-authored-by: Cursor <[email protected]>
2026-05-23 06:27:38 -04:00
Raven ScottandCursor 445a07b17c feat(shared): export formatExploreBaselineDeepLink and explore URL helper
Phase 142: add formatExploreBaselineDeepLink for pearcord://explore?baseline=&at=
deep links used by discovery baseline sharing. Fix module.exports so smokes and
pearcord-platform can import the formatter from the package root.

Co-authored-by: Cursor <[email protected]>
2026-05-22 14:48:36 -04:00
Raven Scott d2530521e1 docs: full module READMEs (v0.8.103 platform audit) 2026-05-22 13:39:59 -04:00
Raven ScottandCursor a48a6e10d5 feat(shared): pearcord://pair deep links for device linking (v0.8.92)
Add parse/format helpers for pcdv_ pair codes alongside invite and
message URLs so fresh installs can open pearcord://pair/... from the OS.

Co-authored-by: Cursor <[email protected]>
2026-05-22 10:15:15 -04:00
Raven ScottandCursor ae1c930e97 feat(rpc): MESSAGE_SEARCH_REQUEST and MESSAGE_SEARCH_RESPONSE (77/78)
Add P2P guild message search mesh RPC opcodes for pearcord-search fanout.

Co-authored-by: Cursor <[email protected]>
2026-05-22 08:02:38 -04:00
Raven ScottandCursor 2f4f9cffa8 feat(shared): add AUDIT_EXPORT_CSV_SYNC RPC for mesh push (v0.8.81)
Guild mesh gossip method 76 propagates signed audit log CSV exports
between peers without waiting for full GUILD_SYNC debounce.

Co-authored-by: Cursor <[email protected]>
2026-05-22 07:26:09 -04:00
Raven ScottandCursor 2011077e3e feat(shared): add HOOK_FAILURE_DIGEST_CSV_SYNC RPC (v0.8.80)
Guild mesh gossip method 75 for signed hook-failure digest CSV push
between peers without full GUILD_SYNC round-trips.

Co-authored-by: Cursor <[email protected]>
2026-05-22 07:18:55 -04:00
Raven ScottandCursor e3337b4d29 feat(rpc): add automation digest snapshot gossip RPCs 73 and 74
Extend pearcord-shared RPC constants for P2P scheduled digest snapshot
body transfer, mirroring the audit export archive request/response pair.
Phase 106 (v0.8.70) consumes these from pearcord-guild and pearcord-platform.

Co-authored-by: Cursor <[email protected]>
2026-05-22 05:31:48 -04:00
Raven ScottandCursor 513f507996 feat(shared): add AUDIT_EXPORT_ARCHIVE_REQUEST RPC 72
Introduce gossip method for peers to request full audit export archive
bodies by archive id. Holder responds with AUDIT_EXPORT_ARCHIVE (71).

Co-authored-by: Cursor <[email protected]>
2026-05-22 04:57:08 -04:00
Raven ScottandCursor 775b31fe86 feat(shared): add AUDIT_EXPORT_ARCHIVE RPC 71 (Phase 100)
Gossip opcode for retained audit export snapshots so moderators
on other peers keep a bounded history of mesh audit exports.

Co-authored-by: Cursor <[email protected]>
2026-05-22 04:44:40 -04:00
Raven ScottandCursor e3d8a14054 feat(shared): add HOOK_FAILURE_DIGEST_SYNC RPC 70 (Phase 99)
Gossip opcode for P2P hook failure digest rollups so moderators on
other peers see the same 24h automation failure summary.

Co-authored-by: Cursor <[email protected]>
2026-05-22 04:38:45 -04:00
Raven ScottandCursor 4225765c48 feat(shared): add AUDIT_EXPORT_SNAPSHOT RPC 69 (Phase 98)
New gossip opcode for P2P audit export snapshots when moderators export
the audit log so online peers can merge the same rows locally.

Co-authored-by: Cursor <[email protected]>
2026-05-22 04:32:08 -04:00
Raven ScottandCursor 707ef6f37f feat(rpc): add WORKER_RELEASE_ANNOUNCE gossip opcode (RPC 68)
Peers can gossip published integration worker versions over the
guild mesh so moderators see update-available hints without HTTP.

Co-authored-by: Cursor <[email protected]>
2026-05-22 04:17:48 -04:00
Raven ScottandCursor 46775f5fa7 feat(rpc): add HOOK_FAILURE_ALERT gossip method (RPC 67)
Automation hook delivery failures now have a dedicated P2P alert opcode
alongside APP_EVENT_RECEIPT (66). Guild mesh handlers broadcast and
ingest failure payloads for mod dashboards and notifications.

Co-authored-by: Cursor <[email protected]>
2026-05-22 03:58:45 -04:00
Raven ScottandCursor f95ff6830d feat(shared): add APP_EVENT_RECEIPT RPC 66 for automation delivery gossip
Discord-style webhook delivery logs are replaced by P2P receipt payloads on
the guild mesh. RPC 66 carries hook execution acknowledgments after APP_EVENT
fanout so peers can mirror delivery state without HTTP callbacks.

Co-authored-by: Cursor <[email protected]>
2026-05-22 03:39:39 -04:00
Raven ScottandCursor 41046c88fb feat(rpc): add AUTOMATION_MANIFEST_UPSERT gossip method (65)
Reserved RPC for P2P automation manifest fanout after guild admins import
or share hook bundles across mesh peers.

Co-authored-by: Cursor <[email protected]>
2026-05-22 03:20:13 -04:00
Raven ScottandCursor c868c1c6c7 feat(rpc): add APP_EVENT gossip method (64)
Reserved RPC slot for P2P app automation payloads consumed by
pearcord-app-events and platform createAppListener.

Co-authored-by: Cursor <[email protected]>
2026-05-22 03:15:03 -04:00
Raven ScottandCursor b848fee5b3 feat(permissions): add VIEW_CHANNEL bit (256) and memberCanViewChannel
Discord-style View channel permission for sidebar visibility and history
access. Builtin role masks include VIEW_CHANNEL for member, moderator, and
owner; lurkers retain VIEW_CHANNEL plus CONNECT_VOICE for read-only voice.

Exports memberCanViewChannel(member, customRoles, effectiveMask) for platform
and channel-permission overwrites.

Co-authored-by: Cursor <[email protected]>
2026-05-22 03:11:14 -04:00
Raven Scott a6ef1802ff feat(shared): CONNECT_VOICE and SPEAK_IN_VOICE permission bits
Add voice/stage permission flags with channel-overwrite support.
Members and moderators receive connect+speak; lurkers receive CONNECT_VOICE
only (listen-only voice). Export memberCanConnectVoice and
memberCanSpeakInVoice; rework memberCanJoinVoiceListenOnly to use effective
masks.
2026-05-22 03:07:32 -04:00
Raven Scott 2d2e37e30c feat(shared): SEND_MESSAGES permission bit for channel overwrites
Add PERMISSION.SEND_MESSAGES (32) to the guild bitmask model. Builtin
member/moderator roles include send by default; lurkers do not. Rework
memberCanParticipate to honor an optional effectiveMask from channel
overwrites (pearcord-channel-permissions).
2026-05-22 03:02:43 -04:00
Raven Scott 7f47ed72ad feat(shared): CHANNEL_OVERWRITE_UPSERT and DELETE RPC codes
Add RPC 62/63 for P2P channel permission overwrite gossip on the guild mesh.
2026-05-22 02:56:26 -04:00
Raven ScottandCursor be8498b6b0 feat(deep-links): invite and guild pearcord:// URL forms (Phase 74)
Add pearcord://invite/{code}, pearcord://g/{guildId}, and
pearcord://g/{guildId}/c/{channelId} parse/format helpers with kind
discriminators for navigateDeepLink. Message links unchanged.

Co-authored-by: Cursor <[email protected]>
2026-05-22 02:18:36 -04:00
Raven ScottandCursor 6b467c16d6 feat(deep-links): argv discovery helpers for OS pearcord:// handler (Phase 73)
Export PEARCORD_SCHEME, isPearcordDeepLink, and findPearcordDeepLinkInArgv
so pearcord-protocol and the desktop worker can detect URLs passed on the
command line by xdg-open, Windows registry handlers, or pear run.

Co-authored-by: Cursor <[email protected]>
2026-05-22 02:15:00 -04:00
Raven ScottandCursor 631c768c2c feat(voice): add memberCanJoinVoiceListenOnly helper (Phase 72)
Lurkers without custom-role permissions may join voice in receive-only
mode. Full members may also opt into listen-only. Exported alongside
memberCanParticipate for platform and smoke tests.

Co-authored-by: Cursor <[email protected]>
2026-05-22 02:10:38 -04:00
Raven ScottandCursor 50fe459251 feat(deep-links): pearcord:// URL parse, format, and message linkify
Add deep-links helpers for guild/DM/message URLs and render pearcord://
as in-app clickable links in formatMessageContent (no external resolver).

Co-authored-by: Cursor <[email protected]>
2026-05-22 02:05:01 -04:00
Raven ScottandCursor 7f38d24541 feat(roles): add lurker read-only builtin role and memberCanParticipate
Introduce MEMBER_ROLES.LURKER with zero permission mask and
memberCanParticipate() so platforms can block send/react/voice unless
custom roles grant permission bits.

Co-authored-by: Cursor <[email protected]>
2026-05-22 02:00:03 -04:00
Raven ScottandCursor 5313d936e5 feat(shared): ROLE_UPSERT RPC and memberHasPermission helper (v0.8.31)
Add RPC 59–61 for custom guild roles, memberHasPermission for effective bitmask
checks, and extend canModifyMessage to honor customRoleIds + customRoles rows.

Co-authored-by: Cursor <[email protected]>
2026-05-22 01:48:22 -04:00
Raven ScottandCursor d9bd4ede05 feat(rpc): add SOUND_UPSERT (57) and SOUND_PLAY (58) for guild soundboard
Extend the guild gossip RPC table so voice soundboard clips and in-channel
play events can sync over the existing Hyperswarm mesh without a central relay.

Co-authored-by: Cursor <[email protected]>
2026-05-22 00:19:41 -04:00
Raven ScottandCursor cd5e0ed162 feat(rpc): PROFILE_COSMETIC_UPDATE (56) and profileCosmeticsTopic
Add RPC for P2P profile cosmetic sync and topic helper
pearcord:profile-cosmetics:{userId} for multi-device and social fanout.

Co-authored-by: Cursor <[email protected]>
2026-05-21 23:30:25 -04:00
Raven ScottandCursor 5f246c6984 feat(rpc): add EMOJI_PACK_UPSERT (54) and EMOJI_PACK_DELETE (55)
Guild emoji packs sync over the guild mesh with dedicated RPC methods,
mirroring sticker pack RPC 52–53 for consistent Pearcord gossip routing.

Co-authored-by: Cursor <[email protected]>
2026-05-21 23:14:17 -04:00
Raven ScottandCursor 05b8dc5744 feat(rpc): add STICKER_PACK_UPSERT (52) and STICKER_PACK_DELETE (53)
New protomux RPC constants for P2P guild sticker pack sync on the guild mesh,
complementing existing STICKER_UPSERT (49) for individual animated stickers.

Co-authored-by: Cursor <[email protected]>
2026-05-21 22:57:24 -04:00
Raven ScottandCursor 8f485161f5 feat(shared): add GUILD_BOOST_LEDGER_APPEND RPC (51)
Registers gossip method for per-user boost attribution synced alongside
guild boost count updates in v0.8.6.

Co-authored-by: Cursor <[email protected]>
2026-05-21 22:33:55 -04:00
Raven ScottandCursor b07e496942 feat(shared): add ANNOUNCEMENT_HUB_POST RPC constant (50)
Registers discovery gossip method for remote announcement hub syndication
used by pearcord-discovery and pearcord-platform in v0.8.5.

Co-authored-by: Cursor <[email protected]>
2026-05-21 22:30:50 -04:00
Raven Scott 60465213fe feat(shared): add STICKER_UPSERT RPC constant (49)
Extend guild gossip RPC table for animated sticker pack sync on the
P2P mesh alongside existing EMOJI_UPSERT and attachment metadata.
2026-05-21 22:26:39 -04:00
Raven Scott 548e75ee7a feat(shared): add GUILD_BOOST_UPDATE RPC constant (48)
Extend the guild gossip RPC table so pearcord-guild and pearcord-boosts
can synchronize local cosmetic boost counts and banner colors over the
P2P mesh without a central billing API.
2026-05-21 22:14:32 -04:00
Raven ScottandCursor 3a83557630 feat(shared): ANNOUNCEMENT_CROSSPOST_CONFIG (46) and FOLLOW_UPDATE (47)
Gossip opcodes for announcement cross-post configuration and per-user
channel follow state on the guild mesh.

Co-authored-by: Cursor <[email protected]>
2026-05-21 22:07:22 -04:00
Raven ScottandCursor 8cc2f1d91e feat(shared): add SCREEN_SHARE_UPDATE RPC (45)
Gossip opcode for P2P screen share start/stop state in voice channels.

Co-authored-by: Cursor <[email protected]>
2026-05-21 22:03:15 -04:00
Raven ScottandCursor 9bc65c253f feat(shared): add AUTOMOD_CONFIG_UPDATE RPC (44)
Extend protomux gossip RPC table with AUTOMOD_CONFIG_UPDATE for P2P
guild automod configuration sync across the mesh.

Co-authored-by: Cursor <[email protected]>
2026-05-21 21:54:56 -04:00
Raven ScottandCursor 17e2851e3c feat(shared): add CHANNEL_TYPES.STAGE and RPC.STAGE_SPEAKER_UPDATE (43)
Extend channel type enum for P2P stage channels and allocate gossip RPC
for pearcord-stage speaker role updates (audience, pending, speaker).

Co-authored-by: Cursor <[email protected]>
2026-05-21 21:49:55 -04:00
Raven ScottandCursor 6b779b1855 feat(shared): add RPC.FORUM_POST_TAGS for P2P forum post tag sync
Co-authored-by: Cursor <[email protected]>
2026-05-21 21:34:40 -04:00
Raven ScottandCursor 4631566ae0 feat(shared): add CHANNEL_TYPES.FORUM for forum channel support
Extends the shared channel type enum so guild/platform/UI can create and
recognize forum channels (posts as threads) in P2P gossip payloads.

Co-authored-by: Cursor <[email protected]>
2026-05-21 21:30:09 -04:00
Raven ScottandCursor 6af170001a feat(shared): add CHANNEL_READ RPC for DM read receipts
New gossip opcode 41 — peers broadcast lastReadAt when opening a DM
channel so senders can show a Seen indicator (P2P, no central API).

Co-authored-by: Cursor <[email protected]>
2026-05-21 21:16:52 -04:00
Raven ScottandCursor 98a4353fce feat(shared): add group DM topic helpers and GROUP_DM_UPSERT RPC
Add CHANNEL_TYPES.GROUP_DM, normalizeGroupParticipants (3-10),
groupDmTopic/groupDmChannelId, and RPC 40 for channel gossip.

Co-authored-by: Cursor <[email protected]>
2026-05-21 20:59:51 -04:00