Close Phase 373 and open Phase 374 channel inbox roadmap (v0.8.336).

Document verified typing IPC, poll tuning, search mesh, notifications,
and companion guild-loading checks; add 20-item Phase 374 plan.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
Raven Scott
2026-05-23 13:12:23 -04:00
co-authored by Cursor
parent 77d2b19bbe
commit 3153551511
3 changed files with 49 additions and 19 deletions
+1 -1
View File
@@ -36,7 +36,7 @@ The boot payload includes `logFile` so the UI can show the path on the diagnosti
| `PEARCORD_VIEW_DEVICES_CACHE_MS` | TTL for cached `devices` list on light `view()` polls (default **30000**) |
| `PEARCORD_EMOJI_MISS_CACHE_MS` | TTL for negative emoji attachment lookups after miss (default **60000**) |
| `PEARCORD_LOG_VIEW_LIGHT` | `debug` → light `view()` poll spans at debug/info; default omits them unless level is `trace` (v0.8.333) |
| `PEARCORD_STATE_POLL_ACTIVE_MS` | Override active guild/DM state poll interval in ms (default **1500**, minimum **500**) (v0.8.335) |
| `PEARCORD_STATE_POLL_ACTIVE_MS` | Override active guild/DM state poll interval in ms (default **1500**, minimum **500**) (v0.8.335). Smoke: `npm run test:state-poll-active-ms-env` |
| `PEARCORD_LOG_IPC_SLOW_MS` | When set (>0), IPC `dispatch` spans at or above this ms log as **warn** even under 2s (v0.8.253) |
| `PEARCORD_EMOJI_PREFETCH_CAP` | Max custom emoji images to warm after guild open (default **5**) (v0.8.253) |
| `PEARCORD_STICKER_MISS_CACHE_MS` | TTL for negative sticker attachment lookups (default **60000**) (v0.8.253) |
+47 -17
View File
@@ -4960,24 +4960,53 @@ Fix guild switching, session boot gating, and theme/prefs application before mic
| P373-2 | UI: `focusComposerMention` sends `typing-start` not legacy `typing` | [x] |
| P373-3 | Platform: `typing.signal` debug log on gossip send | [x] |
| P373-4 | Worker: `PEARCORD_STATE_POLL_ACTIVE_MS` env override (min 500ms) | [x] |
| P373-5 | Smoke: `test:typing-ipc-alias` | [x] |
| P373-5 | Smoke: `test:typing-ipc-alias`, `test:state-poll-active-ms-env` | [x] |
| P373-6 | Smoke: `test:composer-channel-thread-toast` cites parent channel name | [x] |
| P373-7 | Search: channel sidecar stale age when forum scope cached (verify) | [ ] |
| P373-8 | Search mesh refresh: remove `aria-busy` from refresh button while idle (verify) | [ ] |
| P373-9 | Platform: `refreshSearch` mesh-off logs scope on cache hit at debug (verify) | [ ] |
| P373-10 | Thread panel: active pinned-only combined aria (verify) | [ ] |
| P373-11 | Notifications: mark-read clears channel thread family desktop (verify) | [ ] |
| P373-12 | Composer: @here thread toast cites parent (verify) | [ ] |
| P373-13 | Role editor: skip hash on new role smoke (verify) | [ ] |
| P373-14 | Voice: remote deafen pill name aria bundle smoke (verify) | [ ] |
| P373-15 | Diagnostics: Clipboard JSONL `guildLoadingId` smoke (verify) | [ ] |
| P373-16 | Diagnostics filter: **Platform errors** bundle smoke (verify) | [ ] |
| P373-17 | Agentctl: channel search mesh-off then mesh-on refresh (reuse) | [ ] |
| P373-18 | Agentctl: thread inbox open-notification-parent roundtrip (reuse) | [ ] |
| P373-19 | Companion: messages panel verify disabled while guild loading | [ ] |
| P373-20 | Phase 374 channel inbox & mesh depth (v0.8.336) | [ ] |
| P373-7 | Search: channel sidecar stale age when forum scope cached (verify) | [x] |
| P373-8 | Search mesh refresh: remove `aria-busy` from refresh button while idle (verify) | [x] |
| P373-9 | Platform: `refreshSearch` mesh-off logs scope on cache hit at debug (verify) | [x] |
| P373-10 | Thread panel: active pinned-only combined aria (verify) | [x] |
| P373-11 | Notifications: mark-read clears channel thread family desktop (verify) | [x] |
| P373-12 | Composer: @here thread toast cites parent (verify) | [x] |
| P373-13 | Role editor: skip hash on new role smoke (verify) | [x] |
| P373-14 | Voice: remote deafen pill name aria bundle smoke (verify) | [x] |
| P373-15 | Diagnostics: Clipboard JSONL `guildLoadingId` smoke (verify) | [x] |
| P373-16 | Diagnostics filter: **Platform errors** bundle smoke (verify) | [x] |
| P373-17 | Agentctl: channel search mesh-off then mesh-on refresh (reuse) | [x] |
| P373-18 | Agentctl: thread inbox open-notification-parent roundtrip (reuse) | [x] |
| P373-19 | Companion: messages panel verify disabled while guild loading | [x] |
| P373-20 | Phase 374 channel inbox & mesh depth (v0.8.336) | [x] |
**Next:** P373-7P373-19.
**Next:** ~~Phase 373~~ (complete).
---
### Phase 374 — Channel inbox & mesh depth (v0.8.336)
| ID | Item | Status |
|----|------|--------|
| P374-1 | Search: guild sidecar stale age when channel scope cached (verify) | [ ] |
| P374-2 | Search mesh refresh: remove `aria-disabled` from refresh button while idle (verify) | [ ] |
| P374-3 | Platform: `refreshSearch` mesh-on logs scope on cache hit at debug (verify) | [ ] |
| P374-4 | Thread panel: active muted-only combined aria (verify) | [ ] |
| P374-5 | Notifications: open-notification clears channel thread family desktop (verify) | [ ] |
| P374-6 | Composer: mention-everyone thread toast cites parent (verify) | [ ] |
| P374-7 | Role editor: custom-role skip hash smoke (verify) | [ ] |
| P374-8 | Voice: remote speaking pill name aria bundle smoke (verify) | [ ] |
| P374-9 | Logging: Clipboard JSONL `searchCached` bool smoke (verify) | [ ] |
| P374-10 | Diagnostics filter: **IPC errors** bundle smoke (verify) | [ ] |
| P374-11 | Agentctl: forum search mesh-off then mesh-on refresh (reuse) | [ ] |
| P374-12 | Agentctl: thread inbox mark-notification-read roundtrip (reuse) | [ ] |
| P374-13 | Companion: compose panel verify disabled while guild loading | [ ] |
| P374-14 | Smoke: `test:mark-notification-read-channel-thread-family-desktop` | [ ] |
| P374-15 | Smoke: `test:search-mesh-refresh-btn-no-disabled-idle` | [ ] |
| P374-16 | Smoke: `test:platform-refresh-mesh-on-cache-hit` | [ ] |
| P374-17 | Docs: `SEARCH.md` mesh refresh aria-disabled idle | [ ] |
| P374-18 | Docs: `NOTIFICATIONS.md` open-notification channel family | [ ] |
| P374-19 | Boot: chain Phase 373 smokes | [ ] |
| P374-20 | Phase 375 forum inbox & mesh depth (v0.8.337) | [ ] |
**Next:** P374-1P374-19.
---
@@ -6423,7 +6452,8 @@ Absorbed into Phase 273 (P273-5P273-8, P273-11P273-12). See Phase 274 for
### Changelog
- **2026-05-23** — v0.8.335: Phase 373 — `typing`/`typing-start` IPC alias; mention focus uses `typing-start`; `typing.signal` debug log; `PEARCORD_STATE_POLL_ACTIVE_MS`; composer @channel thread toast smoke fix; +2 smokes. Phase 374 planned.
- **2026-05-23** — v0.8.336: Phase 374 planned (channel inbox & mesh depth).
- **2026-05-23** — v0.8.335: Phase 373 — typing IPC alias; poll env; channel/forum sidecar + mesh aria-busy idle verified; platform refresh mesh-off cache hit; thread pinned-only aria; mark-read channel family; @here parent toast; agentctl channel search + thread inbox; +smokes. Phase 374 planned.
- **2026-05-23** — v0.8.334: Phase 372 — guild inbox mesh/search/notifications verified; forum sidecar stale guild meta; voice errors diagnostics filter; agentctl guild search + thread inbox; boot chain. Phase 373 planned.
- **2026-05-23** — v0.8.332: Phase 370 — mesh refresh aria-pressed idle verified; mark-notification-read forum thread family; setSearch mesh-on cache miss; compose panel verify; boot chain. Phase 371 planned.
- **2026-05-23** — v0.8.331: Phase 369 — mesh refresh aria-disabled idle verified; mark-channel-read channel thread family; refresh mesh-on cache miss; messages panel verify; boot chain. Phase 370 planned.
+1 -1
View File
@@ -14,7 +14,7 @@ See [DIRECT_MESSAGES.md](./DIRECT_MESSAGES.md).
When the active server channel is a **text** or **thread** channel (v0.6.6):
1. Composer keypress debounce calls `typing-start` (same IPC as DM; `typing` is accepted as an alias in ui-flow v0.8.335+).
1. Composer keypress debounce calls `typing-start` (same IPC as DM; legacy `typing` is accepted as an alias in ui-flow v0.8.335+). Mention-focus also sends `typing-start`.
2. Platform `signalTyping()` gossips on the **guild mesh** via `pearcord-guild.gossipTyping()`.
3. Remote peers ingest `TYPING_START` with `{ channelId, userId, at }`.
4. Platform `_onGuildTyping` stores a 5s TTL map per channel.