Repli de l'Accueil et de l'Atelier : le lien « Ouvrir l'ancien » ouvre l'ancien (STUD-1227) #1690

Merged
hermes-fusion merged 1 commit from hermes/repli-accueil-atelier into main 2026-10-15 12:00:03 +02:00
Collaborator

Branche hermes/repli-accueil-atelier, tête 19b3b2d6, rebasée sur main 1ddf57d1.

Cause. Les deux replis de _tableau/tableau.js avalaient le clic. accueilEchec faisait
e.preventDefault(); t.click(); sur l'onglet caché #o-ancien-accueil ; atelierEchec faisait de
même sur #o-ancien-atelier depuis son lien. Or les gestionnaires de clic ne sont posés que sur les
onglets VISIBLES de la barre (tous.filter(function(x){return !x.hidden;})) : un clic sur un onglet
caché n'appelle personne, et le preventDefault() empêche même le navigateur de poser l'ancre.
L'opérateur cliquait dans le vide.

Remède.

  • les deux replis passent par window.ouvrirOnglet("<id de l'onglet caché>") — la fonction déjà posée
    sur main par le repli de l'Analytique (#1655), réutilisée telle quelle, sans redéfinition ;
  • atelierEchec pose son gestionnaire par c.querySelector("a"), comme accueilEchec ;
  • banc navigateur neuf _tableau/test_navigateur_repli_accueil_atelier.py (Chromium sans tête, le vrai
    tableau.js, le balisage servi, sans réseau).

Le banc, rouge avant, vert après (python3 _tableau/test_navigateur_repli_accueil_atelier.py) :

main 1ddf57d1  -> AssertionError, code 1
  accueil  apres  {ancienAccueil: False, neufAccueil: True}
  atelier  apres  {ancienAtelier: False, neufAtelier: True}
branche 19b3b2d6 -> code 0
  accueil  apres  {ancienAccueil: True,  neufAccueil: False, choisiAncienAccueil: True}
  atelier  apres  {ancienAtelier: True,  neufAtelier: False, choisiAncienAtelier: True}

