Register was racing pushState ahead of sessionReady, leaving the UI on the session-restore shell instead of onboarding.
Co-authored-by: Cursor <[email protected]>
Add guild.mesh.churn.scale logging on partition heal and topic pool cap,
hub-ingest composer focus in view, and federation aggregate timestamps for Explore.
Co-authored-by: Cursor <[email protected]>
Track guild mesh peers in GuildTopicPool, export mesh replication diagnostics,
and use per-guild listing refresh after partition heal and offline recovery.
Co-authored-by: Cursor <[email protected]>
Add discovery.mesh.federation spans, per-guild public listing refresh on guild
focus without stalling other meshes, and exportFederationSyncDiagnostics for
multi-guild plus discovery observability.
Co-authored-by: Cursor <[email protected]>
Add PEARCORD_PARTITION_HEAL_COOLDOWN_MS throttling, exportPartitionHealDiagnostics, and durationMs on heal spans so production soak runs can be rate-limited and inspected without a full guild sync dump.
Co-authored-by: Cursor <[email protected]>
Add member page burst limiter, roster-scaled bandwidth cap, roster sync
progress helpers, ingest health patches, and diagnostics memberSync for
partial GUILD_SYNC member pages on large guilds.
Co-authored-by: Cursor <[email protected]>
Add compactThreadSparseCore with guild.replication.compact span, mesh
ingest hook, lastReplicationCompact view field, and await replicator append
on sendMessage to avoid store races.
Co-authored-by: Cursor <[email protected]>
Expose requestGuildSyncBurst, runOfflineRecoverySync, and clearGuildSyncPushHalt for ACK halt recovery; divide bandwidth cap by mesh peer count; opt-in msg-index auto-migrate on loadGuild; span guild.mesh.stability.
Co-authored-by: Cursor <[email protected]>
Await guildSyncHealth settle after explore join, refresh discovery listings
on success, recover mesh with gossip outbox flush on peer leave, and flush
before sync requests. Span discovery.join.sync-wait and guild.mesh.recover.
Co-authored-by: Cursor <[email protected]>
Track per-peer GUILD_SYNC_ACK watermarks and stop owner burst pushes when
joiners catch up. Queue guild gossip when the mesh has zero peers and flush
on peer join. Add member/message LWW on GUILD_SYNC ingest, mod fallback sync
push, optional zlib bundles, sync health progress/bytes, and diagnostics export.
Co-authored-by: Cursor <[email protected]>
Filter bundles by joiner syncWatermark, gossip GUILD_SYNC_ACK after ingest,
append outbound messages to Hypercore via pearcord-guild-replicator, and
export channelCoreKeys in GUILD_SYNC payloads when cores exist.
Co-authored-by: Cursor <[email protected]>
Burst DIRECTORY_LISTING and revoke gossip when peers are already connected, refresh owned listings after create, and invalidate explore cache on delete.
Co-authored-by: Cursor <[email protected]>
Wire joiners to the host via invite/listing public keys, seed owner profiles from portable invites, await roster bootstrap, and gossip profiles/presence after peers connect.
Co-authored-by: Cursor <[email protected]>
Invalidate listing cache on discovery peer join, mesh-refresh when Explore opens, use a shorter live cache TTL, and run invite join bootstrap in the background so discovery IPC is not blocked.
Co-authored-by: Cursor <[email protected]>
Defer member gossip until mesh join, burst GUILD_SYNC pushes on peer connect, and seed roster/history waits so members appear immediately from invites.
Co-authored-by: Cursor <[email protected]>
Invalidate cached Explore listings when DIRECTORY_LISTING arrives, publish
new guilds to the discovery mesh after create, and re-sync on peer connect.
Co-authored-by: Cursor <[email protected]>
Fan out deletes on discovery mesh, persist tombstones, reconcile on startup,
and refresh the server rail when a non-active guild is removed.
Co-authored-by: Cursor <[email protected]>
Extend search hub/panel live regions with active channel context and mesh
notes; tighten search-errors reaction bleed exclusion; refresh composer
search hints for hub and panel; platform guild.search.cache/mesh spans
include activeChannelId; agentctl and phase627 smoke bundle.
Ingest profiles on contact accept and contacts user gossip; rebroadcast presence with profile fields after mesh join.
Co-authored-by: Cursor <[email protected]>
Fall back to dm.gossipDmChannelUpsert so open-dm works without a stale
pearcord-contacts copy missing sendDmChannelInvite.
Co-authored-by: Cursor <[email protected]>
Embed username/displayName on presence updates (already syncing reliably),
ingest profiles from presence on peers, and retry USER_UPSERT gossip when
mesh connections open. Also gossip profile after invite join.
Co-authored-by: Cursor <[email protected]>
Gossip profile on every send, bundle author and attachmentMetas on messages,
build DM usersById from contacts, and export attachments via download-cache
before IPC to avoid stuck downloads.
Co-authored-by: Cursor <[email protected]>
Gossip attachment meta on DM send, wire DM attach-mesh provider, fetch
bytes from DM peers when not in a guild, expose usersById in view, and
emit user-profile after ingest for live member names.
Co-authored-by: Cursor <[email protected]>
Include users in guild sync, enrich member view with display names,
gossip presence and profiles on peer join, background DM listener with
contacts-based channel invites, and safer mesh teardown when switching
guild/DM mode.
Co-authored-by: Cursor <[email protected]>
Include activeChannelId and guildCount on thread.read span.end for hub depth
diagnostics aligned with thread.create and thread.archive.
Co-authored-by: Cursor <[email protected]>