Files
manage/openspec/changes/archive/jellyfin-service-registry/tasks.md
Developer 6919158012 docs: complete Jellyfin migration, archive jellyfin-service-registry
Slice 3 (final) of jellyfin-service-registry. Documents the completed
migration and archives the SDD change.

- docs/REQUIREMENTS.md: marked the machine-level Jellyfin follow-up
  resolved; added a decision-log entry (Jellyfin no longer a machine
  service, dead media_root/path_prefix removed; global config +
  path_utils retained for Jellyfin->SSH path resolution).
- CHANGELOG.md: struck through the old follow-up note; added a
  Follow-up #2 section describing the machine field + service removal.
- Archived openspec/changes/jellyfin-service-registry (no active SDD
  changes remain).

Backend ruff clean / 239 tests pass; frontend 0 lint errors / build
clean / 72 tests pass.
2026-06-24 14:56:25 +00:00

87 lines
3.4 KiB
Markdown
Raw Permalink 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.