diff --git a/.claude/skills/traduire/SKILL.md b/.claude/skills/traduire/SKILL.md index 7337b1315..d0930fded 100644 --- a/.claude/skills/traduire/SKILL.md +++ b/.claude/skills/traduire/SKILL.md @@ -101,7 +101,7 @@ minimisent la difficulté pour le lecteur. ## Frontmatter - `slug` : le chemin d'URL anglais. Il doit commencer par le `slug` du - `_dir.yml` du dossier parent, privé de son suffixe `/_dir`. + `.navigation.yml` du dossier parent, privé de son suffixe `/.navigation`. - `sourceHash` : le SHA-256 du fichier français traduit. L'obtenir par `node scripts/content-hash.mjs docs/fr/`. - `sourceCommit` : le SHA du commit courant (`git rev-parse HEAD`). diff --git a/docs/en/.navigation.yml b/docs/en/.navigation.yml new file mode 100644 index 000000000..c2a933acf --- /dev/null +++ b/docs/en/.navigation.yml @@ -0,0 +1,2 @@ +slug: /.navigation +title: Docs diff --git a/docs/en/10.utilities/_dir.yml b/docs/en/10.utilities/.navigation.yml similarity index 80% rename from docs/en/10.utilities/_dir.yml rename to docs/en/10.utilities/.navigation.yml index 3dd507221..ff559b1b4 100644 --- a/docs/en/10.utilities/_dir.yml +++ b/docs/en/10.utilities/.navigation.yml @@ -1,4 +1,4 @@ -slug: /utilities/_dir +slug: /utilities/.navigation title: Utilities description: The everyday commands and tools for you and your members. navigation.icon: 'twemoji:toolbox' diff --git a/docs/en/11.misc/.navigation.yml b/docs/en/11.misc/.navigation.yml new file mode 100644 index 000000000..ae0e4c24d --- /dev/null +++ b/docs/en/11.misc/.navigation.yml @@ -0,0 +1,2 @@ +slug: /misc/.navigation +title: Misc diff --git a/docs/en/11.misc/_dir.yml b/docs/en/11.misc/_dir.yml deleted file mode 100644 index c7545428e..000000000 --- a/docs/en/11.misc/_dir.yml +++ /dev/null @@ -1,2 +0,0 @@ -slug: /misc/_dir -title: Misc diff --git a/docs/en/12.appendices/.navigation.yml b/docs/en/12.appendices/.navigation.yml new file mode 100644 index 000000000..6a266df33 --- /dev/null +++ b/docs/en/12.appendices/.navigation.yml @@ -0,0 +1,2 @@ +slug: /appendices/.navigation +title: Appendices diff --git a/docs/en/12.appendices/1.contribute.md b/docs/en/12.appendices/1.contribute.md index 70d93b37c..ebb2c1b6c 100644 --- a/docs/en/12.appendices/1.contribute.md +++ b/docs/en/12.appendices/1.contribute.md @@ -6,7 +6,7 @@ navigation.icon: material-symbols:edit-document-outline redactors: ['draftproducts', 'rababio4579', 'theorik'] contributors: ['clement669', 'iibey', 'imroxxor', 'kazotka'] noindex: true -sourceHash: f75190186d7785af3c9c385509a4db096a702253a4b33ab9ddfaddac056173a8 +sourceHash: 95bb7a16ca46a26ae17bfd23b0b10e09666f00da4ddd86d2e85fa689c2ceb7eb sourceCommit: 3776da3855c1e37b0dd4e1e94ee9dc61ae4bde08 --- @@ -254,13 +254,13 @@ slug: /engagement/levels ``` The `slug` is the full path, without the `/docs/en` prefix. It has to -start with the `slug` of the `_dir.yml` file of its folder, minus its -`/_dir` suffix. +start with the `slug` of the `.navigation.yml` file of its folder, minus its +`/.navigation` suffix. -`_dir.yml` files carry one too, ending in `/_dir`: +`.navigation.yml` files carry one too, ending in `/.navigation`: ```yaml -slug: /engagement/_dir +slug: /engagement/.navigation title: Engagement ``` @@ -305,7 +305,7 @@ translate: false It then drops out of the list of pages to translate. This is the case of the changelog, which stays in French. -This key does not propagate: putting it in a `_dir.yml` only excludes that +This key does not propagate: putting it in a `.navigation.yml` only excludes that file, not the pages of the folder. Every page to exclude has to carry it. ## Structuring tools diff --git a/docs/en/12.appendices/_dir.yml b/docs/en/12.appendices/_dir.yml deleted file mode 100644 index d90c8e345..000000000 --- a/docs/en/12.appendices/_dir.yml +++ /dev/null @@ -1,2 +0,0 @@ -slug: /appendices/_dir -title: Appendices diff --git a/docs/en/4.member-welcome/_dir.yml b/docs/en/4.member-welcome/.navigation.yml similarity index 83% rename from docs/en/4.member-welcome/_dir.yml rename to docs/en/4.member-welcome/.navigation.yml index 70a8bcb6d..9dc4c1111 100644 --- a/docs/en/4.member-welcome/_dir.yml +++ b/docs/en/4.member-welcome/.navigation.yml @@ -1,4 +1,4 @@ -slug: /member-welcome/_dir +slug: /member-welcome/.navigation title: Member welcome description: Everything that supports a member from the moment they join your server to their first steps. navigation.icon: 'twemoji:waving-hand' diff --git a/docs/en/5.engagement/_dir.yml b/docs/en/5.engagement/.navigation.yml similarity index 84% rename from docs/en/5.engagement/_dir.yml rename to docs/en/5.engagement/.navigation.yml index fb5e1fdba..bb24385c6 100644 --- a/docs/en/5.engagement/_dir.yml +++ b/docs/en/5.engagement/.navigation.yml @@ -1,4 +1,4 @@ -slug: /engagement/_dir +slug: /engagement/.navigation title: Engagement description: The systems that make your members want to be active and take part in the server's life. navigation.icon: 'twemoji:chart-increasing' diff --git a/docs/en/6.security/_dir.yml b/docs/en/6.security/.navigation.yml similarity index 83% rename from docs/en/6.security/_dir.yml rename to docs/en/6.security/.navigation.yml index ce5e42ff1..219957533 100644 --- a/docs/en/6.security/_dir.yml +++ b/docs/en/6.security/.navigation.yml @@ -1,4 +1,4 @@ -slug: /security/_dir +slug: /security/.navigation title: Security description: Moderation, protecting your server and keeping track of what happens on it. navigation.icon: 'twemoji:shield' diff --git a/docs/en/7.communication/_dir.yml b/docs/en/7.communication/.navigation.yml similarity index 80% rename from docs/en/7.communication/_dir.yml rename to docs/en/7.communication/.navigation.yml index 5f25ea25d..b2a487dbb 100644 --- a/docs/en/7.communication/_dir.yml +++ b/docs/en/7.communication/.navigation.yml @@ -1,4 +1,4 @@ -slug: /communication/_dir +slug: /communication/.navigation title: Communication description: The staff's tools to talk with the community and keep it informed. navigation.icon: 'twemoji:megaphone' diff --git a/docs/en/8.community/_dir.yml b/docs/en/8.community/.navigation.yml similarity index 84% rename from docs/en/8.community/_dir.yml rename to docs/en/8.community/.navigation.yml index fa6a1ed5d..f94cfef7a 100644 --- a/docs/en/8.community/_dir.yml +++ b/docs/en/8.community/.navigation.yml @@ -1,4 +1,4 @@ -slug: /community/_dir +slug: /community/.navigation title: Community description: The spaces where your members talk to each other, and the tools that keep them alive. navigation.icon: 'twemoji:busts-in-silhouette' diff --git a/docs/en/9.games-and-events/_dir.yml b/docs/en/9.games-and-events/.navigation.yml similarity index 79% rename from docs/en/9.games-and-events/_dir.yml rename to docs/en/9.games-and-events/.navigation.yml index 0bc8e2b02..2a80be9f0 100644 --- a/docs/en/9.games-and-events/_dir.yml +++ b/docs/en/9.games-and-events/.navigation.yml @@ -1,4 +1,4 @@ -slug: /games-and-events/_dir +slug: /games-and-events/.navigation title: Games & events description: The games, activities and events DraftBot brings to your server. navigation.icon: 'twemoji:game-die' diff --git a/docs/en/_dir.yml b/docs/en/_dir.yml deleted file mode 100644 index 8a64693ad..000000000 --- a/docs/en/_dir.yml +++ /dev/null @@ -1,2 +0,0 @@ -slug: /_dir -title: Docs diff --git a/docs/fr/.navigation.yml b/docs/fr/.navigation.yml new file mode 100644 index 000000000..c2a933acf --- /dev/null +++ b/docs/fr/.navigation.yml @@ -0,0 +1,2 @@ +slug: /.navigation +title: Docs diff --git a/docs/fr/10.utilities/_dir.yml b/docs/fr/10.utilities/.navigation.yml similarity index 80% rename from docs/fr/10.utilities/_dir.yml rename to docs/fr/10.utilities/.navigation.yml index 6a294b41d..048286f8e 100644 --- a/docs/fr/10.utilities/_dir.yml +++ b/docs/fr/10.utilities/.navigation.yml @@ -1,4 +1,4 @@ -slug: /utilitaires/_dir +slug: /utilitaires/.navigation title: Utilitaires description: Les commandes et outils du quotidien pour vous et vos membres. navigation.icon: 'twemoji:toolbox' diff --git a/docs/fr/11.misc/.navigation.yml b/docs/fr/11.misc/.navigation.yml new file mode 100644 index 000000000..ff9df7344 --- /dev/null +++ b/docs/fr/11.misc/.navigation.yml @@ -0,0 +1,2 @@ +slug: /autres/.navigation +title: Autres diff --git a/docs/fr/11.misc/_dir.yml b/docs/fr/11.misc/_dir.yml deleted file mode 100644 index 9a222e240..000000000 --- a/docs/fr/11.misc/_dir.yml +++ /dev/null @@ -1,2 +0,0 @@ -slug: /autres/_dir -title: Autres diff --git a/docs/fr/12.appendices/.navigation.yml b/docs/fr/12.appendices/.navigation.yml new file mode 100644 index 000000000..cc450eb25 --- /dev/null +++ b/docs/fr/12.appendices/.navigation.yml @@ -0,0 +1,2 @@ +slug: /annexes/.navigation +title: Annexes diff --git a/docs/fr/12.appendices/0.changelog/_dir.yml b/docs/fr/12.appendices/0.changelog/.navigation.yml similarity index 83% rename from docs/fr/12.appendices/0.changelog/_dir.yml rename to docs/fr/12.appendices/0.changelog/.navigation.yml index 7794e4476..4a486e40a 100644 --- a/docs/fr/12.appendices/0.changelog/_dir.yml +++ b/docs/fr/12.appendices/0.changelog/.navigation.yml @@ -1,4 +1,4 @@ -slug: /annexes/changelog/_dir +slug: /annexes/changelog/.navigation title: Mises à jour navigation.icon: "material-symbols:article-outline" description: Liste de tous les changements effectués, datés et décris depuis fin 2019. diff --git a/docs/fr/12.appendices/1.contribute.md b/docs/fr/12.appendices/1.contribute.md index b6f11ccd6..ede71e676 100644 --- a/docs/fr/12.appendices/1.contribute.md +++ b/docs/fr/12.appendices/1.contribute.md @@ -253,13 +253,13 @@ slug: /engagement/niveaux ``` Le `slug` est le chemin complet, sans le préfixe `/docs/fr`. Il doit -commencer par le `slug` du fichier `_dir.yml` de son dossier, privé de son -suffixe `/_dir`. +commencer par le `slug` du fichier `.navigation.yml` de son dossier, privé de son +suffixe `/.navigation`. -Les fichiers `_dir.yml` en portent un aussi, terminé par `/_dir` : +Les fichiers `.navigation.yml` en portent un aussi, terminé par `/.navigation` : ```yaml -slug: /engagement/_dir +slug: /engagement/.navigation title: Engagement ``` @@ -304,7 +304,7 @@ translate: false Elle sort alors de la liste des pages à traduire. C'est le cas du changelog, qui reste en français. -Cette clé ne se propage pas : la poser dans un `_dir.yml` n'exclut que ce +Cette clé ne se propage pas : la poser dans un `.navigation.yml` n'exclut que ce fichier, pas les pages du dossier. Chaque page à exclure doit la porter. ## Outils de structuration diff --git a/docs/fr/12.appendices/_dir.yml b/docs/fr/12.appendices/_dir.yml deleted file mode 100644 index 574733f14..000000000 --- a/docs/fr/12.appendices/_dir.yml +++ /dev/null @@ -1,2 +0,0 @@ -slug: /annexes/_dir -title: Annexes diff --git a/docs/fr/4.member-welcome/_dir.yml b/docs/fr/4.member-welcome/.navigation.yml similarity index 80% rename from docs/fr/4.member-welcome/_dir.yml rename to docs/fr/4.member-welcome/.navigation.yml index 3fb2d83d5..b5db31e0f 100644 --- a/docs/fr/4.member-welcome/_dir.yml +++ b/docs/fr/4.member-welcome/.navigation.yml @@ -1,4 +1,4 @@ -slug: /accueil-des-membres/_dir +slug: /accueil-des-membres/.navigation title: Accueil des membres description: Tout ce qui accompagne un membre de son arrivée sur le serveur à ses premiers pas. navigation.icon: 'twemoji:waving-hand' diff --git a/docs/fr/5.engagement/_dir.yml b/docs/fr/5.engagement/.navigation.yml similarity index 85% rename from docs/fr/5.engagement/_dir.yml rename to docs/fr/5.engagement/.navigation.yml index 57b6274ee..704c7b6b7 100644 --- a/docs/fr/5.engagement/_dir.yml +++ b/docs/fr/5.engagement/.navigation.yml @@ -1,4 +1,4 @@ -slug: /engagement/_dir +slug: /engagement/.navigation title: Engagement description: Les systèmes qui donnent envie à vos membres d'être actifs et de participer à la vie du serveur. navigation.icon: 'twemoji:chart-increasing' diff --git a/docs/fr/6.security/_dir.yml b/docs/fr/6.security/.navigation.yml similarity index 84% rename from docs/fr/6.security/_dir.yml rename to docs/fr/6.security/.navigation.yml index ac815c2dc..e18319cad 100644 --- a/docs/fr/6.security/_dir.yml +++ b/docs/fr/6.security/.navigation.yml @@ -1,4 +1,4 @@ -slug: /securite/_dir +slug: /securite/.navigation title: Sécurité description: La modération, la protection de votre serveur et le suivi de ce qu'il s'y passe. navigation.icon: 'twemoji:shield' diff --git a/docs/fr/7.communication/_dir.yml b/docs/fr/7.communication/.navigation.yml similarity index 81% rename from docs/fr/7.communication/_dir.yml rename to docs/fr/7.communication/.navigation.yml index 48da8e682..e55d84749 100644 --- a/docs/fr/7.communication/_dir.yml +++ b/docs/fr/7.communication/.navigation.yml @@ -1,4 +1,4 @@ -slug: /communication/_dir +slug: /communication/.navigation title: Communication description: Les outils du staff pour échanger avec la communauté et la tenir informée. navigation.icon: 'twemoji:megaphone' diff --git a/docs/fr/8.community/_dir.yml b/docs/fr/8.community/.navigation.yml similarity index 83% rename from docs/fr/8.community/_dir.yml rename to docs/fr/8.community/.navigation.yml index 58dff1238..a4040ccb2 100644 --- a/docs/fr/8.community/_dir.yml +++ b/docs/fr/8.community/.navigation.yml @@ -1,4 +1,4 @@ -slug: /communaute/_dir +slug: /communaute/.navigation title: Communauté description: Les espaces d'échange entre vos membres et les outils pour les faire vivre. navigation.icon: 'twemoji:busts-in-silhouette' diff --git a/docs/fr/9.games-and-events/_dir.yml b/docs/fr/9.games-and-events/.navigation.yml similarity index 80% rename from docs/fr/9.games-and-events/_dir.yml rename to docs/fr/9.games-and-events/.navigation.yml index 9f9c340a2..05b8ddbc1 100644 --- a/docs/fr/9.games-and-events/_dir.yml +++ b/docs/fr/9.games-and-events/.navigation.yml @@ -1,4 +1,4 @@ -slug: /jeux-et-evenements/_dir +slug: /jeux-et-evenements/.navigation title: Jeux & événements description: Les jeux, animations et événements que DraftBot fait vivre sur votre serveur. navigation.icon: 'twemoji:game-die' diff --git a/docs/fr/_dir.yml b/docs/fr/_dir.yml deleted file mode 100644 index 8a64693ad..000000000 --- a/docs/fr/_dir.yml +++ /dev/null @@ -1,2 +0,0 @@ -slug: /_dir -title: Docs diff --git a/scripts/lib/pages.mjs b/scripts/lib/pages.mjs index eb69268b9..e87172ed3 100644 --- a/scripts/lib/pages.mjs +++ b/scripts/lib/pages.mjs @@ -62,8 +62,8 @@ export async function findIssues(docsDir) { const dirSlugs = new Map() for (const page of [...source, ...target]) { - if (page.relPath.endsWith('_dir.yml') && page.data.slug) { - dirSlugs.set(dirname(page.absPath), page.data.slug.replace(/\/_dir$/, '')) + if (page.relPath.endsWith('.navigation.yml') && page.data.slug) { + dirSlugs.set(dirname(page.absPath), page.data.slug.replace(/\/\.navigation$/, '')) } } @@ -81,7 +81,7 @@ export async function findIssues(docsDir) { continue } const parentSlug = dirSlugs.get(dirname(page.absPath)) - // Le _dir.yml racine a pour slug "/_dir", donc un parentSlug vide : la + // Le .navigation.yml racine a pour slug "/.navigation", donc un parentSlug vide : la // comparaison se reduit alors au "/" initial, qu'un slug racine malforme // n'a pas. Tester la presence de la cle et non sa verite, sinon ce cas // sort de la verification. @@ -102,9 +102,9 @@ export async function findIssues(docsDir) { } for (const page of source) { - if (page.relPath.endsWith('_dir.yml')) continue + if (page.relPath.endsWith('.navigation.yml')) continue // Le frontmatter est parse en chaines : `translate: false` arrive en "false". - // Un _dir.yml qui la porte ne couvre que lui-meme, aucune cascade n'existe + // Un .navigation.yml qui la porte ne couvre que lui-meme, aucune cascade n'existe // ici : la cle doit etre posee sur chaque page a exclure. if (page.data.translate?.trim() === 'false') continue const translated = byRelPath.get(page.relPath) diff --git a/scripts/lib/pages.test.mjs b/scripts/lib/pages.test.mjs index 4214cd820..0368348c8 100644 --- a/scripts/lib/pages.test.mjs +++ b/scripts/lib/pages.test.mjs @@ -11,9 +11,9 @@ test('slugFromPath retire les prefixes numeriques et l extension', () => { assert.equal(slugFromPath('0.home.md'), '/home') }) -test('slugFromPath conserve le suffixe _dir', () => { - assert.equal(slugFromPath('3.engagement/_dir.yml'), '/engagement/_dir') - assert.equal(slugFromPath('_dir.yml'), '/_dir') +test('slugFromPath conserve le suffixe .navigation', () => { + assert.equal(slugFromPath('3.engagement/.navigation.yml'), '/engagement/.navigation') + assert.equal(slugFromPath('.navigation.yml'), '/.navigation') }) async function fixture() { @@ -68,7 +68,7 @@ test('findIssues ne signale rien quand la traduction est a jour', async () => { test('findIssues signale un slug incoherent avec son dossier parent', async () => { const dir = await fixture() - await writeFile(join(dir, 'fr/3.engagement/_dir.yml'), 'slug: /engagement/_dir\ntitle: Engagement\n') + await writeFile(join(dir, 'fr/3.engagement/.navigation.yml'), 'slug: /engagement/.navigation\ntitle: Engagement\n') await writeFile(join(dir, 'fr/3.engagement/0.levels.md'), '---\nslug: /autre/niveaux\n---\nFR\n') const issues = await findIssues(dir) assert.equal(issues.slugErrors.length, 1) @@ -77,7 +77,7 @@ test('findIssues signale un slug incoherent avec son dossier parent', async () = test('findIssues signale un slug racine malforme', async () => { const dir = await fixture() - await writeFile(join(dir, 'fr/_dir.yml'), 'slug: /_dir\ntitle: Documentation\n') + await writeFile(join(dir, 'fr/.navigation.yml'), 'slug: /.navigation\ntitle: Documentation\n') await writeFile(join(dir, 'fr/0.home.md'), '---\nslug: accueil\n---\nFR\n') const issues = await findIssues(dir) assert.equal(issues.slugErrors.length, 1) @@ -125,10 +125,10 @@ test('findIssues ignore une page source portant translate: false', async () => { }) // Le dispositif lit chaque fichier isolement : aucune cascade ne descend d'un -// _dir.yml vers ses pages. La cle doit donc etre posee page par page. -test('findIssues ne propage pas le translate: false d un _dir.yml aux pages', async () => { +// .navigation.yml vers ses pages. La cle doit donc etre posee page par page. +test('findIssues ne propage pas le translate: false d un .navigation.yml aux pages', async () => { const dir = await fixture() - await writeFile(join(dir, 'fr/3.engagement/_dir.yml'), 'slug: /engagement/_dir\ntranslate: false\n') + await writeFile(join(dir, 'fr/3.engagement/.navigation.yml'), 'slug: /engagement/.navigation\ntranslate: false\n') await writeFile(join(dir, 'fr/3.engagement/0.levels.md'), '---\nslug: /engagement/niveaux\n---\nFR\n') const issues = await findIssues(dir) assert.deepEqual(issues.untranslated, ['3.engagement/0.levels.md'])