480 Commits

Author SHA1 Message Date
mani
6b1e61f50c Update jellyfin-server and jellyfin-web to v10.11.6
Some checks failed
Unstable Build / Debian (amd64, bookworm) (push) Has been cancelled
Unstable Build / Debian (amd64, bullseye) (push) Has been cancelled
Unstable Build / Debian (amd64, trixie) (push) Has been cancelled
Unstable Build / Debian (arm64, bookworm) (push) Has been cancelled
Unstable Build / Debian (arm64, bullseye) (push) Has been cancelled
Unstable Build / Debian (arm64, trixie) (push) Has been cancelled
Unstable Build / Ubuntu (amd64, focal) (push) Has been cancelled
Unstable Build / Ubuntu (amd64, jammy) (push) Has been cancelled
Unstable Build / Ubuntu (amd64, noble) (push) Has been cancelled
Unstable Build / Ubuntu (arm64, focal) (push) Has been cancelled
Unstable Build / Ubuntu (arm64, jammy) (push) Has been cancelled
Unstable Build / Ubuntu (arm64, noble) (push) Has been cancelled
Unstable Build / Linux (amd64) (push) Has been cancelled
Unstable Build / Docker (push) Has been cancelled
Unstable Build / Linux (amd64-musl) (push) Has been cancelled
Unstable Build / Linux (arm64) (push) Has been cancelled
Unstable Build / Linux (arm64-musl) (push) Has been cancelled
Unstable Build / Windows (amd64) (push) Has been cancelled
Unstable Build / Windows (arm64) (push) Has been cancelled
Unstable Build / MacOS (amd64) (push) Has been cancelled
Unstable Build / MacOS (arm64) (push) Has been cancelled
Unstable Build / Portable (push) Has been cancelled
Unstable Build / Nuget (push) Has been cancelled
Unstable Build / WindowsInstaller (amd64) (push) Has been cancelled
Unstable Build / WindowsInstallerUpload (amd64) (push) Has been cancelled
2026-01-20 14:20:40 +01:00
mani
7fa3cf423a Update jellyfin-web: fix Xbox UWP codec detection
Some checks failed
Unstable Build / Docker (push) Has been cancelled
Unstable Build / Debian (amd64, bookworm) (push) Has been cancelled
Unstable Build / Debian (amd64, bullseye) (push) Has been cancelled
Unstable Build / Debian (amd64, trixie) (push) Has been cancelled
Unstable Build / Debian (arm64, bookworm) (push) Has been cancelled
Unstable Build / Debian (arm64, bullseye) (push) Has been cancelled
Unstable Build / Debian (arm64, trixie) (push) Has been cancelled
Unstable Build / Ubuntu (amd64, focal) (push) Has been cancelled
Unstable Build / Ubuntu (amd64, jammy) (push) Has been cancelled
Unstable Build / Ubuntu (amd64, noble) (push) Has been cancelled
Unstable Build / Ubuntu (arm64, focal) (push) Has been cancelled
Unstable Build / Ubuntu (arm64, jammy) (push) Has been cancelled
Unstable Build / Ubuntu (arm64, noble) (push) Has been cancelled
Unstable Build / Linux (amd64) (push) Has been cancelled
Unstable Build / Linux (amd64-musl) (push) Has been cancelled
Unstable Build / Linux (arm64) (push) Has been cancelled
Unstable Build / Linux (arm64-musl) (push) Has been cancelled
Unstable Build / Windows (amd64) (push) Has been cancelled
Unstable Build / Windows (arm64) (push) Has been cancelled
Unstable Build / Nuget (push) Has been cancelled
Unstable Build / MacOS (amd64) (push) Has been cancelled
Unstable Build / MacOS (arm64) (push) Has been cancelled
Unstable Build / Portable (push) Has been cancelled
Unstable Build / WindowsInstaller (amd64) (push) Has been cancelled
Unstable Build / WindowsInstallerUpload (amd64) (push) Has been cancelled
2026-01-09 00:50:19 +01:00
mani
7ec56cbcaa Revert jellyfin-server: remove server-side Xbox filter 2026-01-09 00:44:15 +01:00
mani
1774339f88 Update jellyfin-server: fix Xbox playback on GET endpoint 2026-01-09 00:38:46 +01:00
mani
f0ae5ced4f Update jellyfin-server: Add logging to both PlaybackInfo endpoints 2026-01-09 00:36:17 +01:00
mani
413579151a Update jellyfin-server: Add Xbox filter debug logging 2026-01-09 00:28:06 +01:00
mani
ad655ae4c4 Debug: Add test response for PlaybackInfo matching
Testing if path_regexp works by returning debug response
instead of proxying. This will show:
1. If the path is matched correctly
2. What User-Agent header is received

