Share browser playback across tabs and fix standard EPUB declarations #2
Loading…
Reference in a new issue
No description provided.
Delete branch "codex/shared-browser-state"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Opening a second Media tab currently blocks the app, and returning to the library stops playback. Tabs now share the persistent local library and one player through a SharedWorker message router. Web Locks guard ownership and detect closed/crashed tabs; observers control the existing player, and a surviving tab can resume at the retained position when the owner closes. Existing OPFS data and pending changes are preserved.
The service-worker media gateway keeps active streams when another tab connects. Resetting local state fences stale requests, wipes through the current host, then reloads peers. Video frames remain in the owning tab. The VFS remains sahpool; docs/browser-tabs.md records the separate opfs-wl binding/data migration target and upgrade behavior.
Also accepts standard XHTML 1.0/1.1 declarations in EPUB files such as Candide, without loading DTDs or expanding custom entities.
Validation: TypeScript and production web build; 513 web tests; 17 reader Rust tests; actual Candide EPUB decoded natively and in browser WASM. Isolated Chrome tests cover two persistent tabs, one audio output, remote controls, owner close and renderer crash, retained position/settings, resets from host and observer, and the actual production bundle booting in two tabs. No server schema change.