Build & Release / Create Release (push) Blocked by required conditions
🏗️ Build and Test JellyTau / Run Tests (push) Skipped
🏗️ Build and Test JellyTau / Android Compile Check (push) Skipped
🏗️ Build and Test JellyTau / Supply Chain (push) Successful in 3m41s
Publish Documentation / Build & publish docs to gitea-pages (push) Successful in 5m20s
Traceability Validation / Check Requirement Traces (push) Successful in 11s
Build & Release / Run Tests (push) Successful in 14m44s
Build & Release / Build Windows (push) Waiting to run
Build & Release / Build Android (push) Waiting to run
Build & Release / Build Linux (push) In progress
One fix since v0.11.4: a video in a picture-in-picture window no longer drops to audio-only partway through, replaying from wherever the picture had been when the window opened. Two independent faults had to line up for it. The player's position variable is written only by a requestAnimationFrame loop while playing, and RAF stops for a document that is not being rendered -- which an Android activity behind a PiP window is not; the `timeupdate` handler that would have covered the gap had gated itself on `!isPlaying` since the first commit. And PiP and the background-audio handoff, nominally alternatives, could both be armed at once, with a single `isInPictureInPictureMode` sample taken inside onStop() standing between them. The frozen position was not confined to the handoff: the seek bar, resume points and the progress reported to Jellyfin all read the same variable, so all three stood still for as long as a PiP window was open. Version stamped with scripts/set-version.sh. defect-windows.md records DR-265 under the present-since/reachable-since gap: defective since v0.0.1, but only hittable once PiP started working on the HTML5 path in v0.5.3.
97 lines
3.9 KiB
JSON
97 lines
3.9 KiB
JSON
{
|
|
"name": "jellytau",
|
|
"version": "0.11.5",
|
|
"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",
|
|
"hls.js": "^1.6.15",
|
|
"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"
|
|
}
|
|
}
|