docs(01-01): amend decisions.md DEC-003/DEC-010 per D-A1
Append Amendment blocks to DEC-003 (getDisplayMedia replaces tabCapture) and DEC-010 (long-lived port replaces alarms keepalive) so downstream phases see the new API contract. Original text intact; amendments are appended, not replacements. Maintains intel/* provenance for the Phase 01 doc cascade.
This commit is contained in:
@@ -58,6 +58,16 @@ Status legend (synthesized, since SPEC has no formal ADR status field):
|
||||
user gesture on first invocation; on tab switch the capture re-attaches.
|
||||
- Confirming source: `README.md` §"Технический стек".
|
||||
|
||||
## Amendment (Phase 01-stabilize-video-pipeline, 2026-05-15)
|
||||
|
||||
- AMENDED-BY: Phase 01 CONTEXT.md D-01..D-05
|
||||
- Replace `chrome.tabCapture.capture()` with `navigator.mediaDevices.getDisplayMedia()` called from the offscreen document.
|
||||
- Offscreen document is created with `chrome.offscreen.Reason.DISPLAY_MEDIA` (replaces `USER_MEDIA`).
|
||||
- Codec/bitrate/timeslice binding unchanged: `video/webm; codecs=vp9` @ 400 000 bps, MediaRecorder timeslice 2000 ms.
|
||||
- Trade-off accepted: SPEC §1 "silent operation" is given up — Chrome's permanent "Sharing your screen" indicator is shown while recording. Phase 1 accepts this in exchange for broader capture coverage and elimination of `tabCapture` user-gesture juggling.
|
||||
- Tab-switch re-attachment clause is REMOVED — `getDisplayMedia` captures a screen/window, not a tab. There is nothing to re-attach.
|
||||
- Manifest permission `tabCapture` is REPLACED with `desktopCapture` (the latter is harmless: `getDisplayMedia` is a web standard API and does NOT actually require `desktopCapture`, but we declare it for clarity per CONTEXT.md D-05).
|
||||
|
||||
---
|
||||
|
||||
## DEC-004: DOM Capture via rrweb
|
||||
@@ -151,6 +161,14 @@ Status legend (synthesized, since SPEC has no formal ADR status field):
|
||||
- Decision: To prevent the 30 s idle unload of MV3 Service Workers, a
|
||||
`chrome.alarms` alarm fires every 20 seconds to keep the worker alive.
|
||||
|
||||
## Amendment (Phase 01-stabilize-video-pipeline, 2026-05-15)
|
||||
|
||||
- AMENDED-BY: Phase 01 CONTEXT.md D-17..D-18
|
||||
- Replace `chrome.alarms`-driven 20 s keepalive with a long-lived `chrome.runtime.connect` port opened from the offscreen document to the Service Worker. The port emits a `PING` message every 25 s; both directions of traffic reset the SW's 30 s idle timer per Chrome 110+ semantics (developer.chrome.com/blog/longer-esw-lifetimes).
|
||||
- The `alarms` permission is removed from `manifest.json` (it is no longer used by Phase 1; Phase 2 / 3 may re-add if needed).
|
||||
- Port lifetime cap (~5 minutes per Chromium-extensions community gist sunnyguan/f94058f66fab89e59e75b1ac1bf1a06e) is mitigated by reconnecting on `onDisconnect` and pre-emptively at ~290 s.
|
||||
- See `.planning/phases/01-stabilize-video-pipeline/01-RESEARCH.md` Pattern 5 for the canonical implementation.
|
||||
|
||||
---
|
||||
|
||||
## DEC-011: Manifest Permissions Set
|
||||
|
||||
Reference in New Issue
Block a user