diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index 1bdd7e0..ae2470c 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -22,7 +22,7 @@ working export → green §10 smoke → harden + clean up**. Decimal phases appear between their surrounding integers in numeric order. -- [ ] **Phase 1: Stabilize video pipeline** — Collapse offscreen duality, fix MediaRecorder shadow, fix WebM ring buffer playability, make capture always-on with tab re-attach +- [ ] **Phase 1: Stabilize video pipeline** — Collapse offscreen duality, fix MediaRecorder shadow, fix WebM ring buffer playability, replace `chrome.tabCapture` with offscreen `getDisplayMedia` (AMENDED from original DEC-003) - [ ] **Phase 2: Stabilize DOM + event capture privacy** — Migrate rrweb to v2 `maskInputFn`, plug `content/index.ts setupInputLogging` password leak - [ ] **Phase 3: Stabilize export pipeline** — Restore user-activation gesture in popup, delete dead `permissions.request`, replace base64 `data:` URL with Blob URL minted in offscreen - [ ] **Phase 4: SPEC §10 smoke verification** — End-to-end install-and-record-and-export pass against all 9 acceptance criteria @@ -55,10 +55,12 @@ directory + `vite.config.ts` inline string + `src/background/`. 1. There is exactly one source of truth for the offscreen document; rebuilding `vite.config.ts` does not regenerate a divergent inline duplicate, and `stopRecording` runs without `mediaRecorder is undefined` shadow errors. - 2. With the extension loaded and a tab open, a single continuous - `MediaRecorder` is running on the active tab with timeslice 2000 ms; on - tab switch the recorder re-attaches to the new active tab without losing - the WebM container header. + 2. With the extension loaded and an operator session active, a single + continuous `MediaRecorder` is running on the operator-selected + screen/window source with timeslice 2000 ms; the recorder continues + unchanged across tab switches (no tab re-attach logic; AMENDED from the + original wording). The WebM container header is retained in the ring + buffer indefinitely. 3. The in-memory video ring buffer at any instant contains the WebM header chunk plus the most recent 30 s of subsequent chunks (no more, no less); concatenating header + buffered chunks yields a byte sequence a browser