jekyll-theme-zer0 1.30.0 → 1.31.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +748 -571
- data/README.md +17 -3
- data/_data/backlog.yml +33 -10
- data/_data/consumers.yml +99 -0
- data/_data/features.yml +1 -1
- data/_data/i18n/fr.yml +30 -14
- data/_data/i18n/manifest.yml +63 -45
- data/_data/theme-manifest.yml +41 -39
- data/_data/ui-text.yml +1 -0
- data/_includes/README.md +1 -1
- data/_includes/analytics/posthog.html +28 -9
- data/_includes/components/README.md +1 -1
- data/_includes/components/background-image.html +7 -1
- data/_includes/components/cookie-consent.html +30 -30
- data/_includes/components/halfmoon.html +5 -3
- data/_includes/components/mermaid.html +14 -7
- data/_includes/components/preview-image.html +22 -3
- data/_includes/components/theme-preview-gallery.html +1 -1
- data/_includes/content/intro.html +21 -3
- data/_includes/content/seo.html +8 -0
- data/_includes/content/sitemap.html +220 -263
- data/_includes/core/branding.html +8 -15
- data/_includes/core/footer.html +3 -1
- data/_includes/core/head.html +33 -22
- data/_includes/core/header.html +14 -2
- data/_includes/core/tokens-inline.html +16 -1
- data/_includes/navigation/breadcrumbs.html +21 -15
- data/_includes/navigation/navbar.html +9 -6
- data/_includes/setup/wizard.html +5 -1
- data/_layouts/article.html +15 -3
- data/_layouts/home.html +13 -1
- data/_layouts/note.html +2 -1
- data/_layouts/notebook.html +2 -1
- data/_layouts/root.html +22 -0
- data/_sass/components/_cookie-banner.scss +48 -0
- data/_sass/components/_setup-wizard.scss +19 -1
- data/_sass/components/_ui-enhancements.scss +11 -0
- data/_sass/core/_navbar.scss +163 -70
- data/_sass/core/_sidebar-extras.scss +2 -14
- data/_sass/core/code-copy.scss +27 -8
- data/_sass/theme/_skins.scss +6 -2
- data/assets/css/extension-points-demo.css +27 -0
- data/assets/data/wiki-index.json +19 -0
- data/assets/js/auto-hide-nav.js +53 -13
- data/assets/js/code-copy.js +72 -1
- data/assets/js/extension-points-demo.js +48 -0
- data/assets/js/halfmoon.js +11 -1
- data/assets/js/mermaid-diagrams.js +128 -22
- data/assets/js/obsidian-local-graph.js +27 -5
- data/assets/js/search-modal.js +35 -3
- data/assets/js/setup-wizard.js +7 -2
- data/scripts/bin/validate +1 -0
- data/scripts/ci/test_visual_evidence_autogen.py +64 -2
- data/scripts/ci/visual_evidence_autogen.py +14 -4
- data/scripts/features/install-preview-generator +1 -1
- data/scripts/lib/README.md +12 -0
- data/scripts/lib/preview_generator.py +2 -2
- data/scripts/validate-features.rb +5 -8
- metadata +4 -2
data/README.md
CHANGED
|
@@ -43,11 +43,16 @@ preview: /assets/images/wizard-on-journey.png
|
|
|
43
43
|
hero_image: /assets/images/wizard-on-journey.png
|
|
44
44
|
excerpt: "AI-native Jekyll theme for GitHub Pages — multi-agent ready (Copilot, Codex, Cursor, Claude), AI-powered install & preview images, AIEO-optimized, with Docker-first development and 43 documented features"
|
|
45
45
|
---
|
|
46
|
-
|
|
47
46
|
[](https://github.com/bamr87/zer0-mistakes/actions/workflows/pages/pages-build-deployment) [](https://badge.fury.io/rb/jekyll-theme-zer0) [](https://github.com/bamr87/zer0-mistakes/actions/workflows/ci.yml) [](https://opensource.org/licenses/MIT) [](https://github.com/bamr87/zer0-mistakes/blob/main/docker-compose.yml) [](https://getbootstrap.com/) [](AGENTS.md) [](#-aieo-optimized--built-for-ai-citation)
|
|
48
47
|
|
|
49
48
|
# zer0-mistakes
|
|
50
49
|
|
|
50
|
+
> AI-native, Docker-first Jekyll theme for GitHub Pages sites, built on Bootstrap 5 and published as a Ruby gem.
|
|
51
|
+
|
|
52
|
+
[](https://github.com/bamr87/zer0-mistakes/actions/workflows/ci.yml) [](LICENSE) [](https://zer0-mistakes.com/)
|
|
53
|
+
|
|
54
|
+
## Overview
|
|
55
|
+
|
|
51
56
|
### A modern website theme that just works — for blogs, docs, portfolios, and more
|
|
52
57
|
|
|
53
58
|
**Free • Open source • Hosted on GitHub Pages for $0/month • Works on Mac, Windows, and Linux**
|
|
@@ -58,8 +63,6 @@ If you already know Jekyll, Ruby, Docker, or AI coding agents: the same theme gr
|
|
|
58
63
|
|
|
59
64
|
[Get Started in 5 Minutes](#-get-started-in-5-minutes) • [What You Get](#-what-you-get) • [Who It's For](#-who-its-for) • [Advanced & AI Features](#-advanced-features-for-power-users) • [Live Demo](https://zer0-mistakes.com/)
|
|
60
65
|
|
|
61
|
-
---
|
|
62
|
-
|
|
63
66
|
## ✨ What You Get
|
|
64
67
|
|
|
65
68
|
A complete, professional website out of the box — no design or coding required to start:
|
|
@@ -963,4 +966,15 @@ And these AI partners that make zer0-mistakes truly AI-native:
|
|
|
963
966
|
|
|
964
967
|
**v1.19.1** • [Changelog](CHANGELOG.md) • [License](LICENSE) • [Contributing](CONTRIBUTING.md) • [AI Agent Guide](AGENTS.md)
|
|
965
968
|
|
|
969
|
+
## Changelog
|
|
970
|
+
|
|
971
|
+
Notable changes are recorded in [CHANGELOG.md](CHANGELOG.md). Tagged versions are on the [releases page](https://github.com/bamr87/zer0-mistakes/releases).
|
|
972
|
+
|
|
973
|
+
## License
|
|
974
|
+
|
|
975
|
+
Released under the [MIT License](LICENSE).
|
|
976
|
+
|
|
977
|
+
---
|
|
966
978
|
|
|
979
|
+
<!-- bamr87-portfolio-footer -->
|
|
980
|
+
Part of the [bamr87 portfolio](https://github.com/bamr87) — browse every project on [Amr's GitHub profile](https://github.com/bamr87).
|
data/_data/backlog.yml
CHANGED
|
@@ -866,7 +866,7 @@ tasks:
|
|
|
866
866
|
|
|
867
867
|
- id: T-033
|
|
868
868
|
title: "Retire legacy test_installation.sh after equivalence audit against the installer harness"
|
|
869
|
-
status:
|
|
869
|
+
status: done
|
|
870
870
|
priority: P2
|
|
871
871
|
area: tests
|
|
872
872
|
risk: standard
|
|
@@ -880,6 +880,10 @@ tasks:
|
|
|
880
880
|
uncovered into test_install_*.sh, then delete the legacy suite and remove the
|
|
881
881
|
`installation` routing from test_runner.sh, ci.yml, and nightly-extended.yml.
|
|
882
882
|
Until then it runs nightly and on install-path PRs only (2026-07 CI tiering).
|
|
883
|
+
Done 2026-10-02: the suite is deleted, its scenarios live in
|
|
884
|
+
test_install_legacy_flags.sh (marked "Ported from retired
|
|
885
|
+
test_installation.sh"), test_runner.sh routes no `installation` suite, and
|
|
886
|
+
the CI/nightly suite lists no longer name it.
|
|
883
887
|
acceptance:
|
|
884
888
|
- "Every test_installation.sh scenario is mapped to a harness equivalent or ported."
|
|
885
889
|
- "test_installation.sh deleted; test_runner.sh no longer routes an `installation` suite."
|
|
@@ -887,7 +891,7 @@ tasks:
|
|
|
887
891
|
- "Nightly extended run green after removal."
|
|
888
892
|
links: { issue: null, pr: null, roadmap: null }
|
|
889
893
|
created: 2026-07-06
|
|
890
|
-
updated: 2026-
|
|
894
|
+
updated: 2026-10-02
|
|
891
895
|
- id: T-034
|
|
892
896
|
title: "Remove the dead preview_image_generator.rb Jekyll plugin and its test surface"
|
|
893
897
|
status: done
|
|
@@ -999,7 +1003,7 @@ tasks:
|
|
|
999
1003
|
|
|
1000
1004
|
- id: T-037
|
|
1001
1005
|
title: "Navbar width recovery: two clean label tiers, merged chevron, centered grid, no subtitle"
|
|
1002
|
-
status:
|
|
1006
|
+
status: done
|
|
1003
1007
|
priority: P2
|
|
1004
1008
|
area: feat
|
|
1005
1009
|
risk: standard
|
|
@@ -1018,13 +1022,32 @@ tasks:
|
|
|
1018
1022
|
the navbar subtitle (_includes/core/branding.html — home hero only).
|
|
1019
1023
|
Clarify the three toggles: labeled "Menu" text button below lg, gear moves
|
|
1020
1024
|
into the unified drawer on mobile so only two toggles coexist.
|
|
1025
|
+
Done 2026-09-23: collapsed the three container-query tiers to two (icon+label
|
|
1026
|
+
>=51rem, icon-only below — the old 41-50.99rem bare-label tier and its
|
|
1027
|
+
text-overflow: ellipsis safety net are gone), merged the dropdown chevron
|
|
1028
|
+
into the parent link's hover row, gave the desktop grid's side tracks a
|
|
1029
|
+
shared floor (--zer0-navbar-side-min), moved site.subtitle to the home hero,
|
|
1030
|
+
and labeled the mobile menu toggle "Menu" (with aria-label mirroring the
|
|
1031
|
+
visible text for WCAG 2.5.3). `grid-template-columns: 1fr auto 1fr` as
|
|
1032
|
+
literally proposed breaks the container queries (track 2 must stay a
|
|
1033
|
+
definite 1fr for `.bd-navbar-nav-viewport`'s `width: 100%` to resolve) —
|
|
1034
|
+
used a shared side-track minimum instead; documented in-source. A prior
|
|
1035
|
+
attempt (#454) reached the same design but was closed as stale — its author
|
|
1036
|
+
had no Docker/Jekyll to run the Playwright suite or regenerate evidence.
|
|
1037
|
+
This finishes it against a real local build (bundle + jekyll build +
|
|
1038
|
+
Playwright), and additionally caught and fixed a collision the earlier
|
|
1039
|
+
attempt's tooling couldn't check: the new visible "Menu" text reused the
|
|
1040
|
+
already-defined `ui.menu_label` ("Toggle menu"), which would have shipped
|
|
1041
|
+
wrong text — added a dedicated `ui.nav_menu_toggle_label` key instead.
|
|
1042
|
+
49/49 Playwright checks pass (37 existing navbar.spec.js + 12 new
|
|
1043
|
+
navbar-tiers.spec.js).
|
|
1021
1044
|
acceptance:
|
|
1022
1045
|
- "At 1024px and 1280px with 5 nav items every label is fully visible or the whole row is icon-only — no ellipses anywhere."
|
|
1023
1046
|
- "Dropdown chevron shares the parent row's hover zone; no dead zone between link and chevron."
|
|
1024
1047
|
- "Navbar carries logo + title only; subtitle appears on the home hero."
|
|
1025
1048
|
- "regression test added"
|
|
1026
1049
|
- "before/after evidence committed"
|
|
1027
|
-
links: { issue:
|
|
1050
|
+
links: { issue: 405, pr: 495, roadmap: null }
|
|
1028
1051
|
created: 2026-08-18
|
|
1029
1052
|
updated: 2026-08-18
|
|
1030
1053
|
|
|
@@ -1292,7 +1315,7 @@ tasks:
|
|
|
1292
1315
|
|
|
1293
1316
|
- id: T-046
|
|
1294
1317
|
title: "Retire the now-dead gotoBeforeScrollSpy fixture and cover the mobile offcanvas TOC spy"
|
|
1295
|
-
status:
|
|
1318
|
+
status: done
|
|
1296
1319
|
priority: P3
|
|
1297
1320
|
area: tests
|
|
1298
1321
|
risk: low
|
|
@@ -1354,13 +1377,13 @@ tasks:
|
|
|
1354
1377
|
|
|
1355
1378
|
- id: T-048
|
|
1356
1379
|
title: "Site-level theme_color re-pins --zer0-color-primary over the active skin"
|
|
1357
|
-
status:
|
|
1380
|
+
status: done
|
|
1358
1381
|
priority: P2
|
|
1359
1382
|
area: feat
|
|
1360
1383
|
risk: low
|
|
1361
1384
|
effort: S
|
|
1362
1385
|
source: issue
|
|
1363
|
-
summary: "Discovered while making Mermaid diagrams follow the skin (ZER0-013 rework): the skin mixin (_sass/theme/_skins.scss) writes both --bs-primary and --zer0-color-primary under [data-theme-skin], but _includes/core/tokens-inline.html emits `:root { --zer0-color-primary: <theme_color.main> }` AFTER main.css, and :root ties [data-theme-skin] on specificity, so the later inline rule wins. Result on this site: buttons/links follow the skin (#6fa8dc on air, #8338ec on neon) while every custom component that reads --zer0-color-primary (callouts, code-block accent border, focus rings) stays on the config #007bff regardless of skin. Mermaid works around it by reading --bs-primary first; the token layer should agree with itself instead."
|
|
1386
|
+
summary: "Done 2026-10-02 (#459): the skin wins. tokens-inline.html emits theme_color main/blue/purple only when no palette skin is active, the precedence is documented in docs/ui/design-tokens.md, and appearance.spec.js asserts it. Discovered while making Mermaid diagrams follow the skin (ZER0-013 rework): the skin mixin (_sass/theme/_skins.scss) writes both --bs-primary and --zer0-color-primary under [data-theme-skin], but _includes/core/tokens-inline.html emits `:root { --zer0-color-primary: <theme_color.main> }` AFTER main.css, and :root ties [data-theme-skin] on specificity, so the later inline rule wins. Result on this site: buttons/links follow the skin (#6fa8dc on air, #8338ec on neon) while every custom component that reads --zer0-color-primary (callouts, code-block accent border, focus rings) stays on the config #007bff regardless of skin. Mermaid works around it by reading --bs-primary first; the token layer should agree with itself instead."
|
|
1364
1387
|
acceptance:
|
|
1365
1388
|
- "With theme_color.main set, switching skin changes --zer0-color-primary as well as --bs-primary (probe getComputedStyle on <html>)."
|
|
1366
1389
|
- "Decide and document the precedence: skin over site theme_color (recommended) or the reverse — one rule, applied to every --zer0-color-* the mixin sets."
|
|
@@ -1368,11 +1391,11 @@ tasks:
|
|
|
1368
1391
|
- "before/after evidence committed"
|
|
1369
1392
|
links: { issue: null, pr: null, roadmap: null }
|
|
1370
1393
|
created: 2026-09-05
|
|
1371
|
-
updated: 2026-
|
|
1394
|
+
updated: 2026-10-02
|
|
1372
1395
|
|
|
1373
1396
|
- id: T-049
|
|
1374
1397
|
title: "test_core.sh: Liquid nested-tag check and gem-content check can never fail"
|
|
1375
|
-
status:
|
|
1398
|
+
status: done
|
|
1376
1399
|
priority: P3
|
|
1377
1400
|
area: tests
|
|
1378
1401
|
risk: low
|
|
@@ -1389,7 +1412,7 @@ tasks:
|
|
|
1389
1412
|
|
|
1390
1413
|
- id: T-050
|
|
1391
1414
|
title: "Visual Snapshots tier: LiveReload reloads the page mid-test because npm ci lands after Jekyll starts watching"
|
|
1392
|
-
status:
|
|
1415
|
+
status: done
|
|
1393
1416
|
priority: P2
|
|
1394
1417
|
area: tests
|
|
1395
1418
|
risk: low
|
data/_data/consumers.yml
CHANGED
|
@@ -47,6 +47,25 @@
|
|
|
47
47
|
# gem_unconstrained `gem 'jekyll-theme-zer0'` with no version — resolves
|
|
48
48
|
# whatever RubyGems has at `bundle update` time; tracked
|
|
49
49
|
# only (like resolved_lockfile), never reports drift
|
|
50
|
+
#
|
|
51
|
+
# ------------------------------------------------------------------------------
|
|
52
|
+
# Stack fields (optional; informational — scripts/bin/propagate ignores them)
|
|
53
|
+
# ------------------------------------------------------------------------------
|
|
54
|
+
# How far each consumer is aligned with the zer0 stack (one theme, one image
|
|
55
|
+
# engine, one CMS — templates/consumer/README.md § The zer0 stack). A dated
|
|
56
|
+
# snapshot of each consumer's default branch, not a live reading: refresh it
|
|
57
|
+
# from `zer0-cms doctor <checkout>` (bamr87/zer0-CMS), never from memory.
|
|
58
|
+
#
|
|
59
|
+
# stack:
|
|
60
|
+
# checked date the default branch was read
|
|
61
|
+
# image_gem Gemfile requires zer0-image-generator
|
|
62
|
+
# preview_images _config.yml has a preview_images: block
|
|
63
|
+
# vendored_generator copies of the image engine the gem replaces
|
|
64
|
+
# (_plugins/preview_*.rb forks, scripts/lib/
|
|
65
|
+
# preview_generator.py, scripts/generate-preview-images.sh);
|
|
66
|
+
# a deliberate local generator is NOT listed
|
|
67
|
+
# zer0_json a zer0.json (zer0-CMS project file) is committed
|
|
68
|
+
# doctor .github/workflows/zer0-doctor.yml caller is committed
|
|
50
69
|
# ==============================================================================
|
|
51
70
|
|
|
52
71
|
version: 1
|
|
@@ -77,6 +96,16 @@ consumers:
|
|
|
77
96
|
hook, enabled by `user_overrides: true`, not a shadow — and no fix
|
|
78
97
|
numbered #338 could be substantiated in that repo. Keep this field
|
|
79
98
|
derived from audit-consumer output, not hand-maintained estimates.
|
|
99
|
+
stack:
|
|
100
|
+
checked: "2026-09-14"
|
|
101
|
+
image_gem: true
|
|
102
|
+
preview_images: true
|
|
103
|
+
vendored_generator:
|
|
104
|
+
- _plugins/preview_image_generator.rb
|
|
105
|
+
- _plugins/preview_generator.rb
|
|
106
|
+
- scripts/lib/preview_generator.py
|
|
107
|
+
zer0_json: false
|
|
108
|
+
doctor: false
|
|
80
109
|
pins:
|
|
81
110
|
- file: _config.yml
|
|
82
111
|
kind: remote_theme
|
|
@@ -90,6 +119,14 @@ consumers:
|
|
|
90
119
|
risk: >-
|
|
91
120
|
Unpinned, same exposure as it-journey. Small override surface (2 includes).
|
|
92
121
|
Recommend pinning and joining the fan-out.
|
|
122
|
+
stack:
|
|
123
|
+
checked: "2026-09-14"
|
|
124
|
+
image_gem: true
|
|
125
|
+
preview_images: true
|
|
126
|
+
vendored_generator:
|
|
127
|
+
- scripts/generate-preview-images.sh
|
|
128
|
+
zer0_json: false
|
|
129
|
+
doctor: false
|
|
93
130
|
pins:
|
|
94
131
|
- file: _config.yml
|
|
95
132
|
kind: remote_theme
|
|
@@ -106,6 +143,15 @@ consumers:
|
|
|
106
143
|
Gemfile.azure + _config.azure.yml, and local dev mounts a path gem. A bump
|
|
107
144
|
must move the remote_theme tag and the gem constraint together or the two
|
|
108
145
|
production stacks render different theme versions.
|
|
146
|
+
stack:
|
|
147
|
+
checked: "2026-09-14"
|
|
148
|
+
image_gem: false
|
|
149
|
+
preview_images: true
|
|
150
|
+
vendored_generator:
|
|
151
|
+
- _plugins/preview_image_generator.rb
|
|
152
|
+
- scripts/generate-preview-images.sh
|
|
153
|
+
zer0_json: true
|
|
154
|
+
doctor: false
|
|
109
155
|
pins:
|
|
110
156
|
- file: _config.yml
|
|
111
157
|
kind: remote_theme
|
|
@@ -139,6 +185,15 @@ consumers:
|
|
|
139
185
|
render different theme versions with nothing here to notice. Recommend
|
|
140
186
|
pinning remote_theme and constraining Gemfile.azure together and joining
|
|
141
187
|
the fan-out.
|
|
188
|
+
stack:
|
|
189
|
+
checked: "2026-09-14"
|
|
190
|
+
image_gem: false
|
|
191
|
+
preview_images: true
|
|
192
|
+
vendored_generator:
|
|
193
|
+
- _plugins/preview_image_generator.rb
|
|
194
|
+
- scripts/generate-preview-images.sh
|
|
195
|
+
zer0_json: true
|
|
196
|
+
doctor: false
|
|
142
197
|
pins:
|
|
143
198
|
- file: _config.yml
|
|
144
199
|
kind: remote_theme
|
|
@@ -165,6 +220,14 @@ consumers:
|
|
|
165
220
|
so one bump here re-rolls the whole org (12 sites). The hub's own
|
|
166
221
|
_config.yml and hub.yml must move together — they are read by different
|
|
167
222
|
code paths and drift silently otherwise.
|
|
223
|
+
stack:
|
|
224
|
+
checked: "2026-09-14"
|
|
225
|
+
image_gem: true
|
|
226
|
+
preview_images: true
|
|
227
|
+
vendored_generator:
|
|
228
|
+
- scripts/generate-preview-images.sh
|
|
229
|
+
zer0_json: false
|
|
230
|
+
doctor: false
|
|
168
231
|
pins:
|
|
169
232
|
- file: _config.yml
|
|
170
233
|
kind: remote_theme
|
|
@@ -189,6 +252,14 @@ consumers:
|
|
|
189
252
|
Unpinned, and an org hub: a theme break here reaches every auto-discovered
|
|
190
253
|
member site at once. Recommend pinning both files together and joining
|
|
191
254
|
the fan-out (dispatch: true) like year-of-ai.
|
|
255
|
+
stack:
|
|
256
|
+
checked: "2026-09-14"
|
|
257
|
+
image_gem: true
|
|
258
|
+
preview_images: true
|
|
259
|
+
vendored_generator:
|
|
260
|
+
- scripts/generate-preview-images.sh
|
|
261
|
+
zer0_json: false
|
|
262
|
+
doctor: false
|
|
192
263
|
pins:
|
|
193
264
|
- file: _config.yml
|
|
194
265
|
kind: remote_theme
|
|
@@ -220,6 +291,13 @@ consumers:
|
|
|
220
291
|
Gemfile.lock resolved 1.25.0 while the Gemfile constraint (~> 1.25)
|
|
221
292
|
already permitted 1.28.0 — stale purely because nothing was nudging it.
|
|
222
293
|
Keeps two deliberate include forks, declared in its .theme-overrides.yml.
|
|
294
|
+
stack:
|
|
295
|
+
checked: "2026-09-14"
|
|
296
|
+
image_gem: true
|
|
297
|
+
preview_images: true
|
|
298
|
+
vendored_generator: []
|
|
299
|
+
zer0_json: false
|
|
300
|
+
doctor: false
|
|
223
301
|
pins:
|
|
224
302
|
- file: Gemfile
|
|
225
303
|
kind: gem_constraint
|
|
@@ -246,6 +324,13 @@ consumers:
|
|
|
246
324
|
Unpinned, and with no local preview path a contributor cannot see a theme
|
|
247
325
|
break before pushing. Keeps three deliberate overrides, declared in its
|
|
248
326
|
.theme-overrides.yml.
|
|
327
|
+
stack:
|
|
328
|
+
checked: "2026-09-14"
|
|
329
|
+
image_gem: false
|
|
330
|
+
preview_images: false
|
|
331
|
+
vendored_generator: []
|
|
332
|
+
zer0_json: false
|
|
333
|
+
doctor: false
|
|
249
334
|
pins:
|
|
250
335
|
- file: _config.yml
|
|
251
336
|
kind: remote_theme
|
|
@@ -264,6 +349,13 @@ consumers:
|
|
|
264
349
|
risk: >-
|
|
265
350
|
Unpinned, and its only build runs on push to main (jekyll-gh-pages.yml),
|
|
266
351
|
so a break ships before anyone sees it.
|
|
352
|
+
stack:
|
|
353
|
+
checked: "2026-09-14"
|
|
354
|
+
image_gem: false
|
|
355
|
+
preview_images: false
|
|
356
|
+
vendored_generator: []
|
|
357
|
+
zer0_json: false
|
|
358
|
+
doctor: false
|
|
267
359
|
pins:
|
|
268
360
|
- file: _config.yml
|
|
269
361
|
kind: remote_theme
|
|
@@ -289,6 +381,13 @@ consumers:
|
|
|
289
381
|
"unreachable" rather than reading its pin — drift reporting needs a token
|
|
290
382
|
here even though it is read-only. CI already supplies one; a bare local
|
|
291
383
|
run will not.
|
|
384
|
+
stack:
|
|
385
|
+
checked: "2026-09-14"
|
|
386
|
+
image_gem: false
|
|
387
|
+
preview_images: false
|
|
388
|
+
vendored_generator: []
|
|
389
|
+
zer0_json: false
|
|
390
|
+
doctor: false
|
|
292
391
|
pins:
|
|
293
392
|
- file: _config.yml
|
|
294
393
|
kind: remote_theme
|
data/_data/features.yml
CHANGED
|
@@ -2196,7 +2196,7 @@ features:
|
|
|
2196
2196
|
docs: "docs/systems/multilingual-translation.md"
|
|
2197
2197
|
features:
|
|
2198
2198
|
- "One large full-translation job (workflow_dispatch) plus bounded incremental runs when English content changes"
|
|
2199
|
-
- "Manifest-driven SHA change detection, pruning of deleted sources, and generated /fr
|
|
2199
|
+
- "Manifest-driven SHA change detection, pruning of deleted sources, and generated /fr/... permalinks mirroring the English URLs (GitHub Pages safe-mode friendly)"
|
|
2200
2200
|
- "Markdown-safe segment translation: code, Liquid, wiki-links and URLs masked as placeholders and validated"
|
|
2201
2201
|
- "Navbar language toggle with availability states, hreflang alternates, per-page html lang, machine-translation notice"
|
|
2202
2202
|
|
data/_data/i18n/fr.yml
CHANGED
|
@@ -4,18 +4,18 @@
|
|
|
4
4
|
# scripts/translate.rb from _data/ui-text.yml (en). Regenerate via
|
|
5
5
|
# the Translate workflow or: ruby scripts/translate.rb --langs fr
|
|
6
6
|
# ================================================================
|
|
7
|
-
skip_links: Liens d'
|
|
8
|
-
skip_primary_nav:
|
|
9
|
-
skip_content:
|
|
10
|
-
skip_main_content:
|
|
11
|
-
skip_footer:
|
|
7
|
+
skip_links: Liens d'évitement
|
|
8
|
+
skip_primary_nav: Passer à la navigation principale
|
|
9
|
+
skip_content: Passer au contenu
|
|
10
|
+
skip_main_content: Passer au contenu principal
|
|
11
|
+
skip_footer: Passer au pied de page
|
|
12
12
|
page: Page
|
|
13
13
|
pagination_previous: Précédent
|
|
14
14
|
pagination_next: Suivant
|
|
15
15
|
breadcrumb_home_label: Accueil
|
|
16
16
|
breadcrumb_separator: "/"
|
|
17
|
-
menu_label:
|
|
18
|
-
search_label:
|
|
17
|
+
menu_label: Afficher/masquer le menu
|
|
18
|
+
search_label: Afficher/masquer la recherche
|
|
19
19
|
toc_label: Sur cette page
|
|
20
20
|
ext_link_label: Lien direct
|
|
21
21
|
less_than: moins de
|
|
@@ -28,7 +28,7 @@ author_label: 'Auteur :'
|
|
|
28
28
|
comments_label: Laisser un commentaire
|
|
29
29
|
comments_title: Commentaires
|
|
30
30
|
more_label: En savoir plus
|
|
31
|
-
related_label: Vous
|
|
31
|
+
related_label: Vous aimerez peut-être aussi
|
|
32
32
|
follow_label: 'Suivre :'
|
|
33
33
|
feed_label: Flux
|
|
34
34
|
powered_by: Propulsé par
|
|
@@ -47,8 +47,8 @@ comment_btn_submit: Envoyer le commentaire
|
|
|
47
47
|
comment_btn_submitted: Envoyé
|
|
48
48
|
comment_success_msg: Merci pour votre commentaire ! Il apparaîtra sur le site une
|
|
49
49
|
fois approuvé.
|
|
50
|
-
comment_error_msg: Désolé, une erreur s'est produite lors de l'envoi. Veuillez
|
|
51
|
-
|
|
50
|
+
comment_error_msg: Désolé, une erreur s'est produite lors de l'envoi. Veuillez vérifier
|
|
51
|
+
que tous les champs obligatoires sont remplis et réessayer.
|
|
52
52
|
loading_label: Chargement...
|
|
53
53
|
search_label_text: Saisissez votre terme de recherche...
|
|
54
54
|
search_placeholder_text: Saisissez votre terme de recherche...
|
|
@@ -60,9 +60,9 @@ stats_total_pages: Total des pages
|
|
|
60
60
|
stats_categories: Catégories
|
|
61
61
|
stats_tags: Étiquettes
|
|
62
62
|
stats_last_updated: Dernière mise à jour
|
|
63
|
-
stats_overview:
|
|
63
|
+
stats_overview: Vue d'ensemble
|
|
64
64
|
stats_content_breakdown: Répartition du contenu
|
|
65
|
-
theme_toggle:
|
|
65
|
+
theme_toggle: Changer de thème
|
|
66
66
|
dark_mode: Mode sombre
|
|
67
67
|
light_mode: Mode clair
|
|
68
68
|
view_source: Voir la source
|
|
@@ -98,6 +98,22 @@ lang_machine_translated: auto
|
|
|
98
98
|
lang_machine_translated_title: Traduction générée automatiquement
|
|
99
99
|
lang_untranslated_note: Les langues marquées ne sont pas encore traduites — ces liens
|
|
100
100
|
ouvrent la version originale.
|
|
101
|
-
machine_translation_notice: Cette page a été traduite automatiquement
|
|
102
|
-
|
|
101
|
+
machine_translation_notice: Cette page a été traduite automatiquement depuis l'original
|
|
102
|
+
en anglais.
|
|
103
103
|
machine_translation_view_source: Voir l'original
|
|
104
|
+
diagram_label: Diagramme
|
|
105
|
+
diagram_tools_label: Outils de diagramme
|
|
106
|
+
diagram_zoom_in: Zoom avant
|
|
107
|
+
diagram_zoom_out: Zoom arrière
|
|
108
|
+
diagram_zoom_reset: Réinitialiser le zoom
|
|
109
|
+
diagram_fullscreen: Afficher en plein écran
|
|
110
|
+
diagram_fullscreen_close: Fermer le plein écran
|
|
111
|
+
diagram_copy_source: Copier la source du diagramme
|
|
112
|
+
diagram_copied: Copié
|
|
113
|
+
diagram_copy_failed: Échec de la copie
|
|
114
|
+
diagram_download: Télécharger en SVG
|
|
115
|
+
diagram_error_title: Ce diagramme n'a pas pu être affiché
|
|
116
|
+
diagram_error_hint: Vérifiez la syntaxe dans le Mermaid Live Editor. La source est
|
|
117
|
+
affichée ci-dessous pour ne rien perdre.
|
|
118
|
+
diagram_source_label: Source du diagramme
|
|
119
|
+
diagram_loading: Chargement du diagramme
|