Added
- Dedicated Music Search & Playback Services (Fixes #26):
- Added
jellyha.music_search: An indexed, sub-50ms music search action querying tracks, albums, or artists with FLAC, ALAC, and Hi-Res audio specifications returned toresponse_variable. - Added
jellyha.play_music: A 1-step action to search and play a song or album from Jellyfin directly on any Home Assistant media player (e.g. Kitchen Speaker, Sonos, Google Cast, Wiim, HomePod). Designed for voice assistants (Home Assistant Assist / LLMs) and automations. - Added full FLAC, ALAC & Hi-Res Audio stream extraction via
MediaStrategy.extract_audio_stream_attributes: exposesaudio_codec,audio_container,bit_depth(16, 24, 32-bit),sample_rate(44.1 to 192 kHz),channels,channel_layout,bit_rate,is_lossless,is_hi_res, and human-readable badges (audio_quality_label, e.g."24-bit / 96 kHz FLAC (Hi-Res Lossless)"). - Added direct bit-perfect audio stream URLs (
stream_url) and disk paths (path,filepath). - Added clean display format (
Artist - Song Title) for music playback in Media Browser, stripping file extensions (.flac,.mp3) and track number prefixes acrossmedia_playertitles, Media Browser track lists, signed stream URLs, andContent-Dispositionheaders. - Full Multi-Instance Smart Routing: When running separate instances (e.g. "JellyHA Movies" and "JellyHA Music"), voice commands and automations without explicit instance parameters automatically route to the Music instance.
- Added
songs,albums, andartistscount attributes tosensor.jellyha_library.
- Added
- Expose Media File Path in Actions & Cards (Fixes #37):
- Exposed
pathandfilepathin thejellyha.get_itemresponse,jellyha.search, andjellyha.get_recommendations, providing the absolute server file path on disk. - Injected
pathandfilepathinto the execution variables of the Lovelace Library Card "Run Script" action (call-service) andjellyha_item_clickedevents, making it easy to route local paths to external media players (Kodi, MPV, VLC). - Updated the Kodi external player script example (
card_action_play_on_kodi.yaml) with direct file path playback mode (playback_mode: "direct_path"), enabling direct playback without streaming add-ons when Kodi has access to local or network SMB/NFS storage.
- Exposed
- Standardized Watched Percentage Sensors (PR #35):
- Added
sensor.jellyha_library_movies_watched_percentage,sensor.jellyha_library_series_watched_percentage, andsensor.jellyha_library_episodes_watched_percentage. - Configured with
SensorStateClass.MEASUREMENTfor Home Assistant Long-Term Statistics (LTS) tracking and historical graphs.
- Added
- Per-Library Storage Size Sensors (PR #36):
- Added dedicated per-library storage size sensors (
sensor.jellyha_library_<name>_storage_size) withSensorDeviceClass.DATA_SIZEandSensorStateClass.MEASUREMENTin GB with raw byte breakdown.
- Added dedicated per-library storage size sensors (
- Live TV Support (PR #38, Fixes #11):
- Added visual Live TV channel browsing with 1-tap playback in the Media Browser under a dedicated 📡 Live TV category with authenticated channel logos and channel numbers.
- Added
enable_live_tvtoggle in Integration Options Flow (defaults tofalse) to eliminate unnecessary API polling for setups without TV tuners or IPTV. - Added lightweight
sensor.jellyha_live_tv_channelsreporting total channel count with recorder database protection against SQLite attribute size limits. - Added dedicated Live TV services:
jellyha.play_live_tv_channel(direct tuning by channel number or name in a single step, compatible with Home Assistant Voice Assist) andjellyha.get_live_tv_channels(searchable channel list with query and limit parameters, plus coordinator RAM fallback). - Full multi-instance support and localization across 7 languages (
en,sl,de,fr,es,it,ru).
Changed
- Now Playing Card Migration Documentation (Fixes #34):
- Documented the seamless 1-line migration path from deprecated
sensor.jellyha_now_playing_<user>tomedia_player.jellyha_<user>inREADME.md,docs/cards.md, anddocs/entities.md. - Clarified that
custom:jellyha-now-playing-cardretains 100% visual and functional parity (fanart, ratings, season/episode badges, live scrub bar, transport controls) and requires no third-party cards or dashboard rewrites. - Enhanced
jellyha.update_favoriteandjellyha.mark_watchedactions to resolve targetuser_idfrom entity attributes when called withmedia_player.jellyha_<user>, ensuring correct per-user state in multi-user households.
- Documented the seamless 1-line migration path from deprecated
- Device Custom Names in Options Flow (PR #39): Prioritized
CustomNamewhen generating the device player list in Integration Options Flow, displaying user-assigned nicknames from the Jellyfin Dashboard (e.g., "Living Room OLED") instead of generic hardware labels.
Fixed
- Library Card Editor Rendering in Grid and List Layouts: Fixed card editor fields disappearing or failing to render when selecting Grid or List layouts due to an unhandled
ReferenceError: columnsLabel is not defined. - Music Library Sync & Audio Search Infinite Hang (Fixes #26):
- Resolved
media_type: Audiosearch hanging indefinitely by enforcing indexedSortBy=SortNameon audio queries instead of unindexedDateCreated, preventing server-side SQLite full table scans across large song libraries. - Resolved music-only library instances showing
0items onsensor.jellyha_libraryand watched sensors by fetching instant item counts from Jellyfin'sGET /Items/Counts?userId={user_id}without downloading tens of thousands of track objects into Home Assistant memory.
- Resolved
- Device Session Collisions on webOS & Browsers (Fixes #39): Enforced exact
DeviceIdmatching across device media players, companion session checks, and playback services. This eliminates cross-device session collisions caused by fuzzy 8-character and 16-character prefix slicing, which previously caused LG webOS TVs, Samsung Tizen TVs, and web browser clients to match each other due to shared base64 User-Agent prefixes (Mozilla/5.0...).