Repository navigation
Met à jour @gouvfr/dsfr vers 1.15.2 et documente la validation des CGU DSFR - #1390
JoelPagniez wants to merge 13 commits into
Conversation
## Pourquoi : - @gouvfr/dsfr ≥ 1.15 introduit une validation obligatoire des CGU du DSFR à l'installation (script preinstall), ainsi qu'un script d'installation qui doit être explicitement autorisé avec pnpm ≥ 10 - Nécessaire pour bénéficier des correctifs et évolutions du DSFR postérieurs à la version 1.14.4 ## Quoi : - Met à jour la dépendance `@gouvfr/dsfr` de `~1.14.4` vers `1.15.2` (version épinglée) - Ajoute `'@gouvfr/dsfr': true` dans `allowBuilds` de `pnpm-workspace.yaml` pour autoriser l'exécution du script d'installation avec pnpm - Ignore le fichier `.dsfr.yml` (marqueur local d'acceptation des CGU) - Met à jour `pnpm-lock.yaml` en conséquence BREAKING CHANGE: les projets utilisant VueDsfr devront valider les CGU du DSFR (via `pnpm create @gouvfr/dsfr`) avant de pouvoir installer ou mettre à jour la bibliothèque. Voir le guide de migration pour la procédure complète. closes #1351
## Pourquoi : - @gouvfr/dsfr ≥ 1.15 exige la validation des CGU du DSFR à l'installation, et pnpm ≥ 10 bloque par défaut le script d'installation associé - Sans documentation, l'installation ou la mise à jour de VueDsfr peut échouer de façon peu compréhensible pour les développeurs·euses ## Quoi : - Ajoute au guide « Pour commencer » une section détaillée (validation des CGU, spécificités pnpm avec `pnpm approve-builds`, gestion des changements de CGU) - Ajoute une section « Migration vers 9.x (DSFR 1.15+) » au guide de migration - Ajoute un avertissement avec lien vers le guide détaillé dans le README closes #1351
✅ Deploy Preview for docs-vue-dsfr ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
✅ Deploy Preview for vue-dsfr ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
✅ Deploy Preview for demo-vue-dsfr ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
## Pourquoi : - @gouvfr/dsfr ≥ 1.15 exécute un script preinstall qui valide les CGU du DSFR via un fichier `.dsfr.yml` local - En CI/CD (GitHub Actions et Netlify), ce fichier n'existe pas et aucune interaction n'est possible, donc l'installation des dépendances échoue systématiquement - La documentation officielle du DSFR indique que la variable d'environnement `DSFR_ACCEPT_LICENSE=1` contourne cette validation pour les environnements non interactifs ## Quoi : - Ajoute `DSFR_ACCEPT_LICENSE: '1'` sur l'étape « Install dependencies » des 4 workflows GitHub Actions concernés : `run-tests.yml`, `publish-release.yml`, `publish-release-beta.yml`, `publish-release-next.yml` (portée limitée à cette seule étape, pas au niveau du job, pour ne pas masquer une éventuelle régression de la validation ailleurs) - Ajoute `DSFR_ACCEPT_LICENSE = "1"` dans `[build.environment]` de `netlify.toml`, pour les builds Netlify (`vue-dsfr`, `docs-vue-dsfr`, `demo-vue-dsfr`) qui ne passent pas par les workflows GitHub Actions closes #1351
e12bd5e to
3d315de
Compare
|
J’ai mis cette PR en brouillon pour l’instant pour les raisons suivantes : Ce que fait la brancheLes 3 commits de cette branche (aucun retard sur Vérifications effectuéesAvec
Ce qui manque
RecommandationSi le scope de l’issue #1351 est bien « débloquer l’installation avec DSFR 1.15+ », cette PR fait le travail proprement et est mergeable une fois le point 1 corrigé (régression silencieuse de documentation). Les écarts de parité fonctionnelle (point 2) mériteraient des issues de suivi séparées plutôt que de bloquer cette PR. |
…lètes du DSFR 1.15 ## Pourquoi les changements ont été faits : - Le DSFR 1.15.0 a retiré le rouge Marianne des classes utilitaires de couleur, de fond et de bordure, leur utilisation n'étant pas autorisée - La documentation Storybook référençait encore ces classes supprimées, induisant les utilisateurs en erreur - Remarque formulée par laruiss dans la revue de la PR #1390 ## Quelles modifications ont été apportées : - Suppression des 5 classes utilitaires obsolètes dans classes-utilitaires.mdx : fr-background-alt--red-marianne, fr-background-contrast--red-marianne, fr-text-title--red-marianne, fr-text-label--red-marianne, fr-text-inverted--red-marianne - Ajout d'une note d'avertissement en haut de la page informant de ce retrait depuis le DSFR 1.15 - Conservation des classes fr-artwork-*--red-marianne qui restent disponibles dans le DSFR 1.15 closes #1390
…r le DSFR 1.15 ## Pourquoi les changements ont été faits : - La documentation ne mentionnait pas bun alors que le script preinstall du DSFR le supporte - La section Nuxt ne rappelait pas l'obligation de valider les CGU avant l'installation - La mention « une seule fois par projet » était trompeuse : les CGU doivent être revalidées à chaque évolution ## Quelles modifications ont été apportées : - Ajout de `bun` dans toutes les commandes (create vue-dsfr, create @gouvfr/dsfr, install/add) - Ajout d'un encart warning CGU au début de la section Nuxt - Suppression de la mention « (une seule fois par projet) » dans le titre de l'Étape 1 - Corrections de typo
There was a problem hiding this comment.
🟡 Changes recommended
Le guide docs/guide/pour-commencer.md introduit des erreurs de clôture/espacement de fences Markdown qui cassent le rendu (et risquent de faire échouer un lint Markdown).
Get a fresh assessment by requesting another Copilot review.
Pull request overview
Cette PR met à jour la dépendance DSFR vers @gouvfr/dsfr@1.15.2 et encadre la nouvelle contrainte d’installation liée à l’acceptation des CGU (fichier .dsfr.yml / variable DSFR_ACCEPT_LICENSE) via de la documentation et des ajustements CI/PNPM.
Changes:
- Bump DSFR à
1.15.2(version épinglée) et mise à jour du lockfile. - Autorisation du script d’installation DSFR avec pnpm (allowBuilds) et ajout de
DSFR_ACCEPT_LICENSE=1en CI/Netlify. - Documentation: explication du flux d’acceptation CGU DSFR (install/migration) + avertissements (README, guides, story MDX).
File summaries
| File | Description |
|---|---|
| src/stories/fondamentaux/classes-utilitaires.mdx | Ajoute un avertissement DSFR 1.15 et supprime les classes utilitaires “red-marianne” retirées. |
| README.md | Ajoute un avertissement install DSFR 1.15 avec lien vers le guide. |
| pnpm-workspace.yaml | Autorise le build script de @gouvfr/dsfr via allowBuilds. |
| pnpm-lock.yaml | Met à jour la résolution/instantané vers @gouvfr/dsfr@1.15.2. |
| package.json | Passe @gouvfr/dsfr de ~1.14.4 à 1.15.2 (pin). |
| netlify.toml | Ajoute DSFR_ACCEPT_LICENSE=1 pour éviter l’interactif en build Netlify. |
| docs/guide/pour-commencer.md | Documente l’acceptation CGU DSFR, cas pnpm ≥ 10, et commandes (npm/pnpm/yarn/bun). |
| docs/guide/migrations.md | Ajoute une section “Migration vers 9.x (DSFR 1.15+)” expliquant le nouveau comportement d’installation. |
| .gitignore | Ignore .dsfr.yml dans le repo (marqueur CGU DSFR). |
| .github/workflows/run-tests.yml | Injecte DSFR_ACCEPT_LICENSE=1 lors de pnpm install en CI. |
| .github/workflows/publish-release.yml | Injecte DSFR_ACCEPT_LICENSE=1 lors de pnpm install en release. |
| .github/workflows/publish-release-next.yml | Injecte DSFR_ACCEPT_LICENSE=1 lors de pnpm install en release next. |
| .github/workflows/publish-release-beta.yml | Injecte DSFR_ACCEPT_LICENSE=1 lors de pnpm install en release beta. |
Review details
Files not reviewed (1)
- pnpm-lock.yaml: Generated file
Suppressed comments (2)
docs/guide/pour-commencer.md:50
- Il manque une ligne vide après la fermeture du bloc de code
bun create vue-dsfravantEt suivez les indications…(cohérence avec les autres blocs de code du fichier).
Et suivez les indications de l’assistant.
**docs/guide/pour-commencer.md:107**
* Le bloc de commandes d’installation (Étape 2) ferme la clôture Markdown sur la même ligne que la commande `bun add …` (`bun add …```), ce qui casse le rendu du bloc de code et peut invalider le Markdown. La clôture doit être sur sa propre ligne.
yarn add @gouvfr/dsfr @gouvminint/vue-dsfr
ou
bun add @gouvfr/dsfr @gouvminint/vue-dsfr```
- **Files reviewed:** 11/13 changed files
- **Comments generated:** 1
- **Review effort level:** Lite
</details>
---
💡 <a href="/dnum-mi/vue-dsfr/new/develop?filename=.github/skills/code-review/SKILL.md" class="Link--inTextBlock" target="_blank" rel="noopener noreferrer">Add a `code-review` agent skill</a> or configure MCP servers for context-aware, tailored reviews. <a href="https://docs.github.com/copilot/how-tos/use-copilot-agents/request-a-code-review/use-code-review?tool=webui#mcp-servers-and-agent-skills" class="Link--inTextBlock" target="_blank" rel="noopener noreferrer">Learn more in the docs.</a>
| ``` | ||
| Avec bun : |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 10c1fd2422
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| # ou | ||
| yarn add @gouvfr/dsfr @gouvminint/vue-dsfr | ||
| # ou | ||
| bun add @gouvfr/dsfr @gouvminint/vue-dsfr``` |
There was a problem hiding this comment.
Placez la clôture du bloc de code sur sa propre ligne
Les trois accents graves sont accolés à la commande bun add, donc Markdown ne les reconnaît pas comme une clôture de bloc. Le bloc ouvert à la ligne 99 reste alors actif jusqu’à la prochaine clôture, à la ligne 120, ce qui affiche l’encadré « Pourquoi… » et une partie des instructions pnpm comme du code, puis désynchronise les blocs suivants dans VitePress. Placez ``` seul sur la ligne suivante.
Useful? React with 👍 / 👎.
| > ⚠️ Depuis le DSFR 1.15, l'installation nécessite de valider les CGU du DSFR (script de pré-installation). | ||
| > Voir le [guide d'installation détaillé](https://vue-ds.fr/guide/pour-commencer) en cas d'échec de |
There was a problem hiding this comment.
Remplacez les apostrophes ASCII dans la documentation
Le nouveau texte emploie des apostrophes ASCII dans « l'installation », « d'installation » et « d'échec », et la même régression apparaît à de nombreux endroits dans les guides et la story modifiés. La convention typographique du dépôt impose explicitement l’apostrophe française U+2019 dans tout texte rédigé ; remplacez ces caractères avant publication. .agents/instructions.mdL273-L279
Useful? React with 👍 / 👎.
…olorAccent
## Pourquoi les changements ont été faits :
- DSFR autorise des badges standard sans icône, dans une couleur d'accent personnalisée, mais VueDsfr ne proposait que les couleurs système (success, error, new, info, warning)
- La démo du composant utilisait un type `none` qui n'a jamais fait partie des valeurs acceptées par `DsfrBadgeProps`, provoquant une valeur invalide en TypeScript
## Quelles modifications ont été apportées :
- Ajout de la valeur `standard` au type `type` et d'une nouvelle prop `colorAccent` (réutilise `DsfrColorAccent` de `DsfrCallout.types.ts`, en excluant les couleurs système ainsi que `grey`, `blue-france` et `red-marianne`, qui ne génèrent aucune classe `fr-badge--*` côté DSFR)
- Mise à jour du template pour poser `fr-badge--{colorAccent}` uniquement quand `type` vaut `standard`
- Correction de la démo (`docs-demo/DsfrBadgeExample.vue`) qui utilisait `type="none"`, remplacée par des badges `standard` avec `colorAccent="purple-glycine"`
- Mise à jour de la documentation (`DsfrBadge.md`) et des stories Storybook (`DsfrBadge.stories.ts`)
- Ajout de tests unitaires couvrant le badge standard avec et sans `colorAccent`
closes #1355
## Pourquoi les changements ont été faits : - Le contrôle Storybook `colorAccent` était bien déclaré mais jamais transmis au composant dans le template de rendu de la story `Badge` - En sélectionnant `standard` puis une couleur d'accent, le badge conservait son apparence par défaut, sans aucun effet visible du contrôle ## Quelles modifications ont été apportées : - Ajout de la liaison `:color-accent="args.colorAccent"` dans le template de rendu de la story `Badge`
## Pourquoi les changements ont été faits : - Les tests de composants exécutés dans le navigateur (Chromium, via Storybook/Vitest) affichaient en boucle un warning inoffensif de @vue/compiler-core (« decodeEntities option is passed but will be ignored in non-browser builds »), qui polluait les logs de test - Ce message est relayé par le logger interne de Vite (serveur de prévisualisation Storybook), pas par le canal `console.log` capturé par test ; `test.onConsoleLog` de Vitest n’a donc aucun effet dessus, ce qui a été vérifié empiriquement (170 occurrences identiques avec ou sans ce filtre) ## Quelles modifications ont été apportées : - Ajout d’un `customLogger` Vite dans `viteFinal` de `.storybook/main.ts`, qui filtre spécifiquement ce message sans masquer les autres avertissements (vérifié : 0 occurrence du warning sur toute la suite, tous les autres warnings restent visibles, aucune régression sur les 445 tests)
…tests - Le mock de `@iconify/vue` était déclaré deux fois dans `VIcon.spec.ts` : une fois au niveau du module (`vi.mock`) et une seconde fois dans un `beforeEach`, ce qui n’apportait rien et alourdissait le fichier - Suppression du `beforeEach` qui redéclarait le mock `@iconify/vue` - Suppression de l’import `beforeEach` devenu inutilisé
## Pourquoi les changements ont été faits : - La modale de recherche mobile restait ouverte lorsque la fenêtre était élargie jusqu'au mode desktop sans la fermer au préalable - La barre de recherche du header et celle de la modale coexistaient alors dans le DOM, en partageant le même identifiant - Le comportement est reproductible sur la démo publique ## Quelles modifications ont été apportées : - Ajout d'un écouteur `resize` qui referme la modale de recherche une fois la rupture `lg` (62em) franchie - La fermeture ne passe pas par `hideModal`, qui redonnerait le focus au bouton de menu, lequel n'est pas affiché en desktop - La rupture est lue via `window.matchMedia`, avec la même garde que celle déjà employée par `DsfrDataTable` - Ajout d'un test de composant couvrant le passage du mode mobile au mode desktop fixes #1098
… type submit ## Pourquoi : - Le DSFR 1.15 recommande désormais un type explicite `submit` sur le bouton de la barre de recherche (PR DSFR #1432) plutôt que de compter sur le type implicite du navigateur - Le comportement fonctionnel était déjà correct (formulaire avec `@submit.prevent`), mais reposait sur une conséquence implicite du HTML plutôt qu'une déclaration explicite ## Quoi : - Ajoute `type="submit"` sur le `DsfrButton` du composant `DsfrSearchBar` closes #1351
…rminé ## Pourquoi : - Le DSFR 1.15 introduit l'état indéterminé pour les cases à cocher (PR DSFR #1361) - `indeterminate` est une propriété DOM (pas un attribut HTML) : sans binding explicite, aucun moyen d'afficher cet état depuis un composant Vue ## Quoi : - Ajoute la prop `indeterminate?: boolean` à `DsfrCheckboxProps` - Bind `:indeterminate` sur l'`<input>` de `DsfrCheckbox` ; Vue la reconnaît comme propriété DOM native, les navigateurs exposent nativement l'état « mixed » aux technologies d'assistance sans ARIA supplémentaire - État purement visuel, indépendant de `modelValue`/`checked` : le calcul (ex. sélection partielle d'une liste) reste à la charge de l'appelant - Hors périmètre volontairement : pas d'agrégation automatique dans `DsfrCheckboxSet` pour un pattern « tout sélectionner » - Ajoute un test, une story `CheckboxIndetermine`, l'argType associé et la documentation de la prop dans `DsfrCheckbox.md` closes #1351
…stallation ## Pourquoi les changements ont été faits : - Le README contenait encore des apostrophes droites au lieu des apostrophes courbes françaises - Les blocs de code du guide « Pour commencer » (section Nuxt) manquaient de lignes vides et d’une indentation cohérente avec la liste numérotée, ce qui cassait leur rendu ## Quelles modifications ont été apportées : - Remplace les apostrophes droites par des apostrophes courbes `’` dans README.md - Ajoute des lignes vides autour des blocs de code (ex. installation avec bun) dans docs/guide/pour-commencer.md - Réindente les blocs de code de la section Nuxt pour qu’ils soient correctement imbriqués dans la liste numérotée
Résumé
@gouvfr/dsfrde~1.14.4vers1.15.2(version épinglée)'@gouvfr/dsfr': truedansallowBuildsdepnpm-workspace.yamlpour autoriser le script d'installation de@gouvfr/dsfravec pnpm ≥ 10.dsfr.yml(marqueur d'acceptation des CGU) dans.gitignorecreate @gouvfr/dsfr, cas pnpm avecpnpm approve-builds, gestion des changements de CGU lors des mises à jour)README.mdpnpm create @gouvfr/dsfrou équivalent) avant de pouvoir installer ou mettre à jour la bibliothèque.Vérification
MD031introduites corrigées ; aucune ancre cassée entremigrations.mdetpour-commencer.md)pnpm test:unit,pnpm lint,pnpm buildcloses #1351
❌ : oubli variable d'environnement DSFR_ACCEPT_LICENSE=1