DR-235 phase 3. Every video renderer is native now: mpv on Linux and Windows, ExoPlayer on Android, all drawing behind the transparent webview. The HTML5 <video> path is gone, not bypassed: - Frontend: hls.js, Html5PlayerAdapter and its compatibility shim, the createAdapter factory, streamTransport, hlsRecovery, timeTracking, videoFit, the <video>/<track> markup and every element handler in VideoPlayer (3277 -> 2144 lines), the experimentalNativeVideo store and its Settings toggle, webviewVideoFallback/supportsNativeVideo, and the setHtml5VideoState PiP bridge call. NativePlayerAdapter is the one video adapter; webview audio gets its own adapter kind. - Rust: use_html5 dropped from player_seek_video, player_switch_audio_track and player_set_stream_quality with the Html5* strategies and ReloadStream responses; use_html5_element and VideoBackend dropped from PlayerStatus; player_play_item always loads the backend (set_current_item removed); Capabilities::webview removed; the WebKitGTK GStreamer/VAAPI setup (and its gst-inspect spawn) removed. - Android: the HTML5 video state in PictureInPictureManager and ScreenWakeManager, and the bridge method feeding it. - CSP: connect-src loses http:/https: and worker-src loses blob: - both existed for hls.js; with it gone they were only an exfiltration channel and a blob worker for injected script. A test now keeps them out. mpv takes over what the <video> element did (mpv_tracks, UT-275): subtitles are the WebVTT list the play request carries, queued on sub-files and selected by position in that list, starting off; audio tracks are selected by position in the file; sid/aid are reset before each load. Without this, Linux video had no subtitle selection and a direct-play audio switch failed since mpv became its renderer. Verified: Rust 948 passing, and the same 948 cross-compiled for Windows under wine against the shipped DLL (track tests included); frontend 1111 passing; aarch64 debug APK builds. Lint warnings 158 -> 146, CI ratchet tightened to match. Not yet seen on Windows hardware.
96 lines
3.9 KiB
JSON
96 lines
3.9 KiB
JSON
{
|
|
"name": "jellytau",
|
|
"version": "0.13.3",
|
|
"description": "A cross-platform Jellyfin client built with Tauri, SvelteKit and Rust.",
|
|
"author": "Duncan Tourolle <duncan@tourolle.paris>",
|
|
"license": "MIT",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "https://gitea.tourolle.paris/dtourolle/jellytau"
|
|
},
|
|
"private": true,
|
|
"type": "module",
|
|
"packageManager": "bun@1.3.5",
|
|
"scripts": {
|
|
"dev": "vite dev",
|
|
"build": "vite build",
|
|
"preview": "vite preview",
|
|
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
|
|
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest",
|
|
"test:ui": "vitest --ui",
|
|
"test:coverage": "vitest run --coverage",
|
|
"test:all": "./scripts/test-all.sh",
|
|
"test:rust": "./scripts/test-rust.sh",
|
|
"lint": "eslint .",
|
|
"lint:fix": "eslint . --fix",
|
|
"format": "prettier --write .",
|
|
"format:check": "prettier --check .",
|
|
"check:boundary": "bash scripts/check-frontend-boundary.sh",
|
|
"check:links": "bash scripts/check-doc-links.sh",
|
|
"check:tooling": "bash scripts/check-tooling.sh",
|
|
"hooks:install": "./scripts/install-hooks.sh",
|
|
"android:build": "./scripts/build-android.sh",
|
|
"android:build:release": "./scripts/build-android.sh release",
|
|
"android:build:device": "./scripts/build-android.sh --device",
|
|
"android:build:release:device": "./scripts/build-android.sh release --device",
|
|
"android:build:clean": "rm -rf node_modules/.vite dist .svelte-kit .next build target src-tauri/target && bun install && bun run build",
|
|
"android:deploy": "./scripts/deploy-android.sh",
|
|
"android:dev": "./scripts/build-and-deploy.sh",
|
|
"android:check": "./scripts/check-android.sh",
|
|
"android:logs": "./scripts/logcat.sh",
|
|
"desktop:build:linux": "./scripts/build-desktop-linux.sh",
|
|
"desktop:build:arch": "./scripts/build-arch.sh",
|
|
"desktop:build:windows": "./scripts/build-windows-cross.sh",
|
|
"docker:build:linux": "docker compose run --rm desktop-linux-build",
|
|
"docker:build:arch": "docker compose run --rm arch-build",
|
|
"docker:build:windows": "docker compose run --rm windows-cross",
|
|
"clean": "./scripts/clean.sh",
|
|
"tauri": "tauri",
|
|
"traces": "bun run scripts/extract-traces.ts",
|
|
"traces:json": "bun run scripts/extract-traces.ts --format json",
|
|
"traces:markdown": "bun run scripts/extract-traces.ts --format markdown > docs/traceability.md",
|
|
"traces:coverage": "bun run scripts/extract-traces.ts --format coverage",
|
|
"traces:validate": "bun run scripts/extract-traces.ts --format validate",
|
|
"release:notes": "bun run scripts/release-notes.ts",
|
|
"test:player": "./scripts/test-player-conformance.sh",
|
|
"test:player:android": "./scripts/test-player-conformance.sh android"
|
|
},
|
|
"dependencies": {
|
|
"@tauri-apps/api": "^2.11.1",
|
|
"@tauri-apps/plugin-log": "2.9.0",
|
|
"@tauri-apps/plugin-opener": "^2.5.4",
|
|
"@tauri-apps/plugin-os": "^2.3.2",
|
|
"@tauri-apps/plugin-process": "^2.3.1",
|
|
"@tauri-apps/plugin-updater": "2.10.1",
|
|
"svelte-dnd-action": "^0.9.69"
|
|
},
|
|
"devDependencies": {
|
|
"@eslint/js": "^10.0.1",
|
|
"@sveltejs/adapter-static": "^3.0.6",
|
|
"@sveltejs/kit": "^2.9.0",
|
|
"@sveltejs/vite-plugin-svelte": "^6.2.4",
|
|
"@tailwindcss/vite": "^4.1.18",
|
|
"@tauri-apps/cli": "^2.11.4",
|
|
"@testing-library/svelte": "^5.3.1",
|
|
"@vitest/coverage-v8": "^4.0.18",
|
|
"@vitest/ui": "^4.0.16",
|
|
"eslint": "^10.8.1",
|
|
"eslint-config-prettier": "^10.1.8",
|
|
"eslint-plugin-svelte": "^3.23.0",
|
|
"globals": "^17.11.0",
|
|
"happy-dom": "^20.0.11",
|
|
"jsdom": "^27.4.0",
|
|
"prettier": "^3.9.6",
|
|
"prettier-plugin-svelte": "^4.1.1",
|
|
"svelte": "^5.47.1",
|
|
"svelte-check": "^4.0.0",
|
|
"tailwindcss": "^4.1.18",
|
|
"typescript": "~5.6.2",
|
|
"typescript-eslint": "^8.67.0",
|
|
"vite": "^6.0.3",
|
|
"vitest": "^4.1.10"
|
|
}
|
|
}
|