FOXA-2737 : le bouton de la bande-annonce reste monté, donc focusable #1008

Merged
foXaCe merged 1 commit from passe-20261018-153000-herotrailer into main 2026-10-18 12:50:50 +02:00
Owner

Résumé

FOXA-2737 — le bouton de la bande-annonce reste monté pendant la lecture, donc focusable.

  • a83be3aa2 FOXA-2737 : le bouton de la bande-annonce reste monté, donc focusable

Le bloc d'actions du héros — celui qui contient le bouton onTrailerClick — était retiré de la
composition pendant la lecture. Il reste maintenant monté quand « masquer le logo pendant la
bande-annonce » est actif, et c'est un alpha animé qui le rend invisible.

Pourquoi

FOXA-2737 — démonter le bloc, c'est démonter le bouton : le focus se perd et les touches de la
télécommande n'ouvrent plus le contrôleur. Le défaut ne se voyait que lorsque le réglage « masquer
le logo pendant la bande-annonce » était actif.

// avant — le bouton disparaît avec le bloc
AnimatedVisibility(visible = !isTrailerPlaying, …) { Column { … } }

// après — le bloc reste, l'alpha le cache
visible = !isTrailerPlaying || hideLogoDuringTrailer
Column(modifier = Modifier.alpha(heroActionsAlpha)) { … }

Un élément à alpha = 0 reste focusable ; un élément démonté ne l'est plus — c'est toute la
différence, et elle ne se voit pas à l'écran. Sans le réglage, le comportement est inchangé : le
bloc se démonte comme avant.

Ce qui a été mesuré

Banc joué, pas déclaré :

./gradlew :app:testFullDebugUnitTest -Pnuvio.android.distribution=full \
    --tests '*LeBoutonDeLaBandeAnnonceResteMonteTest*'
BUILD SUCCESSFUL — 3 tests, 0 échec

Dont un qui vérifie que le bouton vit toujours dans le bloc qui fond : sans lui, les deux autres
resteraient verts après un déménagement du bouton et ne prouveraient plus rien.

⚠ Ce banc lit la source vivante, et c'est un choix mesuré : aucun banc du dépôt n'instancie
HeroSection (une vingtaine de paramètres, des painters, un état de bande-annonce), et un test qui
la monterait de travers mesurerait sa propre mise en scène. Ce qui est verrouillé est la cause —
la forme qui garde le bouton dans la composition. Le geste se vérifie à la manette.

Porte jouée par la forge, pas sur le poste : « Porte / porte* » est le seul contexte qu'exige la
protection de main, et la fusion attend son vert.

Scope boundaries

Le comportement sans le réglage est inchangé (démontage). Aucun autre bloc du héros n'est touché :
le titre et le texte d'invite gardent leurs AnimatedVisibility d'origine.

## Résumé FOXA-2737 — le bouton de la bande-annonce reste monté pendant la lecture, donc focusable. - a83be3aa2 FOXA-2737 : le bouton de la bande-annonce reste monté, donc focusable Le bloc d'actions du héros — celui qui **contient** le bouton `onTrailerClick` — était retiré de la composition pendant la lecture. Il reste maintenant **monté** quand « masquer le logo pendant la bande-annonce » est actif, et c'est un **alpha animé** qui le rend invisible. ## Pourquoi FOXA-2737 — démonter le bloc, c'est démonter le bouton : le focus se perd et les touches de la télécommande n'ouvrent plus le contrôleur. Le défaut ne se voyait que lorsque le réglage « masquer le logo pendant la bande-annonce » était actif. ```kotlin // avant — le bouton disparaît avec le bloc AnimatedVisibility(visible = !isTrailerPlaying, …) { Column { … } } // après — le bloc reste, l'alpha le cache visible = !isTrailerPlaying || hideLogoDuringTrailer Column(modifier = Modifier.alpha(heroActionsAlpha)) { … } ``` Un élément à `alpha = 0` reste focusable ; un élément démonté ne l'est plus — c'est toute la différence, et elle ne se voit pas à l'écran. Sans le réglage, le comportement est **inchangé** : le bloc se démonte comme avant. ## Ce qui a été mesuré Banc joué, pas déclaré : ``` ./gradlew :app:testFullDebugUnitTest -Pnuvio.android.distribution=full \ --tests '*LeBoutonDeLaBandeAnnonceResteMonteTest*' BUILD SUCCESSFUL — 3 tests, 0 échec ``` Dont un qui vérifie que le bouton vit **toujours dans le bloc qui fond** : sans lui, les deux autres resteraient verts après un déménagement du bouton et ne prouveraient plus rien. ⚠ **Ce banc lit la source vivante**, et c'est un choix mesuré : aucun banc du dépôt n'instancie `HeroSection` (une vingtaine de paramètres, des painters, un état de bande-annonce), et un test qui la monterait de travers mesurerait sa propre mise en scène. Ce qui est verrouillé est la **cause** — la forme qui garde le bouton dans la composition. Le geste se vérifie à la manette. Porte jouée par la forge, pas sur le poste : « Porte / porte* » est le seul contexte qu'exige la protection de `main`, et la fusion attend son vert. ## Scope boundaries Le comportement **sans** le réglage est inchangé (démontage). Aucun autre bloc du héros n'est touché : le titre et le texte d'invite gardent leurs `AnimatedVisibility` d'origine.
FOXA-2737 : le bouton de la bande-annonce reste monté, donc focusable
All checks were successful
PR Template Check / validate_pr_body (pull_request) Successful in 1s
Porte / porte (pull_request) Successful in 12m50s
a83be3aa21
Le bloc d'actions du héros — celui qui CONTIENT le bouton `onTrailerClick` — était retiré de la
composition pendant la lecture :

    AnimatedVisibility(visible = !isTrailerPlaying, …) { Column { … } }

Démonter le bloc, c'est démonter le bouton : le focus se perd et les touches de la télécommande
n'ouvrent plus le contrôleur. Le défaut ne se voyait que « masquer le logo pendant la bande-annonce »
actif.

Ce qu'on fait à la place, comme l'amont le fait : le bloc reste MONTÉ quand ce réglage est actif
(`visible = !isTrailerPlaying || hideLogoDuringTrailer`) et c'est un **alpha animé**
(`heroActionsAlpha`) qui le rend invisible. Un élément à `alpha = 0` reste focusable ; un élément
démonté ne l'est plus — c'est toute la différence, et elle ne se voit pas à l'écran.

Le comportement sans le réglage est inchangé : le bloc se démonte comme avant.

3 tests, dont un qui vérifie que le bouton vit TOUJOURS dans le bloc qui fond — sans lui, les deux
autres resteraient verts après un déménagement du bouton et ne prouveraient plus rien.

    ./gradlew :app:testFullDebugUnitTest -Pnuvio.android.distribution=full \
        --tests '*LeBoutonDeLaBandeAnnonceResteMonteTest*'
    BUILD SUCCESSFUL, 3 tests, 0 échec

⚠ Ce banc lit la source vivante : aucun banc du dépôt n'instancie `HeroSection` (une vingtaine de
paramètres, des painters, un état de bande-annonce), et un test qui la monterait de travers
mesurerait sa propre mise en scène. Ce qui est verrouillé est la CAUSE — la forme qui garde le
bouton dans la composition. Le geste se vérifie à la manette.
foXaCe merged commit cf12bbc94d into main 2026-10-18 12:50:50 +02:00
foXaCe deleted branch passe-20261018-153000-herotrailer 2026-10-18 12:50:51 +02:00
Sign in to join this conversation.
No reviewers
No labels
montee-majeure
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
foXaCe/NuvioTV!1008
No description provided.