* 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>
89 lines
2.6 KiB
JSON
89 lines
2.6 KiB
JSON
{
|
|
"name": "silo-web",
|
|
"private": true,
|
|
"version": "0.0.1",
|
|
"license": "AGPL-3.0-or-later",
|
|
"packageManager": "pnpm@10.32.1",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"test": "vitest run",
|
|
"build": "tsc -b && vite build",
|
|
"preview": "vite preview",
|
|
"lint": "eslint .",
|
|
"lint:fix": "eslint . --fix",
|
|
"format": "prettier --write \"src/**/*.{ts,tsx,css}\"",
|
|
"format:check": "prettier --check \"src/**/*.{ts,tsx,css}\""
|
|
},
|
|
"dependencies": {
|
|
"@dnd-kit/core": "^6.3.1",
|
|
"@dnd-kit/sortable": "^10.0.0",
|
|
"@dnd-kit/utilities": "^3.2.2",
|
|
"@fontsource/noto-sans-arabic": "^5.2.10",
|
|
"@fontsource/noto-sans-thai": "^5.2.8",
|
|
"@tanstack/react-query": "^5.90.21",
|
|
"@tanstack/react-virtual": "^3.13.19",
|
|
"@zip.js/zip.js": "^2.8.26",
|
|
"class-variance-authority": "^0.7.1",
|
|
"clsx": "^2.1.1",
|
|
"embla-carousel": "^8.6.0",
|
|
"embla-carousel-react": "^8.6.0",
|
|
"embla-carousel-wheel-gestures": "^8.1.0",
|
|
"foliate-js": "file:vendor/foliate-js",
|
|
"framer-motion": "^12.38.0",
|
|
"hls.js": "^1.6.15",
|
|
"jassub": "^2.5.6",
|
|
"libpgs": "^0.8.1",
|
|
"lucide-react": "^0.576.0",
|
|
"node-unrar-js": "^2.0.2",
|
|
"pdfjs-dist": "^5.7.284",
|
|
"radix-ui": "^1.4.3",
|
|
"react": "^19.0.0",
|
|
"react-dom": "^19.0.0",
|
|
"react-qr-code": "^2.0.18",
|
|
"react-router": "^7.15.1",
|
|
"sonner": "^2.0.7",
|
|
"tailwind-merge": "^3.5.0",
|
|
"thumbhash": "^0.1.1"
|
|
},
|
|
"devDependencies": {
|
|
"@eslint/js": "^9.39.4",
|
|
"@tailwindcss/vite": "^4.0.0",
|
|
"@testing-library/jest-dom": "^6.9.1",
|
|
"@testing-library/react": "^16.3.2",
|
|
"@testing-library/user-event": "^14.6.1",
|
|
"@types/node": "^25.3.3",
|
|
"@types/react": "^19.0.0",
|
|
"@types/react-dom": "^19.0.0",
|
|
"@vitejs/plugin-react": "^4.4.0",
|
|
"eslint": "^9.39.4",
|
|
"eslint-config-prettier": "^10.1.8",
|
|
"eslint-plugin-react-hooks": "^7.0.1",
|
|
"eslint-plugin-react-refresh": "^0.5.2",
|
|
"jsdom": "^29.0.1",
|
|
"prettier": "^3.8.1",
|
|
"prettier-plugin-tailwindcss": "^0.6.14",
|
|
"tailwindcss": "^4.0.0",
|
|
"typescript": "^5.7.0",
|
|
"typescript-eslint": "^8.57.0",
|
|
"vite": "^6.4.3",
|
|
"vitest": "^4.1.0"
|
|
},
|
|
"pnpm": {
|
|
"onlyBuiltDependencies": [
|
|
"esbuild"
|
|
],
|
|
"overrides": {
|
|
"@babel/core@<7.29.6": "7.29.6",
|
|
"brace-expansion@<1.1.13": "1.1.13",
|
|
"brace-expansion@>=4.0.0 <5.0.6": "5.0.6",
|
|
"flatted@<=3.4.1": "3.4.2",
|
|
"js-yaml@<4.2.0": "4.2.0",
|
|
"picomatch@>=4.0.0 <4.0.4": "4.0.4",
|
|
"postcss@<8.5.10": "8.5.10",
|
|
"undici@<7.28.0": "7.28.0",
|
|
"vite@>=6.0.0 <6.4.2": "6.4.2"
|
|
}
|
|
}
|
|
}
|