Onglet Vidéos (STUD-1225) : le lien vient de la base, plus de soulignement au repos #1640

Merged
hermes-fusion merged 1 commit from hermes/onglet-videos-svelte into main 2026-10-14 21:15:03 +02:00
Collaborator

Ce que la carte demandait, et ce qui existait déjà

L'onglet Vidéos Svelte (STUD-1225) est déjà dans main : front/src/Videos.svelte, l'instantané /api/videos, #o-videos dans la barre et l'ancien onglet Python sous #o-ancien-videos. Je ne l'ai donc pas réécrit (règle de CHARTE-UI.md : on n'écrase jamais une version d'onglet en revue ou validée). J'ai vérifié sa parité avec l'inventaire (commentaire n° 166) et corrigé le seul écart d'homogénéité mesuré qui le concernait.

L'écart, mesuré

Videos.svelte:520 recopiait text-xs text-link hover:underline sans la classe de la base : les titres sortaient soulignés au repos, seul onglet dans ce cas.

$ python3 _tableau/front/homogeneite.py --sans-captures          # sur la build d'origin/main
ÉCART NOUVEAU ... (admis) lien, repos : textDecorationLine n'a pas une seule valeur
homogénéité : 40 relevés (Chrome/155.0.8059.79), 5 écarts connus, 0 nouveaux, 0 résolus

Mesuré au pixel, la même page servie par front/apercu.py :

capture traits bleus sous les titres
avant (origin/main) 5
après (cette branche), bureau-sombre / bureau-clair / téléphone-sombre / téléphone-clair 0 / 0 / 0 / 0

Et par le protocole DevTools, sur la build de cette branche : 47 liens, 47 en textDecorationLine: none au repos, 46 portant data-base="lien" (le 47ᵉ est le lien d'en-tête de la page d'aperçu, qui n'appartient pas à l'onglet).

Le remède

