Phase 470: complete search/pins roadmap and refresh documentation
Mark Phase 470 complete, add Phase 471 threads plan, and document search/pins depth, composer hint, and agentctl phase470 bundle. Co-authored-by: Cursor <[email protected]>
This commit is contained in:
@@ -206,6 +206,15 @@ PEARCORD_SKIP_MESH_ROUNDTRIP=1 npm run test:agentctl-phase444-notifications
|
||||
|
||||
Chains notification/inbox smokes, platform `notification.markRead`/`notification.markAll`/`inbox.mark-read` error logs, dev-log **notification-errors** + **inbox-errors** filters (tightened span match), notification row `aria-current`, mark-all banner Escape, body truncation, forum notif place context, composer autofocus after mark-all/open-notification (`composer-focus-channel` IPC), `notificationInboxCount` clipboard meta, server-rail guild-loading aria-label, threads panel unread total badge, and Phase 443 threads regression.
|
||||
|
||||
**Search & pins depth (v0.8.433):** Primary Phase 470 verification — combined bundle:
|
||||
|
||||
```bash
|
||||
npm run test:phase470-search-pins
|
||||
PEARCORD_SKIP_MESH_ROUNDTRIP=1 npm run test:agentctl-phase470-search
|
||||
```
|
||||
|
||||
Extends Phase 454 search/pins bundle with `syncSearchPanelsDuringGuildLoading` (wired from guild-loading overlay), extended search/pins guild-loading guards (pinned bar, pins modal, mesh hint `aria-hidden`), `syncComposerSearchHint` (`#composer-search-hint`), platform `guild.search` span metadata (`meshHitCount`/`localHitCount`/`mesh`), `pin.message`/`pin.unpin` `pinCount`/`messageId`, dev-log clipboard `searchIncludeMesh`/`searchMeshHitCount`/`searchLocalHitCount`, tightened **search-errors** + **pin-errors** filters, and Phase 469 notifications regression. Agentctl re-runs Phase 454 search (`test:agentctl-phase454-search` alias).
|
||||
|
||||
**Notifications & inbox depth (v0.8.432):** Primary Phase 469 verification — combined bundle:
|
||||
|
||||
```bash
|
||||
|
||||
@@ -46,6 +46,8 @@ Content is HTML-escaped before formatting. Used in `ui/app.js` for message bodie
|
||||
- Gossip: `RPC.MESSAGE_PIN` (10)
|
||||
- UI: pinned bar above messages; **Pins** opens modal list with jump-to-pin; message toolbar **Pin** / **Unpin** (`data-pin` / `data-unpin`); channel header shows pinned count
|
||||
|
||||
**v0.8.433 (Phase 470):** `syncSearchPanelsDuringGuildLoading` disables pinned bar rows (`.pinned-item`, `.pinned-more-btn`) and open pins modal rows during guild loading; platform `pin.message`/`pin.unpin` span `end` includes `messageId` + `pinCount`. Composer `#composer-search-hint` shows scope/hit/mesh context. Bundle: `npm run test:phase470-search-pins`; agentctl: `npm run test:agentctl-phase470-search`.
|
||||
|
||||
**v0.8.417 (Phase 454):** Pin modal list ArrowUp/Down roving (`ensurePinModalListArrowRoving`); platform `pin.message`/`pin.unpin` spans include `guildId`. Pins header button disabled during guild loading via `syncSearchPanelDuringGuildLoading`. Bundle: `npm run test:phase454-search-pins`.
|
||||
|
||||
**v0.8.408 (Phase 445):** Pins modal empty-state copy polish (Manage Messages + toolbar hint); composer autofocus after pin jump (`bindPinJumpRow` Enter/Space); pin/unpin permission toasts. **pin-errors** filter tightened to `pin.message|pin.unpin`. Bundle: `npm run test:phase445-search-inbox`; agentctl: `npm run test:agentctl-phase445-search`.
|
||||
|
||||
+112
-52
@@ -9215,62 +9215,121 @@ Fix guild switching, session boot gating, and theme/prefs application before mic
|
||||
|
||||
---
|
||||
|
||||
### Phase 470 — Search & pins depth (v0.8.433)
|
||||
### Phase 470 — Search & pins depth (v0.8.433) ✅
|
||||
|
||||
| ID | Item | Status |
|
||||
|----|------|--------|
|
||||
| P470-1 | Search: guild scope roundtrip re-verify | [ ] |
|
||||
| P470-2 | Search: channel scope roundtrip re-verify | [ ] |
|
||||
| P470-3 | Search: forum scope roundtrip re-verify | [ ] |
|
||||
| P470-4 | Search: mesh toggle stale refresh re-verify | [ ] |
|
||||
| P470-5 | Pins: add/remove roundtrip re-verify | [ ] |
|
||||
| P470-6 | UI: `syncSearchPanelsDuringGuildLoading` wrapper extend | [ ] |
|
||||
| P470-7 | UI: search sidecar guild-loading guard extend | [ ] |
|
||||
| P470-8 | UI: channel search guild-loading guard extend | [ ] |
|
||||
| P470-9 | UI: pins modal guild-loading guard extend | [ ] |
|
||||
| P470-10 | Platform: `guild.search` span metadata extend | [ ] |
|
||||
| P470-11 | Platform: `pin.message`/`pin.unpin` span metadata extend | [ ] |
|
||||
| P470-12 | Logging: dev-log **search-errors** filter tighten | [ ] |
|
||||
| P470-13 | Logging: dev-log **pin-errors** filter tighten | [ ] |
|
||||
| P470-14 | Logging: dev-log clipboard search meta extend | [ ] |
|
||||
| P470-15 | Agentctl: guild search headless re-verify | [ ] |
|
||||
| P470-16 | Agentctl: forum search stale refresh headless | [ ] |
|
||||
| P470-17 | Agentctl: combined phase470 search bundle | [ ] |
|
||||
| P470-18 | Smoke: search-guild-loading-extend | [ ] |
|
||||
| P470-19 | Smoke: search-panels-guild-loading-extend | [ ] |
|
||||
| P470-20 | Smoke: dev-log-search-errors-tighten | [ ] |
|
||||
| P470-21 | Smoke: dev-log-pin-errors-tighten | [ ] |
|
||||
| P470-22 | Smoke: dev-log-clipboard-search-meta extend | [ ] |
|
||||
| P470-23 | UI: composer search hint | [ ] |
|
||||
| P470-24 | UI: search mesh hint `aria-live` polish | [ ] |
|
||||
| P470-25 | UI: search empty-state hints polish | [ ] |
|
||||
| P470-26 | UI: pin empty-state hints polish | [ ] |
|
||||
| P470-27 | UI: search scope chips `aria-current` polish | [ ] |
|
||||
| P470-28 | UI: search hit keyboard roving re-verify | [ ] |
|
||||
| P470-29 | UI: pin row keyboard roving re-verify | [ ] |
|
||||
| P470-30 | UI: composer autofocus after search jump re-verify | [ ] |
|
||||
| P470-31 | UI: composer autofocus after pin jump re-verify | [ ] |
|
||||
| P470-32 | Docs: `SEARCH.md` refresh | [ ] |
|
||||
| P470-33 | Docs: `MARKDOWN_AND_PINS.md` refresh | [ ] |
|
||||
| P470-34 | Docs: `AGENTCTL.md` phase 470 bundle | [ ] |
|
||||
| P470-35 | Regression: notifications phase 469 smokes still pass | [ ] |
|
||||
| P470-36 | Regression: discovery phase 468 smokes still pass | [ ] |
|
||||
| P470-37 | Boot: session ready gate | [ ] |
|
||||
| P470-38 | Boot: pear run gate | [ ] |
|
||||
| P470-39 | Module: `pearcord-platform` README search section | [ ] |
|
||||
| P470-40 | Module: `pearcord-search` README accuracy | [ ] |
|
||||
| P470-41 | Smoke: platform-search-span-metadata-extend | [ ] |
|
||||
| P470-42 | Mesh: search fanout roundtrip re-verify | [ ] |
|
||||
| P470-43 | Mesh: forum search merge roundtrip re-verify | [ ] |
|
||||
| P470-44 | Permissions: search gate toast polish | [ ] |
|
||||
| P470-45 | UI: search recent chips polish | [ ] |
|
||||
| P470-46 | UI: forum search stale refresh button polish | [ ] |
|
||||
| P470-47 | Search: cache invalidation on thread read re-verify | [ ] |
|
||||
| P470-48 | UI: embed collapse in search hits polish | [ ] |
|
||||
| P470-49 | UI: search filter chips keyboard roving extend | [ ] |
|
||||
| P470-50 | Phase 471 threads depth (v0.8.434) | [ ] |
|
||||
| P470-1 | Search: guild scope roundtrip re-verify | [x] |
|
||||
| P470-2 | Search: channel scope roundtrip re-verify | [x] |
|
||||
| P470-3 | Search: forum scope roundtrip re-verify | [x] |
|
||||
| P470-4 | Search: mesh toggle stale refresh re-verify | [x] |
|
||||
| P470-5 | Pins: add/remove roundtrip re-verify | [x] |
|
||||
| P470-6 | UI: `syncSearchPanelsDuringGuildLoading` wrapper extend | [x] |
|
||||
| P470-7 | UI: search sidecar guild-loading guard extend | [x] |
|
||||
| P470-8 | UI: channel search guild-loading guard extend | [x] |
|
||||
| P470-9 | UI: pins modal guild-loading guard extend | [x] |
|
||||
| P470-10 | Platform: `guild.search` span metadata extend | [x] |
|
||||
| P470-11 | Platform: `pin.message`/`pin.unpin` span metadata extend | [x] |
|
||||
| P470-12 | Logging: dev-log **search-errors** filter tighten | [x] |
|
||||
| P470-13 | Logging: dev-log **pin-errors** filter tighten | [x] |
|
||||
| P470-14 | Logging: dev-log clipboard search meta extend | [x] |
|
||||
| P470-15 | Agentctl: guild search headless re-verify | [x] |
|
||||
| P470-16 | Agentctl: forum search stale refresh headless | [x] |
|
||||
| P470-17 | Agentctl: combined phase470 search bundle | [x] |
|
||||
| P470-18 | Smoke: search-guild-loading-extend | [x] |
|
||||
| P470-19 | Smoke: search-panels-guild-loading-extend | [x] |
|
||||
| P470-20 | Smoke: dev-log-search-errors-tighten | [x] |
|
||||
| P470-21 | Smoke: dev-log-pin-errors-tighten | [x] |
|
||||
| P470-22 | Smoke: dev-log-clipboard-search-meta extend | [x] |
|
||||
| P470-23 | UI: composer search hint | [x] |
|
||||
| P470-24 | UI: search mesh hint `aria-live` polish | [x] |
|
||||
| P470-25 | UI: search empty-state hints polish | [x] |
|
||||
| P470-26 | UI: pin empty-state hints polish | [x] |
|
||||
| P470-27 | UI: search scope chips `aria-current` polish | [x] |
|
||||
| P470-28 | UI: search hit keyboard roving re-verify | [x] |
|
||||
| P470-29 | UI: pin row keyboard roving re-verify | [x] |
|
||||
| P470-30 | UI: composer autofocus after search jump re-verify | [x] |
|
||||
| P470-31 | UI: composer autofocus after pin jump re-verify | [x] |
|
||||
| P470-32 | Docs: `SEARCH.md` refresh | [x] |
|
||||
| P470-33 | Docs: `MARKDOWN_AND_PINS.md` refresh | [x] |
|
||||
| P470-34 | Docs: `AGENTCTL.md` phase 470 bundle | [x] |
|
||||
| P470-35 | Regression: notifications phase 469 smokes still pass | [x] |
|
||||
| P470-36 | Regression: discovery phase 468 smokes still pass | [x] |
|
||||
| P470-37 | Boot: session ready gate | [x] |
|
||||
| P470-38 | Boot: pear run gate | [x] |
|
||||
| P470-39 | Module: `pearcord-platform` README search section | [x] |
|
||||
| P470-40 | Module: `pearcord-search` README accuracy | [x] |
|
||||
| P470-41 | Smoke: platform-search-span-metadata-extend | [x] |
|
||||
| P470-42 | Mesh: search fanout roundtrip re-verify | [x] |
|
||||
| P470-43 | Mesh: forum search merge roundtrip re-verify | [x] |
|
||||
| P470-44 | Permissions: search gate toast polish | [x] |
|
||||
| P470-45 | UI: search recent chips polish | [x] |
|
||||
| P470-46 | UI: forum search stale refresh button polish | [x] |
|
||||
| P470-47 | Search: cache invalidation on thread read re-verify | [x] |
|
||||
| P470-48 | UI: embed collapse in search hits polish | [x] |
|
||||
| P470-49 | UI: search filter chips keyboard roving extend | [x] |
|
||||
| P470-50 | Phase 471 threads depth (v0.8.434) | [x] |
|
||||
|
||||
**Next:** P470-1–P470-49.
|
||||
**Next:** ~~Phase 470~~ (complete). `syncSearchPanelsDuringGuildLoading`; extended search/pins guild-loading guards + `#composer-search-hint`; platform `guild.search`/`pin.message`/`pin.unpin` span metadata; clipboard `searchIncludeMesh`/`searchMeshHitCount`/`searchLocalHitCount`; bundle `test:phase470-search-pins`. Phase 471 planned (50 items).
|
||||
|
||||
---
|
||||
|
||||
### Phase 471 — Threads depth (v0.8.434)
|
||||
|
||||
| ID | Item | Status |
|
||||
|----|------|--------|
|
||||
| P471-1 | Threads: create/join roundtrip re-verify | [ ] |
|
||||
| P471-2 | Threads: archive/unarchive roundtrip re-verify | [ ] |
|
||||
| P471-3 | Forum: post create with tags roundtrip re-verify | [ ] |
|
||||
| P471-4 | Forum: tag filter + include archived re-verify | [ ] |
|
||||
| P471-5 | UI: `syncThreadsPanelsDuringGuildLoading` wrapper extend | [ ] |
|
||||
| P471-6 | UI: threads panel guild-loading guard extend | [ ] |
|
||||
| P471-7 | UI: forum post list guild-loading guard extend | [ ] |
|
||||
| P471-8 | UI: thread bar guild-loading guard extend | [ ] |
|
||||
| P471-9 | Platform: `thread.create` span metadata extend | [ ] |
|
||||
| P471-10 | Platform: `thread.archive` span metadata extend | [ ] |
|
||||
| P471-11 | Platform: `forum.post` span metadata extend | [ ] |
|
||||
| P471-12 | Logging: dev-log **thread-errors** filter tighten | [ ] |
|
||||
| P471-13 | Logging: dev-log clipboard thread meta extend | [ ] |
|
||||
| P471-14 | Agentctl: thread create headless re-verify | [ ] |
|
||||
| P471-15 | Agentctl: forum post headless re-verify | [ ] |
|
||||
| P471-16 | Agentctl: combined phase471 threads bundle | [ ] |
|
||||
| P471-17 | Smoke: threads-guild-loading-extend | [ ] |
|
||||
| P471-18 | Smoke: threads-panels-guild-loading-extend | [ ] |
|
||||
| P471-19 | Smoke: dev-log-thread-errors-tighten | [ ] |
|
||||
| P471-20 | Smoke: dev-log-clipboard-thread-meta extend | [ ] |
|
||||
| P471-21 | UI: composer thread hint | [ ] |
|
||||
| P471-22 | UI: thread panel filter chips keyboard re-verify | [ ] |
|
||||
| P471-23 | UI: thread empty-state hints polish | [ ] |
|
||||
| P471-24 | UI: forum empty-state hints polish | [ ] |
|
||||
| P471-25 | UI: thread row aria-current polish | [ ] |
|
||||
| P471-26 | UI: forum post aria-current polish | [ ] |
|
||||
| P471-27 | UI: composer autofocus after thread create re-verify | [ ] |
|
||||
| P471-28 | UI: thread parent link polish | [ ] |
|
||||
| P471-29 | UI: thread typing indicator in panel re-verify | [ ] |
|
||||
| P471-30 | Permissions: thread send gate toast polish | [ ] |
|
||||
| P471-31 | Permissions: forum post gate toast polish | [ ] |
|
||||
| P471-32 | Docs: `MESSAGE_THREADS.md` refresh | [ ] |
|
||||
| P471-33 | Docs: `FORUM_CHANNELS.md` refresh | [ ] |
|
||||
| P471-34 | Docs: `AGENTCTL.md` phase 471 bundle | [ ] |
|
||||
| P471-35 | Regression: search phase 470 smokes still pass | [ ] |
|
||||
| P471-36 | Regression: notifications phase 469 smokes still pass | [ ] |
|
||||
| P471-37 | Boot: session ready gate | [ ] |
|
||||
| P471-38 | Boot: pear run gate | [ ] |
|
||||
| P471-39 | Module: `pearcord-platform` README threads section | [ ] |
|
||||
| P471-40 | Module: `pearcord-threads` README accuracy | [ ] |
|
||||
| P471-41 | Smoke: platform-thread-span-metadata-extend | [ ] |
|
||||
| P471-42 | Mesh: thread archive gossip roundtrip re-verify | [ ] |
|
||||
| P471-43 | Mesh: forum post gossip roundtrip re-verify | [ ] |
|
||||
| P471-44 | UI: threads filter mention/pinned/muted re-verify | [ ] |
|
||||
| P471-45 | UI: thread read live region extend | [ ] |
|
||||
| P471-46 | Inbox: thread notification jump re-verify | [ ] |
|
||||
| P471-47 | Search: thread read cache invalidation re-verify | [ ] |
|
||||
| P471-48 | UI: thread bar unread badge polish | [ ] |
|
||||
| P471-49 | UI: forum search stale badge re-verify | [ ] |
|
||||
| P471-50 | Phase 472 moderation depth (v0.8.435) | [ ] |
|
||||
|
||||
**Next:** P471-1–P471-49.
|
||||
|
||||
---
|
||||
|
||||
@@ -10716,6 +10775,7 @@ Absorbed into Phase 273 (P273-5–P273-8, P273-11–P273-12). See Phase 274 for
|
||||
|
||||
### Changelog
|
||||
|
||||
- **2026-05-24** — v0.8.433: Phase 470 — `syncSearchPanelsDuringGuildLoading`; extended search/pins guild-loading guards + `#composer-search-hint`; platform `guild.search`/`pin.message`/`pin.unpin` span metadata (`meshHitCount`/`localHitCount`/`pinCount`); clipboard `searchIncludeMesh`/`searchMeshHitCount`/`searchLocalHitCount`; bundle `test:phase470-search-pins` + agentctl (+7 smokes). Phase 471 planned (50 items).
|
||||
- **2026-05-24** — v0.8.432: Phase 469 — `syncNotificationPanelsDuringGuildLoading`; extended notif panel guild-loading guards + `#composer-notif-hint` + `#thread-read-live`; platform notification/inbox span metadata + `error:` logs; clipboard `notifInboxFilter`/`notificationUnreadFiltered`/`guildUnreadBadgeTotal`; bundle `test:phase469-notifications-inbox` + agentctl (+8 smokes). Phase 470 planned (50 items).
|
||||
- **2026-05-24** — v0.8.431: Phase 468 — `syncDiscoveryPanelsDuringGuildLoading`; explore modal + contacts/DM sidebar guards; composer DM hint + 🔒 E2E badge; `dm.open`/`discovery.list`/`contacts.accept` span metadata + `error:` logs; clipboard `discoveryFilterTag`/`dmChannelCount`/`contactsPendingCount`; bundle `test:phase468-discovery-dm` + agentctl (+7 smokes). Phase 469 planned (50 items).
|
||||
- **2026-05-24** — v0.8.430: Phase 467 — `syncVoicePanelsDuringGuildLoading` (voice/stage bars, controls, members/screen/soundboard panels); composer voice hint + push-to-talk; voice bar activity `aria-label`; `voice.leave` `leavingIsStage` + `screen.start` `label` span metadata; clipboard `voiceListenOnly`/`voiceMediaConnected`/`screenSharing`; bundle `test:phase467-voice-stage` + agentctl (+6 smokes). Phase 468 planned (50 items).
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
Pearcord supports local message search without a central search index. All queries run against the local HyperDB / JSON store.
|
||||
|
||||
**v0.8.433 (Phase 470):** `syncSearchPanelsDuringGuildLoading` wrapper (wired from `syncGuildLoadingOverlay`) extends guild-loading guards to mesh toggle, refresh, highlight-only, recent chips, pinned button/bar rows, pins modal rows, search sidecar hits, and `#search-mesh-hint` (`aria-hidden` while loading); `syncComposerSearchHint` (`#composer-search-hint`) surfaces active scope, hit counts, and mesh status. Platform `guild.search` span `end` adds `meshHitCount`/`localHitCount`/`mesh`; `pin.message`/`pin.unpin` add `messageId`/`pinCount`. Dev-log clipboard: `searchIncludeMesh`, `searchMeshHitCount`, `searchLocalHitCount`. Bundle: `npm run test:phase470-search-pins`; agentctl: `npm run test:agentctl-phase470-search` (+7 smokes).
|
||||
|
||||
**v0.8.417 (Phase 454):** Platform `guild.search` and `pin.message`/`pin.unpin` spans include `guildId` on start/end (`endSearchSpan` helper). `syncSearchPanelDuringGuildLoading` disables mesh toggle, refresh, highlight-only, recent chips, pinned button, and sidecar hits during guild load (wired from `syncGuildLoadingOverlay`). Search scope `<select>` ArrowLeft/Right cycles visible options; search sidecar hits and pin modal rows support ArrowUp/Down list roving. Bundle: `npm run test:phase454-search-pins`; agentctl: `npm run test:agentctl-phase454-search`.
|
||||
|
||||
**v0.8.408 (Phase 445):** Platform `markChannelRead` invalidates search cache on thread read. Search scope `<select>` options set `aria-current="true"` on the active scope; `#channel-search` and scope select disabled during `guildLoading`. `#search-mesh-hint` uses `role="status"` + `aria-live="polite"` + `aria-atomic="true"`. Search empty-state hints polish; channel/forum empty copy cross-links the notification inbox (🔔). Stale mesh **↻** sets scope-specific `aria-label` when results are older than 90s. `mark-channel-read-cleared` re-renders search results when a query is active. Composer autofocus after search/pin jump; search (`View Channel`) and pin (`Manage Messages`) permission toasts. Dev-log clipboard adds `searchMeshStale`; **search-errors** tightened to `guild.search` only; **pin-errors** to `pin.message|pin.unpin`. Bundle: `npm run test:phase445-search-inbox`; agentctl: `npm run test:agentctl-phase445-search`.
|
||||
|
||||
Reference in New Issue
Block a user