Commit Graph
574 Commits
Author SHA1 Message Date
Raven ScottandCursor 795076498e Wire dm meta store, global presence snapshot, and prefs mesh toggle.
Platform view exposes globalPresence and dmMetaEngine; contacts mesh
respects globalPresenceMeshEnabled from synced user prefs.

Co-authored-by: Cursor <[email protected]>
2026-06-02 00:49:55 -04:00
Raven ScottandCursor b6fa2c3c58 feat(platform): DM pins, reaction gossip, and heal-open metadata (v0.8.629)
Add _pinDmMessage/_unpinDmMessage, DM reaction gossip via pearcord-dm,
load pins in DM view, and dm.open span fields for guild heal context.

Co-authored-by: Cursor <[email protected]>
2026-06-02 00:36:14 -04:00
Raven ScottandCursor c3f07793dc feat(platform): DM voice/video call stubs and group rename API (Phase 655)
Add renameGroupDM, startDmVoiceCall, startDmVideoCall spans and dm.open
sidebarFilterActive metadata for inbox telemetry and P2P call groundwork.

Co-authored-by: Cursor <[email protected]>
2026-06-02 00:25:16 -04:00
Raven ScottandCursor 5c941bf38e fix(platform): RTT-scaled adaptiveBurstDelays for guild mesh peer retry (P654-1)
Use swarm-manager backoff arrays indexed by retry attempt instead of passing
attempt count as RTT, keeping discovery refresh on non-owner retries.

Co-authored-by: Cursor <[email protected]>
2026-06-02 00:06:10 -04:00
Raven Scott ea62743d2d feat(platform): Phase 654 mesh resilience — adaptive guild peer retry + discovery aid (P654-1)
- Use adaptiveBurstDelays from swarm-manager for progressive backoff in _scheduleGuildMeshPeerRetry (fallback to prior fixed delays).
- Non-owners now trigger this.discovery.refreshMesh on retry attempts to improve peer discovery for replication/sync under churn/0-peer (addresses observed 'guild mesh peer retry' logs).
- Added defensive isOwner2 guard and comments tying to P654-1 / production mesh.
- Minor: preserves existing max 8 attempts, _clear, host wiring, logging.

This is a targeted swarm connection / replication improvement per core rules (focus on swarm, replicating data, syncing). Part of 50-item Phase 654 (global mesh resilience soak) generated after assessing vs Discord centralized instant sync (our eventual + heal must be rock-solid).

Verified:
- Manual non-automated pearcord-agentctl headless + mesh-live runs (AGENTCTL_*_OK).
- pear run boot gate (BOOT_OK) pre/post.
- No new errors in pearcord.log (retries still surface as expected; improvement exercised on next live).

Platform change only; renderer/UI + docs in sibling commits.

Refs: PLATFORM_ROADMAP.md Phase 654 P654-1, P654-11 (wire retry), swarm-manager adaptive, platform:12322, log 'guild mesh peer retry'.
2026-06-01 23:53:46 -04:00
Raven ScottandCursor 30480c2af6 fix(platform): wait for discovery mesh ingest when opening Explore
Remote peers only see public servers after DIRECTORY_LISTING gossip; block up to PEARCORD_DISCOVERY_MESH_WAIT_MS on explore open and scoped refresh.

Co-authored-by: Cursor <[email protected]>
2026-06-01 22:47:48 -04:00
Raven ScottandCursor 405786b8d8 fix(platform): await session startup before register IPC returns
Register was racing pushState ahead of sessionReady, leaving the UI on the session-restore shell instead of onboarding.

Co-authored-by: Cursor <[email protected]>
2026-06-01 22:35:43 -04:00
Raven ScottandCursor 9561e68ac3 fix(platform): cap session startup so UI does not hang on mesh joins
Time-box discovery/contacts/settings mesh, DM topic sync, and device sync; run mesh joins in background; add PEARCORD_SESSION_STARTUP_MS watchdog; parallelize register bootstrap module ready().

