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.
141 lines
5.2 KiB
Markdown
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`
|