Contribuer
Les règles complètes, pour les humains comme pour les agents d’IA, sont dans AGENTS.md à la racine du dépôt. L’essentiel :
Premiers pas
sh
git config core.hooksPath .githooks # une fois après le clone
(cd packages/core && npm ci)
(cd apps/extension && npm ci)
(cd apps/theme-hub && npm ci)
(cd apps/site && npm ci)
node scripts/test-changed.mjs --all --dry # voir les parcours e2eConstruire
| Composant | Commande | Résultat |
|---|---|---|
| Extension | npm run package dans apps/extension | dist/dwa-slides-<version>.vsix |
| Portail | npm run build dans apps/theme-hub ; local : npm run db:local && npm run dev | Portail sur localhost:8787 |
| Cœur partagé | aucun build : importé en source (npm ci dans packages/core) | — |
| Site | npm run dev ou npm run build dans apps/site | .vitepress/dist/ |
Node.js 22 ou plus récent.
Tester
On teste des parcours utilisateurs de bout en bout, pas des fonctions internes : écrire une slide et recevoir la suggestion, exporter un PPTX, publier une version de thème et la voir arriver dans l’extension… Navigateur réel, VS Code réel, Miniflare pour le portail ; aucun service distant.
sh
node scripts/test-changed.mjs # parcours touchés par vos modifications
node scripts/test-changed.mjs --dry # voir le plan sans lancer
node scripts/test-changed.mjs --all # avant une versionPour le portail, dans apps/theme-hub :
sh
npm run check # types du Worker et de l’interface
npm run e2e:api # API et intégrations (S3, Azure, SSO OIDC, IA) sous Miniflare
npm run e2e:web # interface dans Chromium (DWA_TEST_BROWSER pour forcer un chemin)Les services externes y sont simulés localement : aucune requête ne part vers un service distant.
Avant de déclarer une tâche terminée : npm run check dans l’application modifiée, puis scripts/test-changed.mjs.
Conventions
- Ce site est en anglais (racine) et en français (
/fr/) : chaque page existe dans les deux langues, au même chemin. Les messages de l’extension et du CLI sont en français ; le portail est en anglais par défaut, avec français, ukrainien et arabe. - Pas de dépendance CDN ni d’appel réseau dans l’extension, hors connexion explicite au portail.
- Aucune donnée client ni aucun chiffre inventé ; les exemples sont marqués comme illustratifs.
- Couleurs d’un thème client : uniquement la palette fournie par le client.
- Commits petits, préfixés par le composant, à l’impératif :
extension: fix callout fit on snap chromium,site: add palettes page. - Aucun déploiement ni commande sur un service distant sans demande explicite.
Modifier ce site
- Les pages sont dans
apps/site/pages/, en Markdown. - Un bloc
```dwaaffiche la slide rendue au-dessus de son code ;```dwa slideaffiche la slide seule. - Les images d’exemple disponibles (motifs générés) :
architecture.png,chantier.png,equipe.png,visuel.png,image.png,vue-a.pngàvue-c.png,image-1.pngàimage-6.png. - La référence des classes, les commandes et les paramètres sont générés : modifiez le catalogue (
packages/core/src/catalog.ts) ou lepackage.jsonde l’extension, pas la page.