Co-authored-by: Cursor <[email protected]>
2026-06-01 22:33:47 -04:00
Raven ScottandCursor 96562199c4 feat(platform): mesh federation live diagnostics span (v0.8.625)
Log federation live metadata when exporting mesh replication diagnostics.

Co-authored-by: Cursor <[email protected]>
2026-06-01 22:25:40 -04:00
Raven ScottandCursor ed149f02cf Phase 652: mesh churn scale spans and federation heal aggregate refresh.
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]>
2026-06-01 22:07:55 -04:00
Raven ScottandCursor 12ca37eb2d feat(platform): swarm topic pool and scoped mesh discovery refresh (v0.8.623)
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]>
2026-06-01 21:59:46 -04:00
Raven ScottandCursor c0d7097112 feat(platform): scoped Explore refresh and federation hub ingest (v0.8.622)
Add listing LWW ingest path, refreshDiscoveryExploreScoped, hub-ingest spans,
async federation diagnostics with hub subscriptions, and listing TTL view.

Co-authored-by: Cursor <[email protected]>
2026-06-01 21:53:10 -04:00
Raven ScottandCursor 7f163b7764 feat(platform): federation sync diagnostics and listing TTL refresh (v0.8.621)
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]>
2026-06-01 21:47:19 -04:00
Raven ScottandCursor 73307e11ef feat(platform): per-guild mesh heal isolation and multi-guild diagnostics (v0.8.620)
Phase 648 adds per-guild mesh bounded flags, partition heal cooldown/in-progress maps,
exportMultiGuildSyncDiagnostics, guildSyncHealthRail for the UI, and guild.mesh.multi-scale spans.

Co-authored-by: Cursor <[email protected]>
2026-06-01 21:41:30 -04:00
Raven ScottandCursor a374078e38 Phase 647: partition heal cooldown and diagnostics export.
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]>
2026-06-01 21:34:18 -04:00
Raven ScottandCursor d14fbb6ad0 feat(platform): CRDT partition heal orchestration (v0.8.618)
Add runPartitionHealSync with presence vector at-tie-break on equal
vectorSeq, read receipt/sparse/sidecar/member-page reconcile, gossip
flush, push halt clear, discovery refresh, and guild.mesh.partition-heal
span for mesh split recovery.

Co-authored-by: Cursor <[email protected]>
2026-06-01 21:17:33 -04:00
Raven ScottandCursor f646e8f7ca feat(platform): large guild member roster sync scale (v0.8.617)
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]>
2026-06-01 21:09:47 -04:00
Raven ScottandCursor 5fdd7e8c4e feat(platform): compact thread sparse core on archive
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]>
2026-06-01 21:00:54 -04:00
Raven ScottandCursor bf14d15b68 Add mesh churn observability and reaction list light-poll cache.
Emit guild.mesh.churn spans on peer join/leave, push slot rotation, and gossip outbox flush; refresh discovery after offline recovery; cache reactions during light view polls to cut HyperDB load.

Co-authored-by: Cursor <[email protected]>
2026-06-01 20:48:45 -04:00
Raven ScottandCursor aa62cd6562 Add sparse ACK QoS, mesh stability stats, and RTT-adaptive bandwidth (Phase 642).
getMeshStabilityStats and diagnostics export; guild.sync.sparse-qos span; bandwidth defer jitter; push halt clear on peer leave; RTT-scaled sparse pull backoff and adaptive cap; gossip drop metrics on outbox overflow.

Co-authored-by: Cursor <[email protected]>
2026-06-01 20:27:36 -04:00
Raven ScottandCursor 0b6743fb3f Add mesh stability sync recovery and bandwidth fair-share (Phase 641).
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]>
2026-06-01 20:07:47 -04:00
Raven ScottandCursor 9994564bc4 Wire guild audit sidecar, msg-index migration, and presence vector sync.
GUILD_SYNC.auditSidecar replicates export cursors; exportAuditSidecar IPC;
PRESENCE_VECTOR_SYNC on settings mesh; view auditSidecar and read receipt rows.

