Single API toggles voiceRosterMutedOnly and voiceRosterDeafenedOnly
together for Phase 141 combined sidebar filter chip.
Co-authored-by: Cursor <[email protected]>
Expose setVoiceRosterMutedOnly with USER_PREFS persistence, ingest
voiceRosterMutedOnly and discoveryExploreBaselineAt from prefs, and
record baselineAt when markDiscoveryExploreOpened runs. View adds
discoveryExploreBaseline, discoveryExploreBaselineAt, and
voiceRosterMutedOnly for Phase 139 UX (v0.8.104).
Co-authored-by: Cursor <[email protected]>
Phase 138 platform changes:
- Apply local voiceMedia mute/deafen to self roster row via myVoiceChannelId
(no protomux roundtrip required for sidebar indicators).
- Persist discoveryExploreBaseline through updateUserPrefs on Explore open.
- Ingest discoveryExploreBaseline from USER_PREFS on boot and prefs events.
Co-authored-by: Cursor <[email protected]>
- setThreadsPanelSort and threadsPanelSort in view
- refreshDiscoveryListingsFromMesh on setDiscoveryFilter
- discoveryMeshRefreshAt for Explore freshness
Co-authored-by: Cursor <[email protected]>
- setThreadsPanelParentFilter and view.threadsPanelParentFilter
- voiceStatesByChannel rows include presenceStatus from guild mesh
- maybeRefreshStaleSearch on selectChannel for forum channel switches
Co-authored-by: Cursor <[email protected]>
Add maybeRefreshStaleSearch() to re-run guild/forum mesh queries when
searchMeshMeta.fetchedAt is older than 90s and mesh is enabled.
Invoke after loadGuild so switching servers refreshes stale P2P search
hits without requiring a manual ↻ click.
Co-authored-by: Cursor <[email protected]>
Add refreshSearch() to re-run guild/forum mesh queries and stamp
searchMeshMeta.fetchedAt for stale UI indicators.
Persist guild online counts to USER_PREFS.guildPresenceCache (debounced
gossip) and merge remote cache on prefs ingest so companion rail presence
stays consistent across linked devices.
Expose presence row timestamps on guildPresenceSummary in view().
Co-authored-by: Cursor <[email protected]>
Persist USER_PREFS.companionLastGuildId on every loadGuild so the
companion restores the last server the user opened on any device.
Restore companionLastGuildId on companion session startup instead of
always picking the first guild in the list.
Track per-guild online counts in _guildPresenceSummary (updated on
presence gossip) and expose guildPresenceSummary on platform.view()
for the companion guild rail presence dots.
Co-authored-by: Cursor <[email protected]>
Add searchForumPostsWithMesh and _forumPostsFromMeshMessages to merge
local forum haystack hits with guild MESSAGE_SEARCH mesh responses via
pearcord-search.mergeForumSearchHits.
_resolveSearchResults uses mesh for forum scope and records
_lastSearchMeshMeta with scope forum for the desktop search UI.
Co-authored-by: Cursor <[email protected]>
mergeSearchHits accepts query for ranked enrichment; DB fallback uses
rankAndEnrichSearchHits. linkDevicePairCode accepts an external Hyperswarm
for smoke/live pairing without destroying the guest swarm early.
Co-authored-by: Cursor <[email protected]>
Builds guildSearchIndex into GUILD_SYNC payloads from memory or the
persisted GuildSearchIndexStore, and merges inbound slices into local
indexes on join so multi-device search stays warm after mesh connect.
Co-authored-by: Cursor <[email protected]>
Integrate GuildSearchIndexStore on platform startup and debounced persist
after message ingest. Expose getGuildSearchIndexMeta and view.searchIndexMeta
for smokes and UI diagnostics.
Co-authored-by: Cursor <[email protected]>
Add _resolveAuditExportFilter to merge guild schedule filter with user prefs.
setAuditLogExportFilter now writes filter into auditExportSchedule for mods.
Push signed audit CSV on member join via debounced _pushAuditCsvOnMemberJoinIfDue
when pushCsvOnMemberJoin is enabled.
Fix GUILD_SYNC member ingest to only emit member events for new roster rows and
trigger the same debounced CSV push when a peer was offline during MEMBER_JOIN
gossip. Expose auditExportScheduleFilter in view for UI schedule hints.
Co-authored-by: Cursor <[email protected]>
_runScheduledAuditExportIfDue now calls pushAuditExportCsvToMesh when
pushSignedCsvToMesh is enabled. View exposes auditExportCsvMeta for the
audit modal HMAC signature badge.
Co-authored-by: Cursor <[email protected]>
- dryRunDigestWebhookRelay and webhook preview on digest-relay hook dry-run
- refreshArchivePeerHealth with persist + GUILD_SYNC mesh push
- syncModDigestGroupDmFromMesh and modDigestGroupDmMeta on GUILD_SYNC bundle
- Signed CSV hook failure digest export with signatureValid
- Ingest mod digest meta for all members; open group DM for mods only
Co-authored-by: Cursor <[email protected]>
Add ensureModDigestGroupDmChannel and _postModDigestGroupDmSummary so hook
failure digest mesh sync can post to an auto-created mod group DM without
leaving guild mode. Requires two other moderators (manage guild/channels).
Restore guild session after DM posts. Extend hook failure notify prefs API
for mod digest group DM toggles.
Co-authored-by: Cursor <[email protected]>
- Sign relay handoffs with guild-derived secret for webhook/smtp plugins
- Verify signature on getLastDigestRelayHandoff (signatureValid)
- Apply health decay in archive peer picker
- Show signature status in server settings UI
Co-authored-by: Cursor <[email protected]>
Record digest relay handoffs, post digest summaries to configured inbox channels,
validate worker versions on announce, sync digestRelayHandoff on GUILD_SYNC,
and expose getLastDigestRelayHandoff (Phase 109 v0.8.73).
Co-authored-by: Cursor <[email protected]>
- listAuditArchiveFetchPeers returns meshConnected per member
- automationDigestExportSchedule timer and snapshot persistence
- GUILD_SYNC slices for schedule and snapshot metadata
- runOverdueAutomationSchedules includes digest export task
Co-authored-by: Cursor <[email protected]>
- fetchAuditExportArchiveFromMesh via RPC 72 request/response waiters
- Respond to audit-export-archive-request when local archive has entries
- getAutomationScheduleDashboard on view state
- runIntegrationWorkerTrial fans out MESSAGE_CREATE and requires sawMessageCreate
- Merge archive ingest resolves pending mesh fetch waiters
Co-authored-by: Cursor <[email protected]>