jekyll-theme-zer0 1.14.0 → 1.15.0
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 +21 -0
- data/README.md +23 -21
- data/_data/backlog.yml +36 -13
- data/_data/roadmap.yml +23 -9
- data/assets/js/palette-generator.js +1 -1
- data/assets/js/theme-customizer.js +3 -1
- data/scripts/bin/validate +1 -0
- data/scripts/test/lib/run_tests.sh +1 -0
- data/scripts/test/lib/test_locale_independence.sh +29 -0
- metadata +4 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6bd5748efd683917f588e3f0e130536a6ba00727f0d2027445261b1258d2b22d
|
|
4
|
+
data.tar.gz: dcd71edd2118b837980feccce2474ab6936d7838756d4ed3a9aa4a80ef76ff75
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 28d42c8f1d75356b055eeeb493d8daf466ef1e8d23eb8aade96f4c77de0f1b1b7d307f821b5ef65716d2379920bd68f9d4862d0ad0fc214b82f9398349041617
|
|
7
|
+
data.tar.gz: 5c2d7da877cdcaa317ef6e90e6c60e5f28098dd1742101c793140801a45d8aa029f8d97960d830bdd4ef00c22f4241f4c2fd9c2e2659c218d2ae69369fd80f9a
|
data/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,27 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.15.0] - 2026-06-12
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
- Version bump: minor release
|
|
12
|
+
|
|
13
|
+
### Commits in this release
|
|
14
|
+
- 85d0295a feat(quality): implement six backlog tasks — T-003/004/008/014/015/016 (#144)
|
|
15
|
+
- 71b8fe46 fix(gemspec): require Ruby >= 3.2 to match modern dependency floor (#93)
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
- **Contribution templates (T-003)**: bug-report and feature-request issue forms, contact links, and a PR template with the conventional-commit/CHANGELOG/test checklist
|
|
19
|
+
- **Locale-independence guard (T-015)**: lib test suite runs the roadmap/backlog/preflight validators under `LC_ALL=C LANG=C` so the UTF-8 crash class fixed in 1.12.1 cannot return
|
|
20
|
+
|
|
21
|
+
### Fixed
|
|
22
|
+
- **Theme customizer (T-008)**: YAML export now quotes hex color values in both builders — unquoted `#RRGGBB` parsed as a YAML comment and silently dropped colors; frozen regression test promoted to live
|
|
23
|
+
- **Docs lint baseline (T-004/T-014)**: ~1,600 markdownlint violations fixed or config-tuned to zero (MD060 disabled as post-config stylistic noise, MD025 front-matter handling, MD024 siblings-only); a stray code fence that swallowed the troubleshooting "Advanced Topics" section into a code block repaired; table pipes escaped; 15 dead README links remapped to the reorganized `docs/` tree
|
|
24
|
+
- **site_generation suite (T-016)**: `jekyll build` failures now fail the suite instead of degrading to warnings (missing-bundler skip retained)
|
|
25
|
+
|
|
26
|
+
### Changed
|
|
27
|
+
- **Docs lint gate (T-014)**: both `|| true` suppressions removed from `docs-validate.yml` — markdownlint now blocks on a zero-violation baseline
|
|
28
|
+
|
|
8
29
|
## [1.14.0] - 2026-06-11
|
|
9
30
|
|
|
10
31
|
### Changed
|
data/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
title: zer0-mistakes
|
|
3
3
|
sub-title: AI-Native Jekyll Theme
|
|
4
4
|
description: AI-native Jekyll theme for GitHub Pages — Docker-first development, AI-powered installation, multi-agent integration (Copilot, Codex, Cursor, Claude), AI preview-image generation, and AIEO content optimization with Bootstrap 5.3.
|
|
5
|
-
version: 1.
|
|
5
|
+
version: 1.15.0
|
|
6
6
|
layout: landing
|
|
7
7
|
tags:
|
|
8
8
|
- jekyll
|
|
@@ -20,7 +20,7 @@ categories:
|
|
|
20
20
|
- bootstrap
|
|
21
21
|
- ai-tooling
|
|
22
22
|
created: 2024-02-10T23:51:11.480Z
|
|
23
|
-
lastmod: 2026-06-
|
|
23
|
+
lastmod: 2026-06-12T01:01:59.000Z
|
|
24
24
|
draft: false
|
|
25
25
|
permalink: /
|
|
26
26
|
slug: zer0
|
|
@@ -571,7 +571,7 @@ cd <your-username>.github.io
|
|
|
571
571
|
docker-compose up
|
|
572
572
|
```
|
|
573
573
|
|
|
574
|
-
See [docs/FORKING.md](docs/
|
|
574
|
+
See [docs/FORKING.md](docs/installation/forking.md) for the full progressive workflow.
|
|
575
575
|
|
|
576
576
|
---
|
|
577
577
|
|
|
@@ -703,7 +703,7 @@ zer0-mistakes documentation is split across three audiences. Pick the layer that
|
|
|
703
703
|
| [📊 Analytics](https://zer0-mistakes.com/docs/analytics/) | PostHog, Google Analytics setup |
|
|
704
704
|
| [🔍 SEO](https://zer0-mistakes.com/docs/seo/) | Meta tags, sitemap, structured data |
|
|
705
705
|
| [📓 Jupyter Notebooks](https://github.com/bamr87/zer0-mistakes/blob/main/docs/JUPYTER_NOTEBOOKS.md) | Notebook conversion documentation |
|
|
706
|
-
| [📝 PRD](docs/
|
|
706
|
+
| [📝 PRD](docs/architecture/prd-requirements.md) | Product requirements & roadmap |
|
|
707
707
|
| [🔒 Privacy Policy](https://zer0-mistakes.com/privacy-policy/) | GDPR/CCPA compliant privacy docs |
|
|
708
708
|
|
|
709
709
|
### Contributor Technical Reference
|
|
@@ -712,18 +712,18 @@ These files live in the repo under `docs/` and are intended for theme contributo
|
|
|
712
712
|
|
|
713
713
|
| File | Topic |
|
|
714
714
|
|------|-------|
|
|
715
|
-
| [docs/design-system.md](docs/design-system.md) | Design system overview |
|
|
716
|
-
| [docs/design-tokens.md](docs/design-tokens.md) | Design tokens reference |
|
|
717
|
-
| [docs/components.md](docs/components.md) | UI component catalogue |
|
|
718
|
-
| [docs/layouts-and-navigation.md](docs/layouts-and-navigation.md) | Layout hierarchy & navigation |
|
|
719
|
-
| [docs/theming.md](docs/theming.md) | Sass / Bootstrap theming guide |
|
|
720
|
-
| [docs/customization.md](docs/customization.md) | Site customization patterns |
|
|
721
|
-
| [docs/configuration.md](docs/configuration.md) | `_config.yml` reference |
|
|
722
|
-
| [docs/code-blocks.md](docs/code-blocks.md) | Syntax highlighting setup |
|
|
723
|
-
| [docs/extending.md](docs/extending.md) | Adding layouts, includes & plugins |
|
|
724
|
-
| [docs/js-api.md](docs/js-api.md) | JavaScript module API |
|
|
725
|
-
| [docs/TROUBLESHOOTING.md](docs/
|
|
726
|
-
| [docs/FORKING.md](docs/
|
|
715
|
+
| [docs/design-system.md](docs/ui/design-system.md) | Design system overview |
|
|
716
|
+
| [docs/design-tokens.md](docs/ui/design-tokens.md) | Design tokens reference |
|
|
717
|
+
| [docs/components.md](docs/ui/components.md) | UI component catalogue |
|
|
718
|
+
| [docs/layouts-and-navigation.md](docs/ui/layouts-and-navigation.md) | Layout hierarchy & navigation |
|
|
719
|
+
| [docs/theming.md](docs/ui/theming.md) | Sass / Bootstrap theming guide |
|
|
720
|
+
| [docs/customization.md](docs/ui/customization.md) | Site customization patterns |
|
|
721
|
+
| [docs/configuration.md](docs/ui/configuration.md) | `_config.yml` reference |
|
|
722
|
+
| [docs/code-blocks.md](docs/ui/code-blocks.md) | Syntax highlighting setup |
|
|
723
|
+
| [docs/extending.md](docs/ui/extending.md) | Adding layouts, includes & plugins |
|
|
724
|
+
| [docs/js-api.md](docs/ui/js-api.md) | JavaScript module API |
|
|
725
|
+
| [docs/TROUBLESHOOTING.md](docs/development/troubleshooting.md) | Common issues & fixes |
|
|
726
|
+
| [docs/FORKING.md](docs/installation/forking.md) | Forking & personalization guide |
|
|
727
727
|
|
|
728
728
|
---
|
|
729
729
|
|
|
@@ -803,7 +803,7 @@ When you fork the theme as a starter, the workflows come with you. To make them
|
|
|
803
803
|
|
|
804
804
|
## 🗺 Roadmap
|
|
805
805
|
|
|
806
|
-
The diagram and table below are auto-generated from [`_data/roadmap.yml`](_data/roadmap.yml) by [`scripts/generate-roadmap.sh`](scripts/generate-roadmap.sh). See the full [Roadmap page](https://zer0-mistakes.com/roadmap/) for per-version detail and the [PRD](docs/
|
|
806
|
+
The diagram and table below are auto-generated from [`_data/roadmap.yml`](_data/roadmap.yml) by [`scripts/generate-roadmap.sh`](scripts/generate-roadmap.sh). See the full [Roadmap page](https://zer0-mistakes.com/roadmap/) for per-version detail and the [PRD](docs/architecture/prd-requirements.md) for product context.
|
|
807
807
|
|
|
808
808
|
<!-- ROADMAP_MERMAID:START -->
|
|
809
809
|
|
|
@@ -831,8 +831,9 @@ gantt
|
|
|
831
831
|
v1.10 Roadmap Validation :done, 2026-06, 2026-06
|
|
832
832
|
v1.11 Continuous-Evolution Loop :done, 2026-06, 2026-06
|
|
833
833
|
v1.12 Headless Endpoints :done, 2026-06, 2026-06
|
|
834
|
+
v1.13 Quality Framework — First Wave :done, 2026-06, 2026-06
|
|
834
835
|
section Current
|
|
835
|
-
v1.
|
|
836
|
+
v1.14 Zer0-Mistake Quality Framework :active, 2026-06, 2026-08
|
|
836
837
|
section Future
|
|
837
838
|
v2.0 CMS Integration :2026-06, 2026-08
|
|
838
839
|
v2.1 i18n Support :2026-08, 2026-10
|
|
@@ -865,7 +866,8 @@ gantt
|
|
|
865
866
|
| **v1.10** | ✅ Completed | Jun 2026 | Roadmap integrity validation and catch-up milestones so the roadmap tracks the shipped gem. |
|
|
866
867
|
| **v1.11** | ✅ Completed | Jun 2026 | Self-sustaining backlog loop so AI agents keep improving the repo between human sessions. |
|
|
867
868
|
| **v1.12** | ✅ Completed | Jun 2026 | Machine-readable site endpoints for downstream sites and AI agents. |
|
|
868
|
-
| **v1.13** |
|
|
869
|
+
| **v1.13** | ✅ Completed | Jun 2026 | First shipped wave of the Zer0-Mistake Quality Framework: CI gate parity and DOM sanitization. |
|
|
870
|
+
| **v1.14** | 🚧 In Progress | Current (1.14.x) | Close the gap between the repo's quality gates and what CI actually enforces — no mistake lands green. |
|
|
869
871
|
| **v2.0** | 🗓 Planned | Q3 2026 | Headless CMS integration with a content API and admin dashboard. |
|
|
870
872
|
| **v2.1** | 🗓 Planned | Q4 2026 | Multi-language content support with locale-aware routing. |
|
|
871
873
|
| **v2.2** | 🗓 Planned | Q4 2026 | Visual theme customizer, A/B testing, and conversion funnels. |
|
|
@@ -909,7 +911,7 @@ git push origin feature/awesome-feature
|
|
|
909
911
|
|
|
910
912
|
| Metric | Value |
|
|
911
913
|
|--------|-------|
|
|
912
|
-
| **Current Version** | 1.
|
|
914
|
+
| **Current Version** | 1.15.0 ([RubyGems](https://rubygems.org/gems/jekyll-theme-zer0), [CHANGELOG](/CHANGELOG)) |
|
|
913
915
|
| **Documented Features** | 43 ([Feature Registry](https://github.com/bamr87/zer0-mistakes/blob/main/_data/features.yml)) |
|
|
914
916
|
| **Setup Time** | 2-5 minutes ([install.sh benchmarks](https://github.com/bamr87/zer0-mistakes/blob/main/install.sh)) |
|
|
915
917
|
| **Documentation Pages** | 70+ ([browse docs](https://zer0-mistakes.com/pages/)) |
|
|
@@ -964,6 +966,6 @@ And these AI partners that make zer0-mistakes truly AI-native:
|
|
|
964
966
|
|
|
965
967
|
**Built with ❤️ — and a little help from our AI partners — for the Jekyll community**
|
|
966
968
|
|
|
967
|
-
**v1.
|
|
969
|
+
**v1.15.0** • [Changelog](CHANGELOG.md) • [License](LICENSE) • [Contributing](CONTRIBUTING.md) • [AI Agent Guide](AGENTS.md)
|
|
968
970
|
|
|
969
971
|
|
data/_data/backlog.yml
CHANGED
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
|
|
56
56
|
meta:
|
|
57
57
|
title: "zer0-mistakes Backlog"
|
|
58
|
-
updated: 2026-06-
|
|
58
|
+
updated: 2026-06-12
|
|
59
59
|
next_id: 19
|
|
60
60
|
|
|
61
61
|
tasks:
|
|
@@ -106,7 +106,7 @@ tasks:
|
|
|
106
106
|
|
|
107
107
|
- id: T-003
|
|
108
108
|
title: "Add GitHub issue templates and a pull-request template"
|
|
109
|
-
status:
|
|
109
|
+
status: done
|
|
110
110
|
priority: P2
|
|
111
111
|
area: infra
|
|
112
112
|
risk: standard
|
|
@@ -116,17 +116,21 @@ tasks:
|
|
|
116
116
|
The repo has no `.github/ISSUE_TEMPLATE/` or PR template. Add a bug-report
|
|
117
117
|
and feature-request issue form plus a PR template that nudges contributors
|
|
118
118
|
toward conventional commits, CHANGELOG updates, and the test checklist.
|
|
119
|
+
Done 2026-06-12: bug-report and feature-request issue forms, config.yml
|
|
120
|
+
with contact links (blank issues stay enabled for the API-driven backlog
|
|
121
|
+
sync), and a PR template with the conventional-commit/CHANGELOG/test
|
|
122
|
+
checklist.
|
|
119
123
|
acceptance:
|
|
120
124
|
- "`.github/ISSUE_TEMPLATE/bug_report.yml` and `feature_request.yml` exist and render."
|
|
121
125
|
- "`.github/pull_request_template.md` exists with a conventional-commit + CHANGELOG + tests checklist."
|
|
122
126
|
- "Agent-filed backlog issues remain compatible with the new templates (no broken automation)."
|
|
123
127
|
links: { issue: null, pr: null, roadmap: null }
|
|
124
128
|
created: 2026-05-31
|
|
125
|
-
updated: 2026-
|
|
129
|
+
updated: 2026-06-12
|
|
126
130
|
|
|
127
131
|
- id: T-004
|
|
128
132
|
title: "Docs-freshness sweep: reconcile docs/ ↔ pages/_docs/ and fix broken links"
|
|
129
|
-
status:
|
|
133
|
+
status: done
|
|
130
134
|
priority: P2
|
|
131
135
|
area: docs
|
|
132
136
|
risk: low
|
|
@@ -136,13 +140,18 @@ tasks:
|
|
|
136
140
|
Run the markdown-link checker and audit the two-tier docs for drift,
|
|
137
141
|
stale dates/versions, and any user/technical pages that fell out of sync
|
|
138
142
|
after the recent alignment commit.
|
|
143
|
+
Done 2026-06-12: markdownlint baseline cleaned to zero violations
|
|
144
|
+
(~1,600 fixed: auto-fix pass, MD060/MD025/MD024 config tuning, fence
|
|
145
|
+
languages, table pipe escapes, a stray fence swallowing a docs section),
|
|
146
|
+
15 dead README links remapped to the reorganized docs/ tree,
|
|
147
|
+
check-links.sh reports 0 broken links.
|
|
139
148
|
acceptance:
|
|
140
149
|
- "`markdown-link-check` (config in `.github/config/`) reports no broken internal links."
|
|
141
150
|
- "Any stale version/date references in `docs/` and `pages/_docs/` are corrected."
|
|
142
151
|
- "Cross-links between the user tier and technical tier resolve both ways."
|
|
143
152
|
links: { issue: null, pr: null, roadmap: null }
|
|
144
153
|
created: 2026-05-31
|
|
145
|
-
updated: 2026-
|
|
154
|
+
updated: 2026-06-12
|
|
146
155
|
|
|
147
156
|
- id: T-005
|
|
148
157
|
title: "Coverage baseline: identify the lowest-covered subsystems toward the 90% goal"
|
|
@@ -192,7 +201,7 @@ tasks:
|
|
|
192
201
|
|
|
193
202
|
- id: T-008
|
|
194
203
|
title: "Fix theme-customizer YAML export to quote hex color values"
|
|
195
|
-
status:
|
|
204
|
+
status: done
|
|
196
205
|
priority: P2
|
|
197
206
|
area: feat
|
|
198
207
|
risk: standard
|
|
@@ -203,13 +212,17 @@ tasks:
|
|
|
203
212
|
YAML without quoting strings that start with `#`. Unquoted `#RRGGBB` is treated as a
|
|
204
213
|
YAML comment by parsers, silently dropping colour values. A regression guard in
|
|
205
214
|
`test/visual/theme-colors.spec.js` is frozen as `test.fixme` until the bug is fixed.
|
|
215
|
+
Done 2026-06-12: both YAML builders (theme-customizer.js fallback and
|
|
216
|
+
palette-generator.js commented overrides) quote color values; frozen
|
|
217
|
+
regression test promoted to live test(); export verified parseable by
|
|
218
|
+
Ruby YAML with colors preserved.
|
|
206
219
|
acceptance:
|
|
207
220
|
- "JS export wraps every hex colour value (matching `/#[0-9a-fA-F]{3,8}/`) in double quotes in the generated YAML."
|
|
208
221
|
- "The `test.fixme` in `test/visual/theme-colors.spec.js` is promoted to a live `test()` and passes in CI."
|
|
209
222
|
- "Exported YAML is valid when parsed by `yaml.safe_load` in Ruby."
|
|
210
223
|
links: { issue: null, pr: null, roadmap: null }
|
|
211
224
|
created: 2026-06-01
|
|
212
|
-
updated: 2026-06-
|
|
225
|
+
updated: 2026-06-12
|
|
213
226
|
|
|
214
227
|
- id: T-009
|
|
215
228
|
title: "Sanitize sensitive config keys from admin config-page DOM injection"
|
|
@@ -342,7 +355,7 @@ tasks:
|
|
|
342
355
|
|
|
343
356
|
- id: T-014
|
|
344
357
|
title: "Re-arm the docs link-check gate (remove warn-only || true)"
|
|
345
|
-
status:
|
|
358
|
+
status: done
|
|
346
359
|
priority: P2
|
|
347
360
|
area: lint
|
|
348
361
|
risk: standard
|
|
@@ -352,17 +365,20 @@ tasks:
|
|
|
352
365
|
`docs-validate.yml` runs markdown-link-check with `|| true` ("warn-only
|
|
353
366
|
until baseline is clean"), so broken links accumulate. Fix the links it
|
|
354
367
|
currently reports, then drop the `|| true` so the gate blocks.
|
|
368
|
+
Done 2026-06-12: baseline cleaned to zero violations and both
|
|
369
|
+
warn-only suppressions removed from docs-validate.yml — the lint gate
|
|
370
|
+
now blocks. (The internal link check was already blocking.)
|
|
355
371
|
acceptance:
|
|
356
372
|
- "All links reported by the current `docs-validate.yml` run are fixed or allowlisted in `.github/config/.markdown-link-check.json`."
|
|
357
373
|
- "Both `|| true` suppressions removed from `docs-validate.yml`."
|
|
358
374
|
- "`docs-validate.yml` passes blocking on a follow-up PR."
|
|
359
375
|
links: { issue: null, pr: null, roadmap: "1.13" }
|
|
360
376
|
created: 2026-06-10
|
|
361
|
-
updated: 2026-06-
|
|
377
|
+
updated: 2026-06-12
|
|
362
378
|
|
|
363
379
|
- id: T-015
|
|
364
380
|
title: "Locale-independence regression guard for Ruby/Bash tooling"
|
|
365
|
-
status:
|
|
381
|
+
status: done
|
|
366
382
|
priority: P2
|
|
367
383
|
area: infra
|
|
368
384
|
risk: standard
|
|
@@ -374,17 +390,21 @@ tasks:
|
|
|
374
390
|
only reproduced without a UTF-8 locale. Add a guard so the bug class
|
|
375
391
|
cannot return: run the validators under `LC_ALL=C` in a lib test or a
|
|
376
392
|
dedicated CI step.
|
|
393
|
+
Done 2026-06-12: scripts/test/lib/test_locale_independence.sh runs
|
|
394
|
+
generate-roadmap --check/--validate, sync-backlog --check, and
|
|
395
|
+
validate --quick under LC_ALL=C LANG=C; verified the guard fails when
|
|
396
|
+
the explicit-UTF-8 read is reverted.
|
|
377
397
|
acceptance:
|
|
378
398
|
- "A test (scripts/test/lib/) or CI step runs `generate-roadmap.rb --check`, `sync-backlog.rb --check`, and `validate --quick` with `LC_ALL=C LANG=C`."
|
|
379
399
|
- "The guard fails when the explicit-UTF-8 reads are reverted (verified once locally)."
|
|
380
400
|
- "`./scripts/bin/test` stays green."
|
|
381
401
|
links: { issue: null, pr: null, roadmap: "1.13" }
|
|
382
402
|
created: 2026-06-10
|
|
383
|
-
updated: 2026-06-
|
|
403
|
+
updated: 2026-06-12
|
|
384
404
|
|
|
385
405
|
- id: T-016
|
|
386
406
|
title: "site_generation suite: fail on Jekyll build errors instead of warning"
|
|
387
|
-
status:
|
|
407
|
+
status: done
|
|
388
408
|
priority: P2
|
|
389
409
|
area: tests
|
|
390
410
|
risk: standard
|
|
@@ -398,13 +418,16 @@ tasks:
|
|
|
398
418
|
the suite now gating PRs in CI (working bundler guaranteed), build
|
|
399
419
|
failures should fail the suite; keep the skip only for genuinely
|
|
400
420
|
missing toolchain (no bundler).
|
|
421
|
+
Done 2026-06-12: jekyll build failures now fail the suite (bundler-
|
|
422
|
+
missing still skips); verified strict suite passes locally with real
|
|
423
|
+
builds.
|
|
401
424
|
acceptance:
|
|
402
425
|
- "A non-zero `jekyll build` exit fails the suite when bundler is available."
|
|
403
426
|
- "The bundler-missing path still skips with a warning (local minimal environments)."
|
|
404
427
|
- "Suite passes in CI and via `./test/test_runner.sh --suites site_generation` locally."
|
|
405
428
|
links: { issue: null, pr: null, roadmap: "1.13" }
|
|
406
429
|
created: 2026-06-10
|
|
407
|
-
updated: 2026-06-
|
|
430
|
+
updated: 2026-06-12
|
|
408
431
|
|
|
409
432
|
- id: T-017
|
|
410
433
|
title: "Fix yamllint violations in .github/workflows/version-bump.yml"
|
data/_data/roadmap.yml
CHANGED
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
meta:
|
|
61
61
|
title: "zer0-mistakes Roadmap"
|
|
62
62
|
tagline: "Past releases, current focus, and future plans for the zer0-mistakes Jekyll theme."
|
|
63
|
-
updated: 2026-06-
|
|
63
|
+
updated: 2026-06-12
|
|
64
64
|
|
|
65
65
|
milestones:
|
|
66
66
|
# --- Completed -------------------------------------------------------------
|
|
@@ -326,23 +326,37 @@ milestones:
|
|
|
326
326
|
- "Auto-generated `/sitemap/` endpoint"
|
|
327
327
|
- "Ruby gem and Mermaid dependency updates"
|
|
328
328
|
|
|
329
|
+
- version: "1.13"
|
|
330
|
+
title: "Quality Framework — First Wave"
|
|
331
|
+
status: completed
|
|
332
|
+
section: Completed
|
|
333
|
+
start: 2026-06
|
|
334
|
+
end: 2026-06
|
|
335
|
+
released: 2026-06-11
|
|
336
|
+
summary: "First shipped wave of the Zer0-Mistake Quality Framework: CI gate parity and DOM sanitization."
|
|
337
|
+
features:
|
|
338
|
+
- "CI gate parity (T-012) — PRs run the full canonical test entrypoint, not a subset"
|
|
339
|
+
- "Admin config-page DOM sanitization (T-009), Liquid + plugin layers"
|
|
340
|
+
- "Release changelog single source of truth; workflow lint cleanup (T-017)"
|
|
341
|
+
- "Gate-coverage controls contract documented in the workflows README"
|
|
342
|
+
|
|
329
343
|
# --- Current ---------------------------------------------------------------
|
|
330
344
|
|
|
331
|
-
- version: "1.
|
|
345
|
+
- version: "1.14"
|
|
332
346
|
title: "Zer0-Mistake Quality Framework"
|
|
333
347
|
status: active
|
|
334
348
|
section: Current
|
|
335
349
|
start: 2026-06
|
|
336
350
|
end: 2026-08
|
|
337
|
-
target: "Current (1.
|
|
351
|
+
target: "Current (1.14.x)"
|
|
338
352
|
summary: "Close the gap between the repo's quality gates and what CI actually enforces — no mistake lands green."
|
|
339
353
|
features:
|
|
340
|
-
- "
|
|
341
|
-
- "
|
|
342
|
-
- "
|
|
343
|
-
- "
|
|
344
|
-
- "Coverage baseline with follow-up tasks for the lowest-covered subsystems"
|
|
345
|
-
- "
|
|
354
|
+
- "Re-armed docs lint gate on a zero-violation baseline (T-014)"
|
|
355
|
+
- "Locale-independence regression guard for the Ruby/Bash tooling (T-015)"
|
|
356
|
+
- "Strict site_generation suite — build failures fail the gate (T-016)"
|
|
357
|
+
- "Re-armed pixel-snapshot gate (refreshed baselines, no continue-on-error) (T-013)"
|
|
358
|
+
- "Coverage baseline with follow-up tasks for the lowest-covered subsystems (T-005)"
|
|
359
|
+
- "Navbar WCAG 2.1 AA fixes unlocking the axe-core full audit (T-007)"
|
|
346
360
|
|
|
347
361
|
- version: "2.0"
|
|
348
362
|
title: "CMS Integration"
|
|
@@ -381,7 +381,7 @@ document.addEventListener('DOMContentLoaded', function () {
|
|
|
381
381
|
['--bs-border-radius', '--bs-border-width', '--bs-body-font-size', '--bs-body-font-weight', '--bs-body-line-height'].forEach(function (v) {
|
|
382
382
|
if (state.liveOverrides[v]) {
|
|
383
383
|
var key = v.replace('--bs-', '').replace(/-/g, '_');
|
|
384
|
-
lines.push('# ' + key + ': ' + state.liveOverrides[v]);
|
|
384
|
+
lines.push('# ' + key + ': "' + state.liveOverrides[v] + '"');
|
|
385
385
|
}
|
|
386
386
|
});
|
|
387
387
|
|
|
@@ -121,7 +121,9 @@ document.addEventListener('DOMContentLoaded', function () {
|
|
|
121
121
|
lines.push('');
|
|
122
122
|
lines.push('theme_color:');
|
|
123
123
|
document.querySelectorAll('[data-color-key]').forEach(function (el) {
|
|
124
|
-
|
|
124
|
+
// Quote values: unquoted #RRGGBB is parsed as a YAML comment,
|
|
125
|
+
// silently dropping the color (T-008).
|
|
126
|
+
lines.push(' ' + el.dataset.colorKey + ': "' + el.value + '"');
|
|
125
127
|
});
|
|
126
128
|
var output = document.getElementById('theme-yaml-output');
|
|
127
129
|
if (output) output.textContent = lines.join('\n');
|
data/scripts/bin/validate
CHANGED
|
@@ -127,6 +127,7 @@ main() {
|
|
|
127
127
|
source "$TEST_DIR/test_changelog.sh"
|
|
128
128
|
source "$TEST_DIR/test_gem.sh"
|
|
129
129
|
source "$TEST_DIR/test_analyze_commits.sh"
|
|
130
|
+
source "$TEST_DIR/test_locale_independence.sh"
|
|
130
131
|
|
|
131
132
|
# Summary
|
|
132
133
|
echo -e "\n${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# Locale-independence regression guard (T-015)
|
|
4
|
+
#
|
|
5
|
+
# PR #132 fixed `invalid byte sequence in US-ASCII` crashes in the Ruby
|
|
6
|
+
# tooling that only reproduced when no UTF-8 locale was set (minimal
|
|
7
|
+
# containers, some CI runners). These tests run the validators under
|
|
8
|
+
# LC_ALL=C LANG=C so the bug class cannot silently return: the repo files
|
|
9
|
+
# they read (README.md, _data/*.yml, package.json) contain multibyte
|
|
10
|
+
# characters, so any locale-dependent File.read regresses to a crash here.
|
|
11
|
+
|
|
12
|
+
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." && pwd)"
|
|
13
|
+
|
|
14
|
+
echo "Testing locale independence (LC_ALL=C LANG=C)..."
|
|
15
|
+
|
|
16
|
+
assert_true "(cd '$REPO_ROOT' && LC_ALL=C LANG=C ruby scripts/generate-roadmap.rb --check >/dev/null 2>&1)" \
|
|
17
|
+
"generate-roadmap.rb --check survives a C locale"
|
|
18
|
+
|
|
19
|
+
assert_true "(cd '$REPO_ROOT' && LC_ALL=C LANG=C ruby scripts/generate-roadmap.rb --validate >/dev/null 2>&1)" \
|
|
20
|
+
"generate-roadmap.rb --validate survives a C locale"
|
|
21
|
+
|
|
22
|
+
assert_true "(cd '$REPO_ROOT' && LC_ALL=C LANG=C ruby scripts/sync-backlog.rb --check >/dev/null 2>&1)" \
|
|
23
|
+
"sync-backlog.rb --check survives a C locale"
|
|
24
|
+
|
|
25
|
+
# validate --quick covers the package.json read in scripts/bin/validate
|
|
26
|
+
assert_true "(cd '$REPO_ROOT' && LC_ALL=C LANG=C ./scripts/bin/validate --quick >/dev/null 2>&1)" \
|
|
27
|
+
"validate --quick survives a C locale"
|
|
28
|
+
|
|
29
|
+
echo -e "\n${GREEN}locale-independence tests complete${NC}"
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: jekyll-theme-zer0
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.15.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Amr Abdel
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-06-
|
|
11
|
+
date: 2026-06-12 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: jekyll
|
|
@@ -483,6 +483,7 @@ files:
|
|
|
483
483
|
- scripts/test/lib/test_changelog.sh
|
|
484
484
|
- scripts/test/lib/test_gem.sh
|
|
485
485
|
- scripts/test/lib/test_git.sh
|
|
486
|
+
- scripts/test/lib/test_locale_independence.sh
|
|
486
487
|
- scripts/test/lib/test_validation.sh
|
|
487
488
|
- scripts/test/lib/test_version.sh
|
|
488
489
|
- scripts/test/theme/validate
|
|
@@ -510,7 +511,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
510
511
|
requirements:
|
|
511
512
|
- - ">="
|
|
512
513
|
- !ruby/object:Gem::Version
|
|
513
|
-
version: 2
|
|
514
|
+
version: '3.2'
|
|
514
515
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
515
516
|
requirements:
|
|
516
517
|
- - ">="
|