Prefer aligned messages.history for channel search, fall back to db
with channelId filter, and invalidate stale cache on channel switch.
Co-authored-by: Cursor <[email protected]>
Invalidate forum search cache on forum channel switch; add channel-scoped
_resolveSearchResults, forum archived hidden count, parentChannelPermissions,
cache-hit guild.search debug span, and skip listMembers during guild loading.
Co-authored-by: Cursor <[email protected]>
Bust search cache at loadGuild/openHome/createGuild and on superseded
loads. Track guild id on cache entries; expose searchResultsCached.
Log cache misses at debug. Clear refreshing in refreshSearch finally.
Voice roster includes streamingLabel from screen share gossip.
Co-authored-by: Cursor <[email protected]>
Invalidate search cache on refresh, guild load, and forum archived toggle.
Log light-view cache hits at debug. Distinct @here permission error.
Expose streaming flag on voice roster from active screen shares.
Co-authored-by: Cursor <[email protected]>
Resolve forum parent when active channel is a forum post thread so
forum-scoped search works after creating or viewing a post. Cache search
results for view(light), expose searchMs on mesh meta, and log superseded
guild loads at info.
Co-authored-by: Cursor <[email protected]>
Log guild.search around _resolveSearchResults, abort stale guild opens
after mesh join when load generation advances, and require MENTION_EVERYONE
for @everyone/@here sends.
Co-authored-by: Cursor <[email protected]>
Persists filtered JSONL lines from the renderer to storage so agents and support can attach logs without clipboard limits.
Co-authored-by: Cursor <[email protected]>
When guild open has no viewable channels, skip mesh search refresh and
resolve empty results with skip metadata. Emoji batch prefetch honors the
negative miss cache; sticker gossip prefetch waits for attachments module.
Session startup logs INFO when initial guild mesh flush was bounded.
Co-authored-by: Cursor <[email protected]>
Log session.startup at info when guild mesh flush was bounded, skip forum
stale search until a forum channel is active, batch-prefetch emoji attachments
after guild open, and guard sticker prefetch until attachments exist.
Co-authored-by: Cursor <[email protected]>
Downgrade slow guild.open and guild.load spans to info when mesh flush
was bounded, skip stale search refresh until a channel is selected, and
defer sticker attachment prefetch until the emoji registry is initialized.
Co-authored-by: Cursor <[email protected]>
Init registry and ensure builtins when the command list is empty so the
composer picker has /help and /ping after guild open.
Co-authored-by: Cursor <[email protected]>
Avoid slow-open WARN when the user lacks view permission on all text
channels by passing logLevel info on the guild.open span.
Co-authored-by: Cursor <[email protected]>
Defer guild module wiring until after channel pick, expose no-viewable-channel
state on the view, and clear emoji miss cache when mesh prefetch succeeds.
Co-authored-by: Cursor <[email protected]>
_selectGuildChannelWithUnread skips channels without view permission.
Prefetch emoji/sticker bytes on gossip, parallel listChannels+members
in view(), joinMesh span INFO when flush is bounded.
Co-authored-by: Cursor <[email protected]>
view(opts) accepts { light: true } to reuse deviceSync.listDevices()
for up to PEARCORD_VIEW_DEVICES_CACHE_MS on hot poll paths.
Co-authored-by: Cursor <[email protected]>
Ensure EMOJI_UPSERT rows hydrate attachments store, return null from
readEmojiImage when bytes are missing, and log mesh flush timeout at INFO.
Co-authored-by: Cursor <[email protected]>
Cap Hyperswarm flush at PEARCORD_GUILD_SWARM_FLUSH_MS, log sub-spans for
leave/join/voice, defer guild modules and discovery touch off critical path.
Co-authored-by: Cursor <[email protected]>
Wire pearcord-log for ready(), session startup, loadGuild, and openGuild
with stale-load warnings and structured errors.
Co-authored-by: Cursor <[email protected]>
Expose boot/switch loading state, always emit session-ready in finally,
ignore stale loadGuild via generation counter, and cancel load on openHome.
Co-authored-by: Cursor <[email protected]>
Expose server-wide age-restricted gate toggle through updateGuildSettings and
include nsfwGateEnabled in guild view snapshots for UI gate logic.
Co-authored-by: Cursor <[email protected]>
Expose activeChannelLastReadAt from pre-mark read cursor for unread
divider UI and add reorderGuildCustomRoles with ROLE_UPSERT gossip.
Co-authored-by: Cursor <[email protected]>
Expose category reorder for MANAGE_CHANNELS holders with audit logging
and mesh gossip for each moved category row.
Co-authored-by: Cursor <[email protected]>
Wire guild channel reorder for MANAGE_CHANNELS holders, gossip
CHANNEL_UPDATE per moved channel, and audit channel.reorder events.
Co-authored-by: Cursor <[email protected]>
Document guild channel pick when one heavy plain-only category outscores
three mention+plain combo categories; smoke test:guild-plain-beats-triple-combo.
Co-authored-by: Cursor <[email protected]>
Document guild-open bucket selection when mention+plain and plain-only
totals match and lower channel position breaks the tie.
Co-authored-by: Cursor <[email protected]>
Document guild-open selection when two mention+plain buckets share the same
total score and lower minimum channel position wins.
Co-authored-by: Cursor <[email protected]>
Document guild-open bucket selection when mention weight breaks a tie
between equal plain-unread totals across categories.
Co-authored-by: Cursor <[email protected]>