Commit Graph

52 Commits

Author SHA1 Message Date
e7628ac44c chore: bump version 2026-07-30 20:10:21 +02:00
f89e403a17 chore: bump version 2026-07-26 21:46:51 +02:00
eabce18e41 feat(anime): rename NFO Diagnostics to Anime Settings + add edit endpoints
Replaces the read-only 'NFO Diagnostics' page with a full per-anime
Settings page reached from the right-click context menu on series cards.
Users can now view and edit key, name, folder, tmdb_id, tvdb_id and site
for each anime; changes are persisted to the DB and optionally written
back to the NFO file or used to regenerate it.

Backend
- Rename NfoDiagnosticsResponse -> NfoSettingsResponse,
  NfoSeriesDiagnostics -> NfoSeriesSettings
- Rename get_nfo_diagnostics -> get_nfo_settings,
  repair_nfo -> repair_nfo_settings
- Fix nfo.py bug: repair was calling non-existent
  update_series_nfo_status(); now uses update_nfo_status() and an
  explicit AnimeSeriesService.update(nfo_path=...)
- New endpoints on /api/anime/{key}:
    GET  /settings            -> AnimeSettingsResponse
    PUT  /settings            -> AnimeSettingsResponse
                                 (body: name/folder/tmdb_id/tvdb_id/site,
                                  options: apply_to_nfo, rename_disk)
    POST /regenerate-nfo      -> AnimeSettingsRegenerateNfoResponse
- New Pydantic models: AnimeSettingsResponse,
  AnimeSettingsUpdateRequest, AnimeSettingsRegenerateNfoResponse
- /anime/settings page route; /settings/nfo now 301-redirects to it

Frontend
- New AniWorld.AnimeSettingsManager JS module (single-page form,
  no tabs) with public API init/loadSeries/saveSettings/regenerateNfo/
  validateField/populateForm/showSaveSuccess/showError
- New anime-settings.html template + anime-settings.css
- Right-click menu: data-action 'nfo-diagnostics' replaced by
  'anime-settings' (label 'Anime Settings'), navigates to
  /anime/settings?key=...
- Library 'Open NFO Diagnostics' link renamed to 'Open Anime Settings'

Bug fix
- context-menu click handler was calling hide() BEFORE building the
  navigation URL, which cleared currentSeriesKey to null and produced
  /anime/settings?key=null. Captures the key into a local const first.
  Regression-locked by tests/frontend/unit/context_menu.test.js.

Tests
- 21 new pytest tests in tests/api/test_anime_settings_endpoints.py
  (GET/PUT/regenerate-nfo, auth, validation, nfo-repair bug regression)
- tests/api/test_nfo_endpoints.py trimmed to 6 focused tests
- 31 new Vitest unit tests for AnimeSettingsManager
- 5 new Vitest unit tests for ContextMenu (incl. source-invariant
  regression guard for the hide()-before-key bug)
- 5 new Playwright E2E tests covering right-click, direct nav,
  legacy /settings/nfo redirect, and context-menu labels
- New vitest.config.js (environment: happy-dom)

Docs
- Docs/API.md: new section 'Anime Settings Endpoints'
- Docs/CHANGELOG.md: documents the rename and the context-menu bug fix

