FOXA-894 : le panneau des sources ne re-défile plus à chaque source qui arrive #1012

Merged
foXaCe merged 1 commit from passe-20261018-170000-defilementsources into main 2026-10-18 16:36:53 +02:00
Owner

Résumé

FOXA-894 — le panneau des sources ne re-défile plus vers la source en cours à chaque source qui
arrive.

  • b4f78dd58 FOXA-894 : le panneau des sources ne redefile plus a chaque source qui arrive

Pourquoi

Le défilement avait pour clé currentStreamIndex ET uiState.sourceFilteredStreams.size :

LaunchedEffect(currentStreamIndex, uiState.sourceFilteredStreams.size) {
    runCatching { listState.scrollToItem(currentStreamIndex) }
}

Chaque source qui arrivait recalait donc la liste sur la source en cours, et la ligne visée se
dérobait sous le D-pad
— « on vise une source, elle se dérobe ».

⚠ La moitié « focus » du ticket était déjà corrigée (FOXA-938) : le rejeu est borné et ne
dépend pas du nombre de sources. C'est le défilement qui restait sur la clé de la taille, et
personne ne l'avait repris.

Le défilement n'a qu'un rôle : faire composer la rangée visée à l'ouverture, pour qu'elle puisse
prendre le focus. Une fois cela fait, une source qui arrive n'ajoute rien à cette raison.

Ce qui a été mesuré

Politique nommée fautIlDefilerVersLaSource(defilementDejaFait, indexCible, nombreDeSources),
et 5 tests :

ce qui est mesuré comment
la première ouverture défile (false, 3, 12) → true
une source qui arrive ne re-défile plus (true, 3, 13) → false
une cible pas encore arrivée ne consomme pas le défilement (false, 5, 3) → false — sinon la rangée ne serait jamais amenée à l'écran
aucune source en cours ne fait pas défiler (false, -1, 8) → false
l'effet appelle la politique la source contient fautIlDefilerVersLaSource( et le drapeau d'ouverture
./gradlew :app:testFullDebugUnitTest -Pnuvio.android.distribution=full \
    --tests '*LeDefilementDesSourcesNeSeRepetePasTest*'
BUILD SUCCESSFUL — 5 tests, 0 échec

Porte jouée par la forge : « Porte / porte* » est le seul contexte qu'exige la protection de main.

Scope boundaries

Le focus d'ouverture (FOXA-938) n'est pas touché. Aucune autre clé d'effet du panneau ne change.

## Résumé FOXA-894 — le panneau des sources ne re-défile plus vers la source en cours à chaque source qui arrive. - b4f78dd58 FOXA-894 : le panneau des sources ne redefile plus a chaque source qui arrive ## Pourquoi Le défilement avait pour clé `currentStreamIndex` **ET** `uiState.sourceFilteredStreams.size` : ```kotlin LaunchedEffect(currentStreamIndex, uiState.sourceFilteredStreams.size) { runCatching { listState.scrollToItem(currentStreamIndex) } } ``` Chaque source qui arrivait recalait donc la liste sur la source en cours, et **la ligne visée se dérobait sous le D-pad** — « on vise une source, elle se dérobe ». ⚠ **La moitié « focus » du ticket était déjà corrigée** (`FOXA-938`) : le rejeu est borné et ne dépend pas du nombre de sources. C'est le **défilement** qui restait sur la clé de la taille, et personne ne l'avait repris. Le défilement n'a qu'un rôle : faire composer la rangée visée **à l'ouverture**, pour qu'elle puisse prendre le focus. Une fois cela fait, une source qui arrive n'ajoute rien à cette raison. ## Ce qui a été mesuré Politique nommée `fautIlDefilerVersLaSource(defilementDejaFait, indexCible, nombreDeSources)`, et 5 tests : | ce qui est mesuré | comment | |---|---| | la première ouverture défile | `(false, 3, 12)` → `true` | | une source qui arrive ne re-défile plus | `(true, 3, 13)` → `false` | | une cible pas encore arrivée ne consomme pas le défilement | `(false, 5, 3)` → `false` — sinon la rangée ne serait **jamais** amenée à l'écran | | aucune source en cours ne fait pas défiler | `(false, -1, 8)` → `false` | | l'effet appelle la politique | la source contient `fautIlDefilerVersLaSource(` et le drapeau d'ouverture | ``` ./gradlew :app:testFullDebugUnitTest -Pnuvio.android.distribution=full \ --tests '*LeDefilementDesSourcesNeSeRepetePasTest*' BUILD SUCCESSFUL — 5 tests, 0 échec ``` Porte jouée par la forge : « Porte / porte* » est le seul contexte qu'exige la protection de `main`. ## Scope boundaries Le focus d'ouverture (`FOXA-938`) n'est pas touché. Aucune autre clé d'effet du panneau ne change.
FOXA-894 : le panneau des sources ne redefile plus a chaque source qui arrive
All checks were successful
PR Template Check / validate_pr_body (pull_request) Successful in 0s
Porte / porte (pull_request) Successful in 14m8s
b4f78dd586
Le defilement vers la source en cours avait pour cle `currentStreamIndex` ET
`sourceFilteredStreams.size` : chaque source qui arrivait recalais la liste, et la ligne visee se
derobait sous le D-pad.

Le focus, lui, etait deja corrige (`FOXA-938`) : le rejeu est borne et ne depend pas du nombre de
sources. C'est le DEFILEMENT qui restait sur la cle de la taille — la moitie du ticket que personne
n'avait reprise.

La politique est nommee (`fautIlDefilerVersLaSource`) et testee : une seule fois, et seulement
quand la cible existe deja. Une cible pas encore arrivee ne consomme pas le defilement — sinon la
rangee visee ne serait jamais amenee a l'ecran quand elle arrive.
foXaCe scheduled this pull request to auto merge when all checks succeed 2026-10-18 16:14:29 +02:00
foXaCe merged commit 593789e1ff into main 2026-10-18 16:36:53 +02:00
foXaCe deleted branch passe-20261018-170000-defilementsources 2026-10-18 16:36:53 +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!1012
No description provided.