docs: complete Phase 411 (v0.8.374) and plan Phase 412 discovery
DM read receipts, presence guide, composer autofocus docs, logging mode meta, agentctl DM bundle; Phase 412 explore and discovery roadmap. Co-authored-by: Cursor <[email protected]>
This commit is contained in:
@@ -163,6 +163,14 @@ npm run agentctl:headless -- headless mesh run scenarios/agentctl-onboard.json
|
||||
|
||||
**Composer mention** (`scenarios/agentctl-composer-mention.json`): `@everyone` send + `messageContentIncludes` wait.
|
||||
|
||||
**DM inbox (v0.8.374):** Primary Phase 411 verification — headless bundle without full boot chain:
|
||||
|
||||
```bash
|
||||
PEARCORD_SKIP_MESH_ROUNDTRIP=1 npm run test:agentctl-phase411-dm-inbox
|
||||
```
|
||||
|
||||
Runs DM + voice agentctl scenario and contacts mesh live presence path.
|
||||
|
||||
**Channel inbox (v0.8.373):** Primary Phase 410 verification — headless bundle without full boot chain:
|
||||
|
||||
```bash
|
||||
|
||||
@@ -190,6 +190,8 @@ npm run test:mention-scroll-on-open
|
||||
|
||||
**v0.8.268:** Platform `@here` / `@everyone` checks use **parent channel** permissions in threads (same as `@channel`). Smoke: `npm run test:platform-here-thread-gate`.
|
||||
|
||||
**v0.8.374 (Phase 411):** Composer autofocus on channel/DM switch (`scheduleComposerAutofocus` after `select-channel`). **Ctrl+/** focuses `#composer-input` in guild and DM modes. Smokes: `npm run test:composer-channel-select-autofocus`, `npm run test:composer-focus-shortcut`.
|
||||
|
||||
**v0.8.373 (Phase 410):** @channel permission errors in threads cite parent `#channel` by name (re-verified). Smokes: `npm run test:composer-mention-channel-thread-parent-toast`, `npm run test:companion-compose-guild-loading-verify`.
|
||||
|
||||
**v0.8.371 (Phase 408):** Slowmode `aria-describedby` sync on channel switch; composer `aria-label` for forum/thread context; @everyone thread toasts cite parent channel (re-verified). Smokes: `npm run test:composer-slowmode-describedby-channel`, `npm run test:composer-aria-label`, `npm run test:composer-mention-everyone-thread-parent-toast`.
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
Direct messages can show read receipt labels on your latest message. Fully P2P via DM mesh gossip — no central read API.
|
||||
|
||||
**v0.8.374 (Phase 411):** Read receipt gossip + `dmPeerReadAt` sync re-verified. Smokes: `npm run test:dm-read-receipt`, `npm run test:dm-encrypt`, `PEARCORD_SKIP_MESH_ROUNDTRIP=1 npm run test:agentctl-phase411-dm-inbox`.
|
||||
|
||||
| Mode | Label |
|
||||
|------|--------|
|
||||
| 1:1 DM | **Seen** when the peer has read your last message |
|
||||
|
||||
@@ -93,6 +93,8 @@ If logs show slow `guild.open` / `session.startup` spans (>2s, logged as `WARN`)
|
||||
|
||||
**v0.8.369:** If `guild.joinMesh()` does not resolve within `PEARCORD_GUILD_SWARM_FLUSH_MS + 5000`, the platform logs `guild joinMesh bounded; continuing in background` at **INFO**, sets `guildMeshBounded`, and completes `guild.open` instead of failing the session.
|
||||
|
||||
**v0.8.374 (Phase 411):** Dev log clipboard + save JSONL meta include `mode` (`home`, `dm`, `guild`) for inbox debugging. **Voice errors** filter bundle re-verified. Smoke: `npm run test:dev-log-clipboard-mode`, `npm run test:dev-log-voice-errors-bundle`.
|
||||
|
||||
**v0.8.373 (Phase 410):** Dev log clipboard JSONL `searchScope` string and **Platform errors** diagnostics filter bundle re-verified. Agentctl forum search logs `guild.search` with `scope:"forum"` at WARN when mesh refresh is slow.
|
||||
|
||||
**v0.8.372 (Phase 409):** Dev log clipboard JSONL `guildLoading` bool and **IPC errors** diagnostics filter bundle re-verified. Agentctl headless logs `session.startup completed` with `guildMeshBounded` and `session ready` for inbox scenarios. Smokes: `npm run test:dev-log-clipboard-guild-loading-bool`, `npm run test:dev-log-ipc-errors-bundle`.
|
||||
|
||||
+51
-21
@@ -6060,28 +6060,57 @@ Fix guild switching, session boot gating, and theme/prefs application before mic
|
||||
|
||||
| ID | Item | Status |
|
||||
|----|------|--------|
|
||||
| P411-1 | DM: encrypted message roundtrip smoke (verify) | [ ] |
|
||||
| P411-2 | DM: read receipt gossip + local state sync (verify) | [ ] |
|
||||
| P411-3 | Contacts: friend presence dot on sidebar rows (verify) | [ ] |
|
||||
| P411-4 | Composer: autofocus on DM channel switch (verify) | [ ] |
|
||||
| P411-5 | Composer: Ctrl+/ focuses composer in DM mode (verify) | [ ] |
|
||||
| P411-6 | Group DM: header title + member count aria (verify) | [ ] |
|
||||
| P411-7 | UI: block/unblock contacts flow smokes (verify) | [ ] |
|
||||
| P411-8 | UI: DM preview snippet in channel list (verify) | [ ] |
|
||||
| P411-9 | Logging: dev-log clipboard `mode` string for DM/home (verify) | [ ] |
|
||||
| P411-10 | Diagnostics filter: **Voice errors** bundle re-verify | [ ] |
|
||||
| P411-11 | Agentctl: DM + voice scenario roundtrip (headless) | [ ] |
|
||||
| P411-12 | Agentctl: contacts mesh live skip path (headless) | [ ] |
|
||||
| P411-13 | Companion: compose panel aria-hidden when DM loading | [ ] |
|
||||
| P411-14 | Presence: guild member list dot matches peer status (verify) | [ ] |
|
||||
| P411-15 | Smoke: `test:dm-read-receipt` | [ ] |
|
||||
| P411-16 | Smoke: `test:friend-presence` | [ ] |
|
||||
| P411-17 | Docs: `DM_READ_RECEIPTS.md` + `PRESENCE.md` DM inbox refresh | [ ] |
|
||||
| P411-18 | Docs: `COMPOSER.md` DM autofocus + shortcuts | [ ] |
|
||||
| P411-19 | Agentctl + targeted smokes (boot chain deferred) | [ ] |
|
||||
| P411-20 | Phase 412 explore & discovery depth (v0.8.375) | [ ] |
|
||||
| P411-1 | DM: encrypted message roundtrip smoke (verify) | [x] |
|
||||
| P411-2 | DM: read receipt gossip + local state sync (verify) | [x] |
|
||||
| P411-3 | Contacts: friend presence dot on sidebar rows (verify) | [x] |
|
||||
| P411-4 | Composer: autofocus on DM channel switch (verify) | [x] |
|
||||
| P411-5 | Composer: Ctrl+/ focuses composer in DM mode (verify) | [x] |
|
||||
| P411-6 | Group DM: header title + member count aria (verify) | [x] |
|
||||
| P411-7 | UI: block/unblock contacts flow smokes (verify) | [x] |
|
||||
| P411-8 | UI: DM preview snippet in channel list (verify) | [x] |
|
||||
| P411-9 | Logging: dev-log clipboard `mode` string for DM/home (verify) | [x] |
|
||||
| P411-10 | Diagnostics filter: **Voice errors** bundle re-verify | [x] |
|
||||
| P411-11 | Agentctl: DM + voice scenario roundtrip (headless) | [x] |
|
||||
| P411-12 | Agentctl: contacts mesh live skip path (headless) | [x] |
|
||||
| P411-13 | Companion: compose panel aria-hidden when DM loading | [x] |
|
||||
| P411-14 | Presence: guild member list dot matches peer status (verify) | [x] |
|
||||
| P411-15 | Smoke: `test:dm-read-receipt` | [x] |
|
||||
| P411-16 | Smoke: `test:friend-presence` | [x] |
|
||||
| P411-17 | Docs: `DM_READ_RECEIPTS.md` + `PRESENCE.md` DM inbox refresh | [x] |
|
||||
| P411-18 | Docs: `COMPOSER.md` DM autofocus + shortcuts | [x] |
|
||||
| P411-19 | Agentctl + targeted smokes (boot chain deferred) | [x] |
|
||||
| P411-20 | Phase 412 explore & discovery depth (v0.8.375) | [x] |
|
||||
|
||||
**Next:** P411-1–P411-19.
|
||||
**Next:** ~~Phase 411~~ (complete). Verified via `test:agentctl-phase411-dm-inbox` + Phase 411 targeted smokes; dev-log clipboard/export JSONL now includes `mode` (`home`/`dm`/`guild`). `pear run` boot gate; full boot chain deferred.
|
||||
|
||||
---
|
||||
|
||||
### Phase 412 — Explore & discovery depth (v0.8.375)
|
||||
|
||||
| ID | Item | Status |
|
||||
|----|------|--------|
|
||||
| P412-1 | Discovery: listing mesh ingest + local index (verify) | [ ] |
|
||||
| P412-2 | Discovery: gossip diff banner on new listings (verify) | [ ] |
|
||||
| P412-3 | Explore: listing count badge on hub button (verify) | [ ] |
|
||||
| P412-4 | Explore: filter prefs persist on panel close (verify) | [ ] |
|
||||
| P412-5 | Explore: baseline deep link opens filtered view (verify) | [ ] |
|
||||
| P412-6 | UI: Explore hotkey opens discovery panel (verify) | [ ] |
|
||||
| P412-7 | UI: create-guild discovery toggle default (verify) | [ ] |
|
||||
| P412-8 | Onboarding: explore prompt after first guild (verify) | [ ] |
|
||||
| P412-9 | Logging: dev-log mesh errors filter bundle (verify) | [ ] |
|
||||
| P412-10 | Platform: unlisted directory + filter prefs sync (verify) | [ ] |
|
||||
| P412-11 | Agentctl: deep-link explore scenario (headless) | [ ] |
|
||||
| P412-12 | Agentctl: onboard scenario smoke (headless) | [ ] |
|
||||
| P412-13 | Discovery: baseline relative timestamp hint (verify) | [ ] |
|
||||
| P412-14 | UI: server hub empty-state explore hint (verify) | [ ] |
|
||||
| P412-15 | Smoke: `test:discovery` + `test:discovery-gossip` | [ ] |
|
||||
| P412-16 | Smoke: `test:explore-listing-badge` | [ ] |
|
||||
| P412-17 | Docs: `DISCOVERY.md` + explore inbox refresh | [ ] |
|
||||
| P412-18 | Docs: `ONBOARDING.md` explore path | [ ] |
|
||||
| P412-19 | Agentctl + targeted smokes (boot chain deferred) | [ ] |
|
||||
| P412-20 | Phase 413 settings & accessibility depth (v0.8.376) | [ ] |
|
||||
|
||||
**Next:** P412-1–P412-19.
|
||||
|
||||
---
|
||||
|
||||
@@ -7527,6 +7556,7 @@ Absorbed into Phase 273 (P273-5–P273-8, P273-11–P273-12). See Phase 274 for
|
||||
|
||||
### Changelog
|
||||
|
||||
- **2026-05-23** — v0.8.374: Phase 411 — DM encrypt + read receipts; friend/member presence; composer autofocus + Ctrl+/; dev-log clipboard `mode`; agentctl DM voice + contacts mesh (`test:agentctl-phase411-dm-inbox`); `PRESENCE.md` added; targeted smokes + `pear run` boot gate (full boot chain deferred). Phase 412 planned.
|
||||
- **2026-05-23** — v0.8.373: Phase 410 — channel sidecar stale guild meta; mesh refresh aria-busy idle; setSearch mesh-off cache miss; threads panel roving/escape; open-notification channel thread family; agentctl forum search stale-refresh + mark-notification-read (`test:agentctl-phase410-channel-inbox`); targeted smokes + `pear run` boot gate (full boot chain deferred). Phase 411 planned.
|
||||
- **2026-05-23** — v0.8.372: Phase 409 — guild sidecar stale channel meta; mesh chip aria-live idle; refreshSearch mesh-on cache miss; stage audience aria-current; mark-channel-read guild thread family; agentctl guild search mesh-toggle/stale-refresh + mark-channel-read (`test:agentctl-phase409-guild-inbox`); targeted smokes + `pear run` boot gate (full boot chain deferred). Phase 410 planned.
|
||||
- **2026-05-23** — v0.8.371: Phase 408 — forum sidecar stale guild meta; mesh refresh aria-disabled idle; setSearch mesh-on cache miss; forum post list keyboard; agentctl forum search mesh-toggle + thread inbox mark-notification-read (headless); targeted smokes (boot deferred). Phase 409 planned.
|
||||
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
# Presence (guild + friends)
|
||||
|
||||
Pearcord presence is **100% P2P** — no central presence API. Local state lives in `pearcord-presence`; platform and `pearcord-contacts` gossip updates on guild and contacts meshes.
|
||||
|
||||
## Surfaces
|
||||
|
||||
| Surface | Source | UI |
|
||||
|---------|--------|-----|
|
||||
| Guild members | `PRESENCE_UPDATE` on guild mesh → `view.presence.peers` | Member list dots, voice roster `presenceStatus` |
|
||||
| Friends / DMs | Contacts mesh `PRESENCE_UPDATE` | Friends sidebar dots, DM channel list hints |
|
||||
| Self | `PearcordPresence#setStatus` | User settings status picker |
|
||||
|
||||
Statuses: `online`, `idle`, `dnd`, `offline` (see `pearcord-shared` `USER_STATUS`).
|
||||
|
||||
## Module
|
||||
|
||||
`modules/pearcord-presence` — `PearcordPresence`, `ingest`, `snapshot`. See [pearcord-presence README](../modules/pearcord-presence/README.md).
|
||||
|
||||
## Tests
|
||||
|
||||
```bash
|
||||
cd apps/pearcord
|
||||
npm run test:friend-presence
|
||||
npm run test:member-list-presence-dot
|
||||
PEARCORD_SKIP_MESH_ROUNDTRIP=1 npm run test:contacts-mesh-live
|
||||
npm run test:voice-presence-members
|
||||
```
|
||||
|
||||
**v0.8.374 (Phase 411):** Friend presence gossip + member list dots re-verified. Contacts mesh live path exercises `PRESENCE_UPDATE` on the contacts mesh. Agentctl: `npm run test:agentctl-phase411-dm-inbox`.
|
||||
Reference in New Issue
Block a user