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.
Export unfurlSuppressReason, isEmbedDomainBlocked, and
embedHostnameFromUrl for composer preview and dev diagnostics.
Co-authored-by: Cursor <[email protected]>
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]>
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]>
Export groupDmAttachmentMaxBytes and DEFAULT_ATTACHMENT_MAX_BYTES from
attachment-limits for platform staging enforcement.
Co-authored-by: Cursor <[email protected]>
Export groupDmVoiceNoteMaxBytes from voice-note-wire for group DM
voice message size limits divided by participant count.
Co-authored-by: Cursor <[email protected]>
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]>
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]>
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]>
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]>
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]>
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]>
Add contentHasEveryoneMention and contentHasHereMention helpers so
platform can return distinct permission errors for each mention type.
Co-authored-by: Cursor <[email protected]>
Introduce PERMISSION.MENTION_EVERYONE (512) for owner/moderator defaults
and contentHasEveryoneOrHereMention() for send-time enforcement.
Co-authored-by: Cursor <[email protected]>
formatMessageContent accepts selfMentionNames and applies mention-self when the rendered @name matches the viewer.
Co-authored-by: Cursor <[email protected]>
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]>
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]>
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]>
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]>
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]>
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]>
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]>
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]>
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]>
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]>
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]>
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]>
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.
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).
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]>
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]>
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]>
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]>
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]>
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]>
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]>
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.
Gossip opcodes for announcement cross-post configuration and per-user
channel follow state on the guild mesh.
Co-authored-by: Cursor <[email protected]>
Extend protomux gossip RPC table with AUTOMOD_CONFIG_UPDATE for P2P
guild automod configuration sync across the mesh.
Co-authored-by: Cursor <[email protected]>
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]>
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]>
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]>