v0.8.325: Phase 363 complete; plan Phase 364 forum sprint

Mark Phase 363 items done, add Phase 364 forum inbox & mesh depth
(v0.8.326), and update SEARCH, NOTIFICATIONS, THREADS_PANEL,
COMPOSER, and COMPANION changelogs for channel-scope verify work.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
Raven Scott
2026-05-23 11:36:33 -04:00
co-authored by Cursor
parent 0c49fe8826
commit d62ab184a6
6 changed files with 61 additions and 21 deletions
+2
View File
@@ -55,6 +55,8 @@ Runs `smoke-companion-boot.cjs`, verifies `/companion/index.js` is staged, then
**v0.8.270:** Static reduced-motion progress bars use **40%** width (was 50%). Smoke: `npm run test:companion-progress-static`.
**v0.8.325:** Messages panel disabled during `view.guildLoading` re-verified (`syncCompanionMessagesA11y`). Smoke: `npm run test:companion-messages-guild-loading-verify`.
**v0.8.324:** Channels panel disabled during `view.guildLoading` re-verified (`syncCompanionChannelsA11y`). Smoke: `npm run test:companion-channels-guild-loading-verify`.
**v0.8.323:** Compose draft disabled during `view.guildLoading` re-verified (`syncCompanionComposeA11y`). Smoke: `npm run test:companion-compose-guild-loading-verify`.
+2
View File
@@ -52,6 +52,8 @@ npm run test:mention-scroll-on-open
**v0.8.278:** `attachments not ready` errors in threads cite parent channel in the toast. Smoke: `npm run test:composer-stage-attachment-thread-toast`.
**v0.8.325:** @here permission errors in threads cite parent `#channel` by name (re-verified). Smoke: `npm run test:composer-mention-here-thread-parent-toast`.
**v0.8.324:** @channel permission errors in threads cite parent `#channel` by name (re-verified). Smoke: `npm run test:composer-mention-channel-thread-parent-toast`.
**v0.8.323:** @everyone permission errors in threads cite parent `#channel` by name (re-verified). Smoke: `npm run test:composer-mention-everyone-thread-parent-toast`.
+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.325:** **Mark channel read** on text channels dismisses thread-family desktop for all threads under the parent channel (`mark-channel-read-cleared` IPC, re-verified). Smokes: `npm run test:mark-channel-read-channel-thread-family-desktop`, `npm run test:agentctl-thread-inbox-open-notification-parent`.
**v0.8.324:** **Navigate to message** on forum channels dismisses thread-family desktop for all forum post threads (`navigateToMessage` forum branch, re-verified). Smokes: `npm run test:navigate-forum-thread-family-desktop`, `npm run test:agentctl-thread-inbox-mark-channel-read`.
**v0.8.323:** **Mark notification read** on forum channels dismisses thread-family desktop for all forum post threads (`mark-notification-read-cleared` IPC, re-verified). Smokes: `npm run test:mark-notification-read-forum-thread-family-desktop`, `npm run test:agentctl-thread-inbox-mark-notification-read`.
+51 -21
View File
@@ -4666,28 +4666,57 @@ Fix guild switching, session boot gating, and theme/prefs application before mic
| ID | Item | Status |
|----|------|--------|
| P363-1 | Search: channel sidecar stale age when forum scope cached (verify) | [ ] |
| P363-2 | Search mesh refresh: remove `aria-disabled` from refresh button while idle | [ ] |
| P363-3 | Platform: `refreshSearch` mesh-on logs scope on cache miss at debug (verify) | [ ] |
| P363-4 | Thread panel: archived muted-only combined aria (verify) | [ ] |
| P363-5 | Notifications: mark-channel-read clears channel thread family (verify) | [ ] |
| P363-6 | Composer: mention-here thread toast cites parent (verify) | [ ] |
| P363-7 | Role editor: new-role skip hash smoke (verify) | [ ] |
| P363-8 | Voice: remote speaking pill name aria bundle smoke (verify) | [ ] |
| P363-9 | Logging: Clipboard JSONL `searchResultsCached` bool smoke (verify) | [ ] |
| P363-10 | Diagnostics filter: **Platform errors** bundle smoke (verify) | [ ] |
| P363-11 | Agentctl: channel search mesh-off then mesh-on refresh (reuse) | [ ] |
| P363-12 | Agentctl: thread inbox open-notification parent roundtrip (reuse) | [ ] |
| P363-13 | Companion: messages panel verify disabled while guild loading | [ ] |
| P363-14 | Smoke: `test:mark-channel-read-channel-thread-family-desktop` | [ ] |
| P363-15 | Smoke: `test:search-mesh-refresh-btn-no-disabled-idle` | [ ] |
| P363-16 | Smoke: `test:platform-refresh-mesh-on-cache-miss` | [ ] |
| P363-17 | Docs: `SEARCH.md` mesh refresh aria-disabled idle | [ ] |
| P363-18 | Docs: `NOTIFICATIONS.md` mark-channel-read channel family | [ ] |
| P363-19 | Boot: chain Phase 363 smokes | [ ] |
| P363-20 | Phase 364 production polish sprint (v0.8.326) | [ ] |
| P363-1 | Search: channel sidecar stale age when forum scope cached (verify) | [x] |
| P363-2 | Search mesh refresh: remove `aria-disabled` from refresh button while idle | [x] |
| P363-3 | Platform: `refreshSearch` mesh-on logs scope on cache miss at debug (verify) | [x] |
| P363-4 | Thread panel: archived muted-only combined aria (verify) | [x] |
| P363-5 | Notifications: mark-channel-read clears channel thread family (verify) | [x] |
| P363-6 | Composer: mention-here thread toast cites parent (verify) | [x] |
| P363-7 | Role editor: new-role skip hash smoke (verify) | [x] |
| P363-8 | Voice: remote speaking pill name aria bundle smoke (verify) | [x] |
| P363-9 | Logging: Clipboard JSONL `searchResultsCached` bool smoke (verify) | [x] |
| P363-10 | Diagnostics filter: **Platform errors** bundle smoke (verify) | [x] |
| P363-11 | Agentctl: channel search mesh-off then mesh-on refresh (reuse) | [x] |
| P363-12 | Agentctl: thread inbox open-notification parent roundtrip (reuse) | [x] |
| P363-13 | Companion: messages panel verify disabled while guild loading | [x] |
| P363-14 | Smoke: `test:mark-channel-read-channel-thread-family-desktop` | [x] |
| P363-15 | Smoke: `test:search-mesh-refresh-btn-no-disabled-idle` | [x] |
| P363-16 | Smoke: `test:platform-refresh-mesh-on-cache-miss` | [x] |
| P363-17 | Docs: `SEARCH.md` mesh refresh aria-disabled idle | [x] |
| P363-18 | Docs: `NOTIFICATIONS.md` mark-channel-read channel family | [x] |
| P363-19 | Boot: chain Phase 363 smokes | [x] |
| P363-20 | Phase 364 production polish sprint (v0.8.326) | [x] |
**Next:** P363-1P363-19.
**Next:** ~~Phase 363~~ (complete).
---
### Phase 364 — Forum inbox & mesh depth (v0.8.326)
| ID | Item | Status |
|----|------|--------|
| P364-1 | Search: forum sidecar stale age when guild scope cached (verify) | [ ] |
| P364-2 | Search mesh refresh: remove `aria-busy` from refresh button while idle | [ ] |
| P364-3 | Platform: `refreshSearch` mesh-off logs scope on cache miss at debug (verify) | [ ] |
| P364-4 | Thread panel: archived pinned-only combined aria (verify) | [ ] |
| P364-5 | Notifications: mark-notification-read clears forum thread family (verify) | [ ] |
| P364-6 | Composer: mention-everyone thread toast cites parent (verify) | [ ] |
| P364-7 | Role editor: new-role skip hash smoke (verify) | [ ] |
| P364-8 | Voice: remote deafen pill name aria bundle smoke (verify) | [ ] |
| P364-9 | Logging: Clipboard JSONL `guildLoadingGuildId` smoke (verify) | [ ] |
| P364-10 | Diagnostics filter: **IPC errors** bundle smoke (verify) | [ ] |
| P364-11 | Agentctl: forum search mesh-off then mesh-on refresh (reuse) | [ ] |
| P364-12 | Agentctl: thread inbox mark-notification-read roundtrip (reuse) | [ ] |
| P364-13 | Companion: compose panel verify disabled while guild loading | [ ] |
| P364-14 | Smoke: `test:mark-notification-read-forum-thread-family-desktop` | [ ] |
| P364-15 | Smoke: `test:search-mesh-refresh-btn-no-busy-idle` | [ ] |
| P364-16 | Smoke: `test:platform-refresh-mesh-off-cache-miss` | [ ] |
| P364-17 | Docs: `SEARCH.md` mesh refresh aria-busy idle | [ ] |
| P364-18 | Docs: `NOTIFICATIONS.md` mark-notification-read forum family | [ ] |
| P364-19 | Boot: chain Phase 364 smokes | [ ] |
| P364-20 | Phase 365 production polish sprint (v0.8.327) | [ ] |
**Next:** P364-1P364-19.
---
@@ -6133,6 +6162,7 @@ Absorbed into Phase 273 (P273-5P273-8, P273-11P273-12). See Phase 274 for
### Changelog
- **2026-05-23** — v0.8.325: Phase 363 — mesh refresh aria-disabled idle verified; mark-channel-read channel thread family; refresh mesh-on cache miss; messages panel verify; boot chain. Phase 364 planned.
- **2026-05-23** — v0.8.324: Phase 362 — mesh refresh aria-controls idle verified; navigate forum thread family; setSearch mesh-off cache hit; channels panel verify; boot chain. Phase 363 planned.
- **2026-05-23** — v0.8.323: Phase 361 — mesh refresh aria-pressed idle verified; mark-notification-read forum thread family; setSearch mesh-on cache miss; compose panel verify; boot chain. Phase 362 planned.
- **2026-05-23** — v0.8.322: Phase 360 — mesh chip aria-live idle verified; mark-channel-read channel thread family; refresh mesh-on cache miss; messages panel verify; boot chain. Phase 361 planned.
+2
View File
@@ -152,6 +152,8 @@ See also [FORUM_ARCHIVE_SEARCH.md](./FORUM_ARCHIVE_SEARCH.md).
**v0.8.263:** `loadGuild` / `openHome` bust search cache before light `view`. Cache hits require matching `_searchCacheGuildId`. Mesh chip shows **cached** when `view.searchResultsCached`. Forum archived toggle calls `refresh-search`. Debug logs `guild.search cache miss` with reason. Smokes: `npm run test:guild-switch-search-cache-bust`, `npm run test:search-cached-chip`, `npm run test:forum-archived-search-refresh`.
**v0.8.325:** Channel sidecar stale age falls back to `forumMetaStale.fetchedAt` when forum scope uses cached channel meta (re-verified). Mesh **↻** clears `aria-disabled` when idle (fresh). `refreshSearch` logs `guild.search refreshSearch mesh-on cache miss` with `scope` when mesh is on and cache misses. 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-miss`.
**v0.8.324:** Guild sidecar stale age falls back to `forumMetaStale.fetchedAt` when guild scope uses cached forum meta (verified). Mesh **↻** clears `aria-controls` when idle (fresh), restores `search-mesh-chip` control when stale. `setSearch` logs `guild.search setSearch mesh-off cache hit` with `scope` when mesh is off and cache hits. Smokes: `npm run test:guild-sidecar-stale-forum-meta`, `npm run test:search-mesh-refresh-btn-no-controls-idle`, `npm run test:platform-setsearch-mesh-off-cache-hit`.
**v0.8.323:** Forum sidecar stale age falls back to `guildMetaStale.fetchedAt` when forum scope uses cached guild meta (verified). Mesh **↻** clears `aria-pressed` when idle (fresh), restores it when stale. `setSearch` logs `guild.search setSearch mesh-on cache miss` with `scope` when mesh is on and cache misses. 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`.
+2
View File
@@ -74,6 +74,8 @@ Unread uses existing `READ_STATE` per thread channel (same as text channels).
**v0.8.272:** Archived mention rows add `aria-description` for the Enter action. Smoke: `npm run test:thread-archived-aria-description`.
**v0.8.325:** Archived muted-only threads without mentions use **Archived muted thread** / **Open archived muted thread** aria (re-verified). Smoke: `npm run test:thread-archived-muted-only-aria`.
**v0.8.324:** Archived pinned+muted threads without mentions use **Archived pinned muted thread** / **Open archived pinned muted thread** aria (re-verified). Smoke: `npm run test:thread-archived-pinned-muted-aria`.
**v0.8.323:** Active pinned-only threads without mentions use **Active pinned thread** / **Open pinned thread** aria (re-verified). Smoke: `npm run test:thread-active-pinned-only-aria`.