Extend dm.open metadata, add dm.send in DM mode and dm.group.create
span with structured errors; use span.fail on DM open failures.
Co-authored-by: Cursor <[email protected]>
Wrap updateUserPrefs and updateNotificationPrefs with timed spans and
extend guild.update metadata for settings diagnostics.
Co-authored-by: Cursor <[email protected]>
Extend identity.register metadata and add guild.create and invite.join
timed spans with structured end/error fields for diagnostics.
Co-authored-by: Cursor <[email protected]>
Adds richer discovery diagnostics in platform spans: filter query/sort/minMembers,
publish before/after listed transitions, and mesh cached-stats awareness to improve
live triage of discovery behavior in production logs.
Add pcmBytes/peerCountInChannel/wasGossip on soundboard.play;
replacedExisting on upload; hadAttachment on delete.
Co-authored-by: Cursor <[email protected]>
Add peerCountInChannel/displayActive on screen.start; frameBytes and
captureSource on screen.capture; captureSourceWas/hadCaptureLogged on
screen.stop.
Co-authored-by: Cursor <[email protected]>
Add hasDescription on embed.resolve and hasTitle/hasImage/urlHost on
embed.gossip span end for dev-log embed-errors filtering.
Co-authored-by: Cursor <[email protected]>
Add filenameLen on attachment.stage, attachmentId/isImage on attachment.read,
embed.gossip span, and gossipSent on embed.resolve.
Co-authored-by: Cursor <[email protected]>
Track hadMeBefore, added, gossipSent on reaction.toggle; emit
reaction.gossip timing span when fanning out to guild mesh.
Co-authored-by: Cursor <[email protected]>
Add replyToId on send, deltaLength on edit, and hadReactions/reactionCount
on delete before message removal.
Co-authored-by: Cursor <[email protected]>
Emit cache-hit and mesh-merge timing spans with scope and hit counts for
dev-log search-errors filtering and phase499 platform smoke.
Co-authored-by: Cursor <[email protected]>
Rename mark-all logging to inbox.mark-all with remainingUnread; extend
inbox.mark-read and notification.open span metadata for diagnostics.
Co-authored-by: Cursor <[email protected]>
Structured logging for soundboard operations with error anchors for the
soundboard-errors dev-log filter and phase496 metadata smokes.
Co-authored-by: Cursor <[email protected]>
Add screen.capture span on first display frame ingest and extend
screen.start/stop end metadata for diagnostics.
Co-authored-by: Cursor <[email protected]>
Extend stage.join, speaker request/approve/demote spans with peer counts
and role transition metadata for diagnostics.
Co-authored-by: Cursor <[email protected]>
Add peerCount and channelType on voice.join, listenOnlyWas on voice.leave,
and stage/screen span end fields for diagnostics.
Co-authored-by: Cursor <[email protected]>
Add discovery.publish and discovery.mesh timing spans, log cache hits on
discovery.list, and use span.fail for discovery.join failures.
Co-authored-by: Cursor <[email protected]>
Add hasMention/isSlash on message.send, priorLength on message.edit,
hadAttachments on message.delete, emojiLength on reaction.toggle, and
channelId on pin.message/pin.unpin span start for richer diagnostics.
Co-authored-by: Cursor <[email protected]>
Add slash.invoke argCount/ephemeral/builtin and bot.install botName/permissionMask
plus bot.message contentLength to span.end for diagnostics and dev-log filters.
Co-authored-by: Cursor <[email protected]>
Reuse public listing and stats snapshots for 12s during light polls so typing and composer focus are not interrupted by repeated discovery.list work and log noise.
Co-authored-by: Cursor <[email protected]>
Add webhookName/channelId on webhook.create, deleted on webhook.delete,
contentLength/hasUsername on webhook.execute, and firstName on slash.register.
Co-authored-by: Cursor <[email protected]>
Add hasColor and permissionMask on role.create/update spans; allowBits and
denyBits on permission.overwrite; deleted on permission.overwrite.delete.
Co-authored-by: Cursor <[email protected]>
Add parentType/threadName on thread.create, parentId on thread.archive,
parentChannelId/messageId on forum.post, and normalize error logs to error:.
Co-authored-by: Cursor <[email protected]>
Add meshHitCount/localHitCount/mesh on search span end and messageId/pinCount
on pin.message and pin.unpin span end.
Co-authored-by: Cursor <[email protected]>
Enrich dm.open, discovery.list, and contacts.accept span.end fields and
normalize error logs to error: for dev-log dm-errors filtering during
Phase 468 discovery and DM depth work.
Co-authored-by: Cursor <[email protected]>
Add leavingIsStage to voice.leave span.end and label to screen.start span.end
so dev-log voice-errors filter and diagnostics clipboard capture richer
voice/stage disconnect context during guild operations.
Co-authored-by: Cursor <[email protected]>
message.send/edit span.end includes contentLength; reaction.toggle
includes removed flag for observability and agentctl verification.
Co-authored-by: Cursor <[email protected]>
Include role name on role.update span.end and targetType on permission.overwrite span.end for P2P permission debugging.
Co-authored-by: Cursor <[email protected]>
Add guildId/channelId to slash.invoke; bot.message and bot.install spans
with structured errors for Phase 461 observability.
Co-authored-by: Cursor <[email protected]>
Add guildId to emoji.upsert span/end/error logs and wrap upsertGuildSticker
in sticker.create span with span.fail for Phase 459 observability.
Co-authored-by: Cursor <[email protected]>
deleteChannel with gossip; thread.create, thread.archive, and forum.post
spans include guildId, span.fail, and structured error logs.
Co-authored-by: Cursor <[email protected]>
Wrap updateGuildSettings and createInvite with timed spans and structured
error logs for settings diagnostics and dev-log filters.
Co-authored-by: Cursor <[email protected]>
Add searchGuildId to guild.search spans via endSearchSpan helper and
guildId metadata on pin.message and pin.unpin spans for diagnostics.
Co-authored-by: Cursor <[email protected]>
Extend notification.open, markAll, markRead, and inbox/thread read spans
so span.end includes guildId for diagnostics and dev-log filtering.
Co-authored-by: Cursor <[email protected]>
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]>