Portes.

  • python3 _tableau/garde_fous.py : rien à redire, code 0 (tableau.js 865 lignes).
  • python3 _tableau/lancer-tests.py --tout : 183 bancs verts, aucun rouge ; le lanceur sort en 1 sur
    le seul CLIQUET de couverture (cœur 100 %, ensemble 99.0 % < 99.1 %). Mesuré identique sur main
    1ddf57d1 sans ce changement (182 bancs verts, même cliquet) : refus pré-existant, pas de cette carte.
  • npx vitest run : 39 fichiers / 318 tests verts.
  • npx vite build : code 0, dist/ peuplé (app.js 148 495 o, base.js 336 772 o).
  • page réelle (rendu-fige.py, ouverte en file://) : le clic ouvre l'ancien Accueil et l'ancien
    Atelier ; captures sombre/clair, 1600 et 390 dans /home/atelier/captures-t_5d6cc41d-rebase/.

Aucune fusion de ma part. Seuls _tableau/tableau.js et le banc neuf sont touchés.

Branche `hermes/repli-accueil-atelier`, tête `19b3b2d6`, rebasée sur `main` `1ddf57d1`. **Cause.** Les deux replis de `_tableau/tableau.js` avalaient le clic. `accueilEchec` faisait `e.preventDefault(); t.click();` sur l'onglet caché `#o-ancien-accueil` ; `atelierEchec` faisait de même sur `#o-ancien-atelier` depuis son lien. Or les gestionnaires de clic ne sont posés que sur les onglets VISIBLES de la barre (`tous.filter(function(x){return !x.hidden;})`) : un clic sur un onglet caché n'appelle personne, et le `preventDefault()` empêche même le navigateur de poser l'ancre. L'opérateur cliquait dans le vide. **Remède.** - les deux replis passent par `window.ouvrirOnglet("<id de l'onglet caché>")` — la fonction déjà posée sur `main` par le repli de l'Analytique (#1655), réutilisée telle quelle, sans redéfinition ; - `atelierEchec` pose son gestionnaire par `c.querySelector("a")`, comme `accueilEchec` ; - banc navigateur neuf `_tableau/test_navigateur_repli_accueil_atelier.py` (Chromium sans tête, le vrai `tableau.js`, le balisage servi, sans réseau). **Le banc, rouge avant, vert après** (`python3 _tableau/test_navigateur_repli_accueil_atelier.py`) : ``` main 1ddf57d1 -> AssertionError, code 1 accueil apres {ancienAccueil: False, neufAccueil: True} atelier apres {ancienAtelier: False, neufAtelier: True} branche 19b3b2d6 -> code 0 accueil apres {ancienAccueil: True, neufAccueil: False, choisiAncienAccueil: True} atelier apres {ancienAtelier: True, neufAtelier: False, choisiAncienAtelier: True} ``` **Portes.** - `python3 _tableau/garde_fous.py` : `rien à redire`, code 0 (tableau.js 865 lignes). - `python3 _tableau/lancer-tests.py --tout` : 183 bancs verts, aucun rouge ; le lanceur sort en 1 sur le seul CLIQUET de couverture (cœur 100 %, ensemble 99.0 % < 99.1 %). Mesuré identique sur `main` 1ddf57d1 sans ce changement (182 bancs verts, même cliquet) : refus pré-existant, pas de cette carte. - `npx vitest run` : 39 fichiers / 318 tests verts. - `npx vite build` : code 0, `dist/` peuplé (app.js 148 495 o, base.js 336 772 o). - page réelle (`rendu-fige.py`, ouverte en `file://`) : le clic ouvre l'ancien Accueil et l'ancien Atelier ; captures sombre/clair, 1600 et 390 dans `/home/atelier/captures-t_5d6cc41d-rebase/`. Aucune fusion de ma part. Seuls `_tableau/tableau.js` et le banc neuf sont touchés.
Repli de l'Accueil et de l'Atelier : le lien « Ouvrir l'ancien » ouvre l'ancien (STUD-1227)
Some checks failed
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Successful in 22s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Failing after 11s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Successful in 21s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Failing after 11s
03d32d857e
Cause : les deux replis de `tableau.js` avalaient le clic. `accueilEchec` faisait
`e.preventDefault(); t.click();` sur l'onglet caché `#o-ancien-accueil` ; `atelierEchec`
ne posait aucun gestionnaire sur son lien `#o-ancien-atelier`. Or les gestionnaires de
clic ne sont posés que sur les onglets VISIBLES de la barre
(`tous.filter(function(x){return !x.hidden;})`) : un clic sur un onglet caché n'appelle
personne, et le `preventDefault()` empêche même le navigateur de poser l'ancre. Mesuré
dans Chromium sans tête, sur le vrai `tableau.js`, avant correctif : après le clic,
`ancienAccueil=false, neufAccueil=true` et `ancienAtelier=false, neufAtelier=true` —
l'ancien panneau ne s'ouvrait jamais, l'opérateur cliquait dans le vide.

Remède :
- tableau.js : les deux replis passent par `window.ouvrirOnglet("<id de l'onglet caché>")`
  au lieu de `t.click()`. La fonction est posée à côté de `choisir`, sous garde
  `if (!window.ouvrirOnglet)` : la définition du repli de l'Analytique (t_83d870fa,
  PR #1655), quand elle arrivera, fait foi ;
- tableau.js : `atelierEchec` reçoit le gestionnaire de clic que son lien n'avait pas,
  comme `accueilEchec` ;
- banc navigateur `test_navigateur_repli_accueil_atelier.py`, frère de
  `test_navigateur_repli_analytique.py` : après le clic, `#p-ancien-accueil`
  (resp. `#p-atelier`) est ouvert et `#p-accueil` (resp. `#p-atelier-neuf`) fermé,
  l'onglet ancien marqué choisi ; un Svelte monté n'est jamais annoncé en échec ; une
  page sans place de montage ne lève pas. Il exécute le vrai `tableau.js` sur le
  balisage servi (barre d'onglets, quatre panneaux), sans réseau.

Vérifié — banc rouge avant, vert après :
- sur `origin/main` (52de10c3), le banc sort en 1 : AssertionError, « le clic sur le lien
  du repli ouvre #p-ancien-accueil » avec `{ancienAccueil: False, neufAccueil: True}`,
  et pour l'Atelier `{ancienAtelier: False, neufAtelier: True}` ;
- sur la branche, il sort en 0 en 3,4 s, et le relevé donne `{ancienAccueil: True,
  neufAccueil: False, choisiAncienAccueil: True}` / `{ancienAtelier: True,
  neufAtelier: False, choisiAncienAtelier: True}` ;
- page réelle (`rendu-fige.py`), ouverte en file:// : le clic ouvre bien l'ancien
  panneau (captures dans `captures-t_5d6cc41d/`).

Vérifié — portes :
- `python3 _tableau/garde_fous.py` : rien à redire, code 0 (tableau.js 850 lignes / 900).
- `python3 _tableau/lancer-tests.py --tout` : les bancs passent tous (168 verts, aucun
  rouge) ; le launcher sort en 1 sur le CLIQUET de couverture (cœur 99,1 % < 99,4 %,
  ensemble 96,6 % < 99,0 %). Mesuré IDENTIQUE sur `origin/main` (e7886778) sans ce
  changement : le refus est pré-existant, il n'est pas de cette carte.
- `npx vitest run` : 195/196 — `tests/stockage.test.js` échoue (« relevé à 22 h 44 »
  attendu, « relevé hier à 22 h 44 » rendu) parce que son relevé figé est daté du
  14/10 ; mesuré IDENTIQUE sur `origin/main` : banc dépendant de la date, rouge depuis
  le 15/10 à 0 h. Aucun fichier du front n'est touché par cette carte.
Collaborator

fusion-auto : pas de fusion, la CI est rouge (Front Svelte). Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.

`fusion-auto` : pas de fusion, la CI est rouge (Front Svelte). Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.
Collaborator

fusion-auto : pas de fusion, la PR est en conflit avec main : à rebaser. Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.

`fusion-auto` : pas de fusion, la PR est en conflit avec main : à rebaser. Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.
hermes-bot force-pushed hermes/repli-accueil-atelier from 03d32d857e
Some checks failed
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Successful in 22s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Failing after 11s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Successful in 21s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Failing after 11s
to 19b3b2d646
All checks were successful
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Successful in 1m42s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Successful in 1m36s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Successful in 8m13s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Successful in 8m22s
2026-10-15 11:34:35 +02:00
Compare
hermes-fusion deleted branch hermes/repli-accueil-atelier 2026-10-15 12:00: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!1690
No description provided.