* fix(player): update jassub so ASS subtitles stop rendering corrupted at original resolution
At original resolution the web player renders ASS subtitles client-side via
JASSUB (lower resolutions transcode with server-side burn-in, which is why
dropping the quality worked around the bug). jassub 2.4.2's WebGL2 shaders
declare mediump precision, so on GPUs where mediump is fp16 the fragment
shader's texel coordinates quantize on large canvases and glyphs come out
sheared/banded (issue #209). Upstream fixed this in 2.5.5 ("always use highp
on webgl2"); 2.4.3–2.5.6 also fix wasm loading on current WebKit/Chromium,
subs not clearing between repaints, and zero-size resize handling.
The bump needs two companions:
- jassub >= 2.5.4 no longer ships its built-in default font file but still
points at it, which would silently blank every track that relies on the
default (we disable queryFonts). Vendor Liberation Sans (SIL OFL 1.1, the
same file 2.4.2 shipped) and pass it via availableFonts so the missing
asset is never referenced.
- Exclude jassub from Vite's dep optimizer (its module worker otherwise 404s
in dev) and prebundle its two CJS deps for ESM interop.
Verified with a standalone harness (Playwright Chromium + WebKit 26.5):
2.4.2 fails to even instantiate its wasm on those engines, while 2.5.6
initializes and renders correctly with the vendored default font.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* chore(player): colocate SIL OFL license with vendored Liberation Sans
Adversarial review flagged the redistributed font binary shipping without
its license text; copy the repo's existing Liberation license (same one
used for the pdfjs standard fonts) next to the asset and record provenance
in the import comment.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>