diff --git a/README.md b/README.md index 87274a8..06d73f3 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ Pearcord desktop UI IPC dispatch and automated flow scenarios for Bare smokes. Mirrors `apps/pearcord` pear-pipe message handling. +**Phase 826 (v0.8.793):** `sync-guild-mesh-triple-churn-rejoin` recovery IPC. Bundle: `npm run test:ci-phase826`. + **Phase 825 (v0.8.792):** `sync-guild-mesh-triple-recovery-burst` recovery IPC. Bundle: `npm run test:ci-phase825`. **Phase 824 (v0.8.791):** `sync-guild-mesh-triple-sync-burst` recovery IPC. Bundle: `npm run test:ci-phase824`. diff --git a/index.js b/index.js index 1319676..dbd1bcc 100644 --- a/index.js +++ b/index.js @@ -1400,6 +1400,44 @@ async function dispatchUiMessage (platform, msg, hooks = {}) { }) return true } + if (t === 'sync-guild-mesh-triple-churn-rejoin') { + if (platform.mode === 'guild' && platform.guild?.guild?.id) { + const gid = platform.guild.guild.id + const peerN = platform.guild?.peers?.size ?? 0 + platform.emit('guild-mesh-topology', { + guildId: gid, + meshPeerCount: peerN, + manualRecovery: true, + churnRejoin: true + }) + if (typeof platform.clearGuildSyncPushHalt === 'function') { + platform.clearGuildSyncPushHalt(gid) + } + if (typeof platform.runOfflineRecoverySync === 'function') { + await platform.runOfflineRecoverySync().catch(() => null) + } + if (typeof platform.requestGuildSyncBurst === 'function') { + platform.requestGuildSyncBurst({ clearPushHalt: true }) + } else if (typeof platform.requestGuildSyncFanout === 'function') { + platform.requestGuildSyncFanout() + } + platform.emit('guild-sync-health') + platform.emit('guild-mesh-reconnected', { + guildId: gid, + meshPeerCount: peerN, + peerId: null, + manualRecovery: true, + churnRejoin: true + }) + platform.emit('guild-sync-ready', { guildId: gid, churnRejoin: 1 }) + } + pushState({ + structural: true, + light: false, + source: 'sync-guild-mesh-triple-churn-rejoin' + }) + return true + } if (t === 'sync-guild-mesh-triple-push-halt-clear') { if (platform.mode === 'guild' && platform.guild?.guild?.id) { const gid = platform.guild.guild.id