Files
manage/openspec/changes/jellyfin-service-registry/tasks.md
T
Developer 4d520ab0e3 docs(openspec): add SDD artifacts for next changes
- 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.
2026-06-23 20:40:35 +00:00

87 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Tasks — Jellyfin service-registry migration (completion)
**Change:** `jellyfin-service-registry`
**Phase:** tasks
**Date:** 2026-06-23
## Review workload forecast
| Field | Value |
|-------|-------|
| Estimated changed lines | ~250350 |
| Chained PRs recommended | No (single PR) |
| Chain strategy | n/a |
## Slice 1: Backend cleanup
**Goal:** Remove Jellyfin and dead path-mapping fields from machine config.
- [ ] **1.1 Drop `jellyfin` from default machine services**
- Files: `backend/src/media_library_viewer_api/services/settings_store.py`
- Lines: ~5
- Details: Change `DEFAULT_SERVICES = ["monitoring", "files", "jellyfin"]` to `["monitoring", "files"]`. Update all fallback/default service lists.
- [ ] **1.2 Remove `media_root` and `path_prefix` machine fields**
- Files: `backend/src/media_library_viewer_api/services/settings_store.py`
- Lines: ~40
- Details: Remove from machine table schema (if present), `_normalize_machine_payload`, `_row_to_machine`, default seeding, and any serialization helpers.
- [ ] **1.3 Review/delete `path_utils.py`**
- Files: `backend/src/media_library_viewer_api/path_utils.py`, `backend/tests/test_path_utils.py`
- Lines: ~-120 if deleted, else ~10 to confirm callers
- Details: Check if any live router still imports the helpers. If not, delete module and tests.
- [ ] **1.4 Update backend tests**
- Files: `backend/tests/test_api.py`, `backend/tests/test_widgets.py`, others as needed
- Lines: ~20
- Details: Remove `media_root`/`path_prefix` from machine fixtures.
- [ ] **1.5 Verify backend**
- Run: `cd backend && .venv/bin/ruff check . && PYTHONPATH=src .venv/bin/python -m pytest`
## Slice 2: Frontend cleanup
**Goal:** Remove dead machine fields and the Jellyfin service option from Settings.
- [ ] **2.1 Update types**
- Files: `frontend/src/types/index.ts`
- Lines: ~10
- Details: Remove `media_root` and `path_prefix` from `MonitoringMachine` and `MonitoringMachineInput`.
- [ ] **2.2 Update Settings form**
- Files: `frontend/src/pages/Settings.tsx`
- Lines: ~60
- Details: Remove `media_root` and `path_prefix` inputs, remove `jellyfin` from the services multi-select options, update `emptyMachine()` and edit reset logic.
- [ ] **2.3 Update frontend tests**
- Files: `frontend/src/pages/__tests__/Settings.test.tsx` if it exists, or other fixtures
- Lines: ~15
- Details: Remove fields from mock machines.
- [ ] **2.4 Verify frontend**
- Run: `cd frontend && npm run lint && npm run build && npm run test`
## Slice 3: Docs + changelog
**Goal:** Document the completed migration and removed fields.
- [ ] **3.1 Update REQUIREMENTS.md**
- Files: `docs/REQUIREMENTS.md`
- Lines: ~10
- Details: Remove references to machine-level `media_root`/`path_prefix` and Jellyfin service tagging.
- [ ] **3.2 Update CHANGELOG.md**
- Files: `CHANGELOG.md`
- Lines: ~10
- Details: Add a breaking/changed note: machine config no longer includes `media_root`, `path_prefix`, or `jellyfin` in `services`; Jellyfin is configured exclusively via Services.
- [ ] **3.3 Commit**
- Commit message: `refactor(settings): complete Jellyfin migration onto service registry`
## Acceptance
- `grep -R "media_root\|path_prefix" backend/src frontend/src` returns only `path_utils.py` and tests if retained, or nothing if deleted.
- `jellyfin` is not offered as a machine service in the Settings UI.
- Backend `pytest` and frontend `npm run lint/build/test` all pass.
- Docs and changelog updated.