Once confirmed working, uncomment reverse_proxy lines.
2026-01-09 00:24:51 +01:00
mani
63f6738e11 Major fix: Caddy-based intelligent routing for Xbox filter
Complete architecture overhaul:
- Caddy is now the main proxy (port 8096)
- Only Xbox PlaybackInfo requests go to Python filter
- Everything else (WebSocket, streaming, API) goes directly to Jellyfin

Changes:
- Add Caddy service to docker-compose
- Use path_regexp for proper PlaybackInfo matching
- Remove method POST constraint (handled by path)
- Direct routing for non-Xbox requests
- WebSocket support for /socket endpoint

This fixes:
- 503 errors on normal requests
- 400 errors on WebSocket connections
- Performance issues from proxying everything

Architecture:
Client → Caddy → Check (path + User-Agent)
              ↓ Xbox PlaybackInfo → Python Filter → Jellyfin
              ↓ Everything else → Jellyfin
2026-01-09 00:21:57 +01:00
mani
0eaee053f5 Fix Caddyfile: Proper reverse proxy to Python filter
Caddyfile now:
- Runs on port 8097 (external)
- Proxies to xbox-filter:8096 (Python filter)
- Python filter handles all Xbox detection and codec filtering
- Python filter then proxies to jellyfin:8096 (internal)

Architecture:
Client :8097 → Caddy → :8096 Python Filter → :8096 Jellyfin

Use Caddy if you need additional features like:
- SSL/TLS termination
- Rate limiting
- Access control
- Advanced routing

Or use Python filter directly on port 8096 for simpler setup.
2026-01-09 00:19:14 +01:00
mani
a0097cae2d Revert "Clean up Xbox proxy: Remove obsolete Caddyfile and improve docs"
This reverts commit 9e6b9fc1db.
2026-01-09 00:18:43 +01:00
mani
9e6b9fc1db Clean up Xbox proxy: Remove obsolete Caddyfile and improve docs
- Remove Caddyfile (Python proxy handles everything)
- Clarify that REQUEST body is filtered, not response
- Add better log examples showing actual output
- Add docker-compose comments about port exposure
- Explain filtering flow: User-Agent detection → JSON parsing → Codec filtering
2026-01-09 00:17:47 +01:00
mani
c9ffefed70 Fix Xbox proxy: Filter REQUEST body instead of response
BREAKING FIX: DeviceProfile is sent FROM client TO server in request body,
not returned in response. This was the bug preventing the filter from working.

Changes:
- Filter DeviceProfile in POST request body before sending to Jellyfin
- Add extensive debug logging to track filtering process
- Remove unnecessary response filtering (DeviceProfile not in response)
- Simplify response handling (always stream)

Now logs:
- 'Xbox PlaybackInfo request detected' when Xbox client detected
- 'Filtering Xbox DeviceProfile in REQUEST' when filtering
- 'No DeviceProfile found' if profile missing (debug info)
2026-01-09 00:15:08 +01:00
mani
485b809a63 Fix Xbox proxy: Add proper header forwarding and streaming support
- Add query parameter forwarding (?api_key=... etc.)
- Add X-Forwarded-* headers for client IP tracking
- Exclude problematic headers (content-length, transfer-encoding, etc.)
- Add streaming support for large files (8KB chunks)
- Add root route handler
- Properly forward all HTTP methods
2026-01-09 00:12:50 +01:00
mani
6efda6b0bd Update jellyfin-server: User-Agent based Xbox codec detection
- Changed from DeviceId to User-Agent for Xbox detection
- Xbox UWP app sends 'WebView2 Xbox' in User-Agent
- Fixes issue where DeviceId contains random GUID instead of 'xbox'
- Keeps FFmpeg log level, remote source transcoding, and other fixes
2026-01-09 00:03:45 +01:00
mani
1cedac1aa9 Add Xbox codec filter proxy as alternative to code patches
- Transparent reverse proxy that filters AV1/Opus for Xbox clients
- Detects Xbox via User-Agent header
- Docker-based solution, no Jellyfin code modifications needed
- Can be easily enabled/disabled without affecting Jellyfin updates
2026-01-09 00:03:04 +01:00
mani
f517a97ca0 Remove download/transcoding features to patches - keep core fixes
Moved to patches/:
- jellyfin-progressive-download-improvements-v10.11.5.patch (server)
- jellyfin-web-download-dialog-v10.11.5.patch (web UI)

Kept in code:
- Xbox UWP codec detection (AV1/Opus fix)
- FFmpeg log level configuration
- Remote source forced transcoding
- Quality text UI fix (web)