Co-authored-by: Cursor <[email protected]>
2026-06-01 19:54:33 -04:00
Raven ScottandCursor 86a12724e5 Gossip guild sync health and read receipts on settings mesh.
Broadcast debounced GUILD_SYNC_HEALTH on health patches, merge remote device
read cursors, expose syncSettingsMesh and view.settingsMeshStats for UI.

Co-authored-by: Cursor <[email protected]>
2026-06-01 19:47:10 -04:00
Raven ScottandCursor c36b22d694 feat(sync): discovery join sync wait and mesh peer-drop recovery
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]>
2026-06-01 19:41:23 -04:00
Raven ScottandCursor 78bc48ae22 feat(guild-sync): Phase 637 sparse ACK batch, stage roles, gossip lanes
Batch sparse Hypercore pulls behind ACK gate with per-channel cursors and
eager core open; priority gossip outbox lanes; stageRoles GUILD_SYNC slice;
member churn delta, visible-only reactions, search index version bump, and
delta forum palettes plus inactive core key filtering.

Co-authored-by: Cursor <[email protected]>
2026-06-01 19:32:52 -04:00
Raven ScottandCursor 8f313933f8 feat(guild-sync): Phase 636 read receipts, thread archive, member page debounce
Add readReceiptVector export/ingest with LWW merge clamped to message tail,
threadArchiveSlice and forumTagPalettes on GUILD_SYNC bundles, voice occupancy
ingest, debounced MEMBER_PAGE auto-chain, RTT-scaled zlib threshold, and push
peer round-robin metadata on guildSyncHealth.

Co-authored-by: Cursor <[email protected]>
2026-06-01 19:25:32 -04:00
Raven ScottandCursor 52ad05ddd7 feat(sync): Phase 634 attachment pulls, bandwidth QoS, and HyperDB-safe guild bundles
Schedule Hyperdrive attachment prefetches after GUILD_SYNC ingest, defer oversized
bundle pushes under a per-second byte cap, coerce uint fields for HyperDB, export
delta reaction tombstones and pin slices, and reconcile contacts presence into
guild vectors with guild.sync.presence spans.

Co-authored-by: Cursor <[email protected]>
2026-06-01 19:01:00 -04:00
Raven ScottandCursor 7874e6fa5c feat(guild-sync): reaction CRDT, presence vector mesh, Hyperbee index core (v0.8.605)
_mergeReactionGossip with tombstone map; presenceVector in GUILD_SYNC bundles;
vectorSeq on presence gossip; dedicated msg-index Hyperbee core; sparse rate
limit and ACK defer; guild.sync.reactions span.

Co-authored-by: Cursor <[email protected]>
2026-06-01 18:45:27 -04:00
Raven ScottandCursor bef5965595 feat(guild-sync): sparse Hypercore pull, reactions, delta slices (v0.8.604)
_trySparseSyncFromBundle with guild.sync.sparse span; reaction bundle
export/ingest; presence vector on health; delta search/automod/audit
slices; meshHostFallbackKeys and coalesced mod push; attachReplication
on peer join.

Co-authored-by: Cursor <[email protected]>
2026-06-01 18:24:45 -04:00
Raven ScottandCursor 881bc0b62e feat(sync): ACK halt, gossip outbox, and swarm wire helpers (v0.8.603)
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]>
2026-06-01 18:08:25 -04:00
Raven ScottandCursor 8447204162 feat(sync): delta GUILD_SYNC bundles and guild-replicator integration
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]>
2026-06-01 17:54:13 -04:00
Raven ScottandCursor c80b36fe06 Improve guild join sync recovery and mesh health diagnostics.
Add GUILD_SYNC_REQUEST handling, meshHostPublicKey persistence, bootstrap/loadGuild recovery schedulers, discovery listing refresh on recreate, and view.guildSyncHealth for agentctl.