Verified
- pytest: 27/27 (21 new + 6 trimmed nfo)
- vitest: 36/36 (31 anime-settings + 5 context-menu)
- playwright e2e: 5/5
2026-06-21 07:52:22 +02:00
de330dc146 chore: bump version 2026-06-11 08:45:36 +02:00
cbc44491e7 chore: bump version 2026-06-10 20:14:41 +02:00
4f61ded92a chore: bump version 2026-06-10 19:17:39 +02:00
288b03cbb4 chore: bump version 2026-06-09 20:50:06 +02:00
4e0c66ea9e chore: bump version 2026-06-07 17:43:01 +02:00
f3042206a8 chore: bump version 2026-06-07 16:01:01 +02:00
fd3ec5df83 chore: bump version 2026-06-06 23:48:09 +02:00
576d9f7a7b chore: bump version 2026-06-06 23:09:47 +02:00
a05795bb35 chore: bump version 2026-06-06 22:47:56 +02:00
8bb8c6aa64 chore: bump version 2026-06-06 21:53:57 +02:00
6a934db8ac chore: bump version 2026-06-06 20:38:21 +02:00
ac5ee3bb27 chore: bump version 2026-06-06 20:08:05 +02:00
be9f2a4c0c chore: bump version 2026-06-06 19:40:21 +02:00
dc7d9ee5f7 chore: bump version 2026-06-05 22:34:09 +02:00
2876cef24b chore: bump version 2026-06-05 22:10:56 +02:00
01e4dec8d7 chore: bump version 2026-06-05 21:08:23 +02:00
e02d65778f chore: bump version 2026-06-05 20:25:20 +02:00
7b8de8d988 chore: bump version 2026-06-05 20:11:56 +02:00
dbaf80e941 chore: bump version 2026-06-03 21:49:02 +02:00
a77bb371df chore: bump version 2026-06-03 21:41:30 +02:00
e46759347e backup 2026-06-02 20:59:13 +02:00
1649a22418 chore: bump version 2026-06-02 20:39:18 +02:00
84b24ed79e chore: bump version 2026-06-02 20:33:01 +02:00
ed8f5cae10 chore: bump version 2026-06-01 21:38:37 +02:00
c58b42dfa5 feat(services): add key resolution for orphaned anime folders
- Add key_resolution_service.py to resolve provider keys for folders without key/data files
- Search anime provider and match folder names (case-insensitive, exact match required)
- Only save to DB if exactly one match found; otherwise skip
- Add comprehensive unit tests (28 tests)
- Integrate into scheduler_service after nfo_repair scan
- Update ARCHITECTURE.md documentation
2026-06-01 20:43:13 +02:00
76b849fc91 chore: bump version 2026-05-30 12:02:48 +02:00
a6f2399aca chore: bump version 2026-05-29 19:25:30 +02:00
5190d32665 chore: bump version 2026-05-28 22:03:52 +02:00
7ded5a6e4d chore: bump version 2026-05-27 21:41:45 +02:00
fc4e52f1a2 chore: bump version 2026-05-26 20:23:20 +02:00
50a77976d5 chore: bump version 2026-05-26 13:28:12 +02:00
6c9605e896 chore: bump version 2026-05-26 08:58:37 +02:00
a3176f5ac1 chore: bump version 2026-05-25 21:31:46 +02:00
810346bc8b chore: bump version 2026-05-24 21:17:39 +02:00
11e231a4ab chore: bump version 2026-05-21 21:42:13 +02:00
cf5a06af11 chore: bump version 2026-05-21 21:22:08 +02:00
1696d5c65b chore: bump version 2026-05-21 21:04:51 +02:00
c8b386f47a chore: bump version 2026-05-20 20:00:45 +02:00
06e104db42 chore: bump version 2026-05-20 19:41:58 +02:00
d4594bd1d9 chore: bump version 2026-05-20 19:40:17 +02:00
7bcd0600d5 chore: bump version 2026-05-18 09:57:51 +02:00
54ac5e9ab7 chore: release v1.1.4 2026-05-17 18:51:09 +02:00
c93ac3e7b8 chore: release v1.1.3 2026-05-17 18:40:37 +02:00
be87f2e230 chore: release v1.1.2 2026-05-17 18:31:59 +02:00
cb0a36ccc2 chore: release v1.1.1 2026-05-16 21:47:05 +02:00
d5116e378e chore: release v0.1.0 2026-05-16 21:41:40 +02:00
815a4f1520 chore: release v0.0.1 2026-05-16 21:20:20 +02:00