Close Phase 386; open Phase 387 forum inbox roadmap (v0.8.349).
Document channel search mesh aria-disabled idle, open-notification channel thread family, and sendSelectChannel autofocus paths. Co-authored-by: Cursor <[email protected]>
This commit is contained in:
@@ -32,6 +32,8 @@ While the message box is focused, worker `state` polls defer full `render()` to
|
||||
|
||||
## Focus (Discord parity)
|
||||
|
||||
**v0.8.348:** Thread sidebar picks, **Back to channel**, and guild search message hits route through `sendSelectChannel` for autofocus. Message jumps clear pending focus before applying (`shouldDeferComposerAutofocus`).
|
||||
|
||||
**v0.8.347:** **Ctrl+Shift+M** (⌘⇧M on macOS) focuses the message box from guild/DM view (`focusMessageComposerShortcut`). NSFW channel **Continue** uses `sendSelectChannel` so autofocus applies after the gate. Smoke: `npm run test:composer-focus-shortcut`.
|
||||
|
||||
**v0.8.345:** Pending composer focus is retained while `view.guildLoading` or the input is temporarily disabled, then applied when the guild loading overlay clears (`syncGuildLoadingOverlay`).
|
||||
|
||||
@@ -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.348:** **Open notification** on text channels dismisses thread-family desktop for all threads under the parent channel (`open-notification` IPC, Phase 386 re-verified). Smokes: `npm run test:open-notification-channel-thread-family-desktop`, `npm run test:agentctl-thread-inbox-mark-notification-read`.
|
||||
|
||||
**v0.8.347:** **Navigate to message** on forum channels dismisses thread-family desktop for all forum post threads (`navigateToMessage` forum branch, Phase 385 re-verified). Smokes: `npm run test:navigate-forum-thread-family-desktop`, `npm run test:agentctl-thread-inbox-mark-channel-read`.
|
||||
|
||||
**v0.8.346:** **Mark notification read** on forum channels dismisses thread-family desktop for all forum post threads (`mark-notification-read-cleared` IPC, Phase 384 re-verified). Smokes: `npm run test:mark-notification-read-forum-thread-family-desktop`, `npm run test:agentctl-thread-inbox-mark-channel-read`.
|
||||
|
||||
+52
-22
@@ -5333,28 +5333,57 @@ Fix guild switching, session boot gating, and theme/prefs application before mic
|
||||
|
||||
| ID | Item | Status |
|
||||
|----|------|--------|
|
||||
| P386-1 | Search: guild sidecar stale age when channel scope cached (verify) | [ ] |
|
||||
| P386-2 | Search mesh refresh: remove `aria-disabled` from refresh button while idle (verify) | [ ] |
|
||||
| P386-3 | Platform: `refreshSearch` mesh-on logs scope on cache hit at debug (verify) | [ ] |
|
||||
| P386-4 | Thread panel: active muted-only combined aria (verify) | [ ] |
|
||||
| P386-5 | Notifications: open-notification clears channel thread family desktop (verify) | [ ] |
|
||||
| P386-6 | Composer: mention-everyone thread toast cites parent (verify) | [ ] |
|
||||
| P386-7 | Role editor: custom-role skip hash smoke (verify) | [ ] |
|
||||
| P386-8 | Voice: remote speaking pill name aria bundle smoke (verify) | [ ] |
|
||||
| P386-9 | Logging: Clipboard JSONL `searchCached` bool smoke (verify) | [ ] |
|
||||
| P386-10 | Diagnostics filter: **IPC errors** bundle smoke (verify) | [ ] |
|
||||
| P386-11 | Agentctl: forum search mesh-off then mesh-on refresh (reuse) | [ ] |
|
||||
| P386-12 | Agentctl: thread inbox mark-notification-read roundtrip (reuse) | [ ] |
|
||||
| P386-13 | Companion: compose panel verify disabled while guild loading | [ ] |
|
||||
| P386-14 | Smoke: `test:open-notification-channel-thread-family-desktop` | [ ] |
|
||||
| P386-15 | Smoke: `test:search-mesh-refresh-btn-no-disabled-idle` | [ ] |
|
||||
| P386-16 | Smoke: `test:platform-refresh-mesh-on-cache-hit` | [ ] |
|
||||
| P386-17 | Docs: `SEARCH.md` mesh refresh aria-disabled idle | [ ] |
|
||||
| P386-18 | Docs: `NOTIFICATIONS.md` open-notification channel family | [ ] |
|
||||
| P386-19 | Boot: chain Phase 385 smokes | [ ] |
|
||||
| P386-20 | Phase 387 forum inbox & mesh depth (v0.8.349) | [ ] |
|
||||
| P386-1 | Search: guild sidecar stale age when channel scope cached (verify) | [x] |
|
||||
| P386-2 | Search mesh refresh: remove `aria-disabled` from refresh button while idle (verify) | [x] |
|
||||
| P386-3 | Platform: `refreshSearch` mesh-on logs scope on cache hit at debug (verify) | [x] |
|
||||
| P386-4 | Thread panel: active muted-only combined aria (verify) | [x] |
|
||||
| P386-5 | Notifications: open-notification clears channel thread family desktop (verify) | [x] |
|
||||
| P386-6 | Composer: mention-everyone thread toast cites parent (verify) | [x] |
|
||||
| P386-7 | Role editor: custom-role skip hash smoke (verify) | [x] |
|
||||
| P386-8 | Voice: remote speaking pill name aria bundle smoke (verify) | [x] |
|
||||
| P386-9 | Logging: Clipboard JSONL `searchCached` bool smoke (verify) | [x] |
|
||||
| P386-10 | Diagnostics filter: **IPC errors** bundle smoke (verify) | [x] |
|
||||
| P386-11 | Agentctl: forum search mesh-off then mesh-on refresh (reuse) | [x] |
|
||||
| P386-12 | Agentctl: thread inbox mark-notification-read roundtrip (reuse) | [x] |
|
||||
| P386-13 | Companion: compose panel verify disabled while guild loading | [x] |
|
||||
| P386-14 | Smoke: `test:open-notification-channel-thread-family-desktop` | [x] |
|
||||
| P386-15 | Smoke: `test:search-mesh-refresh-btn-no-disabled-idle` | [x] |
|
||||
| P386-16 | Smoke: `test:platform-refresh-mesh-on-cache-hit` | [x] |
|
||||
| P386-17 | Docs: `SEARCH.md` mesh refresh aria-disabled idle | [x] |
|
||||
| P386-18 | Docs: `NOTIFICATIONS.md` open-notification channel family | [x] |
|
||||
| P386-19 | UI: `sendSelectChannel` for thread panel, search hits, jump defer fix | [x] |
|
||||
| P386-20 | Phase 387 forum inbox & mesh depth (v0.8.349) | [x] |
|
||||
|
||||
**Next:** P386-1–P386-19.
|
||||
**Next:** ~~Phase 386~~ (complete).
|
||||
|
||||
---
|
||||
|
||||
### Phase 387 — Forum inbox & mesh depth (v0.8.349)
|
||||
|
||||
| ID | Item | Status |
|
||||
|----|------|--------|
|
||||
| P387-1 | Search: forum sidecar stale age when guild scope cached (verify) | [ ] |
|
||||
| P387-2 | Search mesh refresh: remove `aria-pressed` from refresh button while idle (verify) | [ ] |
|
||||
| P387-3 | Platform: `setSearch` mesh-on logs scope on cache miss at debug (verify) | [ ] |
|
||||
| P387-4 | Thread panel: active pinned+muted combined aria (verify) | [ ] |
|
||||
| P387-5 | Notifications: mark-notification-read clears forum thread family (verify) | [ ] |
|
||||
| P387-6 | Composer: mention-channel thread toast cites parent (verify) | [ ] |
|
||||
| P387-7 | Role editor: custom-role skip hash smoke (verify) | [ ] |
|
||||
| P387-8 | Voice: remote mute pill name aria bundle smoke (verify) | [ ] |
|
||||
| P387-9 | Logging: Clipboard JSONL `sessionError` smoke (verify) | [ ] |
|
||||
| P387-10 | Diagnostics filter: **Voice errors** bundle smoke (verify) | [ ] |
|
||||
| P387-11 | Agentctl: guild search mesh-off then mesh-on refresh (reuse) | [ ] |
|
||||
| P387-12 | Agentctl: thread inbox mark-channel-read roundtrip (reuse) | [ ] |
|
||||
| P387-13 | Companion: channels panel verify disabled while guild loading | [ ] |
|
||||
| P387-14 | Smoke: `test:navigate-forum-thread-family-desktop` | [ ] |
|
||||
| P387-15 | Smoke: `test:search-mesh-refresh-btn-no-pressed-idle` | [ ] |
|
||||
| P387-16 | Smoke: `test:platform-setsearch-mesh-on-cache-miss` | [ ] |
|
||||
| P387-17 | Docs: `SEARCH.md` mesh refresh aria-pressed idle | [ ] |
|
||||
| P387-18 | Docs: `NOTIFICATIONS.md` mark-notification-read forum family | [ ] |
|
||||
| P387-19 | Boot: chain Phase 386 smokes | [ ] |
|
||||
| P387-20 | Phase 388 guild inbox & mesh depth (v0.8.350) | [ ] |
|
||||
|
||||
**Next:** P387-1–P387-19.
|
||||
|
||||
---
|
||||
|
||||
@@ -6800,8 +6829,9 @@ Absorbed into Phase 273 (P273-5–P273-8, P273-11–P273-12). See Phase 274 for
|
||||
|
||||
### Changelog
|
||||
|
||||
- **2026-05-23** — v0.8.350: Phase 388 planned (guild inbox & mesh depth).
|
||||
- **2026-05-23** — v0.8.349: Phase 387 planned (forum inbox & mesh depth).
|
||||
- **2026-05-23** — v0.8.348: Phase 386 planned (channel inbox & mesh depth).
|
||||
- **2026-05-23** — v0.8.348: Phase 386 — guild sidecar stale channel meta; mesh aria-disabled idle; refresh mesh-on cache hit; open-notification channel family; sendSelectChannel thread/search paths; agentctl forum search + thread inbox; boot chain. Phase 387 planned.
|
||||
- **2026-05-23** — v0.8.347: Phase 385 — guild sidecar stale forum meta; mesh aria-controls idle; setSearch mesh-off cache hit; navigate forum family; composer Ctrl+Shift+M focus + NSFW gate autofocus; agentctl guild search + thread inbox; boot chain. Phase 386 planned.
|
||||
- **2026-05-23** — v0.8.346: Phase 384 — forum sidecar stale guild meta; mesh aria-pressed idle; setSearch mesh-on cache miss; mark-notification-read forum family; agentctl guild search + thread inbox; boot chain. Phase 385 planned.
|
||||
- **2026-05-23** — v0.8.345: Phase 383 — guild sidecar stale channel meta; mesh aria-disabled idle; refresh mesh-on cache hit; open-notification channel family; composer autofocus after guild load; agentctl forum search + thread inbox; boot chain. Phase 384 planned.
|
||||
|
||||
@@ -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.348:** Guild sidecar stale age falls back to `channelMetaStale.fetchedAt` when channel scope uses cached guild meta (Phase 386 re-verified). Mesh **↻** clears `aria-disabled` when idle (fresh). `refreshSearch` logs `guild.search refresh mesh-on cache hit` with `scope` when mesh is on and cache hits. Smokes: `npm run test:guild-sidecar-stale-channel-meta`, `npm run test:search-mesh-refresh-btn-no-disabled-idle`, `npm run test:platform-refresh-mesh-on-cache-hit`.
|
||||
|
||||
**v0.8.347:** Guild sidecar stale age falls back to `forumMetaStale.fetchedAt` when forum scope uses cached guild meta (Phase 385 re-verified). Mesh **↻** clears `aria-controls` when idle (fresh), restores `search-mesh-chip` 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.346:** Forum sidecar stale age falls back to `guildMetaStale.fetchedAt` when guild scope uses cached forum meta (Phase 384 re-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`.
|
||||
|
||||
Reference in New Issue
Block a user