4d520ab0e3
- jellyfin-service-registry: proposal, design, and tasks for completing the Jellyfin migration off machine-level config. - grafana-prometheus-polish: proposal, design, and tasks for improving the Grafana/Prometheus observability integration. Both are planning-only artifacts; implementation not started.
2.4 KiB
2.4 KiB
Proposal — Jellyfin service-registry migration (completion)
Change: jellyfin-service-registry
Phase: proposal
Date: 2026-06-23
Problem
The service-registry foundation already moved Jellyfin/Jellyseerr resolution into dependencies.py (get_jellyfin_client, get_jellyseerr_client, get_user_id) using jellyfin_service_id. The frontend Applications, Media, and Users pages already consume useServiceInstances("jellyfin").
However, the machine-level config still carries legacy Jellyfin DNA that is now dead or misleading:
DEFAULT_SERVICES = ["monitoring", "files", "jellyfin"]insettings_store.pyauto-tags every local machine as a Jellyfin source.- The Settings machine editor still exposes
servicesmulti-select that can includejellyfin, even though Jellyfin is selected via the Services page, not via a machine. MonitoringMachinetypes still carrymedia_rootandpath_prefixfields whose original purpose was Jellyfin→SSH path mapping, but the path-mapping logic inpath_utils.pynow operates independently and those fields are no longer read by the media/file flows.- Documentation still describes machine-level Jellyfin fields in places.
This creates UI confusion (two places to think about Jellyfin) and stale surface area.
Goal
Cleanly complete the Jellyfin migration onto the service registry:
- Remove Jellyfin from the machine
servicestaxonomy entirely. - Remove dead
media_root/path_prefixmachine fields from backend, frontend types, Settings form, and tests. - Update path-resolution helpers to rely only on the Jellyfin service config (or explicit path-prefix settings on the service record if needed), not on machine fields.
- Update docs and changelog.
Non-goals
- Do NOT change how Jellyfin/Jellyseerr clients are resolved in
dependencies.py— that is already correct. - Do NOT remove the
jellyfin/jellyseerrservice definitions. - Do NOT add new service types or widgets in this change.
Acceptance
grep -R "media_root\|path_prefix" backend/src frontend/srcreturns onlypath_utils.pyand its tests (if those helpers remain) or nothing (if the helpers are removed).jellyfinno longer appears in machineservicesoptions in the Settings UI.DEFAULT_SERVICESno longer includesjellyfin.- Backend and frontend test suites remain green.
- Docs/CHANGELOG explain the final migration.