- Colonne users.content_preference (anime|serie|both, défaut both) avec
migration automatique des bases existantes.
- GET /auth/me expose la préférence ; PUT /auth/preferences la met à
jour (422 si valeur invalide).
- /api/search : filtre les résultats par media_type ET ignore les
sources hors périmètre (une source anime-only n'est pas interrogée
en mode séries). Les films restent associés aux animés.
- /api/discover : nouveautés filtrées selon la même règle.
- Sélecteur compact dans la topbar (⛩/📺/✨), persisté serveur.
- 7 tests dédiés (roundtrip, rejet invalide, filtrage search/discover,
skip de sources) — 114 au total, ruff clean.
Prête pour la première source de séries : il ne reste qu'un module
SourceScraper avec media_types=("serie",) à écrire.
- Détection de version via l'API Gitea, application via Watchtower
- Router système, UI admin (intégrations), bandeau de mise à jour
- Dockerfile multi-étapes, docker-compose, scripts/release.sh
- Version centralisée dans app/version.py (pyproject ou OHM_VERSION au build)