diff --git a/CHANGELOG.md b/CHANGELOG.md index 1882f22..0c5396f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -102,6 +102,13 @@ Le format suit [Keep a Changelog](https://keepachangelog.com/fr/1.1.0/) et le pr - **`--ui-sidebar-width`, `--ui-sidebar-rail-width`, `--ui-empty-state-media-size`, `--ui-empty-state-media-color`, `--ui-input-group-radius`, `--ui-input-group-overlap` et `--ui-skeleton-shine` sont désormais réellement surchargeables.** Ces sept custom properties étaient documentées comme des points de surcharge, mais le composant les **déclarait** sur son propre élément : une valeur posée par le consommateur sur `:root` était systématiquement écrasée (et, pour `--ui-skeleton-shine`, écrasée en mode sombre uniquement). Les déclarations passent sur un miroir privé, le nom public reste lu en amont. Mêmes valeurs par défaut. - **`ui-tab-list` : `--ui-tabs-active-bar-color` / `--ui-tabs-active-bar-size` deviennent `--ui-tabs-indicator-color` / `--ui-tabs-indicator-thickness`** (le mot `active` se lisait comme un état alors que la convention met le modifieur en dernier). Les anciens noms restent honorés une version, en repli. - **L'en-tête de traçabilité des fichiers copiés par `ng generate @4sh/ui-kit:add` porte la mention de licence** (`Apache-2.0 — Copyright 2026 4SH.`) en plus de son origine et de sa version. Une fois copié, le fichier vit dans le dépôt du consommateur, où plus rien n'indiquait sous quels termes il est fourni. Conséquence attendue : le premier `ng generate @4sh/ui-kit:update` suivant cette version affiche un diff d'une ligne en tête de chaque fichier installé. +- **L'en-tête de traçabilité des fichiers copiés tient sur une ligne et porte la mention de licence** : + + ```ts + // @4sh/ui-kit@0.2.0 — Apache-2.0 — Copyright 2026 4SH. + ``` + + Il reprenait la catégorie, le nom du composant et le chemin du fichier — trois informations que le fichier copié porte déjà dans son emplacement. Ne reste que la version d'origine, et la licence : une fois copié, le fichier vit dans le dépôt du consommateur, où plus rien n'indiquait sous quels termes il est fourni. Conséquence attendue : le premier `ng generate @4sh/ui-kit-schematics:update` suivant cette version affiche un diff d'une ligne en tête de chaque fichier installé. ## [0.2.0] - 2026-08-14 diff --git a/projects/ui-kit-schematics/src/utils/copy.ts b/projects/ui-kit-schematics/src/utils/copy.ts index 155f138..fd8c790 100644 --- a/projects/ui-kit-schematics/src/utils/copy.ts +++ b/projects/ui-kit-schematics/src/utils/copy.ts @@ -1,7 +1,7 @@ /** * copy — recopie une unité (`AssetUnit`) dans l'arbre du projet consommateur, * aplatie (FSHSP-121), imports réadressés vers les copies voisines (FSHSP-119), - * avec en-tête de traçabilité (origine + version + licence) sur chaque fichier. + * avec en-tête de traçabilité (version + licence) sur chaque fichier. */ import type { Tree } from '@angular-devkit/schematics'; import { SchematicsException } from '@angular-devkit/schematics'; @@ -13,31 +13,29 @@ import { BARREL_FILENAME } from './export-map'; import { rewriteDocImports, rewriteKitImports } from './rewrite-imports'; import { stripFigmaDesign } from './strip-figma'; -const HEADER_STYLE: Record string> = { - '.ts': (lines) => lines.map((l) => `// ${l}`).join('\n') + '\n', - '.scss': (lines) => lines.map((l) => `// ${l}`).join('\n') + '\n', - '.html': (lines) => `\n`, +const HEADER_STYLE: Record string> = { + '.ts': (line) => `// ${line}\n`, + '.scss': (line) => `// ${line}\n`, + '.html': (line) => `\n`, // Une constante exportée, et non le commentaire `{/* … */}` qu'on attendrait // ici : c'est la seule forme de commentaire que le MDX accepte, et elle ne // survit pas au passage de Prettier que le CLI Angular applique aux fichiers // écrits par un schematic (`{/*` en ressort en `{/_`, et l'indexeur de // Storybook ne parse plus la page). Un `export const` traverse ce formatage // sans dommage, reste invisible au rendu, et porte la même mention. - '.mdx': (lines) => `export const uiKitOrigin = ${JSON.stringify(lines.join(' '))};\n\n`, + '.mdx': (line) => `export const uiKitOrigin = ${JSON.stringify(line)};\n\n`, }; -function traceabilityHeader(unit: AssetUnit, relPath: string, kitVersion: string, ext: string): string { +// Une ligne, et rien de déductible : ni l'origine ni le chemin, que le fichier +// copié porte déjà dans son emplacement (`ui/{catégorie}/{ui-nom}/`, +// `ui-core/{domaine}/`). Restent la version, et la mention de licence — le +// fichier quitte le package pour vivre dans le dépôt du consommateur, où plus +// rien d'autre n'y rattache les termes sous lesquels il est fourni +// (Apache-2.0 §4b — conserver les mentions dans les copies). +function traceabilityHeader(kitVersion: string, ext: string): string { const make = HEADER_STYLE[ext]; if (!make) return ''; - const origin = unit.kind === 'component' ? `${unit.category}/${unit.name}` : `base partagée ${unit.name}`; - return make([ - `Copié depuis @4sh/ui-kit@${kitVersion} (${origin}, ${relPath}). ` + - `Géré par ui-kit.json — voir \`ng generate @4sh/ui-kit-schematics:update\`.`, - // Le fichier quitte le package pour vivre dans le dépôt du consommateur : - // sans cette ligne, plus rien n'y rattache les termes sous lesquels il est - // fourni (Apache-2.0 §4b — conserver les mentions dans les copies). - `Apache-2.0 — Copyright 2026 4SH.`, - ]); + return make(`@4sh/ui-kit@${kitVersion} — Apache-2.0 — Copyright 2026 4SH.`); } export interface RenderedFile { @@ -94,7 +92,7 @@ export function renderUnitFiles(unit: AssetUnit, kitVersion: string, options: Re unresolved.push(...result.unresolved.map((item) => `${relPath} → ${item}`)); } - files.push({ targetPath, content: traceabilityHeader(unit, relPath, kitVersion, ext) + source }); + files.push({ targetPath, content: traceabilityHeader(kitVersion, ext) + source }); } if (unresolved.length) {