Skip to content

fix(lecture): réserver sous les listes la hauteur qu'occupe vraiment le mini-lecteur - #30

Merged
InstaZDLL merged 1 commit into
mainfrom
fix/mini-lecteur-en-paysage
Aug 18, 2026
Merged

fix(lecture): réserver sous les listes la hauteur qu'occupe vraiment le mini-lecteur#30
InstaZDLL merged 1 commit into
mainfrom
fix/mini-lecteur-en-paysage

Conversation

@InstaZDLL

@InstaZDLL InstaZDLL commented Aug 18, 2026

Copy link
Copy Markdown
Owner

Le défaut, mesuré

La réserve laissée sous les listes était une constante : MiniPlayerSpace = 76.dp. La carte, elle, occupe :

Réglage Hauteur réelle Réservé Masqué
Par défaut, portrait ou paysage, toutes densités 82 dp 76 dp 6 dp
Polices ×2 (accessibilité) 103,5 dp 76 dp 27,5 dp

Mesuré, pas estimé — en composant le mini-lecteur sous Robolectric et en lisant sa taille.

La passation attribuait le défaut au paysage. C'est faux. La carte fait la même hauteur dans les deux orientations et à toutes les densités ; le manque est identique partout. Ce qui le creuse, c'est la taille de police du système — donc précisément les utilisateurs qu'un texte tronqué gêne le plus.

Le correctif

MiniPlayerHost mesure la carte et passe le résultat aux listes. Aucune constante ne pouvait être juste : la hauteur dépend de réglages extérieurs à l'application. Une mesure suit en outre la moindre retouche du mini-lecteur, ce qu'un nombre rangé dans un autre fichier ne fait pas.

L'extraction sort du même coup l'agencement de MainActivity, où il n'était atteignable par aucun test. MiniPlayerSpaceEstimate ne sert plus qu'à éviter un saut sur la première image, avant que la mesure n'arrive.

Validation

Les tests ne fixent aucun nombre. Ils comparent la réserve annoncée à la hauteur que la carte occupe vraiment, dans le même environnement — un nombre écrit en dur ne peut satisfaire les deux réglages de police à la fois.

Rétablir la constante de 76 dp fait tomber les trois, et eux seuls sur 258 :

MiniPlayerHostTest > la reserve sous les listes vaut la hauteur de la carte FAILED
MiniPlayerHostTest > a polices doublees la carte grandit et la reserve avec elle FAILED
MiniPlayerHostTest > la derniere ligne reste entierement visible sous la carte FAILED

Sur émulateur, polices ×2, liste défilée jusqu'au bout. Sans le correctif, la ligne « Wonderful Day / TWICE » est coupée en deux par la carte et sa pochette rognée ; avec, elle tient entièrement, dégagée. Même appareil, même liste, deux minutes d'intervalle.

Ce que ça ne fait pas

Le mini-lecteur reste une carte flottante : une liste en cours de défilement passe toujours derrière lui. C'est le comportement voulu, et seule la position de fin de liste était en cause.

Summary by CodeRabbit

  • Améliorations
    • Le mini-lecteur s’intègre désormais plus harmonieusement aux écrans de contenu.
    • L’espace réservé s’adapte automatiquement à sa hauteur afin que les dernières lignes restent entièrement visibles.
    • Le mini-lecteur est masqué lors de l’ouverture du lecteur plein écran.
    • Les commandes d’extension, de lecture/pause et de changement de morceau restent accessibles et fonctionnelles.

…le mini-lecteur

La réserve était un nombre écrit en dur, 76 dp, pour une carte qui en occupe
82 aux réglages par défaut. Le bas de la dernière ligne disparaissait donc sous
le mini-lecteur, de 6 dp — et de 27,5 dp pour qui double la taille des
caractères, la carte passant alors à 103,5 dp. Les trois chiffres sont mesurés,
pas estimés.

