Files
ha-gronod-addons/emby-mcp/CHANGELOG.md
gronod 7bcf5322e1 feat: emby-mcp 1.0.16 player owner filter and HA links
Expose session/last-used user and device IP on player rows. Filter
retrieve_player_list by users, merge GET /Devices when include_offline
is set, and resolve spoken names to HA media_player entities via
player_links (device_id or IP). PlayNow still requires a live session.
2026-09-25 19:58:58 +00:00

141 lines
5.2 KiB
Markdown

# Changelog
## 1.0.16
- Player rows include `user_id`, `user_name`, `online`, and keep
`device_ip_address` (Emby session `RemoteEndPoint`, host only)
- `retrieve_player_list` accepts `users` (comma-separated include-list)
and `include_offline` (merge `GET /Devices` last-used owners)
- Add-on options `player_users` and `player_links` feed a default
include-list and HA entity map (`ha_entity`, `ha_source`, `device_ip`,
`emby_device_id`)
- New tool `resolve_media_player` for "play on the lounge": returns
HA entity/source plus `session_id` when live, or `wake_required`
- Conversation Functions YAML and system prompt updated in DOCS.md
### Potential breaking change
- Player JSON grows `user_id`, `user_name`, and `online`. Re-paste the
DOCS.md Functions block to pick up `emby_list_players` parameters and
`emby_resolve_player`. Existing PlayNow calls are unchanged.
- Empty `player_users` means no default filter (same listing as 1.0.15,
plus owner fields). Non-empty `player_users` hides other accounts even
when the model omits `users`.
## 1.0.15
- Restore `premiere_date` on item-shaped results (search, episode/season
lists, next-episode, playlist items, play queue). Emby's `PremiereDate`
is the first air date for episodes/series and the release date for
movies; it is emitted as `YYYY-MM-DD` and omitted when metadata is empty
- Request `PremiereDate` again in upstream `Fields`
- Conversation-agent system prompt in DOCS.md now tells the model to read
`premiere_date` for airdate questions
### Potential breaking change
- Item JSON grows a `premiere_date` key versus the 1.0.11 slim shape.
Home Assistant function *parameters* are unchanged (`value_template`
still returns `value_json.result`). Re-paste the DOCS.md system prompt
so the agent looks for `premiere_date`; the Functions YAML block does
not need to be replaced unless you also want the updated prompt text
nearby. Clients that reject unknown item keys must allow
`premiere_date`.
## 1.0.14
- `control_media_player` PlayNow now honours `time_milliseconds` as a start
position (`StartPositionTicks`), so "play X from 4:06" works
- README conversation-agent functions: `emby_playback_control` declares and
forwards `time_milliseconds` (previously hardcoded to 0, so Seek always
jumped to the beginning); added `emby_episode_list`/`emby_season_list`
## 1.0.13
- `lyrics_or_description` is now optional in the `search_for_item` schema —
calls that omit it are accepted too (1.0.12 required it, breaking updated
clients that stopped sending the key)
## 1.0.12
- REST bridge filters undeclared tool arguments against the cached
`tools/list` schema and reports them as `dropped_arguments` — stale keys
from older clients no longer fail the whole call
- `search_for_item` re-accepts `lyrics_or_description` as a deprecated,
ignored parameter for backward compatibility
## 1.0.11
- Slim tool responses: omit empty fields and drop `overview`, `lyrics`,
`file_path`, `creation_date`, `premiere_date`, `bitrate` from item-shaped
results (`production_year` retained)
- Absent numeric/percent fields now omit the key instead of emitting `""`
- Player sessions report now-playing times as `hh:mm:ss` only
(`*_milliseconds` fields removed)
- Playlists drop `overview`/`date_created`; playlist and queue items match
the trimmed item shape
- Remove the `lyrics_or_description` search parameter from `search_for_item`
- Slim upstream `Fields` requests to match the reduced output
## 1.0.10
- Do not truncate Emby response bodies before JSON decode (DEBUG logging
caused unexpected EOF on large episode lists)
- Stop requesting MediaSources on item search; keep episode/season fields
## 1.0.9
- Move per-layer debug flags into an optional `debug` options section
## 1.0.8
- Log level option: DEBUG, INFO, WARN
- DEBUG-only layer flags: REST (`/call`, `/tools`), MCP (`/mcp`), Emby API
- Request/response bodies logged per selected layer (secrets redacted)
## 1.0.7
- Re-authenticate with stored Emby username/password on HTTP 401
- Stop revoking the Emby access token when the 15-minute auth cache expires
- REST bridge retries MCP JSON-RPC errors that look like expired tokens
## 1.0.6
- Log every HTTP request (method, path, peer, status)
## 1.0.5
- Allow Home Assistant Core and add-on network (172.30.32.0/23, 172.30.33.0/24)
as well as loopback when restrict_to_localhost is on
- Leave the container on the Supervisor network so `c5cb4244-emby-mcp` resolves
- Do not publish port 8085 on the host LAN
- Stop binding only 127.0.0.1 (that blocked Assist)
## 1.0.4
- Set add-on hostname to `local-emby-mcp-bridge`
## 1.0.3
- Add-on icon and logo
## 1.0.2
- Default listen port is 8085
## 1.0.1
- Add-on options for Emby username, password, API key and user id
- `restrict_to_localhost` switch (default on): bind 127.0.0.1, reject
non-loopback peers, apply stored credentials only for local callers
- `host_network` so the loopback bind is the Home Assistant host
## 1.0.0
- First Home Assistant add-on release
- In-process Go REST bridge (`/call/{tool}`, `/tools`, `/health`)
- Session init failures are no longer swallowed
- Retries on HTTP 400/401/404 with a fresh MCP session
- Per-request Authorization header forwarded to `/mcp`