L'onglet compose la base au lieu de la recopier : LIEN (lib/base/styles.js, exporté par lib/base/index.js) porte no-underline et le contour de focus de la charte ; Videos.svelte n'ajoute que son line-clamp-2. Aucune fonction retirée (l'aria-label et le titre sur deux lignes restent).

homogeneite.py --relever retire l'écart admis devenu faux : la liste des écarts connus ne fait que fondre (5 → 4), et aucun écart nouveau n'apparaît.

Tests

$ npx vitest run
Test Files  21 passed (21)   Tests  170 passed (170)

tests/rendu-videos.test.js (nouveau) : parité des sections et des dix colonnes avec l'inventaire, dates de la charte (« mesures du mar. 13/10 à 16 h 12 »), liens de la base (c'est lui qui tombe sur l'ancien lien : vu rouge avant le correctif), aucune bulle native, zéro emoji, paragraphes repliés, squelette sans texte.

$ npx vite build
dist/index.html 1 804 o — dist/ 902 352 o — 13 fichiers JS > 5 Ko   (les seuils de la CI sont tenus)

$ python3 _tableau/test_homogeneite.py
OK : homogénéité et garde anti-habillage refusent ce qu'elles doivent refuser
  dont : passage réel sur la build : 0 nouveau, 0 résolu, 4 écarts connus

Bancs verts aussi : test_onglet_videos.py, test_videos_donnees.py, test_tableau_bord_page.py, test_charte_svelte.py, test_charte_ui.py, test_captures_reference.py.

Captures (bureau 1600×1000, téléphone 390×844, clair et sombre)

Quatre captures de la page d'essai, plus la même zone avant / après empilée : les titres ne sont plus soulignés, rien d'autre ne bouge (la carte du chiffre clé, les filtres, les tableaux, les boutons « Signaler à Mika » et « Nouvelle vignette », les replis et le pied de tableau sont identiques). En clair comme en sombre, aucune couleur hors des jetons.

Ce que cette PR ne touche pas

  • La base (src/lib/base/) : elle a un seul porteur. Le composant Lien.svelte n'accepte ni aria-label ni un titre sur deux lignes ; c'est pourquoi je prends sa constante LIEN plutôt que le composant, sans perdre la bulle de lecture d'écran.
  • L'API /api/videos, l'onglet Python #o-ancien-videos, la barre d'onglets : ils restent tels quels.

Points relevés pendant la vérification, non corrigés ici (hors périmètre du fichier)

  1. Repli 28 jours : videos[].relancer est toujours faux, donc le filtre « Miniature → à relancer » de « Vidéos publiques » ne renvoie rien alors que « Miniatures à relancer » liste des longs. Côté données (videos_donnees.py / onglet_top.py), pas côté onglet.
  2. note_revoir porte l'accord manquant « 5 chaînes n'a pas encore de relevé » (onglet_top.py:331-332), recopié tel quel par l'API.
  3. À 390 px, la rangée de puces de BarreOutils (base) est rognée à droite : même comportement sur Processus, Calendrier et Atelier, donc pas un écart de cet onglet.
## Ce que la carte demandait, et ce qui existait déjà L'onglet Vidéos Svelte (STUD-1225) est **déjà dans `main`** : `front/src/Videos.svelte`, l'instantané `/api/videos`, `#o-videos` dans la barre et l'ancien onglet Python sous `#o-ancien-videos`. Je ne l'ai donc **pas réécrit** (règle de `CHARTE-UI.md` : on n'écrase jamais une version d'onglet en revue ou validée). J'ai vérifié sa **parité** avec l'inventaire (commentaire n° 166) et corrigé **le seul écart d'homogénéité mesuré** qui le concernait. ## L'écart, mesuré `Videos.svelte:520` recopiait `text-xs text-link hover:underline` **sans la classe de la base** : les titres sortaient **soulignés au repos**, seul onglet dans ce cas. $ python3 _tableau/front/homogeneite.py --sans-captures # sur la build d'origin/main ÉCART NOUVEAU ... (admis) lien, repos : textDecorationLine n'a pas une seule valeur homogénéité : 40 relevés (Chrome/155.0.8059.79), 5 écarts connus, 0 nouveaux, 0 résolus Mesuré au pixel, la même page servie par `front/apercu.py` : | capture | traits bleus sous les titres | |---|---| | avant (origin/main) | **5** | | après (cette branche), bureau-sombre / bureau-clair / téléphone-sombre / téléphone-clair | **0 / 0 / 0 / 0** | Et par le protocole DevTools, sur la build de cette branche : **47 liens, 47 en `textDecorationLine: none` au repos**, 46 portant `data-base="lien"` (le 47ᵉ est le lien d'en-tête de la page d'aperçu, qui n'appartient pas à l'onglet). ## Le remède L'onglet **compose la base** au lieu de la recopier : `LIEN` (`lib/base/styles.js`, exporté par `lib/base/index.js`) porte `no-underline` et le contour de focus de la charte ; `Videos.svelte` n'ajoute que son `line-clamp-2`. Aucune fonction retirée (l'`aria-label` et le titre sur deux lignes restent). `homogeneite.py --relever` retire l'écart admis devenu faux : la liste des écarts connus ne fait que fondre (5 → 4), et aucun écart nouveau n'apparaît. ## Tests $ npx vitest run Test Files 21 passed (21) Tests 170 passed (170) `tests/rendu-videos.test.js` (nouveau) : parité des sections et des dix colonnes avec l'inventaire, dates de la charte (« mesures du mar. 13/10 à 16 h 12 »), **liens de la base** (c'est lui qui tombe sur l'ancien lien : vu rouge avant le correctif), aucune bulle native, zéro emoji, paragraphes repliés, squelette sans texte. $ npx vite build dist/index.html 1 804 o — dist/ 902 352 o — 13 fichiers JS > 5 Ko (les seuils de la CI sont tenus) $ python3 _tableau/test_homogeneite.py OK : homogénéité et garde anti-habillage refusent ce qu'elles doivent refuser dont : passage réel sur la build : 0 nouveau, 0 résolu, 4 écarts connus Bancs verts aussi : `test_onglet_videos.py`, `test_videos_donnees.py`, `test_tableau_bord_page.py`, `test_charte_svelte.py`, `test_charte_ui.py`, `test_captures_reference.py`. ## Captures (bureau 1600×1000, téléphone 390×844, clair et sombre) Quatre captures de la page d'essai, plus la même zone **avant / après** empilée : les titres ne sont plus soulignés, rien d'autre ne bouge (la carte du chiffre clé, les filtres, les tableaux, les boutons « Signaler à Mika » et « Nouvelle vignette », les replis et le pied de tableau sont identiques). En clair comme en sombre, aucune couleur hors des jetons. ## Ce que cette PR ne touche pas - **La base** (`src/lib/base/`) : elle a un seul porteur. Le composant `Lien.svelte` n'accepte ni `aria-label` ni un titre sur deux lignes ; c'est pourquoi je prends sa constante `LIEN` plutôt que le composant, sans perdre la bulle de lecture d'écran. - L'API `/api/videos`, l'onglet Python `#o-ancien-videos`, la barre d'onglets : ils restent tels quels. ## Points relevés pendant la vérification, **non corrigés ici** (hors périmètre du fichier) 1. **Repli 28 jours** : `videos[].relancer` est toujours faux, donc le filtre « Miniature → à relancer » de « Vidéos publiques » ne renvoie rien alors que « Miniatures à relancer » liste des longs. Côté données (`videos_donnees.py` / `onglet_top.py`), pas côté onglet. 2. `note_revoir` porte l'accord manquant « 5 chaînes n'a pas encore de relevé » (`onglet_top.py:331-332`), recopié tel quel par l'API. 3. À 390 px, la rangée de puces de `BarreOutils` (base) est rognée à droite : même comportement sur Processus, Calendrier et Atelier, donc pas un écart de cet onglet.
Vidéos : le lien vient de la base (LIEN), plus de soulignement au repos (STUD-1225)
All checks were successful
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Successful in 15s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Successful in 12s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Successful in 14s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Successful in 13s
a94e04ea75
Cause, mesurée le 2026-10-14 par `_tableau/front/homogeneite.py` sur la build : les liens de l'onglet
Vidéos sortaient soulignés au repos (`textDecorationLine: underline`) là où l'Accueil, l'Atelier et
Processus sont à `none` ; l'écart « lien, repos : textDecorationLine n'a pas une seule valeur » était
admis dans `homogeneite-connus.json`, et la capture d'avant le correctif porte cinq traits bleus sous
les titres. `Videos.svelte` recopiait `text-xs text-link hover:underline` sans la classe de la base.

Remède : l'onglet compose `LIEN` (`lib/base/styles.js`, exporté par `lib/base/index.js`) et n'ajoute que
son `line-clamp-2` ; le contour de focus de la charte revient avec. L'écart connu est relevé
(`homogeneite.py --relever`) : plus aucun lien souligné au repos dans les six onglets mesurés.

Banc : `tests/rendu-videos.test.js` — la parité avec l'inventaire de l'onglet Python, les dates de la
charte, les liens de la base, les paragraphes repliés et le squelette ; vu rouge sur l'ancien lien
avant le correctif.
hermes-fusion deleted branch hermes/onglet-videos-svelte 2026-10-14 21:15:03 +02:00
Collaborator

Fusionnée automatiquement par fusion-auto (forge) : CI verte (Rust et Front Svelte), PR relue (étiquette relu), sans conflit.

Fusionnée automatiquement par `fusion-auto` (forge) : CI verte (Rust et Front Svelte), PR relue (étiquette `relu`), sans conflit.
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
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/studio!1640
No description provided.