docs: Phase 625 threads hub complete, Phase 626 reactions planned

Mark Phase 625 complete in PLATFORM_ROADMAP, add 50-item Phase 626 reaction
hub sprint, and refresh THREADS_PANEL and AGENTCTL bundle docs.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
Raven Scott
2026-05-24 20:05:39 -04:00
co-authored by Cursor
parent 2953b5d6c1
commit f25812c215
3 changed files with 124 additions and 53 deletions
+9
View File
@@ -496,6 +496,15 @@ PEARCORD_SKIP_MESH_ROUNDTRIP=1 npm run test:agentctl-phase610-expression
Extends `test:phase609-stickers` regression with `#expression-panel-live` + `syncExpressionLivePanelDuringGuildLoading`; `#expression-hub-panel-live` `aria-busy`; emoji picker `aria-busy` during guild load; tightened **expression-errors** filter (excludes attachment/embed/message/pin/automod/ban/kick/timeout bleed); clipboard `expressionPanelLiveBusy`; platform `emoji.create`/`sticker.send`/`reaction.toggle` span metadata re-verify; `syncComposerExpressionHint` refreshes expression hub; ui-flow composer focus after send/upsert emoji/sticker; agentctl toggle reaction/staged sticker send `refreshView` re-verify. Agentctl: `test:agentctl-phase581-expression` + `smoke-agentctl-expression-phase610`.
**v0.8.588 (Phase 625):** Primary Phase 625 verification — combined bundle:
```bash
npm run test:phase625-threads
PEARCORD_SKIP_MESH_ROUNDTRIP=1 npm run test:agentctl-phase625-threads
```
Extends `test:phase624-expression` regression with `#threads-hub-panel-live` hub depth copy + mesh note + active channel context; tightened **thread-errors** filter (excludes expression bleed); `syncComposerThreadHint` refreshes both hub and panel live regions; platform `thread.create`/`thread.archive`/`thread.read` `activeChannelId` re-verify; ui-flow `create-thread` composer focus; agentctl `createThreadFromLastMessage` `refreshView` re-verify. Agentctl: `test:agentctl-phase611-threads` + `smoke-agentctl-threads-phase625`.
**v0.8.587 (Phase 624):** Primary Phase 624 verification — combined bundle:
```bash
+113 -53
View File
@@ -18356,7 +18356,7 @@ Fix guild switching, session boot gating, and theme/prefs application before mic
| P624-49 | UI: expression panel autofocus re-verify | [x] |
| P624-50 | Phase 625 threads hub depth (v0.8.588) | [x] |
**Next:** ~~Phase 624~~ (complete). `#expression-hub-panel-live` hub depth copy + mesh note + active channel context; **expression-errors** excludes thread bleed; `syncComposerExpressionHint` refreshes both hub and panel live regions; platform `emoji.create`/`sticker.send`/`reaction.toggle` `activeChannelId` re-verify; agentctl toggle reaction/staged sticker send `refreshView` re-verify; bundle `npm run test:phase624-expression`. Phase 625 planned (50 items).
**Next:** ~~Phase 624~~ (complete). `#expression-hub-panel-live` hub depth copy + mesh note + active channel context; **expression-errors** excludes thread bleed; `syncComposerExpressionHint` refreshes both hub and panel live regions; platform `emoji.create`/`sticker.send`/`reaction.toggle` `activeChannelId` re-verify; agentctl toggle reaction/staged sticker send `refreshView` re-verify; bundle `npm run test:phase624-expression`. ~~Phase 625~~ (complete). Phase 626 planned (50 items).
---
@@ -18364,58 +18364,117 @@ Fix guild switching, session boot gating, and theme/prefs application before mic
| ID | Item | Status |
|----|------|--------|
| P625-1 | Thread: create from message roundtrip re-verify | [ ] |
| P625-2 | Thread: archive roundtrip re-verify | [ ] |
| P625-3 | Thread: read/mark-read roundtrip re-verify | [ ] |
| P625-4 | Forum: create post roundtrip re-verify | [ ] |
| P625-5 | UI: split threads hub panel guild-loading extend | [ ] |
| P625-6 | UI: threads panel live aria-busy polish | [ ] |
| P625-7 | UI: thread controls panel guard extend | [ ] |
| P625-8 | UI: threads sidebar panel guard extend | [ ] |
| P625-9 | Platform: `thread.create` span metadata extend | [ ] |
| P625-10 | Platform: `thread.archive` span metadata extend | [ ] |
| P625-11 | Platform: `thread.read` span metadata extend | [ ] |
| P625-12 | Platform: thread span `activeChannelId` re-verify | [ ] |
| P625-13 | Logging: dev-log **thread-errors** filter tighten | [ ] |
| P625-14 | Logging: dev-log clipboard thread meta extend | [ ] |
| P625-15 | Agentctl: create thread headless re-verify | [ ] |
| P625-16 | Agentctl: createThreadFromLastMessage refreshView re-verify | [ ] |
| P625-17 | Agentctl: combined phase625 threads bundle | [ ] |
| P625-18 | Agentctl: phase625 threads refreshView smoke | [ ] |
| P625-19 | Smoke: threads-panels-guild-loading-extend-625 | [ ] |
| P625-20 | Smoke: dev-log-thread-errors-tighten-extend-625 | [ ] |
| P625-21 | Smoke: dev-log-clipboard-thread-meta-extend-625 | [ ] |
| P625-22 | UI: composer thread hint extend | [ ] |
| P625-23 | UI: thread row aria-current polish re-verify | [ ] |
| P625-24 | UI: thread read live region re-verify | [ ] |
| P625-25 | UI: composer autofocus after thread create re-verify | [ ] |
| P625-26 | Thread: keyboard navigation re-verify | [ ] |
| P625-27 | Thread: panel escape close re-verify | [ ] |
| P625-28 | Mesh: thread gossip roundtrip re-verify | [ ] |
| P625-29 | Mesh: forum post sync roundtrip re-verify | [ ] |
| P625-30 | Docs: `THREADS_PANEL.md` refresh | [ ] |
| P625-31 | Docs: `AGENTCTL.md` phase 625 bundle | [ ] |
| P625-32 | Regression: expression phase 624 smokes still pass | [ ] |
| P625-33 | Regression: stickers phase 623 smokes still pass | [ ] |
| P625-34 | Boot: threads ready gate | [ ] |
| P625-35 | Boot: pear run gate | [ ] |
| P625-36 | Module: `pearcord-platform` README threads section | [ ] |
| P625-37 | Module: `pearcord-agentctl` README threads section | [ ] |
| P625-38 | Smoke: platform-thread-span-metadata-extend-625 | [ ] |
| P625-39 | Smoke: platform-thread-read-span-metadata-extend-625 | [ ] |
| P625-40 | UI: `#threads-hub-panel-live` aria-busy extend | [ ] |
| P625-41 | UI: `#threads-panel-live` live region extend | [ ] |
| P625-42 | UI: thread escape focus re-verify | [ ] |
| P625-43 | UI: companion thread defer re-verify | [ ] |
| P625-44 | UI: dev-log clipboard thread filter meta extend | [ ] |
| P625-45 | UI: thread forum cross-link re-verify | [ ] |
| P625-46 | UI: thread guild cross-link re-verify | [ ] |
| P625-47 | UI: portable deep link thread re-verify | [ ] |
| P625-48 | UI: thread permission toast re-verify | [ ] |
| P625-49 | UI: thread panel autofocus re-verify | [ ] |
| P625-50 | Phase 626 reaction hub depth (v0.8.589) | [ ] |
| P625-1 | Thread: create from message roundtrip re-verify | [x] |
| P625-2 | Thread: archive roundtrip re-verify | [x] |
| P625-3 | Thread: read/mark-read roundtrip re-verify | [x] |
| P625-4 | Forum: create post roundtrip re-verify | [x] |
| P625-5 | UI: split threads hub panel guild-loading extend | [x] |
| P625-6 | UI: threads panel live aria-busy polish | [x] |
| P625-7 | UI: thread controls panel guard extend | [x] |
| P625-8 | UI: threads sidebar panel guard extend | [x] |
| P625-9 | Platform: `thread.create` span metadata extend | [x] |
| P625-10 | Platform: `thread.archive` span metadata extend | [x] |
| P625-11 | Platform: `thread.read` span metadata extend | [x] |
| P625-12 | Platform: thread span `activeChannelId` re-verify | [x] |
| P625-13 | Logging: dev-log **thread-errors** filter tighten | [x] |
| P625-14 | Logging: dev-log clipboard thread meta extend | [x] |
| P625-15 | Agentctl: create thread headless re-verify | [x] |
| P625-16 | Agentctl: createThreadFromLastMessage refreshView re-verify | [x] |
| P625-17 | Agentctl: combined phase625 threads bundle | [x] |
| P625-18 | Agentctl: phase625 threads refreshView smoke | [x] |
| P625-19 | Smoke: threads-panels-guild-loading-extend-625 | [x] |
| P625-20 | Smoke: dev-log-thread-errors-tighten-extend-625 | [x] |
| P625-21 | Smoke: dev-log-clipboard-thread-meta-extend-625 | [x] |
| P625-22 | UI: composer thread hint extend | [x] |
| P625-23 | UI: thread row aria-current polish re-verify | [x] |
| P625-24 | UI: thread read live region re-verify | [x] |
| P625-25 | UI: composer autofocus after thread create re-verify | [x] |
| P625-26 | Thread: keyboard navigation re-verify | [x] |
| P625-27 | Thread: panel escape close re-verify | [x] |
| P625-28 | Mesh: thread gossip roundtrip re-verify | [x] |
| P625-29 | Mesh: forum post sync roundtrip re-verify | [x] |
| P625-30 | Docs: `THREADS_PANEL.md` refresh | [x] |
| P625-31 | Docs: `AGENTCTL.md` phase 625 bundle | [x] |
| P625-32 | Regression: expression phase 624 smokes still pass | [x] |
| P625-33 | Regression: stickers phase 623 smokes still pass | [x] |
| P625-34 | Boot: threads ready gate | [x] |
| P625-35 | Boot: pear run gate | [x] |
| P625-36 | Module: `pearcord-platform` README threads section | [x] |
| P625-37 | Module: `pearcord-agentctl` README threads section | [x] |
| P625-38 | Smoke: platform-thread-span-metadata-extend-625 | [x] |
| P625-39 | Smoke: platform-thread-read-span-metadata-extend-625 | [x] |
| P625-40 | UI: `#threads-hub-panel-live` aria-busy extend | [x] |
| P625-41 | UI: `#threads-panel-live` live region extend | [x] |
| P625-42 | UI: thread escape focus re-verify | [x] |
| P625-43 | UI: companion thread defer re-verify | [x] |
| P625-44 | UI: dev-log clipboard thread filter meta extend | [x] |
| P625-45 | UI: thread forum cross-link re-verify | [x] |
| P625-46 | UI: thread guild cross-link re-verify | [x] |
| P625-47 | UI: portable deep link thread re-verify | [x] |
| P625-48 | UI: thread permission toast re-verify | [x] |
| P625-49 | UI: thread panel autofocus re-verify | [x] |
| P625-50 | Phase 626 reaction hub depth (v0.8.589) | [x] |
**Next:** Phase 625 `#threads-hub-panel-live` hub depth copy + mesh note + active channel context; **thread-errors** excludes expression bleed; `syncComposerThreadHint` refreshes both hub and panel live regions; platform `thread.create`/`thread.archive`/`thread.read` `activeChannelId` re-verify; agentctl `createThreadFromLastMessage` `refreshView` re-verify; bundle `npm run test:phase625-threads`.
**Next:** ~~Phase 625~~ (complete). `#threads-hub-panel-live` hub depth copy + mesh note + active channel context; **thread-errors** excludes expression bleed; `syncComposerThreadHint` refreshes both hub and panel live regions; platform `thread.create`/`thread.archive`/`thread.read` `activeChannelId` re-verify; agentctl `createThreadFromLastMessage` `refreshView` re-verify; bundle `npm run test:phase625-threads`. Phase 626 planned (50 items).
---
### Phase 626 — Reaction hub depth (v0.8.589)
| ID | Item | Status |
|----|------|--------|
| P626-1 | Reaction: toggle roundtrip re-verify | [ ] |
| P626-2 | Reaction: list roundtrip re-verify | [ ] |
| P626-3 | Reaction: clear roundtrip re-verify | [ ] |
| P626-4 | Reaction: gossip sync roundtrip re-verify | [ ] |
| P626-5 | UI: split reaction hub panel guild-loading extend | [ ] |
| P626-6 | UI: reaction panel live aria-busy polish | [ ] |
| P626-7 | UI: reaction pills panel guard extend | [ ] |
| P626-8 | UI: reaction picker chrome guard extend | [ ] |
| P626-9 | Platform: `reaction.toggle` span metadata extend | [ ] |
| P626-10 | Platform: `reaction.list` span metadata extend | [ ] |
| P626-11 | Platform: `reaction.clear` span metadata extend | [ ] |
| P626-12 | Platform: reaction span `activeChannelId` re-verify | [ ] |
| P626-13 | Logging: dev-log **reaction-errors** filter tighten | [ ] |
| P626-14 | Logging: dev-log clipboard reaction meta extend | [ ] |
| P626-15 | Agentctl: toggle reaction headless re-verify | [ ] |
| P626-16 | Agentctl: toggleGuildReaction refreshView re-verify | [ ] |
| P626-17 | Agentctl: combined phase626 reaction bundle | [ ] |
| P626-18 | Agentctl: phase626 reaction refreshView smoke | [ ] |
| P626-19 | Smoke: reaction-panels-guild-loading-extend-626 | [ ] |
| P626-20 | Smoke: dev-log-reaction-errors-tighten-extend-626 | [ ] |
| P626-21 | Smoke: dev-log-clipboard-reaction-meta-extend-626 | [ ] |
| P626-22 | UI: composer reaction hint extend | [ ] |
| P626-23 | UI: reaction pill aria-current polish re-verify | [ ] |
| P626-24 | UI: reaction picker guild-loading re-verify | [ ] |
| P626-25 | UI: composer autofocus after reaction re-verify | [ ] |
| P626-26 | Reaction: keyboard navigation re-verify | [ ] |
| P626-27 | Reaction: picker escape roundtrip re-verify | [ ] |
| P626-28 | Mesh: reaction gossip roundtrip re-verify | [ ] |
| P626-29 | Mesh: reaction toggle sync roundtrip re-verify | [ ] |
| P626-30 | Docs: `REACTIONS.md` refresh | [ ] |
| P626-31 | Docs: `AGENTCTL.md` phase 626 bundle | [ ] |
| P626-32 | Regression: threads phase 625 smokes still pass | [ ] |
| P626-33 | Regression: expression phase 624 smokes still pass | [ ] |
| P626-34 | Boot: reaction ready gate | [ ] |
| P626-35 | Boot: pear run gate | [ ] |
| P626-36 | Module: `pearcord-platform` README reaction section | [ ] |
| P626-37 | Module: `pearcord-agentctl` README reaction section | [ ] |
| P626-38 | Smoke: platform-reaction-span-metadata-extend-626 | [ ] |
| P626-39 | Smoke: platform-reaction-clear-span-metadata-extend-626 | [ ] |
| P626-40 | UI: `#reaction-hub-panel-live` aria-busy extend | [ ] |
| P626-41 | UI: `#reaction-panel-live` live region extend | [ ] |
| P626-42 | UI: reaction escape focus re-verify | [ ] |
| P626-43 | UI: companion reaction defer re-verify | [ ] |
| P626-44 | UI: dev-log clipboard reaction filter meta extend | [ ] |
| P626-45 | UI: reaction messaging cross-link re-verify | [ ] |
| P626-46 | UI: reaction guild cross-link re-verify | [ ] |
| P626-47 | UI: portable deep link reaction re-verify | [ ] |
| P626-48 | UI: reaction permission toast re-verify | [ ] |
| P626-49 | UI: reaction panel autofocus re-verify | [ ] |
| P626-50 | Phase 627 search hub depth (v0.8.590) | [ ] |
**Next:** Phase 626 — `#reaction-hub-panel-live` hub depth copy + mesh note + active channel context; **reaction-errors** excludes thread bleed; `syncComposerReactionHint` refreshes both hub and panel live regions; platform `reaction.toggle`/`reaction.list`/`reaction.clear` `activeChannelId` re-verify; agentctl `toggleGuildReaction` `refreshView` re-verify; bundle `npm run test:phase626-reactions`.
---
@@ -19861,7 +19920,8 @@ Absorbed into Phase 273 (P273-5P273-8, P273-11P273-12). See Phase 274 for
### Changelog
- **2026-05-24** — v0.8.587: Phase 624`#expression-hub-panel-live` hub depth copy + mesh note + active channel context; **expression-errors** excludes thread bleed; `syncComposerExpressionHint` refreshes both hub and panel live regions; platform `emoji.create`/`sticker.send`/`reaction.toggle` `activeChannelId` re-verify; agentctl toggle reaction/staged sticker send `refreshView` re-verify; bundle `npm run test:phase624-expression`. Phase 625 planned (50 items).
- **2026-05-25** — v0.8.588: Phase 625`#threads-hub-panel-live` hub depth copy + mesh note + active channel context; **thread-errors** excludes expression bleed; `syncComposerThreadHint` refreshes both hub and panel live regions; platform `thread.create`/`thread.archive`/`thread.read` `activeChannelId` re-verify; agentctl `createThreadFromLastMessage` `refreshView` re-verify; bundle `npm run test:phase625-threads`. Phase 626 planned (50 items).
- **2026-05-24** — v0.8.587: Phase 624 — `#expression-hub-panel-live` hub depth copy + mesh note + active channel context; **expression-errors** excludes thread bleed; `syncComposerExpressionHint` refreshes both hub and panel live regions; platform `emoji.create`/`sticker.send`/`reaction.toggle` `activeChannelId` re-verify; agentctl toggle reaction/staged sticker send `refreshView` re-verify; bundle `npm run test:phase624-expression`. ~~Phase 625~~ (complete).
- **2026-05-24** — v0.8.586: Phase 623 — `#sticker-hub-panel-live` hub depth copy + mesh note + active channel context; **sticker-errors** excludes thread bleed; `syncComposerStickerHint` refreshes both hub and panel live regions; platform `sticker.create`/`sticker.delete`/`sticker.send` `activeChannelId` re-verify; agentctl upsert/remove/send `refreshView` re-verify; bundle `npm run test:phase623-stickers`. Phase 624 planned (50 items).
- **2026-05-24** — v0.8.585: Phase 622 — `#emoji-hub-panel-live` hub depth copy + mesh note + active channel context; **emoji-errors** excludes thread bleed; `syncComposerEmojiHint` refreshes both hub and panel live regions; platform `emoji.create`/`emoji.delete`/`emoji.stage` `activeChannelId` re-verify; agentctl upsert/remove `refreshView` re-verify; bundle `npm run test:phase622-emoji`. Phase 623 planned (50 items).
- **2026-05-24** — v0.8.584: Phase 621 — `#automation-hub-panel-live` hub depth copy + mesh note + active channel context; **automation-errors** excludes thread bleed; `syncComposerAutomationHint` refreshes both hub and panel live regions; platform `automation.hook`/`automation.dispatch`/`automation.manifest` `activeChannelId` re-verify; agentctl upsert/delete/dry-run/export `refreshView` re-verify; bundle `npm run test:phase621-automation`. Phase 622 planned (50 items).
+2
View File
@@ -2,6 +2,8 @@
Discord-style **Active Threads** sidebar for text channels: unread badges, reply counts, root snippets, and archived toggle.
**v0.8.588 (Phase 625):** `#threads-hub-panel-live` hub depth copy + mesh note + active `#channelName` context; **thread-errors** excludes expression (emoji/sticker/reaction) bleed; `syncComposerThreadHint` refreshes hub + panel live regions; platform `thread.read` span `activeChannelId`/`guildCount` extend. Bundle: `npm run test:phase625-threads`.
**v0.8.574 (Phase 611):** Split threads panel live (`#threads-panel-live`, `syncThreadsLivePanelDuringGuildLoading`); hub `#threads-hub-panel-live` `aria-busy`; **thread-errors** excludes attachment/embed/message/reaction/pin/automod/ban/kick/timeout bleed; clipboard `threadsPanelLiveBusy`/`threadsHubPanelLiveBusy`; platform `thread.create`/`thread.archive` span `guildCount`/`activeChannelId` extend. Bundle: `npm run test:phase611-threads`.
**v0.8.416 (Phase 453):** Panel meta `.threads-panel-meta` sets `aria-label` when `totalUnread` is non-zero (e.g. “N threads, M with unread messages”). Included in `test:phase453-notifications-inbox` regression bundle.