Document Phase 405 forum inbox and plan Phase 406 (v0.8.368).

Complete forum roadmap phase with search, composer, notifications, and forum channel keyboard docs plus the next guild inbox phase.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
Raven Scott
2026-05-23 14:30:43 -04:00
co-authored by Cursor
parent 0279d74e62
commit 1588a48f1f
5 changed files with 58 additions and 21 deletions
+2
View File
@@ -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.368 (Phase 405):** Slowmode `aria-describedby` syncs on channel switch; composer `aria-label` reflects channel/thread context; @everyone thread toasts cite parent. Smokes: `npm run test:composer-slowmode-describedby-channel`, `npm run test:composer-aria-label`, `npm run test:composer-mention-everyone-thread-parent-toast`.
**v0.8.367 (Phase 404):** @here permission errors in threads cite parent `#channel` by name. Smokes: `npm run test:composer-mention-here-thread-parent-toast`, `npm run test:companion-compose-guild-loading-verify`.
**v0.8.365 (Phase 402):** Slowmode `aria-describedby` syncs on channel switch (`#composer-slowmode-hint`). Composer `aria-label` reflects channel/thread context. @everyone permission errors in threads cite parent `#channel`. Smokes: `npm run test:composer-slowmode-describedby-channel`, `npm run test:composer-aria-label`, `npm run test:composer-mention-everyone-thread-parent-toast`.
+1
View File
@@ -30,6 +30,7 @@ P2P sync uses existing `CHANNEL_CREATE` / `CHANNEL_UPDATE` / `MESSAGE_CREATE` go
- Forum view: post list (title, snippet, reply count) — not a message timeline
- **New Post** in header → title + body modal
- Composer disabled on forum channel; reply inside the post thread
- **v0.8.368:** Forum post list keyboard roving — **Home** / **End**, **↑** / **↓**, **PageUp** / **PageDown** ±5 on `.forum-post-row` when `#messages` has focus. Smoke: `npm run test:forum-post-list-keyboard`
## View fields
+2
View File
@@ -98,6 +98,8 @@ Inbox rows include `messageId` for jump navigation. See [MESSAGE_DEEP_LINKS.md](
| `markAllNotificationsRead()` | Clear inbox unread |
| `markChannelRead()` | Also clears inbox rows for channel and zeros `MENTION_ALERTS` for the channel |
**v0.8.368:** **Mark notification read** on forum channels dismisses thread-family desktop for all forum post threads (`mark-notification-read-cleared` IPC, Phase 405 re-verified). Smokes: `npm run test:mark-notification-read-forum-thread-family-desktop`, `npm run test:agentctl-thread-inbox-mark-notification-read`, `npm run test:forum-post-list-keyboard`.
**v0.8.367:** **Open notification** on text channels dismisses thread-family desktop for all threads under the parent channel (`open-notification` IPC, Phase 404 re-verified). Smokes: `npm run test:open-notification-channel-thread-family-desktop`, `npm run test:agentctl-thread-inbox-mark-channel-read`.
**v0.8.366:** **Mark channel read** on guild text channels dismisses thread-family desktop for all threads under the parent (`mark-channel-read-cleared` IPC, Phase 403 re-verified). Smokes: `npm run test:mark-channel-read-channel-thread-family-desktop`, `npm run test:agentctl-thread-inbox-mark-channel-read`, `npm run test:navigate-guild-thread-family-desktop`.
+51 -21
View File
@@ -5884,28 +5884,57 @@ Fix guild switching, session boot gating, and theme/prefs application before mic
| ID | Item | Status |
|----|------|--------|
| P405-1 | Search: forum sidecar stale age when guild scope cached (verify) | [ ] |
| P405-2 | Search mesh refresh: remove `aria-pressed` from refresh button while idle (verify) | [ ] |
| P405-3 | Platform: `setSearch` mesh-on logs scope on cache miss at debug (verify) | [ ] |
| P405-4 | Composer: slowmode `aria-describedby` sync on channel switch (verify) | [ ] |
| P405-5 | Notifications: mark-notification-read clears forum thread family (verify) | [ ] |
| P405-6 | Composer: mention-everyone thread toast cites parent (verify) | [ ] |
| P405-7 | UI: channel list PageUp/Down jumps 5 channels (verify) | [ ] |
| P405-8 | Voice: remote mute pill name aria bundle smoke (verify) | [ ] |
| P405-9 | Logging: Clipboard JSONL `sessionError` smoke (verify) | [ ] |
| P405-10 | Diagnostics filter: **Voice errors** bundle smoke (verify) | [ ] |
| P405-11 | Agentctl: forum search mesh-off then mesh-on refresh (reuse) | [ ] |
| P405-12 | Agentctl: thread inbox mark-notification-read roundtrip (reuse) | [ ] |
| P405-13 | Companion: channels panel verify disabled while guild loading | [ ] |
| P405-14 | UI: server rail PageUp/Down jumps 5 guild icons (verify) | [ ] |
| P405-15 | Smoke: `test:navigate-forum-thread-family-desktop` | [ ] |
| P405-16 | Smoke: `test:platform-setsearch-mesh-on-cache-miss` | [ ] |
| P405-17 | Docs: `SEARCH.md` + `COMPOSER.md` forum inbox refresh | [ ] |
| P405-18 | Docs: `NOTIFICATIONS.md` mark-notification-read forum family | [ ] |
| P405-19 | Boot: chain Phase 405 progressive smokes | [ ] |
| P405-20 | Phase 406 guild inbox & voice depth (v0.8.369) | [ ] |
| P405-1 | Search: forum sidecar stale age when guild scope cached (verify) | [x] |
| P405-2 | Search mesh refresh: remove `aria-pressed` from refresh button while idle (verify) | [x] |
| P405-3 | Platform: `setSearch` mesh-on logs scope on cache miss at debug (verify) | [x] |
| P405-4 | Composer: slowmode `aria-describedby` sync on channel switch (verify) | [x] |
| P405-5 | Notifications: mark-notification-read clears forum thread family (verify) | [x] |
| P405-6 | Composer: mention-everyone thread toast cites parent (verify) | [x] |
| P405-7 | UI: channel list PageUp/Down jumps 5 channels (verify) | [x] |
| P405-8 | Voice: remote mute pill name aria bundle smoke (verify) | [x] |
| P405-9 | Logging: Clipboard JSONL `sessionError` smoke (verify) | [x] |
| P405-10 | Diagnostics filter: **Voice errors** bundle smoke (verify) | [x] |
| P405-11 | Agentctl: forum search mesh-off then mesh-on refresh (reuse) | [x] |
| P405-12 | Agentctl: thread inbox mark-notification-read roundtrip (reuse) | [x] |
| P405-13 | Companion: channels panel verify disabled while guild loading | [x] |
| P405-14 | UI: forum post list roving keyboard Home/End/PageUp/Down ±5 | [x] |
| P405-15 | Smoke: `test:navigate-forum-thread-family-desktop` | [x] |
| P405-16 | Smoke: `test:platform-setsearch-mesh-on-cache-miss` | [x] |
| P405-17 | Docs: `SEARCH.md` + `COMPOSER.md` forum inbox refresh | [x] |
| P405-18 | Docs: `NOTIFICATIONS.md` mark-notification-read forum family | [x] |
| P405-19 | Boot: chain Phase 405 progressive smokes | [x] |
| P405-20 | Phase 406 guild inbox & voice depth (v0.8.369) | [x] |
**Next:** P405-1P405-19.
**Next:** ~~Phase 405~~ (complete).
---
### Phase 406 — Guild inbox & voice depth (v0.8.369)
| ID | Item | Status |
|----|------|--------|
| P406-1 | Search: guild sidecar stale age when channel scope cached (verify) | [ ] |
| P406-2 | Search mesh refresh: remove `aria-live` from mesh chip while idle (verify) | [ ] |
| P406-3 | Platform: `refreshSearch` mesh-on logs scope on cache miss at debug (verify) | [ ] |
| P406-4 | Voice: stage audience/pending pill `aria-current` when active (verify) | [ ] |
| P406-5 | Notifications: mark-channel-read clears guild thread family (verify) | [ ] |
| P406-6 | Composer: mention-role thread toast cites parent (verify) | [ ] |
| P406-7 | UI: server rail typeahead wraps before focused guild (verify) | [ ] |
| P406-8 | Voice: remote streaming pill name aria bundle smoke (verify) | [ ] |
| P406-9 | Logging: Clipboard JSONL `guildLoading` bool smoke (verify) | [ ] |
| P406-10 | Diagnostics filter: **IPC errors** bundle smoke (verify) | [ ] |
| P406-11 | Agentctl: guild search mesh-off then mesh-on refresh (reuse) | [ ] |
| P406-12 | Agentctl: thread inbox mark-channel-read roundtrip (reuse) | [ ] |
| P406-13 | Companion: messages panel verify disabled while guild loading | [ ] |
| P406-14 | UI: channel list voice roster rows in roving focus (verify) | [ ] |
| P406-15 | Smoke: `test:navigate-guild-thread-family-desktop` | [ ] |
| P406-16 | Smoke: `test:platform-refresh-mesh-on-cache-miss` | [ ] |
| P406-17 | Docs: `SEARCH.md` + `VOICE.md` guild inbox refresh | [ ] |
| P406-18 | Docs: `NOTIFICATIONS.md` mark-channel-read guild family | [ ] |
| P406-19 | Boot: chain Phase 406 progressive smokes | [ ] |
| P406-20 | Phase 407 channel inbox & threads depth (v0.8.370) | [ ] |
**Next:** P406-1P406-19.
---
@@ -7351,6 +7380,7 @@ Absorbed into Phase 273 (P273-5P273-8, P273-11P273-12). See Phase 274 for
### Changelog
- **2026-05-23** — v0.8.368: Phase 405 — forum sidecar stale guild meta; forum post list keyboard roving; server/channel page jumps verified; mark-notification-read forum family; agentctl forum search + thread inbox; boot chain. Phase 406 planned.
- **2026-05-23** — v0.8.367: Phase 404 — channel sidecar stale forum meta; threads filter Home/End + mention PageUp/Down ±5; members typeahead wrap; open-notification channel family; agentctl guild search + thread inbox; boot chain. Phase 405 planned.
- **2026-05-23** — v0.8.366: Phase 403 — guild sidecar stale channel meta; stage audience aria-current; voice roster channel-list roving; server rail typeahead wrap; agentctl guild search + thread inbox; boot chain. Phase 404 planned.
- **2026-05-23** — v0.8.365: Phase 402 — forum sidecar stale guild meta; server rail PageUp/Down ±5; channel list page jump verified; mark-notification-read forum family; agentctl forum search + thread inbox; boot chain. Phase 403 planned.
+2
View File
@@ -352,6 +352,8 @@ See also [FORUM_ARCHIVE_SEARCH.md](./FORUM_ARCHIVE_SEARCH.md).
Chat header: scope `<select>` + search input. Guild hits show `#channel` tag; click a hit to jump channels (`select-channel`). **Recent searches** chips appear when guild scope is active and the query is empty (v0.8.115). **Matches** toggle (guild scope, v0.8.260) filters to matching hits only.
**v0.8.368 (Phase 405):** Forum sidecar stale age falls back to `guildMetaStale.fetchedAt` when forum scope uses cached guild meta. Mesh **↻** drops `aria-pressed` while idle. `setSearch` mesh-on logs `scope` on cache miss at debug. Smokes: `npm run test:forum-sidecar-stale-guild-meta`, `npm run test:search-mesh-refresh-btn-no-pressed-idle`, `npm run test:platform-setsearch-mesh-on-cache-miss`.
**v0.8.367 (Phase 404):** Channel sidecar stale age falls back to `forumMetaStale.fetchedAt` when channel scope uses cached forum meta. Mesh **↻** drops `aria-disabled` while idle. `refreshSearch` mesh-on logs `scope` on cache hit at debug. Smokes: `npm run test:channel-sidecar-stale-forum-meta`, `npm run test:search-mesh-refresh-btn-no-disabled-idle`, `npm run test:platform-refresh-mesh-on-cache-hit`.
**v0.8.366 (Phase 403):** Guild sidecar stale age falls back to `channelMetaStale.fetchedAt` when guild scope uses cached channel meta. Mesh chip drops `aria-live` while idle. `refreshSearch` mesh-on logs `scope` on cache miss at debug. Smokes: `npm run test:guild-sidecar-stale-channel-meta`, `npm run test:search-mesh-chip-aria-live-idle`, `npm run test:platform-refresh-mesh-on-cache-miss`.