feat(mesh): sync-guild-loading IPC mesh nudge and structural select-guild push (v0.8.747)
Watchdog path re-requests mesh join and peer retry when loading stalls with zero peers; select-guild uses full structural state push for guild switch parity. Co-authored-by: Cursor <[email protected]>
This commit is contained in:
@@ -2,6 +2,10 @@
|
||||
|
||||
Pearcord desktop UI IPC dispatch and automated flow scenarios for Bare smokes. Mirrors `apps/pearcord` pear-pipe message handling.
|
||||
|
||||
**Phase 780 (v0.8.747):** `sync-guild-loading` → structural push + mesh join nudge (`ui-loading-watchdog`) when 0 peers. Bundle: `npm run test:ci-phase780`.
|
||||
|
||||
**Phases 766–779 (v0.8.746):** Settings IPC — `settings-open`, `settings-close`, `settings-section-change`, `settings-save`, `settings-discard` → `settings-opened` / `settings-section-changed` / `settings-saved` / `settings-discarded`. Role editor — `role-editor-open`, `role-editor-close`, `role-editor-select`, `role-editor-save`, `role-editor-discard`. Docs: [UI_FLOW.md](../../docs/UI_FLOW.md#settings-and-role-editor-automation), [IPC.md](../../docs/IPC.md#settings--role-editor-766779).
|
||||
|
||||
**Phase 692 (v0.8.667):** `relay-json-modal-open`, `sync-digest-relay-handoff-json`, `clear-digest-relay-handoff-json`, `push-archive-peer-export-json` with composer focus. Bundle: `npm run test:ci-phase692`.
|
||||
|
||||
**Phase 691 (v0.8.666):** `digest-json-modal-open`, `sync-hook-failure-digest-json`, `clear-hook-failure-digest-json`, `export-compliance-snapshot` with composer focus. Bundle: `npm run test:ci-phase691`.
|
||||
|
||||
@@ -257,6 +257,15 @@ async function dispatchUiMessage (platform, msg, hooks = {}) {
|
||||
pushState()
|
||||
return true
|
||||
}
|
||||
if (t === 'refresh-discovery-listings') {
|
||||
const result = await platform.refreshDiscoveryListingsFromMesh({
|
||||
waitIngest: msg.waitIngest !== false,
|
||||
waitMs: msg.waitMs
|
||||
})
|
||||
send({ type: 'discovery-listings-refreshed', result })
|
||||
pushState()
|
||||
return true
|
||||
}
|
||||
if (t === 'mark-onboarding-explore-shown') {
|
||||
await platform.markOnboardingExploreShown()
|
||||
pushState()
|
||||
@@ -748,7 +757,7 @@ async function dispatchUiMessage (platform, msg, hooks = {}) {
|
||||
}
|
||||
})
|
||||
}
|
||||
pushState()
|
||||
pushState({ structural: true, light: false })
|
||||
if (platform.activeChannelId && platform.mode === 'guild') {
|
||||
send({
|
||||
type: 'composer-focus-channel',
|
||||
@@ -757,6 +766,24 @@ async function dispatchUiMessage (platform, msg, hooks = {}) {
|
||||
}
|
||||
return true
|
||||
}
|
||||
if (t === 'sync-guild-loading') {
|
||||
const gid =
|
||||
platform.guild?.guild?.id || platform._guildLoadingGuildId || null
|
||||
if (gid && (platform.guild?.peers?.size ?? 0) === 0) {
|
||||
void platform
|
||||
._requestGuildMeshJoin?.({
|
||||
source: 'ui-loading-watchdog',
|
||||
bounded: false
|
||||
})
|
||||
.catch(() => {})
|
||||
if (typeof platform._scheduleGuildMeshPeerRetry === 'function') {
|
||||
platform._scheduleGuildMeshPeerRetry(gid)
|
||||
}
|
||||
}
|
||||
if (platform._guildLoading) platform.emit('guild-loading')
|
||||
pushState({ structural: true, light: false })
|
||||
return true
|
||||
}
|
||||
if (t === 'join-stage') {
|
||||
try {
|
||||
await platform.joinStageChannel(msg.channelId)
|
||||
|
||||
Reference in New Issue
Block a user