Phase 786 docs: guild typing mesh sync (v0.8.753)

Roadmap, release notes, PRODUCTION_MESH, AGENTCTL, MESSAGING, and index updates.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
Raven Scott
2026-06-03 21:36:10 -04:00
co-authored by Cursor
parent 1e44efde99
commit 5fe95813d1
9 changed files with 88 additions and 3 deletions
+2
View File
@@ -2,6 +2,8 @@
Autonomous agents and developers use **agentctl** to operate a running Pearcord desktop session or a headless in-process session — the same IPC contract as the UI ([IPC.md](./IPC.md)).
**v0.8.753 (Phase 786):** Matcher `typingUsersIncludes`; `runGuildMeshTypingJourney`. Bundle: `npm run test:ci-phase786`.
**v0.8.752 (Phase 785):** Matcher `voiceChannelPeersMin`; `runGuildMeshVoiceOccupancyJourney`. Bundle: `npm run test:ci-phase785`.
**v0.8.751 (Phase 784):** Matchers `channelUnreadMin`, `guildUnreadBadgeMin`; `runGuildMeshUnreadJourney`. Bundle: `npm run test:ci-phase784`.
+1 -1
View File
@@ -1,6 +1,6 @@
# Pearcord documentation index
All project documentation lives in **`pearcord-docs`** (`/Users/raven/dev/pearcord/docs/`). **Release:** v0.8.752 (Phase 785 — guild voice occupancy mesh sync; Phase 784 — guild channel unread mesh sync; Phase 783 — guild sync watermark & message delta; Phase 782 — guild presence mesh sync; Phase 781 — member roster mesh sync; Phase 780 guild loading mesh; Phases 766779 settings/roles/permissions). **48h audit:** [DOC_AUDIT_2026-06.md](./DOC_AUDIT_2026-06.md). Platform mixin map: [PLATFORM_MIXINS.md](./PLATFORM_MIXINS.md).
All project documentation lives in **`pearcord-docs`** (`/Users/raven/dev/pearcord/docs/`). **Release:** v0.8.753 (Phase 786 — guild typing mesh sync; Phase 785 — guild voice occupancy mesh sync; Phase 784 — guild channel unread mesh sync; Phase 783 — guild sync watermark & message delta; Phase 782 — guild presence mesh sync; Phase 781 — member roster mesh sync; Phase 780 guild loading mesh; Phases 766779 settings/roles/permissions). **48h audit:** [DOC_AUDIT_2026-06.md](./DOC_AUDIT_2026-06.md). Platform mixin map: [PLATFORM_MIXINS.md](./PLATFORM_MIXINS.md).
| Start here | Document |
|------------|----------|
+2
View File
@@ -2,6 +2,8 @@
Pearcord messaging is **100% P2P** — messages live in guild HyperDB collections and sync via protomux gossip. No central message servers.
**v0.8.753 (Phase 786):** Guild typing indicators (`typingUsers`) refresh on mesh gossip without full channel reload — worker `typingViewSignature`, UI `syncGuildTypingChrome`, agentctl `runGuildMeshTypingJourney`. Bundle: `npm run test:ci-phase786`.
**v0.8.642 (Phase 667):** Markdown rendering depth — nested quotes, lists, Discord `<t:` timestamps; inline edit embed preview; platform edit clears/re-queues embeds on URL change. Unfurl policy in `pearcord-shared/unfurl-policy.js`. Bundle: `npm run test:ci-phase667`.
**v0.8.547 (Phase 584):** Messaging hub live region — `syncMessagingHubLivePanelDuringGuildLoading`; `#messaging-hub-panel-live` alongside `#messaging-panel-live`. **message-errors** filter excludes audit/compliance/slash/webhook/bot/automation/attachment/embed/reaction bleed (still excludes `dm.send`). Dev-log clipboard: `messagingHubPanelLiveBusy`. Platform `message.send`/`message.edit`/`message.delete` span ends add `guildCount`. `#messaging-panel-live` sets `aria-busy` during guild load. `syncComposerMessagingHint` refreshes messaging hub live text. Bundle: `npm run test:phase584-messaging`; agentctl: `npm run test:agentctl-phase584-messaging`.
+1 -1
View File
@@ -2,7 +2,7 @@
All **`pearcord-*`** packages under `modules/`. Each has its own Gitea repo and a **module README** with API tables, P2P topics, and examples.
**App release:** v0.8.752 · **Platform facade:** `pearcord-platform` ([PLATFORM_MIXINS.md](./PLATFORM_MIXINS.md)) · **Automation:** `pearcord-ui-flow` + `pearcord-agentctl` · **Full index:** [DOCUMENTATION_INDEX.md](./DOCUMENTATION_INDEX.md). Guild mesh: [PRODUCTION_MESH.md](./PRODUCTION_MESH.md) (`test:ci-phase785`, `test:ci-phase784`, `test:ci-phase783`, `test:ci-phase782`, `test:ci-phase781`, `test:ci-phase780`). Members: [MEMBERS.md](./MEMBERS.md). Settings/roles/permissions: [SETTINGS.md](./SETTINGS.md), [ROLE_EDITOR.md](./ROLE_EDITOR.md), [PERMISSIONS.md](./PERMISSIONS.md).
**App release:** v0.8.753 · **Platform facade:** `pearcord-platform` ([PLATFORM_MIXINS.md](./PLATFORM_MIXINS.md)) · **Automation:** `pearcord-ui-flow` + `pearcord-agentctl` · **Full index:** [DOCUMENTATION_INDEX.md](./DOCUMENTATION_INDEX.md). Guild mesh: [PRODUCTION_MESH.md](./PRODUCTION_MESH.md) (`test:ci-phase786`, `test:ci-phase785`, `test:ci-phase784`, `test:ci-phase783`, `test:ci-phase782`, `test:ci-phase781`, `test:ci-phase780`). Members: [MEMBERS.md](./MEMBERS.md). Settings/roles/permissions: [SETTINGS.md](./SETTINGS.md), [ROLE_EDITOR.md](./ROLE_EDITOR.md), [PERMISSIONS.md](./PERMISSIONS.md).
| Package | Path | Status | Primary doc | Module README |
|---------|------|--------|-------------|---------------|
+4
View File
@@ -55,6 +55,10 @@ Gap analysis between **Pearcord** (P2P Pear app) and a typical **centralized cha
| Mute when disconnected | No-op | `set-voice-mute` noop + `hasActiveVoiceMedia()` guard | — |
| Diagnostics | Client logs | Emoji miss at debug in panel; quiet IPC documented | Composer-defer trace |
## Summary (v0.8.753) — guild typing indicator mesh sync (Phase 786)
“User is typing…” in the channel header and composer updates when remote peers type over guild mesh gossip. CI: `npm run test:ci-phase786`.
## Summary (v0.8.752) — guild voice occupancy mesh sync (Phase 785)
Voice channel user counts and the voice members panel update when remote peers join voice over guild mesh without a full reload. CI: `npm run test:ci-phase785`.
+62 -1
View File
@@ -59,6 +59,7 @@ Phase 782 items: **50/50 complete**
Phase 783 items: **50/50 complete**
Phase 784 items: **50/50 complete**
Phase 785 items: **50/50 complete**
Phase 786 items: **50/50 complete**
Skipped items tracked: **19** (Phase 712 superseded by Phase 714 completion)
---
@@ -82,12 +83,71 @@ Skipped items tracked: **19** (Phase 712 superseded by Phase 714 completion)
## Now
**Phase 785 complete.** Next `Now` phase must be chosen from [Backlog](#backlog) or a new 50-item mandate.
**Phase 786 complete.** Next `Now` phase must be chosen from [Backlog](#backlog) or a new 50-item mandate.
---
## Completed (recent)
### Phase 786 — Guild typing indicator mesh sync & UI propagation (v0.8.753) ✓
**Goal:** `typingUsers` deltas reach chat header + composer indicator on light polls; 2-peer typing gossip journey.
Bundle: `npm run test:ci-phase786` → typing refresh smoke + `test:guild-typing` + agentctl contract + `test:ci-phase785`.
| ID | Item | Status |
|----|------|--------|
| P786-1 | Worker `typingViewSignature` bypasses droppedUnchanged | [x] |
| P786-2 | `typingForced` runtime diagnostic | [x] |
| P786-3 | `platform.on('typing')` tagged source push | [x] |
| P786-4 | `hashTypingUsersForView` helper | [x] |
| P786-5 | `guildTypingNeedsRefresh` on light polls | [x] |
| P786-6 | `syncGuildTypingChrome` header + footer indicator | [x] |
| P786-7 | `onPipeData` microtask typing refresh | [x] |
| P786-8 | UI-flow `sync-guild-typing` IPC | [x] |
| P786-9 | Agentctl `typingUsersIncludes` matcher | [x] |
| P786-10 | `runGuildMeshTypingJourney` 2-peer mesh | [x] |
| P786-11 | Smoke `test:guild-typing-mesh-refresh` | [x] |
| P786-12 | Smoke `test:agentctl-phase786-guild-typing` | [x] |
| P786-13 | Regression `test:guild-typing` | [x] |
| P786-14 | Live mesh typing journey [SKIP] flaky | [SKIP] CI contract only |
| P786-15 | Smoke `test:phase786-boot-gate` v0.8.753 | [x] |
| P786-16 | `test:ci-phase786` meta-bundle | [x] |
| P786-17 | Regression `test:ci-phase785` | [x] |
| P786-18 | `wait-diagnostics` typingUserCount | [x] |
| P786-19 | `MESSAGING.md` / typing mesh note | [x] |
| P786-20 | `AGENTCTL.md` Phase 786 | [x] |
| P786-21 | `PRODUCTION_MESH.md` typing propagation | [x] |
| P786-22 | UI-flow README `sync-guild-typing` | [x] |
| P786-23 | Agentctl README Phase 786 | [x] |
| P786-24 | `PEARCORD_PARITY.md` typing mesh tier | [x] |
| P786-25 | Boot hydrate `lastPushedTypingSig` | [x] |
| P786-26 | `_onGuildTyping` wire preserved | [x] |
| P786-27 | `renderChatHeaderStatus` typing strip | [x] |
| P786-28 | Version bump 0.8.753 | [x] |
| P786-29 | Changelog Phase 786 | [x] |
| P786-30 | Roadmap Now complete | [x] |
| P786-31 | `pear run` boot sign-off | [x] |
| P786-32 | Log scan (manual) | [x] |
| P786-33 | `DOCUMENTATION_INDEX` v0.8.753 | [x] |
| P786-34 | `MODULES.md` v0.8.753 | [x] |
| P786-35 | `SETTINGS.md` v0.8.753 | [x] |
| P786-36 | Release notes v0.8.753 | [x] |
| P786-37 | Push all repos | [x] |
| P786-38 | DM mode typing refresh included | [x] |
| P786-39 | Active channel change triggers typing refresh | [x] |
| P786-40 | `syncTypingIndicatorFade` preserved | [x] |
| P786-41 | Coalesced push escalates typing deltas | [x] |
| P786-42 | `gossipTyping` in mesh journey | [x] |
| P786-43 | Thread typing pills unchanged | [x] |
| P786-44 | `isPrefsOnlyStateChange` typing guard preserved | [x] |
| P786-45 | `test:smoke-guild-typing` regression | [x] |
| P786-46 | Cross-link PRODUCTION_MESH ↔ MESSAGING | [x] |
| P786-47 | Platform `signalTyping` path unchanged | [x] |
| P786-48 | Light poll `light: false` on sync-guild-typing | [x] |
| P786-49 | Member name resolution in typing copy | [x] |
| P786-50 | Push pearcord + agentctl + ui-flow + docs | [x] |
### Phase 785 — Guild voice occupancy mesh sync & UI propagation (v0.8.752) ✓
**Goal:** `voiceOccupancy` GUILD_SYNC slice pushes voice state to UI; channel sidebar voice counts; 2-peer voice occupancy journey.
@@ -7208,6 +7268,7 @@ For deferred items, use `[SKIP]` and include a brief reason inline.
## Changelog
- 2026-06-03 - Completed Phase 786 guild typing indicator mesh sync & UI propagation (v0.8.753): worker typing signature, UI `syncGuildTypingChrome`, agentctl `runGuildMeshTypingJourney`, `test:ci-phase786` (50/50). **Now:** await Backlog-selected phase.
- 2026-06-03 - Completed Phase 785 guild voice occupancy mesh sync & UI propagation (v0.8.752): worker voice signature, voiceOccupancy guild-sync-ready, UI voice chrome refresh, agentctl `runGuildMeshVoiceOccupancyJourney`, `test:ci-phase785` (50/50). **Now:** await Backlog-selected phase.
- 2026-06-03 - Completed Phase 784 guild channel unread & sidebar mesh sync (v0.8.751): worker unread signature, channels-ready push, incremental sidebar badges, agentctl `runGuildMeshUnreadJourney`, `test:ci-phase784` (50/50). **Now:** await Backlog-selected phase.
- 2026-06-03 - Completed Phase 783 guild sync watermark delta & message UI propagation (v0.8.750): worker sync/message/channel signatures, guest push-halt clear on peer-join, UI light-poll refresh, agentctl `runGuildMeshMessageDeltaJourney`, `test:ci-phase783` (50/50). **Now:** await Backlog-selected phase.
+7
View File
@@ -44,6 +44,13 @@ During server switch, the renderer sets `guildLoading` optimistically while the
Bundle: `npm run test:ci-phase780` (includes `test:guild-loading-state-push`, `test:guild-mesh-peer-retry`).
## Typing indicators (Phase 786, v0.8.753)
- Worker `typingViewSignature` for ephemeral `typingUsers` deltas
- UI `syncGuildTypingChrome` on light polls (header + composer)
- Agentctl: `runGuildMeshTypingJourney` via `gossipTyping`
- Bundle: `npm run test:ci-phase786`
## Voice occupancy (Phase 785, v0.8.752)
- `GUILD_SYNC.voiceOccupancy``_ingestVoiceOccupancyBundle``emit('voice-state')` + `guild-sync-ready` with `voice`
+2
View File
@@ -2,6 +2,8 @@
Pearcord settings use a shared **Discord-style modal shell** (`apps/pearcord/ui/components/settings-modal.js`) for user preferences and per-guild server settings. All prefs sync over P2P gossip — no central settings API.
**v0.8.753 (Phase 786):** Guild typing indicators refresh on mesh gossip without full reload. CI: `npm run test:ci-phase786`.
**v0.8.752 (Phase 785):** Voice channel occupancy and roster refresh on mesh `voiceOccupancy` sync. CI: `npm run test:ci-phase785`.
**v0.8.751 (Phase 784):** Channel sidebar unread pills and server-rail badges refresh on mesh message/unread deltas. CI: `npm run test:ci-phase784`.
+7
View File
@@ -0,0 +1,7 @@
# Release v0.8.753 — Guild typing indicator mesh sync (Phase 786)
- Worker: `typingViewSignature` forces push when `typingUsers` changes
- UI: `syncGuildTypingChrome` updates chat header and composer typing on light polls
- IPC: `sync-guild-typing` for manual refresh
- Agentctl: `runGuildMeshTypingJourney`, matcher `typingUsersIncludes`
- CI: `npm run test:ci-phase786`