3.6 KiB
3.6 KiB
Tasks — enterprise-react-audio-stream-transport-share (chunk D, final)
0. Pre-flight (non-negotiable)
- 0.1 Confirm clean working tree (
git statusreports nothing) and no in-flight worktrees with uncommitted work (git worktree listthengit statusin each) - 0.2 Account for every
.claude/worktrees/*entry; prune stale ones viabun scripts/worktree-prune.ts --remove. - 0.3 Confirm
MANIFEST.mdmatchesfind packages -maxdepth 3 -name package.json | wc -l.
1. Transport-share control channel
- 1.1
src/transport-share/control-channel.ts— wire protocol envelopes (play/pause/seek/setTempo), per-session coordinator - 1.2
.types.ts,.test.ts,.md,index.ts
2. Share state machine
- 2.1
src/transport-share/share-state.ts—local | driving | receivingtransitions - 2.2
.types.ts,.test.ts,.md,index.ts
3. useTransportShare hook
- 3.1
src/hooks/use-transport-share/use-transport-share.ts - 3.2
.types.ts,.test.tsx,.md,index.ts - 3.3 Tests cover: play-on-driver-advances-receivers, driver-disconnect-returns-share-to-local, receiver-controls-no-op
4. SharedTransportIndicator component
- 4.1
src/components/shared-transport-indicator/shared-transport-indicator.tsx - 4.2
.types.ts,.test.tsx,.stories.tsx,.md,index.ts
5. Auto-reconnect
- 5.1
src/session/reconnect.ts—@suaveplan/retryintegration, only onnetwork/signallingclasses - 5.2
.test.ts,.md - 5.3 Wire
'reconnect-attempt'and'reconnect-failed'events intoStreamSession - 5.4 Increment counters registered in chunk A
6. Subpath exports
- 6.1 Add
./transport-share,./hooks/use-transport-share,./components/shared-transport-indicatortopackage.jsonexports
7. Playwright E2E
- 7.1
tests/e2e/transport-share.spec.ts— two browsers, local signalling fixture - 7.2 Marked
.spec.ts(Playwright); runs under e2e turbo pipeline only
8. Full-package gate
- 8.1
bunx turbo lint typecheck test --filter=@suaveplan/react-audio-stream— green across ALL chunks (A+B+C+D merged) - 8.2
bunx turbo test:coverage --filter=@suaveplan/react-audio-stream— 100/100/100/100 on every file - 8.3
bunx turbo build --filter=@suaveplan/react-audio-stream— green; purity test asserts no audio-context references indist/ - 8.4
docs:check— every implementation.ts/.tsxhas a sibling.mdwith the 6 sections
9. Spec fold + archive
- 9.1 Fold the canonical spec into
openspec/specs/react-audio-stream/spec.md(single document with all 9 Requirements from the original) - 9.2 Move
openspec/changes/enterprise-react-audio-stream/→openspec/archive/2026-05-23-enterprise-react-audio-stream/ - 9.3 Move
openspec/changes/enterprise-react-audio-stream-session-core/→openspec/archive/2026-05-23-enterprise-react-audio-stream-session-core/ - 9.4 Move
openspec/changes/enterprise-react-audio-stream-transports/→openspec/archive/2026-05-23-enterprise-react-audio-stream-transports/ - 9.5 Move
openspec/changes/enterprise-react-audio-stream-hooks-components/→openspec/archive/2026-05-23-enterprise-react-audio-stream-hooks-components/ - 9.6 Move
openspec/changes/enterprise-react-audio-stream-transport-share/→openspec/archive/2026-05-23-enterprise-react-audio-stream-transport-share/ - 9.7
bun scripts/folder-reorg/generate-manifest.tsto refreshMANIFEST.md - 9.8 Prune the worktree (
bun scripts/worktree-prune.ts --remove)
10. Hand-off
- 10.1 Commit on
feat/react-audio-stream-transport-share. No push.