docs(phase658): mark thread P2P/perf closure and plan Phase 659

Close P658-48/P658-49/P658-50, add the phase659 planning block with
50 DM-focused items (polls + scheduled messages), and document DM thread
P2P audit coverage plus large-list virtual paging behavior.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
Raven Scott
2026-06-02 03:07:52 -04:00
co-authored by Cursor
parent 6459065a26
commit a665820565
2 changed files with 69 additions and 6 deletions
+6 -2
View File
@@ -6,6 +6,8 @@
**v0.8.638 (Phase 658 batch 3 slice):** DM-thread parity expanded with archive/unarchive in DM mode, per-thread notification mute in the thread bar, and a Discord-style disabled slowmode stub tooltip for DM threads. **v0.8.638 (Phase 658 batch 3 slice):** DM-thread parity expanded with archive/unarchive in DM mode, per-thread notification mute in the thread bar, and a Discord-style disabled slowmode stub tooltip for DM threads.
**v0.8.638 (Phase 658 closure slice):** Added platform `exportDmThreadP2PAudit()` (asserting DM thread topics remain `pearcord:dm-thread:*` with no central URL), plus thread list virtual-window pagination for >20 rows in the panel.
## Architecture ## Architecture
| Piece | Module | Notes | | Piece | Module | Notes |
@@ -27,8 +29,9 @@
3. **Archive / unarchive:** In a DM thread, use thread bar **Archive thread / Unarchive thread**; state persists via `THREAD_META.archived`. 3. **Archive / unarchive:** In a DM thread, use thread bar **Archive thread / Unarchive thread**; state persists via `THREAD_META.archived`.
4. **Mute thread notifications:** Use thread bar **Mute thread / Unmute thread** (notification prefs mirror). 4. **Mute thread notifications:** Use thread bar **Mute thread / Unmute thread** (notification prefs mirror).
5. **Slowmode parity stub:** DM thread bar shows a disabled slowmode control with tooltip (Discord parity placeholder until DM slowmode policy is implemented). 5. **Slowmode parity stub:** DM thread bar shows a disabled slowmode control with tooltip (Discord parity placeholder until DM slowmode policy is implemented).
6. **Back to DM:** Thread bar **Back to DM** selects the parent channel. 6. **Large thread lists:** Threads panel paginates in 20-row windows with Prev/Next controls when many DM threads are active.
7. **Forum bridge:** On a forum post, **Message author** (✉) opens a sealed 1:1 with the author and prefills the composer with a post excerpt (`dm.bridge.forum` span). 7. **Back to DM:** Thread bar **Back to DM** selects the parent channel.
8. **Forum bridge:** On a forum post, **Message author** (✉) opens a sealed 1:1 with the author and prefills the composer with a post excerpt (`dm.bridge.forum` span).
## Testing ## Testing
@@ -36,6 +39,7 @@
npm run test:smoke-phase658-dm-threads npm run test:smoke-phase658-dm-threads
PEARCORD_SKIP_MESH_ROUNDTRIP=1 npm run test:agentctl-dm-thread-fork-phase658 PEARCORD_SKIP_MESH_ROUNDTRIP=1 npm run test:agentctl-dm-thread-fork-phase658
npm run test:agentctl-dm-thread-archive-phase658 npm run test:agentctl-dm-thread-archive-phase658
npm run test:agentctl-dm-thread-p2p-audit-phase658
npm run test:phase658-dm-threads npm run test:phase658-dm-threads
npm run test:phase658-batch2 npm run test:phase658-batch2
``` ```
+63 -4
View File
@@ -20375,11 +20375,70 @@ P2P-first phase: Hyperswarm guild mesh, `GUILD_SYNC` bundles, join/recovery pipe
| P658-45 | UI: Discord blurple thread active indicator | [x] | | P658-45 | UI: Discord blurple thread active indicator | [x] |
| P658-46 | UI: thread parent message preview chip | [x] | | P658-46 | UI: thread parent message preview chip | [x] |
| P658-47 | Platform: thread notification mute per thread | [x] | | P658-47 | Platform: thread notification mute per thread | [x] |
| P658-48 | P2P audit: thread topics never hit central server | [ ] | | P658-48 | P2P audit: thread topics never hit central server | [x] |
| P658-49 | Performance: thread list virtual scroll >20 rows | [ ] | | P658-49 | Performance: thread list virtual scroll >20 rows | [x] |
| P658-50 | Phase 659 — DM polls + scheduled messages planned | [ ] | | P658-50 | Phase 659 — DM polls + scheduled messages planned | [x] |
**Next:** Phase 658 batch 3 — thread archive/unarchive toggle, slowmode stub, per-thread notification mute, thread performance virtual scroll, and P2P audit. **Next:** Phase 659 — DM polls + scheduled messages (50-item DM execution phase).
---
### Phase 659 — DM polls + scheduled messages (v0.8.638+ planning)
**Assessment vs real Discord (post-Phase 658):** DM/thread UX now has archive, mute, blurple active state, quick switcher thread rows, call history stubs, and P2P topic audit coverage. Major parity gaps remain around DM-native polls, scheduled send workflows, reminders, recurrence, and cross-device draft/schedule synchronization.
| ID | Item | Status |
|----|------|--------|
| P659-1 | DM polls: add `POLL_CREATE` payload schema in `pearcord-shared` | [ ] |
| P659-2 | DM polls: support single-choice voting in DM channels | [ ] |
| P659-3 | DM polls: support multi-select voting (toggle answers) | [ ] |
| P659-4 | DM polls: anonymous-vote mode flag (peer-visible totals only) | [ ] |
| P659-5 | DM polls: poll expiration timestamp and close-state handling | [ ] |
| P659-6 | DM polls: local vote optimistic UI + rollback on sync mismatch | [ ] |
| P659-7 | DM polls: poll result bar UI styled Discord-like | [ ] |
| P659-8 | DM polls: “you voted” indicator chips in message list | [ ] |
| P659-9 | DM polls: poll edit window (question/options before first vote) | [ ] |
| P659-10 | DM polls: poll delete permissions in DM/group DM contexts | [ ] |
| P659-11 | DM polls: thread-scoped polls inside `dm_thread` channels | [ ] |
| P659-12 | DM polls: poll reactions coexistence and conflict handling | [ ] |
| P659-13 | DM polls: compose modal with answer validation + max limits | [ ] |
| P659-14 | DM polls: poll markdown/emoji option rendering parity | [ ] |
| P659-15 | DM polls: accessibility labels for answer rows + totals | [ ] |
| P659-16 | DM polls: unread/mention behavior when poll updates arrive | [ ] |
| P659-17 | DM polls: poll vote gossip RPC and idempotent apply path | [ ] |
| P659-18 | DM polls: HyperDB storage/index for poll definitions/votes | [ ] |
| P659-19 | DM polls: JsonStore fallback for poll state in non-hyper runs | [ ] |
| P659-20 | DM polls: export/import in agentctl scenario fixtures | [ ] |
| P659-21 | Scheduled messages: shared schema (`sendAt`, `timezone`, `recurrence`) | [ ] |
| P659-22 | Scheduled messages: local queue store with HyperDB mirror | [ ] |
| P659-23 | Scheduled messages: enqueue UI from DM composer (“Send later”) | [ ] |
| P659-24 | Scheduled messages: scheduled message list panel in DM mode | [ ] |
| P659-25 | Scheduled messages: edit scheduled message content/time | [ ] |
| P659-26 | Scheduled messages: cancel/delete queued scheduled messages | [ ] |
| P659-27 | Scheduled messages: immediate “Send now” override action | [ ] |
| P659-28 | Scheduled messages: recurrence presets (daily/weekly/monthly) | [ ] |
| P659-29 | Scheduled messages: custom recurrence rule parser | [ ] |
| P659-30 | Scheduled messages: missed-send recovery after offline restart | [ ] |
| P659-31 | Scheduled messages: per-channel max queue depth + UX warning | [ ] |
| P659-32 | Scheduled messages: delivery failure retry backoff + toast | [ ] |
| P659-33 | Scheduled messages: blocked-peer check before delayed send | [ ] |
| P659-34 | Scheduled messages: E2E seal at send-time using current session | [ ] |
| P659-35 | Scheduled messages: thread parent seal-id handling for `dm_thread` | [ ] |
| P659-36 | Scheduled messages: time-zone aware picker with DST preview | [ ] |
| P659-37 | Scheduled messages: relative shortcuts (30m, 1h, tomorrow 9am) | [ ] |
| P659-38 | Scheduled messages: cron-like advanced picker (hidden behind toggle) | [ ] |
| P659-39 | Scheduled messages: companion read-only view of pending queue | [ ] |
| P659-40 | Scheduled messages: quick switcher indicator for queued sends | [ ] |
| P659-41 | Scheduled messages: diagnostics filter `dm-schedule-errors` | [ ] |
| P659-42 | Scheduled messages: spans (`dm.schedule.create/send/cancel`) | [ ] |
| P659-43 | Scheduled messages: audit entries for create/edit/cancel/send | [ ] |
| P659-44 | Scheduled messages: targeted stale queue cleanup task | [ ] |
| P659-45 | Agentctl: live journey create→edit→send-now→verify message | [ ] |
| P659-46 | Agentctl: recurrence journey across restart simulation | [ ] |
| P659-47 | Smoke: static checks for poll UI/composer + schedule queue wiring | [ ] |
| P659-48 | Bundle: `test:phase659-dm-polls-scheduling` | [ ] |
| P659-49 | Boot gate: `pear run` + log scan for poll/schedule error signatures | [ ] |
| P659-50 | Phase 660 — DM media workflows + voice notes planned | [ ] |
--- ---