* docs: design Linux frame-copy packaging * docs: plan Linux frame-copy packaging * feat(packaging): define Linux frame-copy profiles * fix(packaging): reject inherited profile names * feat(embedded-mpv): validate staged Linux runtime * fix(embedded-mpv): require Linux source packages * fix(embedded-mpv): harden Linux runtime staging * feat(embedded-mpv): build LGPL Linux runtime * fix(embedded-mpv): pin Linux runtime inputs * feat(embedded-mpv): build relocatable Linux helper * fix(embedded-mpv): require bundled Linux runtime * fix(embedded-mpv): make Linux runtime portable * feat(packaging): ship Linux frame-copy artifacts * fix(embedded-mpv): verify Linux helper linkage * fix(packaging): enforce Linux frame-copy isolation * fix(embedded-mpv): pin Linux display data * docs(embedded-mpv): document Linux frame-copy packaging * feat(embedded-mpv): probe Linux frame-copy runtime * test(embedded-mpv): smoke packaged Linux frame-copy * docs(embedded-mpv): clarify Linux system runtime baseline * fix(embedded-mpv): harden Linux runtime capability gate * ci: verify Linux frame-copy packages * test(embedded-mpv): harden packaged Linux smoke * test(embedded-mpv): preserve packaged GL mode * test(packaging): harden Linux package probes * fix(embedded-mpv): enable private Snap shared memory * fix(embedded-mpv): sanitize Linux helper environment * fix(packaging): enforce private Snap memory semantics * fix(packaging): reject ambiguous Snap memory metadata * fix(embedded-mpv): prioritize trusted Snap GL * fix(packaging): reject advanced Snap YAML semantics * fix(packaging): reject arbitrary Snap YAML aliases * feat(packaging): ship Linux runtime license notices * docs(embedded-mpv): document Linux runtime distribution * fix(packaging): parse Snap trailing comments safely * fix(release): gate Snap publish on public source release * fix(packaging): strip VCS metadata from source bundle * docs(packaging): clarify Linux source release gate * test(embedded-mpv): smoke missing bundled libmpv * style(embedded-mpv): format final validation inputs * fix(e2e): satisfy fixture index signature typing * fix(ci): declare fontconfig gperf generator * fix(embedded-mpv): hash runtime cache identities * fix(packaging): harden Linux frame-copy delivery * fix(packaging): tighten runtime delivery gates * fix(ci): decouple Linux runtime matrix * fix(packaging): harden Linux frame-copy delivery * fix(packaging): validate Linux frame-copy runtimes * fix(packaging): scope Snap Electron library checks * feat(packaging): ship Linux frame-copy runtimes * fix(packaging): improve Linux runtime smoke diagnostics * fix(packaging): expose bounded helper probe details * test(packaging): trace Snap EGL probe failures * fix(packaging): prefer core22 ABI in Snap helper * fix(packaging): bound helper probe capture * fix(packaging): harden Linux frame-copy releases * fix(packaging): canonicalize libplacebo submodule identity * fix(packaging): make source archive inspection portable * fix(packaging): harden Snap release verification
Embedded MPV Runtime Artifacts
This directory is the staging location for generated embedded MPV runtime/build artifacts.
Generated architecture folders are expected at:
vendor/embedded-mpv/darwin-arm64/vendor/embedded-mpv/darwin-x64/vendor/embedded-mpv/win32-x64/vendor/embedded-mpv/linux-x64/
Each generated folder must contain include/mpv/client.h and
runtime-manifest.json. Platform runtime/build inputs live under lib/ or
bin/. In particular, linux-x64/lib/ contains the pinned, dynamically linked
LGPL-compatible libmpv closure used to link the out-of-process frame-copy
helper. linux-x64/notices/ contains the generated
embedded-mpv-notices.json, THIRD_PARTY_NOTICES.txt, and exact
licenses/<package>/** tree. The generated runtime directories are ignored by
git; generate, stage, or restore them before building the Electron backend.
Linux package profiles consume that one staged x64 source runtime differently:
- DEB/RPM/Pacman remove the private closure and declare the system libmpv dependency.
- AppImage/Snap/Flatpak retain the manifest-declared closure under
app.asar.unpacked/electron-backend/native/lib/and flatten the validated notice manifest, aggregate notice, andlicenses/**tree beside it. - The strict Snap resolves the helper's remaining graphics interfaces through
the external
mesa-core22content provider at$SNAP/graphics; that shared provider is not staged belowvendor/embedded-mpv/, bundled into IPTVnator, or included in IPTVnator's source/notices archive. - DEB/RPM/Pacman and marker-only packages do not retain bundled-runtime notices or license files.
- Non-x64 Linux packages retain no native artifacts and ship only the unavailable marker.
- Electron Builder excludes the staged native tree from
app.asar; onlyafterPackwrites the profile-specific unpacked payload, and package verification rejects archived native entries.
The DEB dependency is specifically libmpv2 (verified on Ubuntu 24.04+).
Ubuntu 22.04 provides libmpv1; use the x64 AppImage there.
Only iptvnator_mpv_helper may link libmpv. Electron,
embedded_mpv.node, and embedded_mpv_frame_reader.node must remain free of
direct libmpv dependencies. See tools/embedded-mpv/README.md and
docs/architecture/embedded-mpv-native.md.