La passation attribuait le défaut au paysage. Il n'en est rien : la carte fait
la même hauteur dans les deux orientations, à toutes les densités, et le
manque est le même partout. Ce qui le creuse, c'est la taille de police du
système — un réglage d'accessibilité, donc exactement les utilisateurs qu'un
texte tronqué gêne le plus.

`MiniPlayerHost` mesure la carte et passe le résultat aux listes. Aucune
constante ne pouvait être juste, puisque la hauteur dépend de réglages
extérieurs à l'application ; une mesure suit aussi la moindre retouche du
mini-lecteur, ce qu'un nombre rangé dans un autre fichier ne fait pas. Le
`MiniPlayerSpaceEstimate` qui subsiste ne sert qu'à éviter un saut sur la
première image, avant que la mesure n'arrive.

L'extraction sort du même coup l'agencement de `MainActivity`, où il n'était
atteignable par aucun test.

Les trois tests comparent la réserve annoncée à la hauteur réellement occupée,
dans le même environnement — ils ne fixent aucun nombre. Rétablir la constante
de 76 dp les fait tomber tous les trois, et eux seuls sur 258.
@github-actions github-actions Bot added scope: ui Views, components, theming, assets scope: tests Unit and UI tests type: fix Bug fix size: l 200-500 lines labels Aug 18, 2026
@coderabbitai

coderabbitai Bot commented Aug 18, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 08bf8220-b767-4fe2-a6d4-78ddaa31932b

📥 Commits

Reviewing files that changed from the base of the PR and between 3c43074 and c882374.

📒 Files selected for processing (3)
  • app/src/main/java/app/waveflow/MainActivity.kt
  • app/src/main/java/app/waveflow/ui/player/MiniPlayerHost.kt
  • app/src/test/java/app/waveflow/ui/player/MiniPlayerHostTest.kt

Limit details: You’ve used all 2 included reviews currently available. Your 89 included PR review attempts over the past 7 days set your current allowance at 2 reviews per hour.


📝 Walkthrough

Walkthrough

Le changement introduit MiniPlayerHost. Ce composable mesure le mini-lecteur, transmet son remplissage inférieur au contenu et le masque pendant la lecture plein écran. MainActivity utilise ce composant. Des tests vérifient la réserve et la visibilité de la dernière ligne.

Changes

Hébergement du mini-lecteur

Layer / File(s) Summary
Mesure et validation de la réserve inférieure
app/src/main/java/app/waveflow/ui/player/MiniPlayerHost.kt, app/src/test/java/app/waveflow/ui/player/MiniPlayerHostTest.kt
MiniPlayerHost mesure la hauteur réelle de MiniPlayer et transmet cette valeur au contenu. Les tests couvrent les tailles de police normale et doublée, ainsi que la visibilité de la dernière ligne.
Branchement dans MainActivity
app/src/main/java/app/waveflow/MainActivity.kt
MainActivity place MiniPlayerHost autour du NavHost. Le composant retire le remplissage local et centralise les callbacks et l’affichage conditionnel du mini-lecteur.

Estimated code review effort: 3 (Modéré) | ~20 minutes

Merge Risk: ⚪ Minimal · up to c8823

The change dynamically reserves space for the mini-player so the final list item remains visible across font sizes and orientations; no actionable merge-blocking risk remains.

Possibly related PRs

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed Le titre suit Conventional Commits et décrit clairement la correction principale de la réserve sous les listes.
Description check ✅ Passed La description explique le défaut, le correctif et la validation, mais ne fournit pas les sections checklist, captures d’écran ni issues liées du modèle.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/mini-lecteur-en-paysage

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 @coderabbitai help to get the list of available commands.

@InstaZDLL InstaZDLL self-assigned this Aug 18, 2026
@InstaZDLL
InstaZDLL merged commit 9d9c516 into main Aug 18, 2026
3 checks passed
@InstaZDLL
InstaZDLL deleted the fix/mini-lecteur-en-paysage branch August 18, 2026 22:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

scope: tests Unit and UI tests scope: ui Views, components, theming, assets size: l 200-500 lines type: fix Bug fix

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant