- Remove incorrect addContextMenuItems() from item_functions.py as JellyCon uses custom context menu system
- Add "Play with track selection" entry to JellyCon's ActionMenu in show_menu() for Movies and Episodes
- Add handler for play_with_track_selection action that sets force_track_selection parameter
- Fix incorrect import: change 'from . import translation' to
'from .utils import translate_string'
- Add try/except block to prevent context menu errors from breaking playback
- Add defensive check for item_details.id existence
- Add error logging for debugging context menu issues
This fixes the critical bug where the movie menu would not load
due to the incorrect translation import.
- Replace prefer_srt_over_pgs boolean with subtitle_codec_preference dropdown
Options: 0=Prefer PGS (default), 1=Prefer SRT, 2=No preference
- More intuitive UI with descriptive labels:
- PGS bevorzugt (bessere Qualität beim Brennen)
- SRT bevorzugt (flexibel, kann gestreamt werden)
- Keine Präferenz
- Update scoring logic to handle three states instead of two
- Clarify that only_forced filter applies only during auto-selection
Manual selection via dialog still shows all subtitles
- Change prefer_srt_over_pgs default from true to false
PGS has better quality when burned in during transcoding
- Add only_forced_subtitles setting (default: true)
When enabled, only forced subtitles are selected
Regular subtitles are skipped even if they match the language
- Skip non-forced subtitles in auto-selection when only_forced is enabled
Prevents selecting regular German subs when watching German content
Only shows forced subs for foreign language parts
This is useful for native language content where only foreign
language parts need subtitles (forced), not the entire movie.
Context Menu Integration:
- Add 'Play with track selection' option to video context menus
- Available for movies and episodes via long-press/context menu
- Forces manual track selection dialog even when auto-selection is configured
Language Selection Improvements:
- Add dropdown selectors for preferred audio/subtitle languages
- Support German, English, French, Spanish, Italian, Japanese, Russian
- Add comprehensive language matching (e.g., 'ger' matches 'deu', 'deutsch', 'german')
- Add setting to auto-select 'No subtitles' when no matching subtitle found
Track Selection Scoring System:
- Audio tracks: Language match (+100), default flag (+50),
channel count (+5-40), codec quality (+10-30), exclude commentary (-100)
- Subtitle tracks: Language match (+100), forced flag (+50),
SRT preference (+30), default flag (+10)
Implementation Details:
- Add force_track_selection parameter throughout playback chain
- Preserve server/remote control track selections when not forcing manual selection
- Add extensive debug logging for track selection decisions
- Respect user preferences while allowing manual override via context menu
- Add intelligent scoring for multiple audio tracks in same language
- Score based on: default flag (+50), channel count (+5-40),
codec quality (+10-30), and exclude commentary (-100)
- Prevents selecting commentary or low-quality tracks when better
options are available in the same language
- Prioritizes default track while considering quality factors
- Add transcode target codec logic to get_play_url function
- Add debug logging to track codec selection
- Remove redundant enable="true" attributes in settings.xml
The get_play_url function was still using hardcoded h264, which caused
the transcode target codec setting to not take effect for direct
transcode URLs.
Adds new advanced setting to disable disk-based caching, keeping data only in RAM. When enabled, prevents writing .pickle cache files and disables artwork preloading. Significantly reduces SD card wear on devices like Raspberry Pi while maintaining performance through RAM caching.
Adds new playback options to select transcode target codec (H.264, H.265/HEVC, AV1) and force H.264 transcoding. This enables optimal codec selection for client hardware, especially useful for devices with H.265 hardware decoding like Raspberry Pi 5. Target codec and source codec filtering now work independently for maximum flexibility.
Subtitle tracks now display both language and codec type (e.g., 'English (SRT)', 'German (PGS)'). Adds friendly names for common subtitle codecs like SRT, PGS, VobSub, and ASS. Improves user experience when selecting subtitle tracks.
Implements Jellyfin's ForceKeepAlive/KeepAlive mechanism to prevent constant reconnects every 2 minutes. WebSocketApp is now recreated for each connection attempt to avoid memory leaks. Removed problematic ping_timeout and reconnect parameters that caused instability.