Both jellyfin-server and jellyfin-web reset to v10.11.5 base
2026-01-08 23:37:37 +01:00
mani
0bd96b4a89 Update jellyfin-server: fix Xbox playback 2026-01-08 17:13:39 +01:00
mani
ceda15a9f4 Update jellyfin-server: add filename debug info 2026-01-08 17:05:09 +01:00
mani
33b8d104a1 Update jellyfin-server: clean downloads folder code 2026-01-08 16:50:31 +01:00
mani
8ba181add6 Update jellyfin-server: add debug logging 2026-01-08 16:45:35 +01:00
mani
97208b62ba Update jellyfin-server: add /downloads/ folder for full-file downloads 2026-01-08 16:38:15 +01:00
mani
bc2cf0f4b8 Remove all timestamp fixes - revert to original Jellyfin 2026-01-08 16:34:41 +01:00
mani
38683358b8 Reset to working fix: Progressive-only timestamp normalization 2026-01-08 15:50:12 +01:00
mani
5a277e94a2 Apply timestamp normalization only for full file downloads
- Force CopyTimestamps=false when SegmentContainer is null (full downloads)
- Preserve client's copyTimestamps setting for streaming (HLS)
- Fixes negative timestamps only in downloaded files, not streaming
2026-01-08 15:47:52 +01:00
mani
94f5e64ab0 Update jellyfin-server: always apply timestamp normalization 2026-01-08 15:44:33 +01:00
mani
766a58195d Update jellyfin-server: remove restrictive Progressive-only conditions 2026-01-08 15:23:30 +01:00
mani
23e93b584e Update jellyfin-server: add debug logging to trace code path 2026-01-08 13:38:18 +01:00
mani
0b3d627074 Update jellyfin-server: use Console.Error for debug output 2026-01-08 13:37:05 +01:00
mani
c0dd7c9897 Update jellyfin-server: add file-based debug logging 2026-01-08 13:32:06 +01:00
mani
4cf5571355 Update jellyfin-server: fix missing using directive 2026-01-08 13:26:42 +01:00
mani
730624f9f4 Update jellyfin-server: use ILogger for debug output 2026-01-08 13:22:13 +01:00
mani
99accb8df2 Update jellyfin-server: file-based debug logging 2026-01-08 13:19:27 +01:00
mani
b611a83c8e Update jellyfin-server: add console debug logging for transcode paths 2026-01-08 12:59:38 +01:00
mani
e3c93602c6 Update jellyfin-server: add debug logging 2026-01-08 03:11:19 +01:00
mani
7594435bc8 Update jellyfin-server: restore Progressive-only conditions 2026-01-08 03:05:15 +01:00
mani
d0ed52d783 Update jellyfin-server: simplify download/timestamp conditions 2026-01-08 03:03:18 +01:00
mani
df38766674 Update jellyfin-server: exclude downloads folder from cleanup 2026-01-08 02:56:51 +01:00
mani
9d5575af46 Update jellyfin-server: add debug logging 2026-01-08 02:53:49 +01:00
mani
335ac7df9a Update jellyfin-server: fix negative audio timestamps 2026-01-08 02:44:55 +01:00
mani
0cbf321a31 Update jellyfin-server: fix download cancellation 2026-01-08 02:41:11 +01:00
mani
b6ff41f2ed Remove --no-cache flag from Docker build
Docker layer cache is smart enough to rebuild when source changes
Speeds up builds significantly by reusing package installation layers
2026-01-08 02:27:31 +01:00
mani
e80a38199a Update jellyfin-server: fix timestamp seeking in mpv/iina/infuse 2026-01-08 02:20:49 +01:00
mani
c24dc35eaa Update jellyfin-web: add debug logging for downloads 2026-01-08 02:17:30 +01:00
mani
5efa2c0f4c Update jellyfin-server: separate transcode paths for HLS vs downloads 2026-01-08 02:14:53 +01:00
mani
6281525643 Update jellyfin-web: add playSessionId to prevent caching 2026-01-08 02:00:14 +01:00
mani
717a508b93 Update jellyfin-web: fix download filenames 2026-01-08 01:58:32 +01:00
mani
6b1b63c014 Add --no-cache to Docker build to prevent cached builds 2026-01-08 01:53:49 +01:00
mani
b5d66901e1 Update jellyfin-web: add debug logging 2026-01-08 01:49:33 +01:00
mani
5f9ed91cc5 Update jellyfin-server: add avoid_negative_ts for mpv compatibility 2026-01-08 01:44:45 +01:00
mani
a61a4e4281 Update jellyfin-server: improve MP4 movflags for mpv 2026-01-08 01:42:51 +01:00