Calendrier : les habillages locaux passent aux composants de la base (STUD-1155) #1684

Merged
hermes-fusion merged 3 commits from hermes/calendrier-habillages into main 2026-10-15 16:15:05 +02:00
Collaborator

STUD-1155 — les onze habillages locaux de _tableau/front/src/Calendrier.svelte (vingt occurrences) passent aux
composants de la base, et leurs exceptions quittent _tableau/front/habillage-exceptions.json.

Remplacements

Habillage local Occurrences Composant / classe du socle
span rounded-full (+ bg-input) 8 + 1 Point (pastille de chaîne), le neutre de la base pour l'exemple de légende
section bg-card ring-2 ring-inset ring-primary rounded-md shadow-soft 6 JourSemaine (nouvelle pièce, voir plus bas)
li border-b + li border-b-0 4 LigneCarte (la même ligne de liste que l'onglet Top)
Skeleton rounded-xl 1 Skeleton sans rayon écrit dans l'onglet (comme l'Accueil)
section (point de la vue Mois) — POINT_ETAT (socle) pour l'état + Point pour la couleur

JourSemaine (_tableau/front/src/lib/composants/JourSemaine.svelte) : la colonne de jour de la vue Semaine, en
« case » de calendrier variante semaine (data-base="case" data-base-variante="semaine"). C'est la seule pièce
nouvelle ; elle est hors de lib/base/, comme les quatre pièces du Top (Miniature, PisteDePart,
PastilleChaine, LigneCarte) et la Courbe de l'Analytique, à y reprendre : la base des onglets a un seul
porteur, je ne l'ai pas touchée. Sa raison d'être : la base ne sait pas encore dessiner une carte de jour de semaine
(Case porte les variantes creneau et jour du mois, Card.Root compte comme une carte et changerait les écarts
d'homogénéité du relevé). Le rendu est identique au pixel près.

Fichier d'exceptions : 38 occurrences admises avant, 18 après. Aucune ligne n'est ajoutée ni modifiée : seules
les onze entrées Calendrier.svelte sont retirées (--relever). Les 18 restantes portent sur Demo, Processus et
SemaineAccueil (autres tickets).

Preuves (sorties brutes)

$ python3 _tableau/front/garde-habillage.py
habillage local : 18 occurrence(s) dans les onglets, 18 admise(s) par exception, 0 refus          (code 0)

$ cd _tableau/front && npx vitest run
Test Files  26 passed (26)
     Tests  196 passed (196)

$ npx vite build
✓ built in 95ms            dist/index.html 1804 octets, JS > 5 Ko : oui

$ python3 _tableau/test_charte_ui.py
OK : charte tenue (257 classes au socle, 0 locales à résorber, aucune couleur en dur)             (code 0)

$ python3 _tableau/test_charte_svelte.py
OK : la garde Svelte refuse le fautif (23 écarts) et laisse passer le front réel                  (code 0)

$ python3 _tableau/front/homogeneite.py --sans-captures
homogénéité : 44 relevés (Chrome/155.0.8059.79), 4 écarts connus, 0 nouveaux, 0 résolus           (code 0)

$ python3 _tableau/lancer-tests.py --sans-couverture
161 bancs verts.                                                                                 (code 0)

Ce que le remplacement change à l'écran (styles calculés relevés dans Chrome, build de main contre build de
cette branche, 3 vues × bureau sombre et téléphone clair) : les sept colonnes de jour et les points du mois gardent la
même boîte, le même fond, le même rayon et la même ombre ; la légende des chaînes s'élargit de 4 px (Point écarte de
8 px) ; les lignes des Cadences au téléphone gagnent 8 px de hauteur (l'écart de LigneCarte) ; la pastille de
l'exemple de légende passe du gris --input au neutre de Point (--text-secondary). Aucun emoji dans les deux
builds. À trancher : le cerclage rouge du point vide du mois est maintenant porté par l'enveloppe de Point et
paraît carré (il était rond, border-radius 999px → 0px) ; Point gagnerait un état (ton) dans lib/base/ pour
retrouver le rond.

Fichier chaud : la PR #1677 (hermes/calendrier-semaine-shorts, vue Semaine, même fichier) n'était pas fusionnée
au départ de cette passe ; cette branche est donc partie de main seule (b89fa2a8), comme la carte le prévoit.
Les deux PR touchent Calendrier.svelte : la seconde fusionnée aura un rebase à faire.

Hors périmètre, inchangé : les autres onglets, l'API Rust, le contenu des cases, les trois vues elles-mêmes.

**STUD-1155** — les onze habillages locaux de `_tableau/front/src/Calendrier.svelte` (vingt occurrences) passent aux composants de la base, et leurs exceptions quittent `_tableau/front/habillage-exceptions.json`. **Remplacements** | Habillage local | Occurrences | Composant / classe du socle | |---|---|---| | `span rounded-full` (+ `bg-input`) | 8 + 1 | `Point` (pastille de chaîne), le neutre de la base pour l'exemple de légende | | `section bg-card ring-2 ring-inset ring-primary rounded-md shadow-soft` | 6 | `JourSemaine` (nouvelle pièce, voir plus bas) | | `li border-b` + `li border-b-0` | 4 | `LigneCarte` (la même ligne de liste que l'onglet Top) | | `Skeleton rounded-xl` | 1 | `Skeleton` sans rayon écrit dans l'onglet (comme l'Accueil) | | `section` (point de la vue Mois) | — | `POINT_ETAT` (socle) pour l'état + `Point` pour la couleur | **`JourSemaine`** (`_tableau/front/src/lib/composants/JourSemaine.svelte`) : la colonne de jour de la vue Semaine, en « case » de calendrier variante `semaine` (`data-base="case" data-base-variante="semaine"`). C'est la seule pièce nouvelle ; elle est **hors de `lib/base/`**, comme les quatre pièces du Top (`Miniature`, `PisteDePart`, `PastilleChaine`, `LigneCarte`) et la `Courbe` de l'Analytique, **à y reprendre** : la base des onglets a un seul porteur, je ne l'ai pas touchée. Sa raison d'être : la base ne sait pas encore dessiner une carte de jour de semaine (`Case` porte les variantes `creneau` et `jour` du mois, `Card.Root` compte comme une carte et changerait les écarts d'homogénéité du relevé). Le rendu est identique au pixel près. **Fichier d'exceptions** : `38 occurrences admises avant, 18 après`. Aucune ligne n'est ajoutée ni modifiée : seules les onze entrées `Calendrier.svelte` sont retirées (`--relever`). Les 18 restantes portent sur Demo, Processus et SemaineAccueil (autres tickets). **Preuves (sorties brutes)** ``` $ python3 _tableau/front/garde-habillage.py habillage local : 18 occurrence(s) dans les onglets, 18 admise(s) par exception, 0 refus (code 0) $ cd _tableau/front && npx vitest run Test Files 26 passed (26) Tests 196 passed (196) $ npx vite build ✓ built in 95ms dist/index.html 1804 octets, JS > 5 Ko : oui $ python3 _tableau/test_charte_ui.py OK : charte tenue (257 classes au socle, 0 locales à résorber, aucune couleur en dur) (code 0) $ python3 _tableau/test_charte_svelte.py OK : la garde Svelte refuse le fautif (23 écarts) et laisse passer le front réel (code 0) $ python3 _tableau/front/homogeneite.py --sans-captures homogénéité : 44 relevés (Chrome/155.0.8059.79), 4 écarts connus, 0 nouveaux, 0 résolus (code 0) $ python3 _tableau/lancer-tests.py --sans-couverture 161 bancs verts. (code 0) ``` **Ce que le remplacement change à l'écran** (styles calculés relevés dans Chrome, build de `main` contre build de cette branche, 3 vues × bureau sombre et téléphone clair) : les sept colonnes de jour et les points du mois gardent la même boîte, le même fond, le même rayon et la même ombre ; la légende des chaînes s'élargit de 4 px (`Point` écarte de 8 px) ; les lignes des Cadences au téléphone gagnent 8 px de hauteur (l'écart de `LigneCarte`) ; la pastille de l'exemple de légende passe du gris `--input` au neutre de `Point` (`--text-secondary`). Aucun emoji dans les deux builds. **À trancher** : le cerclage rouge du point vide du mois est maintenant porté par l'enveloppe de `Point` et paraît carré (il était rond, `border-radius 999px → 0px`) ; `Point` gagnerait un état (`ton`) dans `lib/base/` pour retrouver le rond. **Fichier chaud** : la PR #1677 (`hermes/calendrier-semaine-shorts`, vue Semaine, même fichier) n'était pas fusionnée au départ de cette passe ; cette branche est donc **partie de `main` seule** (b89fa2a8), comme la carte le prévoit. Les deux PR touchent `Calendrier.svelte` : la seconde fusionnée aura un rebase à faire. **Hors périmètre, inchangé** : les autres onglets, l'API Rust, le contenu des cases, les trois vues elles-mêmes.
Calendrier : les habillages locaux passent aux composants de la base (STUD-1155)
Some checks failed
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Successful in 26s
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 12s
66b9aa7c2a
Cause. L'onglet écrivait lui-même onze habillages — fond de carte, rayon, ombre et
cerclage d'aujourd'hui d'une colonne de jour, filets et retraits des deux lignes de
liste, rayons des pastilles, rayon du squelette de chargement — soit vingt occurrences
tolérées par `habillage-exceptions.json` depuis la garde STUD-1185. Un onglet qui
s'habille dérive tout seul : c'est l'écart d'homogénéité relevé à l'œil le 13/10.

Remède. La pastille de chaîne vient de `Point` (ligne « En danger », légende des
chaînes, titre de la fiche, case de créneau, point du mois, lignes des Cadences) ; les
deux lignes de liste de `LigneCarte` ; le squelette de chargement d'un `Skeleton` sans
rayon écrit dans l'onglet ; le point de la vue Mois garde son cerclage d'état par
`POINT_ETAT` (le socle) ; la colonne de jour de la vue Semaine devient `JourSemaine`,
une pièce hors de la base comme les quatre du Top et la `Courbe` de l'Analytique, à y
reprendre (la base des onglets a un seul porteur). Le fichier d'exceptions perd ses onze
entrées `Calendrier.svelte` : 38 occurrences admises avant, 18 après, toutes aux autres
onglets.

Mesure. `garde-habillage.py` : 0 refus, plus aucune entrée `Calendrier.svelte`.
`npx vitest run` : 26 fichiers, 196 cas, 0 échec. `npx vite build` : 0, `dist/index.html`
et des JS de taille réelle. `test_charte_ui.py`, `test_charte_svelte.py`,
`lancer-tests.py --sans-couverture` : 161 bancs verts. `homogeneite.py --sans-captures` :
44 relevés, 0 écart nouveau, 0 résolu. Styles calculés avant / après : les sept colonnes
de jour et les points du mois gardent la même boîte, le même fond, le même rayon et la
même ombre ; la légende des chaînes s'élargit de 4 px, les lignes des Cadences au
téléphone prennent 8 px de hauteur (l'écart de `LigneCarte`), la pastille de l'exemple de
légende passe au neutre de `Point` (`--text-secondary`), et le cerclage du point vide du
mois est porté par son enveloppe — sa forme carrée reste à trancher dans la base.
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é.
Banc du stockage : figer l'horloge du rendu, qui change de mot après minuit
All checks were successful
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Successful in 24s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Successful in 14s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Successful in 35s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Successful in 16s
542e53401a
Cause. Le banc STUD-1238 (`front/tests/stockage.test.js`) rend l'onglet Processus avec
l'horloge de la machine, alors que son relevé figé est daté du 14/10 à 22 h 44. Avant
minuit, `moment` écrit « relevé à 22 h 44 » et l'assertion passe ; après minuit, le même
relevé devient « hier à 22 h 44 » et le banc tombe — mesuré le 2026-10-15 à 00 h 10, sur
`main` seule comme sur cette branche. Conséquence : le CI `pc-studio` de toute branche
poussée cette nuit est rouge pour cette seule raison, et rien ne peut plus se fusionner.

Remède. Le banc fige son horloge autour du rendu (`renduA`, `vi.useFakeTimers`, le même
geste que le relevé d'homogénéité qui fige l'horloge du navigateur), et un cas de plus
éprouve les deux mots de part et d'autre de minuit : « relevé à 22 h 44 » à 22 h 45,
« relevé hier à 22 h 44 » à 00 h 10. Le produit ne change pas : un relevé de la veille
doit dire « hier ».

Mesure. `npx vitest run` : 26 fichiers, 197 cas, 0 échec (le banc tombait seul avant le
correctif, à la même heure).
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/calendrier-habillages from 542e53401a
All checks were successful
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Successful in 24s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Successful in 14s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Successful in 35s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Successful in 16s
to 83742379fc
Some checks failed
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Has been cancelled
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Has been cancelled
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Has been cancelled
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Has been cancelled
2026-10-15 15:27:21 +02:00
Compare
hermes-bot force-pushed hermes/calendrier-habillages from 83742379fc
Some checks failed
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Has been cancelled
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Has been cancelled
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Has been cancelled
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Has been cancelled
to 0259e7483f
All checks were successful
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (push) Successful in 1m37s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (push) Successful in 4m29s
Tests du tableau (Rust + Svelte) / Front Svelte (_tableau/front) (pull_request) Successful in 1m33s
Tests du tableau (Rust + Svelte) / Rust (_tableau/rust) (pull_request) Successful in 5m40s
2026-10-15 15:40:38 +02:00
Compare
Author
Collaborator

Rebasé sur main et poussé (0259e748). Conflits : _tableau/CHARTE-UI.md (les deux apports gardés) et _tableau/front/tests/stockage.test.js.

Deux défauts trouvés dans le banc de cette carte et corrigés :

  • des lignes de marqueur de conflit restaient dans tests/stockage.test.js : le fichier ne se chargeait plus (RolldownError: Parse failure) ;
  • renduA() rendait la main à la vraie horloge (vi.useRealTimers) après chaque rendu : l'essai de reproduction lisait donc l'horloge de la machine et rougissait dès que la journée de Paris changeait. Le rendu remet l'horloge du banc sur le relevé témoin ; l'intention du banc est inchangée.

Mesures locales : 43/43 fichiers, 370 essais verts ; npx vite build code 0, 1881 octets + 968K de JS.

Rebasé sur `main` et poussé (0259e748). Conflits : `_tableau/CHARTE-UI.md` (les deux apports gardés) et `_tableau/front/tests/stockage.test.js`. Deux défauts trouvés dans le banc de cette carte et corrigés : - des lignes de marqueur de conflit restaient dans `tests/stockage.test.js` : le fichier ne se chargeait plus (`RolldownError: Parse failure`) ; - `renduA()` rendait la main à la vraie horloge (`vi.useRealTimers`) après chaque rendu : l'essai de reproduction lisait donc l'horloge de la machine et rougissait dès que la journée de Paris changeait. Le rendu remet l'horloge du banc sur le relevé témoin ; l'intention du banc est inchangée. Mesures locales : 43/43 fichiers, 370 essais verts ; `npx vite build` code 0, 1881 octets + 968K de JS.
hermes-fusion deleted branch hermes/calendrier-habillages 2026-10-15 16:15:06 +02:00
Collaborator

Fusionnée automatiquement par fusion-auto (forge) : CI verte, sans conflit.

Fusionnée automatiquement par `fusion-auto` (forge) : CI verte, 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!1684
No description provided.