watchparty/server
Nicolas 841975e408
All checks were successful
Publier l'image Docker / publish (push) Successful in 6s
Fix subtitles still not showing: force Encode during negotiation, not just the URL
Follow-up to the previous language/subtitle fix - audio track selection
apparently started working, but subtitles specifically still didn't show.

Real gap found: applyPlaybackOverrides was only ever applied to the FINAL
stream URL, never to the PlaybackInfo NEGOTIATION call itself - so
SubtitleMethod=Encode never reached Emby until after it had already
decided, during negotiation, whether this session would be a full
re-encode or a plain remux. Burning a subtitle into the video is only
possible with a real re-encode; appending SubtitleMethod=Encode to a URL
for a session Emby already set up as a remux plausibly does nothing, no
matter how correct the URL looks. server/src/index.js now applies
applyPlaybackOverrides to the negotiation's own params too, so Emby is
asked to encode BEFORE it decides how the session will be handled, not
just told afterward.

Also added server/src/logger.js's streamLog ([watchparty:stream]) - two
rounds of blind, reasoned-but-unverified fixes for one bug is the point
where guessing stops being efficient. Every /master.m3u8 request now logs
its itemId and the resolved audio/subtitle/subtitleMethod/quality values,
so the next retest can confirm from docker logs/journalctl alone whether a
requested override actually reached Emby - without a devtools session on
whatever machine runs the server. Deliberately logs only those specific
values, never the full URL or params blob: Emby's own TranscodingUrl can
carry an api_key, which has no business ending up in a log file.

Verified as far as possible without real Emby access: the negotiation
call's params now measurably carry SubtitleMethod=Encode whenever a
subtitle is requested (same as the final URL always did); the new log line
correctly reports forced audio/subtitle values and reads "(none)" when
nothing was requested; and a test with a fake api_key embedded in the
source params confirms it never appears in the logged line.

If subtitles still don't show once this log line confirms
subtitleMethod=Encode really was sent, the fault is narrowed to Emby's own
handling of that parameter rather than anything before it in this app -
docs/architecture.md has the full writeup.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-14 01:00:07 +02:00
..
src Fix subtitles still not showing: force Encode during negotiation, not just the URL 2026-09-14 01:00:07 +02:00
.dockerignore Pivot to a standalone app - Emby plugin hit a hard wall 2026-09-13 20:48:55 +02:00
.env.example Pivot to a standalone app - Emby plugin hit a hard wall 2026-09-13 20:48:55 +02:00
Dockerfile Pivot to a standalone app - Emby plugin hit a hard wall 2026-09-13 20:48:55 +02:00
package-lock.json Switch to Socket.IO; fix two real memory leaks 2026-09-13 23:07:51 +02:00
package.json Switch to Socket.IO; fix two real memory leaks 2026-09-13 23:07:51 +02:00