- Rails Nouveautés séparés : 🆕 animés (tri date Kitsu) et 🆕 séries & films
(French-Stream) — chaque type garde son rail, plus d'écrasement mutuel
- Section 🎭 Explorer : chips type × genre — animés via catégories Kitsu,
séries (/<genre>-series-/) et films (/films/<genre>/) via French-Stream ;
état dans l'URL (/discover?t=serie&g=medical), partageable
- Scraper : browse(media_type, genre) + catalogue YAML surchargeable ;
parsing div.short mutualisé avec les nouveautés
- Films réels retirés du mode « Animés » (ils suivent le rail séries)
- Endpoints /api/discover (latest_anime/latest_serie), /api/discover/genres,
/api/discover/browse — parcours filtré par la préférence du compte
- Warmup démarrage : latest_by_type()
- /api/v2/* : login SID (mot de passe = clé Torznab), app/version,
torrents/info (progression temps réel), properties (content_path),
add (rejoue le grab encodé dans le .torrent de service, dédupliqué
par infohash SHA-1), delete (± fichiers), pause/resume
- Les grabs Sonarr sont marqués « sonarr:<hash>| » dans source_key →
suivis de bout en bout : Sonarr importe, renomme et range les épisodes
dans sa bibliothèque, puis retire le torrent de la file Ohm
- L'indexeur Torznab embarque les paramètres du grab dans l'announce
- README : nouveau mode « client de téléchargement » recommandé (Remote
Path Mapping documenté), blackhole en variante minimale
- 3 nouveaux tests (flux complet add → suivi → import → delete)
- 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)