refactor(qualite): retirer le grisé d'un serveur sans ffmpeg - #53
Conversation
waveflow-server refuse de démarrer sans ffmpeg : GET /api/v2/transcode/status répond toujours available: true. Le grisé des profils transcodés, ses deux messages et le relevé fait à chaque ouverture du compte défendaient un état impossible. Sortent l'appel au statut du transcodage, sa réponse, le dépôt, et ce que l'état et le ViewModel de la qualité en tiraient. Les onze tests qui éprouvaient cet état sortent avec lui. Claude-Session: https://claude.ai/code/session_01GH1rcBbYQX41tkDEtKfATL
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Advanced Run ID: 📒 Files selected for processing (12)
💤 Files with no reviewable changes (8)
Included review availability: 3 reviews are currently available. Your included PR review attempts over the past 7 days set your current allowance at 8 reviews per hour. 📝 WalkthroughWalkthroughLa détection distante de ffmpeg est supprimée. Le ViewModel de qualité dépend uniquement des préférences. Tous les profils restent sélectionnables. Les tests liés au transcodage sont retirés ou simplifiés. ChangesSélection de qualité sans détection distante
Priority: ⬇️ Low Estimated code review effort: 3 (Moderate) | ~20 minutes Change: Refactor Merge Risk: ⚪ Minimal · up to The quality-selection flow now consistently relies on local preferences and removes the obsolete server capability check without an identified current-head regression. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Comment |
main = 9ff45f5, 455 tests. Les #52, #53 et #54 sont fusionnées : le cache d'un transcodage inachevé, le retrait du grisé, et le déplacement dans un morceau transcodé. Du lot 4 il reste le 429 et le profil Automatique. Consigné pour la suite : les règles vivent dans docs/deplacement-dans-un-transcodage.md, ce que les sources de media3 ont appris sur l'enveloppe du lecteur, et la leçon de la revue — relire ce qu'une note affirme avec la même sévérité qu'un test. Claude-Session: https://claude.ai/code/session_01GH1rcBbYQX41tkDEtKfATL
Pourquoi
La #51 grisait les profils transcodés quand
GET /api/v2/transcode/statusrépondaitavailable: false. Ce cas ne se présente jamais :waveflow-serverrefuse de démarrer sans ffmpeg (src/lib.rs), si bien qu'un serveur joignable répond toujoursavailable: true.Le grisé représentait donc un état impossible, et coûtait :
Retrait décidé avec l'utilisateur le 11/09 (
docs/PASSATION.md, « La suite », point 1).Ce qui sort
CatalogApi.transcodingAvailable, son implémentation HTTP,TranscodeStatusResponse,CatalogRepository.transcodingAvailable.StreamQualityUiState:transcodingAvailable,isSelectable,isCurrentUnavailable. L'état ne porte plus que le choix courant.StreamQualityViewModel:refresh()et la garde dechoose(). Il ne dépend plus du catalogue. Son test n'a plus besoin de Robolectric, qui n'était là que pourandroid.util.Log.StreamQualitySection: le grisé des lignes et les deux messages d'erreur. La note « S'applique aux pistes lancées ensuite, pas à la file en cours. » reste, et son explication passe en commentaire.MainActivityne relève plus la capacité du serveur à l'ouverture du compte.Tests
Onze tests retirés, tous consacrés à l'état retiré :
StreamQualitySectionTesten entier (5), quatre deStreamQualityViewModelTest,un serveur sans ffmpeg le dit(HTTP) etun serveur sans ffmpeg grise les profils transcodes(écran).Ce qui reste couvert : l'écran s'ouvre sur le choix enregistré, un choix s'enregistre, et un appui sur Haute qualité est transmis (
ServerScreenTest). Ce dernier test échouerait si la ligne restait inactive.Pas de validation par retrait : cette PR ne corrige aucun défaut et n'ajoute aucun test de régression, elle retire une fonction.
ktlintCheck detekt testDebugUnitTestvert : 418 tests (429 − 11), aucun avertissement de compilation.Hors de cette PR
Un transcodage qui échoue en pleine lecture (429, erreur serveur) sera traité avec le 429, point 3 de la suite. Le client ne le devinera pas d'avance : il réagira à la réponse du serveur.
https://claude.ai/code/session_01GH1rcBbYQX41tkDEtKfATL
Summary by CodeRabbit
Modifications fonctionnelles
Tests