Add guildId and channelId to voice.join/leave, stage.join/speaker.*, and
screen.start/stop spans and error logs; standardize error field naming.
Co-authored-by: Cursor <[email protected]>
Phase 449 adds guildId and channelId to message.send/edit/delete and reaction.toggle spans; split read-only participate errors for send vs reactions.
Co-authored-by: Cursor <[email protected]>
Extend role.create/update/delete/reorder/member and permission.overwrite
spans with guildId metadata. Expose channelPermsByChannel and
channelOverwriteCount in view snapshot for UI diagnostics.
Co-authored-by: Cursor <[email protected]>
Call _invalidateSearchCache when markChannelRead completes for thread
channels so stale forum/guild search results refresh after inbox read.
Co-authored-by: Cursor <[email protected]>
Add markNotificationRead wrapper with notification.markRead span and
error logging. Use inbox.mark-read span for non-thread markChannelRead.
Extend notification.markAll span with guildId metadata.
Co-authored-by: Cursor <[email protected]>
Add observability spans and error logs for thread.create, forum.post,
thread.read, and thread.archive, plus thread.archive audit entries.
Co-authored-by: Cursor <[email protected]>
Wrap upsertGuildEmoji and _normalizeStickerNames with timed spans
and structured error logs for emoji-errors diagnostics filter.
Co-authored-by: Cursor <[email protected]>
Wrap voice.join, stage.join, stage.speaker.*, and screen.start/stop
with timed spans and structured error logs for voice-errors diagnostics.
Co-authored-by: Cursor <[email protected]>
Wrap stageAttachment, readAttachmentPreview, and _queueLinkEmbed with log.time
spans and attachment.stage/read + embed.resolve error records on failure.
Co-authored-by: Cursor <[email protected]>
Wrap sendMessage, editMessage, deleteMessage, and toggleReaction with log.time
spans and message.* / reaction.toggle error records on failure.
Co-authored-by: Cursor <[email protected]>
Wrap createChannelWebhook, deleteChannelWebhook, executeChannelWebhook,
registerSlashCommands, deleteSlashCommand, and executeSlashCommand with timed spans
and structured error logs for dev-log webhook-errors and slash-errors filters.
Wrap banMember, kickMember, timeoutMember, and exportAuditLog with timed spans
and structured error logs for dev-log moderation-errors and audit-errors filters.
Persist guild inbound handler as ingestInboundGuildMessage for home view, resolve mentions from DB members when guild mesh is detached, and add structured error logs for mark-all, open notification, and mark-channel-read.
Co-authored-by: Cursor <[email protected]>
deleteSlashCommand with gossip; slash.register/delete/invoke audit entries;
member role checks and ephemeral reply prefix on execute.
Co-authored-by: Cursor <[email protected]>
Wire pearcord-webhooks for local token posts, view.guildWebhooks, gossip
sync, and webhook author display names on messages.
Co-authored-by: Cursor <[email protected]>
Bounded joinMesh wait now logs INFO and completes guild.open instead of
rejecting the session when Hyperswarm join stalls past flushMs + 5s.
Co-authored-by: Cursor <[email protected]>
Emit a dedicated debug line when mesh-enabled refresh reuses cached
search results, alongside the generic refresh cache hit log.
Co-authored-by: Cursor <[email protected]>
Emit cache hit when mesh-off refresh would reuse cached results and
cache miss only when the cache key does not match.
Co-authored-by: Cursor <[email protected]>
When an unchanged setSearch call does not hit cache with mesh disabled,
emit a dedicated debug line with scope and includeMesh false.
Co-authored-by: Cursor <[email protected]>
When an unchanged setSearch call does not hit the search cache with mesh
enabled, emit a dedicated debug line with scope and includeMesh true.
Co-authored-by: Cursor <[email protected]>
When mesh search refresh misses cache with includeMesh true, emit a
dedicated debug line before the mesh-on refresh span.
Co-authored-by: Cursor <[email protected]>
Mirror mesh-on cache hit logging when includeMesh is false so guild
search diagnostics show scope on unchanged cache hits.
Co-authored-by: Cursor <[email protected]>
When refreshSearch is skipped because mesh is off but in-memory cache
would have hit, emit guild.search refresh mesh-off cache miss for diagnostics.
Co-authored-by: Cursor <[email protected]>
When setSearch no-ops with valid in-memory cache and mesh enabled, emit
guild.search setSearch mesh-on cache hit including scope for diagnostics.
Co-authored-by: Cursor <[email protected]>
refreshSearch emits guild.search refresh cache miss before mesh-on
invalidation, both including scope and includeMesh for diagnostics.
Co-authored-by: Cursor <[email protected]>
Log guild.open error when _openGuild fails for diagnostics filtering.
refreshSearch returns immediately on mesh-off with scope in skipped debug log.
Co-authored-by: Cursor <[email protected]>
Log guild.search setSearch mesh-on scope change when includeMesh is on and
search scope changes between channel, forum, and guild.
Co-authored-by: Cursor <[email protected]>
Skip invalidate when search cache is still valid and log guild.search refresh
cache hit with scope at debug level.
Co-authored-by: Cursor <[email protected]>
Emit guild.search unchanged cache hit with scope before the generic
unchanged log for mesh-on and mesh-off duplicate queries.
Co-authored-by: Cursor <[email protected]>
Emit guild.search refresh mesh-off before cache invalidation when
includeMesh is false to aid diagnostics during local-only refresh.
Co-authored-by: Cursor <[email protected]>
Emit guild.search unchanged mesh-off at debug when duplicate search
runs with mesh disabled to distinguish from mesh-on no-ops.
Co-authored-by: Cursor <[email protected]>
Emit guild.search refresh skipped with reason and query length for short
or missing queries to aid diagnostics during mesh-off refresh flows.
Co-authored-by: Cursor <[email protected]>
Move the one-tick searchUnchanged flag to the top of view() so full and
light polls both consume it once before async work begins.
Co-authored-by: Cursor <[email protected]>