chore: solder deux écarts avant d'attaquer Android Auto - #35
Conversation
Le client d'images de Coil n'avait aucun plafond d'appel, là où celui de l'API en porte un de 30 s. Les délais par défaut d'OkHttp portent sur chaque étape prise à part ; aucun ne borne l'appel entier, donc une pochette qui n'arrive jamais retenait son fil de bout en bout. `ServerHttp.imageClient` le construit désormais, avec la même constante que `defaultClient` : le plafond se décide à un seul endroit. L'écran du compte annonçait encore « La lecture à distance arrive dans une prochaine version ». C'est faux depuis la #17. Écarté après examen, contrairement à ce que le tableau de bord prévoyait : le `catch (Throwable)` de `CoilBitmapLoader`. Il n'avale pas l'erreur, il la transmet par le futur, et la portée des pochettes n'a pas de `CoroutineExceptionHandler` — le restreindre à `Exception` ferait donc remonter un `OutOfMemoryError` de décodage jusqu'au gestionnaire global, c'est-à-dire planter le service de lecture au lieu de perdre une vignette. Le décodage d'images est précisément le lieu de cette erreur-là. Retrait du plafond → seul le nouveau test tombe, sur « le plafond doit être posé ». Claude-Session: https://claude.ai/code/session_01CHnmk73TFtaDDJWoCsLHUD
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (4)
Limit details: You’ve used the included review currently available. Your 90 included PR review attempts over the past 7 days set your current allowance at 1 review per hour. 📝 WalkthroughWalkthroughLe client HTTP des images est centralisé dans ChangesClient HTTP et lecture serveur
Estimated code review effort: 2 (Simple) | ~10 minutes Merge Risk: ⚪ Minimal · up to This PR adds a bounded timeout for image requests and corrects outdated account-screen text; no actionable merge-blocking risk remains after normal checks and review. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 inconclusive)
✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Warning Your free Security trial is over. An organization admin can activate billing to continue. Usage-based review receipt
Note This review was completed with usage-based billing: files reviewed beyond your plan's included limits are billed at $0.25/file. Track spend and usage in your billing settings. Comment |
Trois points traînaient au tableau de bord avant Android Auto. Deux sont corrigés, le troisième est écarté après examen — et c'est le plus intéressant des trois.
Le client d'images n'avait aucun plafond d'appel
WaveFlowApp.newImageLoaderconstruisait sonOkHttpClientà la main, sanscallTimeout, là où celui de l'API en porte un de 30 s. Or les délais par défaut d'OkHttp portent sur chaque étape prise à part — connexion, lecture, écriture — et aucun ne borne l'appel entier. Une pochette qui n'arrive jamais retenait donc son fil de bout en bout.ServerHttp.imageClient(auth)le construit désormais, avec la même constante quedefaultClient(). Le plafond se décide à un seul endroit, et le test le vérifie en comparant les deux valeurs plutôt qu'en figeant un nombre.Découvert en instruisant un retour CodeRabbit sur la #34 — celui que j'avais écarté, à raison, mais qui a mis le doigt sur cet écart de configuration.
Un texte faux depuis la #17
L'écran du compte annonçait « La lecture à distance arrive dans une prochaine version ». Elle est là depuis sept PR.
Écarté : le
catch (Throwable)deCoilBitmapLoaderLe tableau de bord le donnait « à uniformiser », dernier écart depuis que le dépôt a tranché pour
Exceptionen #33. L'examen dit de ne pas y toucher.Ce
catchn'avale pas l'erreur : il la transmet parfuture.setException. Et la portée des pochettes (artworkScope) a bien unSupervisorJob, mais pas deCoroutineExceptionHandler. Le restreindre àExceptionferait donc remonter unOutOfMemoryErrorde décodage jusqu'au gestionnaire global — c'est-à-dire planter le service de lecture, au lieu de perdre une vignette et de le signaler proprement à Media3.Le décodage d'images est précisément le lieu où cette erreur survient. Le
Throwabley est justifié, et la ligne sort du tableau de bord plutôt que d'y rester en attente.Validation
Retrait du
.callTimeout(CALL_TIMEOUT)deimageClient→ seul le nouveau test tombe :Suite complète : 276 tests, 0 échec (275 + 1).
ktlintCheck detekt lintDebugverts, aux deux avertissements laissés visibles en #33 près.Ce qui reste après cette PR
Android Auto, seul point du tableau de bord. Le
BitmapLoaderest posé depuis la #26 etPlaybackServiceest unMediaSessionServicecorrectement déclaré, mais l'essentiel reste : passer àMediaLibraryService, implémenter l'arbre de navigation (onGetLibraryRoot/onGetChildren), et déclarer l'application au manifeste — rien n'y figure aujourd'hui pour Auto.https://claude.ai/code/session_01CHnmk73TFtaDDJWoCsLHUD
Summary by CodeRabbit
Nouvelles fonctionnalités
Corrections