| Operation and source | Target/credentials | Timeout and retry | Outcome/log/test |
|---|---|---|---|
loadWatchPage, src/background/service-worker.js:94 |
Canonical HTTPS YouTube watch page; cookies omitted | 15 seconds through body consumption; no retry | Stable operation logs; HTTP/network/timeout errors; worker and parser tests |
loadTrackDirectly, src/background/service-worker.js:121 |
Page-supplied caption URL validated as HTTPS www.youtube.com or m.youtube.com, without credentials/port; redirects rejected |
15 seconds per body; JSON3 and original-format attempts | HTTP, empty and exception outcomes; sanitized codes; worker/parser tests |
readFromTranscriptPanel, src/background/service-worker.js:200 |
Native tab query/create/get/remove and script injection; normal tab session | 20-second load wait; bounded content polling; no automatic network retry | Operation outcome and cleanup warning; worker/content tests and disposable native Chrome fixture |
An unreadable anonymous page can still use a panel tab. Missing or incomplete caption metadata also tries the panel before reporting
that no captions were exposed. Auto panel output has unknown language/generation
metadata. An explicit language must succeed through the direct track or return
language-unavailable; the worker never labels an unverified panel with a chosen track.
Temporary tabs carry a fragment marker and are excluded from concurrent tab reuse. Each request closes only the tab it created. User-owned tabs remain open. Video identity is checked before and after extraction; a navigation mismatch discards the cues. The marker is a fragment and is not sent in the HTTP request. Direct extension fetches omit cookies; the YouTube page itself can use the browser’s ordinary session and make YouTube’s own requests.
| Context | Calls | Persistence/recovery |
|---|---|---|
| Popup | runtime.sendMessage, tabs.query, downloads.download/search/onChanged, clipboard write |
Stale replies ignored; primary I/O failures log safe operation/code fields; download completion/interruption drives status and URL cleanup; failures shown locally |
| Popup | storage.local.get/set |
Two formatting booleans; write errors shown to the user |
| Popup/viewer | storage.session.set/get/remove, tabs.create |
Unique per-Print key; viewer renders then deletes its own payload; failed handoff creation cleans up; failures surfaced |
| Viewer | window.print |
User controls Chrome’s print dialog and destination; no remote request |
No browser call retries authentication, escalates permissions or sends diagnostics to a server. Storage is local/session, never sync. A failed cleanup can retain a handoff until browser shutdown; close the browser to clear it.
package-extension.mjs validates required inputs, invokes the manifest validator
through Node, then invokes zip with explicit arguments into a unique temporary
archive. Only successful output replaces the previous archive; failures clean up
the temporary directory and preserve the previous artifact. check-syntax.mjs invokes
node --check per maintained JS file. Other scripts use local filesystem I/O;
Python artwork scripts read local captures and write images. Tests use disposable
files. None of these commands contacts a live application or datastore.
The prior bootstrap audit deliberately excludes a server operations registry, CLI/MCP trigger for browser actions, central JSONL sink, operator dashboard and datastore-landed checks. This browser extension has no such service or datastore. Applicable controls are bounded calls, safe local diagnostics, failure feedback, read-after-write checks in tests/browser fixtures and a complete inventory above. These adaptations do not claim compliance with the unadapted five-standard service contract.
Developer-tool filesystem operations are synchronous and local. The validation, syntax, index and generation CLIs report failures through nonzero exit and stderr; they do not retry. Screenshot and icon scripts read local captures/fonts and write owned image outputs. Font fallback emits a RuntimeWarning and preserves size. The complete tool/test inventory is in the file index and coverage ledger.