Skip to content

Met à jour @gouvfr/dsfr vers 1.15.2 et documente la validation des CGU DSFR - #1390

Open
JoelPagniez wants to merge 13 commits into
developfrom
1351-upgrade-dsfr-1.15
Open

JoelPagniez wants to merge 13 commits into
developfrom
1351-upgrade-dsfr-1.15

Conversation

@JoelPagniez

@JoelPagniez JoelPagniez commented Aug 21, 2026 •

Copy link
Copy Markdown
Collaborator

Résumé

  • 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 le script d'installation de @gouvfr/dsfr avec pnpm ≥ 10
  • Ignore le fichier local .dsfr.yml (marqueur d'acceptation des CGU) dans .gitignore
  • Ajout de la variable d'environnement DSFR_ACCEPT_LICENSE=1 dans la CI/CD
  • Documente dans le guide « Pour commencer » la validation obligatoire des CGU du DSFR (assistant create @gouvfr/dsfr, cas pnpm avec pnpm approve-builds, gestion des changements de CGU lors des mises à jour)
  • 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.md

⚠️ Breaking change : les projets utilisant VueDsfr devront valider les CGU du DSFR (via pnpm create @gouvfr/dsfr ou équivalent) avant de pouvoir installer ou mettre à jour la bibliothèque.

Vérification

  • Documentation relue et corrigée (lint markdown : erreurs MD031 introduites corrigées ; aucune ancre cassée entre migrations.md et pour-commencer.md)
  • Tests : pnpm test:unit, pnpm lint, pnpm build

closes #1351

❌ : oubli variable d'environnement DSFR_ACCEPT_LICENSE=1

## 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
@netlify

netlify Bot commented Aug 21, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for docs-vue-dsfr ready!

Name Link
🔨 Latest commit b7f4186
🔍 Latest deploy log https://app.netlify.com/projects/docs-vue-dsfr/deploys/6aafafe0ad9db0000881ee79
😎 Deploy Preview https://deploy-preview-1390--docs-vue-dsfr.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@JoelPagniez
JoelPagniez requested a review from laruiss August 21, 2026 19:11
@netlify

netlify Bot commented Aug 21, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for vue-dsfr ready!

Name Link
🔨 Latest commit b7f4186
🔍 Latest deploy log https://app.netlify.com/projects/vue-dsfr/deploys/6aafafdfc225c90008a08dd0
😎 Deploy Preview https://deploy-preview-1390--vue-dsfr.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@netlify

netlify Bot commented Aug 21, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for demo-vue-dsfr ready!

Name Link
🔨 Latest commit b7f4186
🔍 Latest deploy log https://app.netlify.com/projects/demo-vue-dsfr/deploys/6aafafdf7323b5000855d644
😎 Deploy Preview https://deploy-preview-1390--demo-vue-dsfr.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@JoelPagniez JoelPagniez added dsfr changement nécessaire pour être raccord avec le DSFR tech Deps update or config 1.15.2 Lié à la version 1.15.2 du DSFR labels Aug 21, 2026
## 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
@JoelPagniez
JoelPagniez force-pushed the 1351-upgrade-dsfr-1.15 branch from e12bd5e to 3d315de Compare September 2, 2026 14:56
@laruiss
laruiss marked this pull request as draft September 7, 2026 22:31
@laruiss

laruiss commented Sep 7, 2026

Copy link
Copy Markdown
Collaborator

J’ai mis cette PR en brouillon pour l’instant pour les raisons suivantes :

Ce que fait la branche

Les 3 commits de cette branche (aucun retard sur develop) gèrent uniquement la friction d’installation introduite par DSFR ≥ 1.15 : validation obligatoire des CGU (.dsfr.yml, script preinstall), autorisation allowBuilds pnpm, et DSFR_ACCEPT_LICENSE=1 en CI/Netlify. Aucun composant Vue n’est modifié.

Vérifications effectuées

Avec @gouvfr/dsfr@1.15.2 réellement installé (pas seulement dans le lockfile) :

  • ✅ pnpm install --frozen-lockfile avec DSFR_ACCEPT_LICENSE=1 fonctionne (réplique le comportement CI/Netlify)
  • ✅ pnpm test : 150 fichiers, 446 tests passent
  • ✅ pnpm lint : clean
  • ✅ pnpm build : clean
  • ✅ Pin exact 1.15.2 (au lieu de ~1.14.4) : choix pertinent puisque même les patchs (1.15.0→1.15.1) ont modifié les CGU (cgu.md, passage en licence etalab-2.0) — un range aurait pu réintroduire un blocage CGU silencieux

Ce qui manque

  1. Documentation obsolète (régression vérifiée) : src/stories/fondamentaux/classes-utilitaires.mdx et colors.mdx documentent encore les utilitaires .fr-text-title--red-marianne, .fr-text-label--red-marianne, .fr-text-inverted--red-marianne, .fr-background-alt--red-marianne, .fr-background-contrast--red-marianne. J’ai confirmé qu’aucune de ces classes n’existe plus dans colors.css de 1.15.2 (PR DSFR Release #1385 « retrait des utilitaires red-marianne »). Un·e utilisateur·rice suivant cette doc obtiendrait du texte sans style.

  2. Nouvelles capacités DSFR non exposées (pas bloquant, mais écart de parité) :

Recommandation

Si 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
@laruiss
laruiss marked this pull request as ready for review September 16, 2026 11:45
Copilot AI lite review requested due to automatic review settings September 16, 2026 11:45

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 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=1 en 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-dsfr avant Et 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>

Comment on lines 44 to +45
```
Avec bun :

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment thread docs/guide/pour-commencer.md Outdated
# ou
yarn add @gouvfr/dsfr @gouvminint/vue-dsfr
# ou
bun add @gouvfr/dsfr @gouvminint/vue-dsfr```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge 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 👍 / 👎.

Comment thread README.md Outdated
Comment on lines +9 to +10
> ⚠️ 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

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge 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 👍 / 👎.

laruiss
laruiss previously approved these changes Sep 16, 2026
@laruiss laruiss linked an issue Sep 16, 2026 that may be closed by this pull request
laruiss and others added 7 commits September 16, 2026 13:59
…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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

1.15.2 Lié à la version 1.15.2 du DSFR dsfr changement nécessaire pour être raccord avec le DSFR tech Deps update or config

Projects

None yet

Development

Successfully merging this pull request may close these issues.

met à jour les dépendances - DSFR 1.15.2

4 participants