docs: Phase 496 soundboard depth complete, plan Phase 497 (v0.8.459)
Roadmap marks soundboard phase done with platform spans, UI compositor, and test:phase496-soundboard bundle; adds 50-item presence depth phase. Co-authored-by: Cursor <[email protected]>
This commit is contained in:
@@ -226,6 +226,15 @@ PEARCORD_SKIP_MESH_ROUNDTRIP=1 npm run test:agentctl-phase474-webhooks
|
||||
|
||||
Extends Phase 448 webhooks/integrations bundle with `syncWebhooksPanelsDuringGuildLoading` (integrations panel, webhook/slash rows, bot install, automation hooks), `#composer-webhooks-hint`, platform webhook/slash span metadata (`webhookName`/`deleted`/`contentLength`/`hasUsername`/`firstName`), dev-log clipboard `guildWebhookCount`, tightened **webhook-errors**/**slash-errors** filters, and Phase 473 roles regression. Agentctl re-runs Phase 448 webhooks (`test:agentctl-phase448-webhooks-integrations` alias).
|
||||
|
||||
**Soundboard depth (v0.8.459):** Primary Phase 496 verification — combined bundle:
|
||||
|
||||
```bash
|
||||
npm run test:phase496-soundboard
|
||||
npm run test:agentctl-phase496-soundboard
|
||||
```
|
||||
|
||||
Extends `test:soundboard` with split soundboard guild-loading compositor, composer soundboard hint, platform soundboard spans, **soundboard-errors** dev-log filter, clipboard soundboard meta, soundboard tile `aria-current` + volume slider, and Phase 495 screen regression. Agentctl: `test:soundboard`.
|
||||
|
||||
**Screen share depth (v0.8.458):** Primary Phase 495 verification — combined bundle:
|
||||
|
||||
```bash
|
||||
|
||||
+112
-53
@@ -10745,66 +10745,125 @@ Fix guild switching, session boot gating, and theme/prefs application before mic
|
||||
| P495-49 | UI: stream hover partial badges re-verify | [x] |
|
||||
| P495-50 | Phase 496 soundboard depth (v0.8.459) | [x] |
|
||||
|
||||
**Next:** ~~Phase 495~~ (complete). `syncScreenPanelsDuringGuildLoading`; `ensureComposerScreenHint`; **screen-errors** filter; platform screen/capture spans; bundle `test:phase495-screen`. Phase 496 planned (50 items).
|
||||
**Next:** ~~Phase 496~~ (complete). `syncSoundboardPanelsDuringGuildLoading`; `ensureComposerSoundboardHint`; **soundboard-errors** filter; platform soundboard spans; bundle `test:phase496-soundboard`. Phase 497 planned (50 items).
|
||||
|
||||
---
|
||||
|
||||
### Phase 496 — Soundboard depth (v0.8.459)
|
||||
### Phase 496 — Soundboard depth (v0.8.459) ✅
|
||||
|
||||
| ID | Item | Status |
|
||||
|----|------|--------|
|
||||
| P496-1 | Soundboard: play sound roundtrip re-verify | [ ] |
|
||||
| P496-2 | Soundboard: upload sound roundtrip re-verify | [ ] |
|
||||
| P496-3 | Soundboard: delete sound roundtrip re-verify | [ ] |
|
||||
| P496-4 | UI: `syncSoundboardPanelsDuringGuildLoading` wrapper extend | [ ] |
|
||||
| P496-5 | UI: soundboard picker guild-loading guard extend | [ ] |
|
||||
| P496-6 | UI: soundboard button guild-loading guard extend | [ ] |
|
||||
| P496-7 | UI: soundboard volume slider guild-loading guard extend | [ ] |
|
||||
| P496-8 | Platform: `soundboard.play` span metadata extend | [ ] |
|
||||
| P496-9 | Platform: `soundboard.upload` span metadata extend | [ ] |
|
||||
| P496-10 | Platform: `soundboard.delete` span metadata extend | [ ] |
|
||||
| P496-11 | Logging: dev-log **soundboard-errors** filter tighten | [ ] |
|
||||
| P496-12 | Logging: dev-log clipboard soundboard meta extend | [ ] |
|
||||
| P496-13 | Agentctl: soundboard play headless re-verify | [ ] |
|
||||
| P496-14 | Agentctl: soundboard upload headless re-verify | [ ] |
|
||||
| P496-15 | Agentctl: combined phase496 soundboard bundle | [ ] |
|
||||
| P496-16 | Smoke: soundboard-panels-guild-loading-extend | [ ] |
|
||||
| P496-17 | Smoke: dev-log-soundboard-errors-tighten-extend | [ ] |
|
||||
| P496-18 | Smoke: dev-log-clipboard-soundboard-meta-extend | [ ] |
|
||||
| P496-19 | UI: composer soundboard hint extend | [ ] |
|
||||
| P496-20 | UI: soundboard empty-state hints polish | [ ] |
|
||||
| P496-21 | UI: soundboard row aria-current polish | [ ] |
|
||||
| P496-22 | UI: soundboard search filter re-verify | [ ] |
|
||||
| P496-23 | UI: soundboard cooldown hint re-verify | [ ] |
|
||||
| P496-24 | UI: soundboard volume persist re-verify | [ ] |
|
||||
| P496-25 | UI: soundboard emoji picker re-verify | [ ] |
|
||||
| P496-26 | UI: composer autofocus after sound play re-verify | [ ] |
|
||||
| P496-27 | Permissions: manage-soundboard toast re-verify | [ ] |
|
||||
| P496-28 | Mesh: soundboard gossip roundtrip re-verify | [ ] |
|
||||
| P496-29 | Docs: `SOUNDBOARD.md` refresh | [ ] |
|
||||
| P496-30 | Docs: `VOICE.md` soundboard section refresh | [ ] |
|
||||
| P496-31 | Docs: `AGENTCTL.md` phase 496 bundle | [ ] |
|
||||
| P496-32 | Regression: screen phase 495 smokes still pass | [ ] |
|
||||
| P496-33 | Regression: stage phase 494 smokes still pass | [ ] |
|
||||
| P496-34 | Boot: session ready gate | [ ] |
|
||||
| P496-35 | Boot: pear run gate | [ ] |
|
||||
| P496-36 | Module: soundboard README accuracy | [ ] |
|
||||
| P496-37 | Module: `pearcord-platform` README soundboard section | [ ] |
|
||||
| P496-38 | Smoke: platform-soundboard-span-metadata-extend | [ ] |
|
||||
| P496-39 | UI: soundboard picker escape focus re-verify | [ ] |
|
||||
| P496-40 | UI: soundboard rate limit hint re-verify | [ ] |
|
||||
| P496-41 | UI: companion soundboard defer re-verify | [ ] |
|
||||
| P496-42 | UI: dev-log clipboard sound count extend | [ ] |
|
||||
| P496-43 | UI: voice bar soundboard badge re-verify | [ ] |
|
||||
| P496-44 | UI: soundboard audit log entries re-verify | [ ] |
|
||||
| P496-45 | UI: default sound pack re-verify | [ ] |
|
||||
| P496-46 | UI: soundboard upload progress re-verify | [ ] |
|
||||
| P496-47 | UI: soundboard favorite pin re-verify | [ ] |
|
||||
| P496-48 | UI: soundboard category tabs re-verify | [ ] |
|
||||
| P496-49 | UI: soundboard P2P fanout re-verify | [ ] |
|
||||
| P496-50 | Phase 497 presence depth (v0.8.460) | [ ] |
|
||||
| P496-1 | Soundboard: play sound roundtrip re-verify | [x] |
|
||||
| P496-2 | Soundboard: upload sound roundtrip re-verify | [x] |
|
||||
| P496-3 | Soundboard: delete sound roundtrip re-verify | [x] |
|
||||
| P496-4 | UI: `syncSoundboardPanelsDuringGuildLoading` wrapper extend | [x] |
|
||||
| P496-5 | UI: soundboard picker guild-loading guard extend | [x] |
|
||||
| P496-6 | UI: soundboard button guild-loading guard extend | [x] |
|
||||
| P496-7 | UI: soundboard volume slider guild-loading guard extend | [x] |
|
||||
| P496-8 | Platform: `soundboard.play` span metadata extend | [x] |
|
||||
| P496-9 | Platform: `soundboard.upload` span metadata extend | [x] |
|
||||
| P496-10 | Platform: `soundboard.delete` span metadata extend | [x] |
|
||||
| P496-11 | Logging: dev-log **soundboard-errors** filter tighten | [x] |
|
||||
| P496-12 | Logging: dev-log clipboard soundboard meta extend | [x] |
|
||||
| P496-13 | Agentctl: soundboard play headless re-verify | [x] |
|
||||
| P496-14 | Agentctl: soundboard upload headless re-verify | [x] |
|
||||
| P496-15 | Agentctl: combined phase496 soundboard bundle | [x] |
|
||||
| P496-16 | Smoke: soundboard-panels-guild-loading-extend | [x] |
|
||||
| P496-17 | Smoke: dev-log-soundboard-errors-tighten-extend | [x] |
|
||||
| P496-18 | Smoke: dev-log-clipboard-soundboard-meta-extend | [x] |
|
||||
| P496-19 | UI: composer soundboard hint extend | [x] |
|
||||
| P496-20 | UI: soundboard empty-state hints polish | [x] |
|
||||
| P496-21 | UI: soundboard row aria-current polish | [x] |
|
||||
| P496-22 | UI: soundboard search filter re-verify | [x] |
|
||||
| P496-23 | UI: soundboard cooldown hint re-verify | [x] |
|
||||
| P496-24 | UI: soundboard volume persist re-verify | [x] |
|
||||
| P496-25 | UI: soundboard emoji picker re-verify | [x] |
|
||||
| P496-26 | UI: composer autofocus after sound play re-verify | [x] |
|
||||
| P496-27 | Permissions: manage-soundboard toast re-verify | [x] |
|
||||
| P496-28 | Mesh: soundboard gossip roundtrip re-verify | [x] |
|
||||
| P496-29 | Docs: `SOUNDBOARD.md` refresh | [x] |
|
||||
| P496-30 | Docs: `VOICE.md` soundboard section refresh | [x] |
|
||||
| P496-31 | Docs: `AGENTCTL.md` phase 496 bundle | [x] |
|
||||
| P496-32 | Regression: screen phase 495 smokes still pass | [x] |
|
||||
| P496-33 | Regression: stage phase 494 smokes still pass | [x] |
|
||||
| P496-34 | Boot: session ready gate | [x] |
|
||||
| P496-35 | Boot: pear run gate | [x] |
|
||||
| P496-36 | Module: soundboard README accuracy | [x] |
|
||||
| P496-37 | Module: `pearcord-platform` README soundboard section | [x] |
|
||||
| P496-38 | Smoke: platform-soundboard-span-metadata-extend | [x] |
|
||||
| P496-39 | UI: soundboard picker escape focus re-verify | [x] |
|
||||
| P496-40 | UI: soundboard rate limit hint re-verify | [x] |
|
||||
| P496-41 | UI: companion soundboard defer re-verify | [x] |
|
||||
| P496-42 | UI: dev-log clipboard sound count extend | [x] |
|
||||
| P496-43 | UI: voice bar soundboard badge re-verify | [x] |
|
||||
| P496-44 | UI: soundboard audit log entries re-verify | [x] |
|
||||
| P496-45 | UI: default sound pack re-verify | [x] |
|
||||
| P496-46 | UI: soundboard upload progress re-verify | [x] |
|
||||
| P496-47 | UI: soundboard favorite pin re-verify | [x] |
|
||||
| P496-48 | UI: soundboard category tabs re-verify | [x] |
|
||||
| P496-49 | UI: soundboard P2P fanout re-verify | [x] |
|
||||
| P496-50 | Phase 497 presence depth (v0.8.460) | [x] |
|
||||
|
||||
**Next:** P496-1–P496-49.
|
||||
**Next:** ~~Phase 496~~ (complete). Split soundboard guild-loading compositor; `#composer-soundboard-hint`; playback volume slider + `localStorage`; platform `soundboard.play`/`upload`/`delete` spans; **soundboard-errors** filter; clipboard `guildSoundCount`/`soundboardVolume`; bundle `test:phase496-soundboard`. Phase 497 planned (50 items).
|
||||
|
||||
---
|
||||
|
||||
### Phase 497 — Presence depth (v0.8.460)
|
||||
|
||||
| ID | Item | Status |
|
||||
|----|------|--------|
|
||||
| P497-1 | Presence: set status roundtrip re-verify | [ ] |
|
||||
| P497-2 | Presence: custom status roundtrip re-verify | [ ] |
|
||||
| P497-3 | Presence: activity roundtrip re-verify | [ ] |
|
||||
| P497-4 | UI: `syncPresencePanelsDuringGuildLoading` wrapper extend | [ ] |
|
||||
| P497-5 | UI: status picker guild-loading guard extend | [ ] |
|
||||
| P497-6 | UI: custom status input guild-loading guard extend | [ ] |
|
||||
| P497-7 | UI: activity editor guild-loading guard extend | [ ] |
|
||||
| P497-8 | Platform: `presence.set` span metadata extend | [ ] |
|
||||
| P497-9 | Platform: `presence.custom` span metadata extend | [ ] |
|
||||
| P497-10 | Platform: `presence.activity` span metadata extend | [ ] |
|
||||
| P497-11 | Logging: dev-log **presence-errors** filter tighten | [ ] |
|
||||
| P497-12 | Logging: dev-log clipboard presence meta extend | [ ] |
|
||||
| P497-13 | Agentctl: presence status headless re-verify | [ ] |
|
||||
| P497-14 | Agentctl: custom status headless re-verify | [ ] |
|
||||
| P497-15 | Agentctl: combined phase497 presence bundle | [ ] |
|
||||
| P497-16 | Smoke: presence-panels-guild-loading-extend | [ ] |
|
||||
| P497-17 | Smoke: dev-log-presence-errors-tighten-extend | [ ] |
|
||||
| P497-18 | Smoke: dev-log-clipboard-presence-meta-extend | [ ] |
|
||||
| P497-19 | UI: composer presence hint extend | [ ] |
|
||||
| P497-20 | UI: member list presence dot polish | [ ] |
|
||||
| P497-21 | UI: voice roster presence aria-current polish | [ ] |
|
||||
| P497-22 | UI: friends list presence sort re-verify | [ ] |
|
||||
| P497-23 | UI: idle timeout hint re-verify | [ ] |
|
||||
| P497-24 | UI: dnd suppress notifications re-verify | [ ] |
|
||||
| P497-25 | UI: invisible/offline display re-verify | [ ] |
|
||||
| P497-26 | UI: composer autofocus after status save re-verify | [ ] |
|
||||
| P497-27 | Mesh: presence gossip roundtrip re-verify | [ ] |
|
||||
| P497-28 | Mesh: activity gossip roundtrip re-verify | [ ] |
|
||||
| P497-29 | Docs: `PRESENCE.md` refresh | [ ] |
|
||||
| P497-30 | Docs: `VOICE.md` presence section refresh | [ ] |
|
||||
| P497-31 | Docs: `AGENTCTL.md` phase 497 bundle | [ ] |
|
||||
| P497-32 | Regression: soundboard phase 496 smokes still pass | [ ] |
|
||||
| P497-33 | Regression: screen phase 495 smokes still pass | [ ] |
|
||||
| P497-34 | Boot: session ready gate | [ ] |
|
||||
| P497-35 | Boot: pear run gate | [ ] |
|
||||
| P497-36 | Module: `pearcord-presence` README accuracy | [ ] |
|
||||
| P497-37 | Module: `pearcord-platform` README presence section | [ ] |
|
||||
| P497-38 | Smoke: platform-presence-span-metadata-extend | [ ] |
|
||||
| P497-39 | UI: status modal escape focus re-verify | [ ] |
|
||||
| P497-40 | UI: profile popout presence badge re-verify | [ ] |
|
||||
| P497-41 | UI: companion presence defer re-verify | [ ] |
|
||||
| P497-42 | UI: dev-log clipboard peer count extend | [ ] |
|
||||
| P497-43 | UI: server rail self presence re-verify | [ ] |
|
||||
| P497-44 | UI: DM header presence re-verify | [ ] |
|
||||
| P497-45 | UI: group DM presence aggregate re-verify | [ ] |
|
||||
| P497-46 | UI: presence hub cross-link re-verify | [ ] |
|
||||
| P497-47 | UI: now-playing rich presence re-verify | [ ] |
|
||||
| P497-48 | UI: custom status emoji prefix re-verify | [ ] |
|
||||
| P497-49 | UI: presence audit log entries re-verify | [ ] |
|
||||
| P497-50 | Phase 498 inbox depth (v0.8.461) | [ ] |
|
||||
|
||||
**Next:** P497-1–P497-49.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -37,11 +37,29 @@ Discord-style **soundboard** for Pearcord voice channels: short audio clips sync
|
||||
| `play-soundboard` | UI → sidecar |
|
||||
| `soundboard-play` | sidecar → UI (PCM + play metadata) |
|
||||
|
||||
## Platform spans (v0.8.459)
|
||||
|
||||
| Span | Metadata on success |
|
||||
|------|---------------------|
|
||||
| `soundboard.upload` | `name`, `attachmentId`, `durationMs`, `soundCount`, `hadAudioBytes` |
|
||||
| `soundboard.delete` | `name`, `remainingSounds` |
|
||||
| `soundboard.play` | `soundName`, `channelId`, `durationMs`, `framesQueued`, `remote`, `listenOnly` |
|
||||
|
||||
Errors are logged as `soundboard.play error`, `soundboard.upload error`, `soundboard.delete error` for the dev-log **soundboard-errors** filter.
|
||||
|
||||
## UI (v0.8.459)
|
||||
|
||||
- `syncSoundboardPanelsDuringGuildLoading()` — picker, Sounds button, tiles, volume slider, composer hint
|
||||
- Voice bar **Sounds** picker with local playback volume (`#soundboard-volume`, `localStorage` `pearcord.soundboardVolume`)
|
||||
- `#composer-soundboard-hint` — guild loading, listen-only, empty guild sounds, picker open
|
||||
- Dev-log clipboard: `guildSoundCount`, `soundboardRecentCount`, `soundboardVolume`, `soundboardPickerOpen`
|
||||
|
||||
## Smoke
|
||||
|
||||
```bash
|
||||
cd apps/pearcord
|
||||
npm run test:soundboard
|
||||
npm run test:phase496-soundboard
|
||||
# SOUNDBOARD_SMOKE_OK
|
||||
```
|
||||
|
||||
|
||||
@@ -6,6 +6,8 @@ Pearcord voice combines **occupancy signaling** and a **P2P media plane** (v0.4.
|
||||
|
||||
**v0.8.457 (Phase 494):** Stage-specific compositor `syncStagePanelsDuringGuildLoading` (separate from voice panels); `#composer-stage-hint`; **stage-errors** dev-log filter. See [STAGE.md](./STAGE.md). Bundle: `npm run test:phase494-stage`.
|
||||
|
||||
**v0.8.459 (Phase 496):** Split soundboard guild-loading compositor: `syncSoundboardPanelsDuringGuildLoading` (`syncSoundboardPickerDuringGuildLoading`, `syncSoundboardButtonDuringGuildLoading`, `syncSoundboardVolumeDuringGuildLoading`). Platform: `soundboard.play`/`upload`/`delete` spans (`framesQueued`, `soundCount`, `remainingSounds`). UI: `#soundboard-volume` + `readSoundboardVolume`/`writeSoundboardVolume`; `setSoundboardTilesCurrent`; `#composer-soundboard-hint`; dev-log **soundboard-errors** filter; clipboard `guildSoundCount`, `soundboardRecentCount`, `soundboardVolume`. Bundle: `npm run test:phase496-soundboard`.
|
||||
|
||||
**v0.8.456 (Phase 493):** Split voice guild-loading compositor: `syncVoiceBarDuringGuildLoading`, `syncStageBarDuringGuildLoading`, `syncVoiceMembersPanelDuringGuildLoading`, `syncVoiceScreenSharePanelDuringGuildLoading`, `syncVoiceSoundboardPanelDuringGuildLoading`. Platform: `voice.join` `channelType`/`peerCount`; `voice.leave` `listenOnlyWas`; `stage.join` `isModerator`/`listenOnlyForced`; `screen.start` `listenOnly`/`wasSharing`; `screen.stop` `hadActive`. Clipboard `voiceMuted`, `voiceDeafened`, `voicePushToTalk`, `screenSharePanelOpen`, `soundboardPickerOpen`. `setVoiceRosterRowsCurrent` + `voice-roster-row`; composer hints for screen share and PTT. Bundle: `npm run test:phase493-voice`.
|
||||
|
||||
**v0.8.443 (Phase 480):** `syncVoicePanelsDuringGuildLoading` composes `syncVoiceBarsDuringGuildLoading`, `syncVoiceAuxPanelsDuringGuildLoading`, and `syncVoiceControlButtonsDuringGuildLoading`. Platform spans: `voice.join` `wasInVoice`/`switchedChannel`; `voice.leave` `hadMedia`/`leavingIsStage`; `screen.start` `hasLabel`; `screen.stop` `stopped`. Dev-log **voice-errors** filter anchored. Clipboard adds `voiceChannelId`, `voicePeerCount`, `voiceSpeakingCount`, `stageRequestPending`. UI: `ensureComposerVoiceHint`, `setVoiceRosterSelfCurrent`, voice bar activity aria-label with peer count. Bundle: `npm run test:phase480-voice`.
|
||||
|
||||
Reference in New Issue
Block a user