Add exportAttachmentDiagnostics, attachment.fetch spans with setFetchProgress,
groupDmAttachmentMaxBytes on stageAttachment, and slowmode gate on staging.
Co-authored-by: Cursor <[email protected]>
Adds exportVoiceNoteDiagnostics, voiceNoteGate in view, voiceNote.commit span, max duration guard on stage, and _ingestVoiceNoteGossip for duplicate VOICE_NOTE_CREATE payloads.
Co-authored-by: Cursor <[email protected]>
Surfaces draft save duration and payload size in platform logs to support
Phase 660 composer draft flush debounce verification.
Co-authored-by: Cursor <[email protected]>
Add refreshScreenSharePreview for frozen stream recovery and invoke
presence.reapStalePeers during view() so ghost peers are cleared.
Co-authored-by: Cursor <[email protected]>
Add mesh-peer-quality helpers (RTT, drop rate, stale cursor) for selective
sync prioritization and rejoin jitter on mesh peer retries. Expose
meshStatusSummary, platformCapabilities, and ipcContractVersion on view;
exportActiveChannelTopicPreview now passes guildId to getChannelSettings so
descriptions resolve correctly for automation smokes.
Co-authored-by: Cursor <[email protected]>
Expose gossipLaneAlerts thresholds in meshStabilityStats and add
boundedStage/boundedStatusHint on guildSyncHealthRail for clearer UI.
Co-authored-by: Cursor <[email protected]>
Add previewJoinInvite for join preview metadata and templateId channel
presets on createGuild for friends/club onboarding branches.
Co-authored-by: Cursor <[email protected]>
Integrate pearcord-voice-notes with stage/discard/commit APIs, permission
gates, and voiceNoteDraft in view payloads for composer UI parity.
Co-authored-by: Cursor <[email protected]>
Reject malformed invites and deep links at the platform layer using
validatePastedNavigationInput before mesh join or navigation side effects.
Co-authored-by: Cursor <[email protected]>
Resolve stale activeChannelId against the visible channel list during
view finalize and channel-delete gossip, clear mismatched message slices,
and expose activeChannel plus activeChannelRecovery in the view payload.
Co-authored-by: Cursor <[email protected]>
Run _auditChannelViewConsistency during view() to detect orphan rows
and pin/reaction cache mismatches, auto-invalidate stale list caches,
and expose channelConsistencyAudit in the view payload.
Co-authored-by: Cursor <[email protected]>
Track per-peer lastSeenAt, sweep idle hyperswarm sockets on an interval
and before peer-retry, and expose peerRetryAttempt, lastPeerSeenAt, and
eviction totals on guildSyncHealthRail.
Co-authored-by: Cursor <[email protected]>
Route guild.open, mesh-bounded bootstrap, create, and peer-retry joins
through _requestGuildMeshJoin so startup/switch races skip stale loadGen
attempts and share one in-flight join per guild instance.
Co-authored-by: Cursor <[email protected]>
Add _computeGuildMeshPeerRetryDelayMs keyed off lastPeerSeenAt with RTT and env min/max bounds, record peer contact on join, and emit spacingSource diagnostics for bounded retry scheduling.
Co-authored-by: Cursor <[email protected]>
Introduce `opts.detail` support for minimal/light/full/diagnostic polling with legacy light-mode compatibility and expose the resolved detail level in view diagnostics metadata.
Co-authored-by: Cursor <[email protected]>
Add cache-hit/source metadata for pin, reaction, and discovery list spans, coalesce in-flight discovery list fetches, and batch view lookups to reduce redundant reads during render bursts.
Co-authored-by: Cursor <[email protected]>
This introduces CI-enforced checks that compare index.js pearcord-* requires against declared dependencies and smoke-resolve imported modules, preventing undeclared module regressions in local file-link and attached runtime environments.
Co-authored-by: Cursor <[email protected]>
This commit captures the current working tree state as requested, including code, docs, dependency, and lockfile updates present in this repository.
Co-authored-by: Cursor <[email protected]>
Add the missing `pearcord-dm-voice` local dependency so Bare-based attached/headless agentctl sessions can resolve platform imports reliably, and document the stabilization in the platform README for future module-graph maintenance.
Co-authored-by: Cursor <[email protected]>
Extend `voteDmPoll` with desired-state semantics so duplicate gossip or
retries no-op safely, and include explicit non-impact metadata for unread
and mention behavior during poll reaction updates.
Co-authored-by: Cursor <[email protected]>
Introduce `deleteDmPoll` in DM mode with poll-shape validation and existing
message-delete permission checks, covering 1:1 and group DM contexts while
keeping message deletion semantics peer-local and P2P.
Co-authored-by: Cursor <[email protected]>
Expand DM poll command parsing support to include anonymous commands and
add `editDmPoll` with a strict first-vote guard so question/options can
only be changed before any vote rows exist.
Co-authored-by: Cursor <[email protected]>
Add `exportDmThreadP2PAudit()` so DM thread channels can be audited
for strict P2P topic conformance (`pearcord:dm-thread:*` and no central URL references).
Also document the new phase658 closure behavior in module docs.
Co-authored-by: Cursor <[email protected]>
Extend `archiveThread` so DM threads can be archived/unarchived without a guild context:
- update `@pearcord/channels` + `THREAD_META` in `guildId: dm`,
- keep active DM thread state in sync,
- gossip updated DM channel metadata to peers,
- preserve existing guild-thread archive behavior.
Co-authored-by: Cursor <[email protected]>
This completes the Phase 658 batch 2 platform layer for Discord-like DM threads and call history.
- Enrich DM conversations with `dmThreads` + `threadUnread` rollups for inbox badges.
- Load persisted DM call history (`dm-call-history`) and expose `dmCallHistory` + `dmCallHistoryEngine` in view.
- Implement blocked-participant guard when forking a `dm_thread` from the parent DM.
- Wire DM call history entries into DM message search stubs.
Tests:
- npm run test:phase658-batch2
- npm run test:agentctl-forum-dm-bridge-phase658
Co-authored-by: Cursor <[email protected]>
Peer avatar image IPC, live screen-share on video calls, toggleDmVideoCall,
readPeerAvatarPreview, and dismissed rekey channel id persistence.
Co-authored-by: Cursor <[email protected]>