Co-authored-by: Cursor <[email protected]>
2026-06-01 17:27:14 -04:00
Raven ScottandCursor 8dd7b71578 Re-announce discovery listings after guild delete and recreate.
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]>
2026-06-01 16:47:03 -04:00
Raven ScottandCursor cb6f6fb0e1 Fix explore join guild mesh, owner profile, and presence sync.
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]>
2026-06-01 16:37:55 -04:00
Raven ScottandCursor 2eb47baaab Fix Explore list sync by refreshing mesh on open and shortening cache.
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]>
2026-06-01 16:30:28 -04:00
Raven ScottandCursor 2eb77085fe Bootstrap guild sessions after explore/invite join with mesh sync retries.
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]>
2026-06-01 16:07:52 -04:00
Raven ScottandCursor 580ea5a478 fix(discovery): show new public guilds on remote Explore immediately
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]>
2026-06-01 15:41:53 -04:00
Raven ScottandCursor 428dfa5804 fix(guild): auto-remove deleted servers for all members and offline peers
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]>
2026-06-01 15:33:11 -04:00
Raven ScottandCursor d3803b68f3 feat(guild): owner deleteGuild with mesh gossip and local purge
Co-authored-by: Cursor <[email protected]>
2026-06-01 15:22:51 -04:00
Raven Scott 3e36cee5c0 feat(search): Phase 627 search hub depth (v0.8.590)
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.
2026-06-01 15:05:27 -04:00
Raven ScottandCursor 62e89a5df0 fix(mesh): contacts profile ingest, presence burst, and accept-side names
Ingest profiles on contact accept and contacts user gossip; rebroadcast presence with profile fields after mesh join.

Co-authored-by: Cursor <[email protected]>
2026-05-25 01:18:51 -04:00
Raven ScottandCursor 1235c82607 fix(dm): guard sendDmChannelInvite when contacts module is older
Fall back to dm.gossipDmChannelUpsert so open-dm works without a stale
pearcord-contacts copy missing sendDmChannelInvite.

Co-authored-by: Cursor <[email protected]>
2026-05-25 00:42:55 -04:00
Raven ScottandCursor fb73037855 fix(p2p): sync usernames via presence gossip and profile burst retries
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]>
2026-05-25 00:33:17 -04:00
Raven ScottandCursor 3dd2001605 fix(guild): guard gossipUserUpsert when guild module is older
Avoid crashing guild.open when node_modules pearcord-guild predates
USER_UPSERT gossip support.

Co-authored-by: Cursor <[email protected]>
2026-05-25 00:21:23 -04:00
Raven ScottandCursor bfcc944847 fix(p2p): author profiles on messages, DM users map, and download export
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]>
2026-05-25 00:17:48 -04:00
Raven ScottandCursor 3dd4393487 fix(p2p): DM attachment sync, download mesh, and user profile refresh
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]>
2026-05-25 00:05:14 -04:00
Raven ScottandCursor 324fcb435b fix(p2p): sync profiles, presence, DMs, and contacts across mesh
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]>
2026-05-24 23:55:26 -04:00
Raven ScottandCursor 1ed14b1885 docs: Phase 626 reaction hub depth bundle reference
Co-authored-by: Cursor <[email protected]>
2026-05-24 20:10:29 -04:00
Raven ScottandCursor 6e954fe40d feat: thread.read span activeChannelId metadata (Phase 625)
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]>
2026-05-24 20:05:38 -04:00
Raven ScottandCursor 32abb45bc0 docs: Phase 624 expression hub depth platform notes (v0.8.587)
Co-authored-by: Cursor <[email protected]>
2026-05-24 19:52:19 -04:00