docs(01-01): amend Phase 1 description + Success Criterion #2 per D-A5
Rewrite the Phase 1 one-liner in the Phases list to call out the chrome.tabCapture -> getDisplayMedia swap, and rewrite Success Criterion #2 to describe the new operator-selected screen/window capture and the absence of tab-reattach logic. Phases 2-5 sections are untouched. The verbatim phrase 'no tab re-attach logic' is preserved as written in the plan to document the amendment in-place; the original 'recorder re-attaches to the new active tab' wording is gone.
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user