jekyll-theme-zer0 1.19.1 → 1.20.2
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 +395 -0
- data/README.md +27 -19
- data/_data/authors.yml +154 -5
- data/_data/backlog.yml +5 -5
- data/_data/content_statistics.yml +273 -297
- data/_data/features.yml +4 -25
- data/_data/navigation/README.md +24 -0
- data/_data/navigation/about.yml +2 -0
- data/_data/navigation/main.yml +2 -7
- data/_data/roadmap.yml +86 -12
- data/_includes/components/author-avatar-url.html +28 -0
- data/_includes/components/author-bio.html +86 -0
- data/_includes/components/author-card.html +184 -121
- data/_includes/components/author-eeat.html +10 -4
- data/_includes/components/info-section.html +1 -1
- data/_includes/components/mermaid.html +0 -3
- data/_includes/components/post-card.html +19 -9
- data/_includes/content/giscus.html +3 -2
- data/_includes/core/footer-fabs.html +28 -0
- data/_includes/core/footer.html +7 -17
- data/_includes/core/head.html +2 -2
- data/_includes/navigation/breadcrumbs.html +20 -2
- data/_includes/navigation/local-graph.html +18 -2
- data/_includes/obsidian/full-graph.html +4 -6
- data/_layouts/article.html +44 -74
- data/_layouts/author.html +274 -0
- data/_layouts/authors.html +55 -0
- data/_layouts/news.html +3 -3
- data/_layouts/note.html +21 -6
- data/_layouts/notebook.html +21 -6
- data/_layouts/root.html +31 -17
- data/_layouts/section.html +3 -3
- data/_plugins/author_pages_generator.rb +121 -0
- data/_sass/components/_author.scss +219 -0
- data/_sass/components/_content-tables.scss +16 -1
- data/_sass/components/_notes-index.scss +102 -0
- data/_sass/components/_search-modal.scss +40 -0
- data/_sass/components/_ui-enhancements.scss +570 -0
- data/_sass/core/_docs-code-examples.scss +463 -0
- data/_sass/core/_docs-layout.scss +0 -453
- data/_sass/core/_navbar.scss +253 -0
- data/_sass/core/_sidebar-extras.scss +79 -0
- data/_sass/core/_toc.scss +87 -0
- data/_sass/core/_variables.scss +7 -142
- data/_sass/custom.scss +24 -1122
- data/_sass/layouts/_global-chrome.scss +59 -0
- data/assets/css/main.scss +19 -2
- data/assets/js/author-profile.js +190 -0
- data/assets/js/modules/navigation/navbar.js +104 -0
- data/assets/js/obsidian-graph.js +2 -2
- data/assets/js/obsidian-local-graph.js +11 -5
- data/assets/vendor/cytoscape/cytoscape.min.js +32 -0
- data/scripts/README.md +39 -0
- data/scripts/bin/validate +11 -1
- data/scripts/dev/css-diff.sh +49 -0
- data/scripts/dev/shot.js +37 -0
- data/scripts/features/generate-preview-images +110 -6
- data/scripts/features/pixelate-preview-images +126 -0
- data/scripts/features/pixelate_images.py +662 -0
- data/scripts/github-setup.sh +0 -0
- data/scripts/lib/preview_generator.py +47 -3
- data/scripts/pixelate-preview-images.sh +12 -0
- data/scripts/test/integration/auto-version +10 -8
- data/scripts/test/lib/run_tests.sh +2 -0
- data/scripts/test/lib/test_content_review.sh +205 -0
- data/scripts/test/lib/test_pixelate_images.sh +108 -0
- metadata +25 -20
- data/_data/hub.yml +0 -68
- data/_data/hub_index.yml +0 -203
- data/_data/navigation/hub.yml +0 -110
- data/assets/vendor/font-awesome/css/all.min.css +0 -9
- data/assets/vendor/font-awesome/webfonts/fa-brands-400.ttf +0 -0
- data/assets/vendor/font-awesome/webfonts/fa-brands-400.woff2 +0 -0
- data/assets/vendor/font-awesome/webfonts/fa-regular-400.ttf +0 -0
- data/assets/vendor/font-awesome/webfonts/fa-regular-400.woff2 +0 -0
- data/assets/vendor/font-awesome/webfonts/fa-solid-900.ttf +0 -0
- data/assets/vendor/font-awesome/webfonts/fa-solid-900.woff2 +0 -0
- data/assets/vendor/font-awesome/webfonts/fa-v4compatibility.ttf +0 -0
- data/assets/vendor/font-awesome/webfonts/fa-v4compatibility.woff2 +0 -0
- data/assets/vendor/jquery/jquery-3.7.1.min.js +0 -2
- data/scripts/lib/hub.rb +0 -208
- data/scripts/provision-org-sites.rb +0 -252
- data/scripts/provision-org-sites.sh +0 -23
- data/scripts/sync-hub-metadata.rb +0 -184
- data/scripts/sync-hub-metadata.sh +0 -22
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2871e1d0cd0522e37b6bac85065edfe6767fc749c39a0ac257fec51dbff97691
|
|
4
|
+
data.tar.gz: 12d1d870ed1115cd2044446c66b318f4d6e6c65b1ca3a59493353e5a9d6402a9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 25198dd08404a6ae41724e8e172ce38f832f19b34efd83761cff86ba033c5952e2d315dad70c75b343cb0c94e216c1d5755a0c53048252a2bd7a1c1a61ac590b
|
|
7
|
+
data.tar.gz: 49d28d829375c95f39986c6e19ff37d524e06f00ae7c388b743e6cd073a35f9c4717aa47f877bb8802d7c5f12fc1f2dd2d618c12785a6342f8a2164774fe6576
|
data/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,401 @@ 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.20.2](https://github.com/bamr87/zer0-mistakes/compare/v1.20.1...v1.20.2) (2026-06-25)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* **navigation:** stop fixed navbar being cut off by page overflow ([#215](https://github.com/bamr87/zer0-mistakes/issues/215)) ([8c32563](https://github.com/bamr87/zer0-mistakes/commit/8c325633ab7f82f96fa5605716d995fc84935af9))
|
|
14
|
+
* **release:** re-sync Gemfile.lock and package-lock.json to 1.20.1 ([#216](https://github.com/bamr87/zer0-mistakes/issues/216)) ([294575b](https://github.com/bamr87/zer0-mistakes/commit/294575b6b70c1a2ee7f08e839457dcd30625043b))
|
|
15
|
+
|
|
16
|
+
## [1.20.1](https://github.com/bamr87/zer0-mistakes/compare/v1.20.0...v1.20.1) (2026-06-24)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
### Bug Fixes
|
|
20
|
+
|
|
21
|
+
* harden remote-theme consumer experience + vendor cytoscape ([#205](https://github.com/bamr87/zer0-mistakes/issues/205)) ([c6b0312](https://github.com/bamr87/zer0-mistakes/commit/c6b0312312842c9bf88fccd81472483fb4d15284))
|
|
22
|
+
* **layouts:** render hero image for breaking posts, not just featured ([#189](https://github.com/bamr87/zer0-mistakes/issues/189)) ([4473a07](https://github.com/bamr87/zer0-mistakes/commit/4473a072fcc5d1018a196f8be94af5e0ba31620a))
|
|
23
|
+
|
|
24
|
+
## [1.20.0](https://github.com/bamr87/zer0-mistakes/compare/v1.19.0...v1.20.0) (2026-06-22)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
### Features
|
|
28
|
+
|
|
29
|
+
* **authors:** unified author profiles & About-the-Author across collections ([#193](https://github.com/bamr87/zer0-mistakes/issues/193)) ([a6db304](https://github.com/bamr87/zer0-mistakes/commit/a6db30422a5bce69a55acaba2989b461d781e013))
|
|
30
|
+
* **scripts:** add dependency-free preview-image pixelator ([#178](https://github.com/bamr87/zer0-mistakes/issues/178)) ([ada91ee](https://github.com/bamr87/zer0-mistakes/commit/ada91ee255d790ea94063419afc8ff9621fe06b0))
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
### Bug Fixes
|
|
34
|
+
|
|
35
|
+
* **chat-proxy:** identify as Claude Code for subscription OAuth tokens ([#185](https://github.com/bamr87/zer0-mistakes/issues/185)) ([8924efd](https://github.com/bamr87/zer0-mistakes/commit/8924efd167f3cddf866df2225c069470d0f8f13a))
|
|
36
|
+
* **config:** restore remote_theme contract + add missing lastmod (unblocks CI) ([#174](https://github.com/bamr87/zer0-mistakes/issues/174)) ([b995115](https://github.com/bamr87/zer0-mistakes/commit/b995115a4ffb745704f1111539085a610ba94053))
|
|
37
|
+
* **config:** restore zer0-mistakes.com site identity + CNAME (site was down) ([#176](https://github.com/bamr87/zer0-mistakes/issues/176)) ([9ef8ff8](https://github.com/bamr87/zer0-mistakes/commit/9ef8ff8335e0a9f394da1ec342f388d31470eb22))
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
### Performance Improvements
|
|
41
|
+
|
|
42
|
+
* slim Docker build, cache page-invariant chrome, drop dead vendor weight ([#186](https://github.com/bamr87/zer0-mistakes/issues/186)) ([28ba4eb](https://github.com/bamr87/zer0-mistakes/commit/28ba4eb0948b60cee94415865f66dd4a9a58391d))
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
### Reverts
|
|
46
|
+
|
|
47
|
+
* remove Year of AI / org content-hub pivot, restore theme landing page ([#180](https://github.com/bamr87/zer0-mistakes/issues/180)) ([3960f65](https://github.com/bamr87/zer0-mistakes/commit/3960f65b1af4c750216deda0d032a309b0f93b78))
|
|
48
|
+
|
|
49
|
+
## [Unreleased]
|
|
50
|
+
|
|
51
|
+
### Added
|
|
52
|
+
- **Visual-evidence standard + reusable evidence kit.** UI/behavioural changes
|
|
53
|
+
now ship a regression test **and** before/after visual evidence, surfaced in
|
|
54
|
+
release notes and enforced in CI:
|
|
55
|
+
- `test/visual/evidence-kit.mjs` — a config-driven generator that drives the
|
|
56
|
+
live site across a viewport matrix + configurations, measures page overflow
|
|
57
|
+
in before/after states, composes labelled montages (Playwright, no
|
|
58
|
+
ImageMagick), and writes `metrics.json` + a CHANGELOG snippet.
|
|
59
|
+
- `.github/skills/visual-evidence/SKILL.md` + `visual-evidence.instructions.md`
|
|
60
|
+
codify the standard (and how to file issues a fix uncovers into the backlog
|
|
61
|
+
loop). Indexed from `AGENTS.md`, `CLAUDE.md`, and the instructions README.
|
|
62
|
+
- `.github/workflows/evidence-gate.yml` — a required check that fails a UI PR
|
|
63
|
+
missing the test/evidence (opt-out label `skip-evidence`).
|
|
64
|
+
- **Autonomy policy extended** (`continuous-evolution.md`,
|
|
65
|
+
`backlog-implement.prompt.md`, `auto-merge.yml`): a `risk: low` **fix** that
|
|
66
|
+
ships tests + evidence is now auto-merge-eligible alongside docs/deps/lint.
|
|
67
|
+
|
|
68
|
+
### Fixed
|
|
69
|
+
- **Navbar no longer appears "cut off" at certain widths.** The root cause was
|
|
70
|
+
page-level horizontal overflow, not the navbar itself: because the header is
|
|
71
|
+
`position: fixed`, any element that pushed the page wider than the viewport
|
|
72
|
+
(a wide markdown table, a long inline-code token, an unwrapped Bootstrap
|
|
73
|
+
`.row`) created a sideways scrollbar and left the navbar's right edge
|
|
74
|
+
uncovered. Fixes:
|
|
75
|
+
- Wide content tables now scroll **inside** their `.content-table-wrapper`
|
|
76
|
+
card (`overflow-x: auto`) instead of overflowing the page — the wrapper that
|
|
77
|
+
`table-copy.js` injects previously had `overflow: visible`, which also
|
|
78
|
+
bypassed the existing mobile responsive-table fallback.
|
|
79
|
+
- Long unbroken inline-code tokens wrap in content areas instead of forcing a
|
|
80
|
+
horizontal scrollbar.
|
|
81
|
+
- A theme-wide `html { overflow-x: clip }` safety net guarantees no stray
|
|
82
|
+
element can make the fixed navbar look cut off. `clip` is used instead of
|
|
83
|
+
`hidden` so `position: sticky` (docs sidebar / TOC) keeps working; wide
|
|
84
|
+
content keeps its own local scroll so nothing is hidden.
|
|
85
|
+
- The mobile menu/settings offcanvas width is clamped (`min(21rem, 86vw)`) so
|
|
86
|
+
the slide-in panel and its close button always fit narrow phones, instead of
|
|
87
|
+
Bootstrap's fixed 400px overflowing the viewport.
|
|
88
|
+
- **Giscus comments were silently disabled** ([#201](https://github.com/bamr87/zer0-mistakes/issues/201)).
|
|
89
|
+
`_config.yml` defined the comment block under the misspelled key `gisgus:`
|
|
90
|
+
while every template reads `site.giscus`, so comments never rendered. Renamed
|
|
91
|
+
the key to `giscus:`. Fixing this also surfaced and fixed a latent
|
|
92
|
+
include-path error in `_includes/content/giscus.html` (a literal
|
|
93
|
+
`include giscus.html` Liquid tag inside an HTML doc comment) that only fired
|
|
94
|
+
once comments were enabled.
|
|
95
|
+
- **Theme chrome no longer injects internal links that 404 for remote-theme
|
|
96
|
+
Pages consumers** ([#204](https://github.com/bamr87/zer0-mistakes/issues/204)).
|
|
97
|
+
Tag badges (`article`/`note`/`notebook`), the breadcrumb collection-root crumb,
|
|
98
|
+
the local-graph "Full graph" link, and author byline profile links are now
|
|
99
|
+
**existence-gated** — they render as plain text when the target page isn't in
|
|
100
|
+
the build instead of linking to a 404. The post category base is configurable
|
|
101
|
+
via `category_base` (default `/news`); the tags page via `tags_page` (default
|
|
102
|
+
`/tags/`); the full-graph page via `obsidian_graph_url`.
|
|
103
|
+
|
|
104
|
+
### Changed
|
|
105
|
+
- **Vendored cytoscape.js** ([#152](https://github.com/bamr87/zer0-mistakes/issues/152)),
|
|
106
|
+
the last runtime CDN dependency in the theme. `cytoscape@3.30.0` is committed
|
|
107
|
+
under `assets/vendor/cytoscape/` (matching the Bootstrap/Icons/Mermaid
|
|
108
|
+
pattern) and loaded locally by the Obsidian local-graph FAB and full-graph
|
|
109
|
+
page, so the graph works under strict CSP and offline. Added to
|
|
110
|
+
`vendor-manifest.json`.
|
|
111
|
+
|
|
112
|
+
### Added
|
|
113
|
+
- **Dev-mode navbar fit warnings.** On local/dev hosts only, the navbar module
|
|
114
|
+
logs an actionable `console.warn` when the inline menubar has more top-level
|
|
115
|
+
items than fit the bar, or when page content overflows the viewport (the usual
|
|
116
|
+
"navbar looks cut off" cause) — naming the widest offending element. Silent on
|
|
117
|
+
deployed sites.
|
|
118
|
+
- **Quickstart documentation hub + fork/remote-theme guide (#126).** Fleshes out
|
|
119
|
+
`pages/_docs/quickstart/` (previously only `bare-minimum.md`): a new
|
|
120
|
+
`index.md` hub that links the available quickstart paths (bare-minimum,
|
|
121
|
+
fork-and-deploy, and the step-by-step series), and a full
|
|
122
|
+
`fork-and-deploy.md` guide covering the standard fork or remote-theme GitHub
|
|
123
|
+
Pages workflow end to end (choose model → setup → local preview → enable Pages
|
|
124
|
+
→ verify → troubleshoot). Both pages carry annotated screenshots under
|
|
125
|
+
`assets/images/docs/quickstart/` and score 🟢 excellent in the content
|
|
126
|
+
reviewer.
|
|
127
|
+
- **Remote-theme consumer checklist doc**
|
|
128
|
+
([#203](https://github.com/bamr87/zer0-mistakes/issues/203),
|
|
129
|
+
[#202](https://github.com/bamr87/zer0-mistakes/issues/202)). New
|
|
130
|
+
`pages/_docs/deployment/remote-theme-checklist.md` documenting what
|
|
131
|
+
`remote_theme` does not deliver on GitHub Pages (config, data, plugins) and how
|
|
132
|
+
to fill each gap — including the hand-authored `/search.json` + `/sitemap/`
|
|
133
|
+
files that the plugin-only generator can't produce in Pages safe mode.
|
|
134
|
+
- **Contributor workflow guardrails.** New `change-workflow` skill
|
|
135
|
+
(`.github/skills/change-workflow/SKILL.md`) codifying the branch → commit → PR
|
|
136
|
+
flow for any change (branch-first, one concern per PR, stage-by-path,
|
|
137
|
+
worktrees for parallel work, splitting a messy working tree). Paired with
|
|
138
|
+
expanded `version-control.instructions.md` rules — working-tree/branch
|
|
139
|
+
discipline, the `version.rb` ↔ `Gemfile.lock` invariant, and keeping generated
|
|
140
|
+
artifacts out of feature PRs — and indexed from `AGENTS.md`, `CLAUDE.md`, and
|
|
141
|
+
`.github/instructions/README.md`.
|
|
142
|
+
### Tests
|
|
143
|
+
- **Navbar responsiveness regression suite.** New
|
|
144
|
+
`test/visual/navbar-responsive.spec.js` (smoke tier) sweeps a 16-width matrix
|
|
145
|
+
(320 → 1920px) asserting no page-level horizontal overflow, the fixed header
|
|
146
|
+
spans the full viewport, the search/settings cluster stays on-screen, the
|
|
147
|
+
brand renders, and the inline menubar never clips its items. Adds offcanvas-,
|
|
148
|
+
dropdown-, long-title-, and many-items- fit checks, plus a reusable
|
|
149
|
+
`measureNavbarLayout()` fixture (overflow detection is element-level so it
|
|
150
|
+
still catches regressions the `overflow-x: clip` net would otherwise hide).
|
|
151
|
+
- **Unit tests for the `content-review.rb` scoring engine (#166).** New
|
|
152
|
+
`scripts/test/lib/test_content_review.sh` drives the deterministic content
|
|
153
|
+
reviewer against synthetic Markdown fixtures using the real production config
|
|
154
|
+
and schema: asserts a well-formed docs page scores ≥ 80, that removing the
|
|
155
|
+
required `description` lowers the score and reports the issue, that a closing
|
|
156
|
+
bare ` ``` ` after a language-tagged fence is not flagged (the v1.18.1
|
|
157
|
+
regression), and that `--strict` exits non-zero when a file is below the fail
|
|
158
|
+
threshold (while warn mode exits 0). Runs under `LC_ALL=C` for
|
|
159
|
+
locale-independence parity with the T-015 guard.
|
|
160
|
+
- **Playwright smoke specs for the search modal and AI chat widget (#167,
|
|
161
|
+
#168).** New `test/visual/search.spec.js` covers the site-wide search modal
|
|
162
|
+
(ZER0-032): the `/` shortcut opens it and focuses the input, Escape closes it,
|
|
163
|
+
a query populates results from `/search.json`, and opening search closes the
|
|
164
|
+
Settings offcanvas without stacking backdrops. New `test/visual/ai-chat.spec.js`
|
|
165
|
+
covers the AI chat widget (ZER0-060): the render guard's positive path (FAB +
|
|
166
|
+
config present), and the FAB ⇄ panel toggle via click, close button, and
|
|
167
|
+
Escape — all client-side, no AI backend. Note: the smoke build
|
|
168
|
+
(`_config.yml,_config_dev.yml`) sets `ai_chat.proxy_ready: true`, so the widget
|
|
169
|
+
renders in the test environment; the specs assert that real behavior.
|
|
170
|
+
- **CI coverage for the installer wizard and upgrade path (#147).** New
|
|
171
|
+
`test/test_install_wizard_upgrade.sh` (auto-discovered by the
|
|
172
|
+
`test_install_*.sh` glob in CI) covers two previously-untested libraries:
|
|
173
|
+
it drives the non-AI wizard prompt helpers (`_wiz_prompt`, `_wiz_confirm`,
|
|
174
|
+
`_wiz_choose`) non-interactively with piped answers — defaults, typed input,
|
|
175
|
+
yes/no confirmation, numbered/by-name menu selection, out-of-range fallback —
|
|
176
|
+
and exercises `upgrade.sh` end to end: version detection (marker, `_config.yml`
|
|
177
|
+
fallback, unknown), a detect→migrate→verify run across a version gap, the
|
|
178
|
+
dry-run (no-write) branch, and the already-current no-op branch.
|
|
179
|
+
- **Unit tests for `sanitize_config_filter.rb` (T-023).** Added 12 Minitest
|
|
180
|
+
specs to `test/test_plugins.rb` covering both regex paths of the
|
|
181
|
+
security-critical Liquid filter: `SENSITIVE_KEY_RE` matches `api_key`,
|
|
182
|
+
`apikey`, `secret`, `password`, and `token` (case-insensitive); `PHC_VALUE_RE`
|
|
183
|
+
catches PostHog project keys; mixed multi-line input produces correct partial
|
|
184
|
+
redaction; and edge cases (`nil`, empty string) return without error.
|
|
185
|
+
### Added
|
|
186
|
+
- **Author profiles ("About the Author") across all collections.** A single,
|
|
187
|
+
layered author system replaces the three divergent ad-hoc treatments that
|
|
188
|
+
existed before:
|
|
189
|
+
- `components/author-card.html` is now the canonical rendering primitive
|
|
190
|
+
(`inline` / `compact` / `full`), with avatars, profile links, schema.org
|
|
191
|
+
`Person` microdata, and expertise chips.
|
|
192
|
+
- New `components/author-bio.html` renders the shared "About the Author"
|
|
193
|
+
section (used by the `article`, `note`, and `notebook` layouts), gated by
|
|
194
|
+
the previously-unused `author_profile` front-matter flag.
|
|
195
|
+
- New `author` / `authors` layouts add per-author profile pages at
|
|
196
|
+
`/authors/:key/` (content aggregated across **every** collection) and an
|
|
197
|
+
`/authors/` directory index, linked from the navbar (under **About**) and
|
|
198
|
+
the footer quick links. Each profile is **interactive**: a hero with
|
|
199
|
+
bio/blurb, an at-a-glance stats dashboard that doubles as type filters
|
|
200
|
+
(Posts / Docs / Notes / …), free-text search over titles + tags, sort
|
|
201
|
+
(newest / oldest / A–Z), a clickable topic/tag cloud, a live result count,
|
|
202
|
+
and deep-linkable filters via the URL hash — powered by the new
|
|
203
|
+
progressive-enhancement `assets/js/author-profile.js` (with JS off it falls
|
|
204
|
+
back to a full, crawlable grid). Emits `schema.org/CollectionPage` +
|
|
205
|
+
`ItemList` structured data.
|
|
206
|
+
- New `_plugins/author_pages_generator.rb` auto-generates those pages for
|
|
207
|
+
each `_data/authors.yml` entry (opt out per author with `profile: false`,
|
|
208
|
+
or globally with `authors.generate_pages: false`); profiles for this site's
|
|
209
|
+
authors are also committed under `/authors/` so they build under GitHub
|
|
210
|
+
Pages safe mode, mirroring the committed `search.json` / `sitemap` pattern.
|
|
211
|
+
- New `_sass/components/_author.scss` styling (dark-mode safe, token-driven).
|
|
212
|
+
- `_data/authors.yml` documents the new `tagline`, `location`, `expertise`,
|
|
213
|
+
and `profile` fields.
|
|
214
|
+
- **AI author personas.** An author can be flagged `ai: true` with a `persona`
|
|
215
|
+
block (archetype / voice / signature_moves / avoids / disclosure + custom
|
|
216
|
+
`topics`); the theme then renders an "AI" badge on every byline and card and
|
|
217
|
+
a visible authorship disclosure on the profile hero and the
|
|
218
|
+
About-the-Author box. Ships two examples — **Cassandra** (a paranoid AI
|
|
219
|
+
Security Analyst who catastrophizes trivial gaps) and **Vega** (an
|
|
220
|
+
enthusiastic AI Data Analyst who over-models trivial data) — each with a
|
|
221
|
+
profile page, an SVG avatar, and example in-voice posts, plus a reusable
|
|
222
|
+
`.github/prompts/ai-author.prompt.md` template for writing as a persona.
|
|
223
|
+
- **Per-author preview art styles.** An author entry can carry a `preview:`
|
|
224
|
+
block (`style`, `style_modifiers`, and — for the Bash generator — `size`,
|
|
225
|
+
`quality`, `model`). When a post sets `author: <that key>`, the AI
|
|
226
|
+
preview-image generator uses those settings **instead of** the site-wide
|
|
227
|
+
`preview_images` config for that post's banner, so each AI persona gets a
|
|
228
|
+
recognisable look (Cassandra → ominous security-ops noir, Vega → vibrant
|
|
229
|
+
data-viz). Resolved per file by both
|
|
230
|
+
`scripts/features/generate-preview-images` and
|
|
231
|
+
`scripts/lib/preview_generator.py`; posts by non-AI authors are unaffected.
|
|
232
|
+
Precedence — Bash generator: author `preview:` › `IMAGE_STYLE` env ›
|
|
233
|
+
`_config.yml` › defaults; Python generator: author `preview:` › `--style`
|
|
234
|
+
flag › default (it does not read `_config.yml`).
|
|
235
|
+
The two shipped personas were given deliberately divergent styles
|
|
236
|
+
(Cassandra → hand-inked **noir graphic novel**; Vega → glossy **isometric 3D
|
|
237
|
+
infographic**) and their four example posts now carry real generated banners
|
|
238
|
+
— downscaled to ~1200px JPEGs (~300 KB) — replacing the placeholder SVGs.
|
|
239
|
+
- **Guest author page is now a contribution guide.** `/authors/guest/`
|
|
240
|
+
doubles as the contributor onboarding page — how to submit an article (paths,
|
|
241
|
+
front-matter template, local preview, PR + review), how to become a credited
|
|
242
|
+
author (add yourself to `_data/authors.yml`, use your key, profile stub for
|
|
243
|
+
safe mode), and AI-authorship disclosure. The `author` layout now renders a
|
|
244
|
+
page's Markdown body (in a `.author-page-body` section) and suppresses the
|
|
245
|
+
generic "no content" empty state when a body is present, so any profile page
|
|
246
|
+
can carry custom content.
|
|
247
|
+
- **Avatars can be full URLs (incl. GitHub) or auto-derived from a handle.**
|
|
248
|
+
An author's `avatar` may now be a full URL — e.g. a GitHub avatar
|
|
249
|
+
(`https://avatars.githubusercontent.com/u/<id>?v=4`) — used as-is; relative
|
|
250
|
+
paths still resolve under the assets folder. If `avatar` is omitted but
|
|
251
|
+
`github` is set, the avatar falls back to `https://github.com/<handle>.png`.
|
|
252
|
+
Resolution is centralised in `components/author-avatar-url.html` and shared by
|
|
253
|
+
the byline, bio card, profile hero, and E-E-A-T blocks. The Guest profile
|
|
254
|
+
demonstrates the handle-only path (its avatar comes from `github: amr-bash`),
|
|
255
|
+
and bamr87 uses an explicit GitHub avatar URL.
|
|
256
|
+
|
|
257
|
+
### Performance
|
|
258
|
+
- **Docker dev image cut from ~4GB to ~1.7GB and cold build from ~193s to ~82s**
|
|
259
|
+
(native arm64; far worse under the old emulated build). The `dev-test` stage
|
|
260
|
+
no longer installs `@mermaid-js/mermaid-cli` (its only reference in the whole
|
|
261
|
+
repo was its own install line — Mermaid renders client-side from the vendored
|
|
262
|
+
`mermaid.min.js`, never via `mmdc`, and it dragged in a ~300MB headless
|
|
263
|
+
Chromium), ImageMagick, libvips, or Node/npm (all unused in-container; the
|
|
264
|
+
`package.json` scripts run on the host). Kept Python + Jupyter/nbconvert for
|
|
265
|
+
the notebook tooling. Dropped the redundant second `bundle install` (the
|
|
266
|
+
`base` stage already installs all gem groups), removed the `platform:
|
|
267
|
+
linux/amd64` pin from `docker-compose.yml` (it forced QEMU emulation on Apple
|
|
268
|
+
Silicon), removed the per-start `generate_statistics.sh` regeneration from the
|
|
269
|
+
compose command, and simplified the production runtime stage (the static-file
|
|
270
|
+
`ruby -run -e httpd` server needs no Gemfile or `bundle install`).
|
|
271
|
+
- **Jekyll build ~16.4s → ~12s** by wrapping page-invariant chrome in
|
|
272
|
+
`include_cached` (the `jekyll-include-cache` plugin was a dependency but went
|
|
273
|
+
unused): `core/footer.html`, `components/{cookie-consent,nanobar,svg,
|
|
274
|
+
search-modal,shortcuts-modal,setup-banner,background-settings}.html`, and
|
|
275
|
+
`components/js-cdn.html`. The footer alone was **3.9s** of the build — it ran
|
|
276
|
+
`where`-scans over every collection on all 172 page renders to auto-detect
|
|
277
|
+
quick links, despite output that depends only on site config. Its
|
|
278
|
+
page-front-matter-dependent tail (TOC/local-graph FABs) moved to
|
|
279
|
+
`core/footer-fabs.html` so the body stays cacheable; the FABs are
|
|
280
|
+
`position:fixed` with explicit z-index, so the output is visually identical.
|
|
281
|
+
`root.html` self-time dropped 9.1s → 4.4s.
|
|
282
|
+
- **Production CSS now minified** (`sass: style: compressed`, `sourcemap:
|
|
283
|
+
never`); `main.css` ~182KB → ~158KB render-blocking. `_config_dev.yml` keeps
|
|
284
|
+
`expanded` + sourcemaps for local debugging.
|
|
285
|
+
- **Content statistics no longer regenerate on every build.**
|
|
286
|
+
`content_statistics.auto_generate` now defaults to `false`; templates read the
|
|
287
|
+
committed `_data/content_statistics.yml` directly. The generator hook had been
|
|
288
|
+
re-scanning all content on every `jekyll build` (~12× per CI run) and dirtying
|
|
289
|
+
a tracked file. Refresh on demand with `rake stats:generate`.
|
|
290
|
+
|
|
291
|
+
### Removed
|
|
292
|
+
- **Dead vendored libraries (~1.1MB).** Deleted `assets/vendor/font-awesome`
|
|
293
|
+
(1.0MB) and `assets/vendor/jquery` (88KB), their `vendor-manifest.json`
|
|
294
|
+
entries, and the misleading "jQuery" `powered_by` credit. Font Awesome was
|
|
295
|
+
loaded only by `components/mermaid.html` (no theme diagram uses `fa:` icons) —
|
|
296
|
+
that 1.0MB render-blocking stylesheet no longer loads on Mermaid pages. jQuery
|
|
297
|
+
was already removed from page loads (Bootstrap 5 dropped it). **Forks** that
|
|
298
|
+
relied on Font Awesome icons inside Mermaid diagrams must re-add the
|
|
299
|
+
stylesheet.
|
|
300
|
+
|
|
301
|
+
### Changed
|
|
302
|
+
- **CSS Grid tutorial now ships live, in-browser demos.** Expanded
|
|
303
|
+
`pages/_posts/tutorial/2025-01-23-css-grid-mastery.md` so every concept renders
|
|
304
|
+
a real grid next to its code — basic tracks, `fr`/`minmax()`, `auto-fit` vs
|
|
305
|
+
`auto-fill`, line spanning, named areas, an interactive column playground, and
|
|
306
|
+
card / holy-grail / magazine / alignment / dense-packing layouts (theme-aware,
|
|
307
|
+
responsive, keyboard-accessible). Added bidirectional "Related Reading" links
|
|
308
|
+
between the tutorial and the card-grid / accessible-forms posts, plus references
|
|
309
|
+
to it from the Bootstrap, Layouts, and Styles docs.
|
|
310
|
+
- **Bylines now use the shared author component.** The `article`, `note`,
|
|
311
|
+
`notebook`, `news`, and `section` layouts plus `components/post-card.html`
|
|
312
|
+
previously printed `{{ page.author }}` as bare text; they now render
|
|
313
|
+
`components/author-card.html` (`inline`), so a known author key resolves to a
|
|
314
|
+
display name, avatar, and a link to their profile page. The inline
|
|
315
|
+
"About the Author" block that was hard-coded in `_layouts/article.html` was
|
|
316
|
+
removed in favor of `components/author-bio.html`.
|
|
317
|
+
- **Author bylines and the "About the Author" section now link to the profile
|
|
318
|
+
even when front matter uses the display name.** Previously only a direct
|
|
319
|
+
`_data/authors.yml` key (e.g. `author: default`) resolved to a profile link;
|
|
320
|
+
posts/notes written as `author: "Zer0-Mistakes Team"` (the display name) fell
|
|
321
|
+
back to an unlinked card. `components/author-card.html` and
|
|
322
|
+
`components/author-bio.html` now resolve the author by key **or** by matching
|
|
323
|
+
`name` / `display_name`, so the inline byline, the full card name, and the
|
|
324
|
+
"More from …" link all point at `/authors/<key>/`. Non-matching strings
|
|
325
|
+
(template placeholders, name variants) stay unlinked as before.
|
|
326
|
+
- **Committed author pages moved to `pages/_about/authors/`** (into the `about`
|
|
327
|
+
collection), co-located with the rest of the About section instead of a
|
|
328
|
+
top-level `/authors/` source directory. URLs are unchanged (explicit
|
|
329
|
+
`/authors/:key/` permalinks), and `author_pages_generator.rb`'s dedup now also
|
|
330
|
+
checks collection documents so no duplicate pages are generated.
|
|
331
|
+
- **Design framework (SCSS) refactor — structure only, no visual change.**
|
|
332
|
+
Decomposed the 1,131-line `_sass/custom.scss` monolith into a thin back-compat
|
|
333
|
+
barrel plus five focused partials (`layouts/_global-chrome`, `core/_toc`,
|
|
334
|
+
`core/_sidebar-extras`, `components/_ui-enhancements`, `components/_notes-index`);
|
|
335
|
+
split the code-example chrome out of `core/_docs-layout.scss` into
|
|
336
|
+
`core/_docs-code-examples.scss`; extracted `components/_search-modal.scss`;
|
|
337
|
+
consolidated the navbar fixed/grid layout into `core/_navbar.scss`; lifted the
|
|
338
|
+
stylesheet assembly order into `assets/css/main.scss` as the single manifest;
|
|
339
|
+
removed two redundant duplicate rules (a second `.btn { position; overflow }`
|
|
340
|
+
and a duplicate global `prefers-reduced-motion` reset); and deleted 141 lines
|
|
341
|
+
of dead legacy Sass variables from `core/_variables.scss`. The compiled
|
|
342
|
+
`assets/css/main.css` is verified **semantically identical** (only the two
|
|
343
|
+
redundant duplicates and some emitted comments were removed) — no tokens,
|
|
344
|
+
selectors, or declaration values changed.
|
|
345
|
+
- **Automation no longer pushes directly to `main`.** The roadmap→README sync
|
|
346
|
+
(`sync.yml`) and Jupyter notebook conversion (`convert-notebooks.yml`) now
|
|
347
|
+
open pull requests via `peter-evans/create-pull-request` (labelled
|
|
348
|
+
`automated`, assigned for review) instead of committing straight to `main` —
|
|
349
|
+
prerequisite for enabling branch protection. Mirrors the existing
|
|
350
|
+
`update-dependencies.yml` pattern. (PRs opened by `GITHUB_TOKEN` don't
|
|
351
|
+
auto-trigger CI; close/reopen to run checks, or merge directly.)
|
|
352
|
+
|
|
353
|
+
### Fixed
|
|
354
|
+
- **`Gemfile.lock` re-synced to `version.rb` (1.19.1 → 1.19.0)** and guarded
|
|
355
|
+
against future drift. The `validate_version_consistency` check
|
|
356
|
+
(`scripts/bin/validate`) now also compares the gem version pinned in
|
|
357
|
+
`Gemfile.lock`, and a new always-running `Version ↔ Gemfile.lock consistency`
|
|
358
|
+
step in CI's `quality-checks` job fails any PR where the two disagree — the
|
|
359
|
+
exact drift that left the lock at 1.19.1 while `version.rb` said 1.19.0.
|
|
360
|
+
|
|
361
|
+
## [1.19.0](https://github.com/bamr87/zer0-mistakes/compare/v1.18.1...v1.19.0) (2026-06-16)
|
|
362
|
+
|
|
363
|
+
|
|
364
|
+
### Features
|
|
365
|
+
|
|
366
|
+
* **chat:** rebuild AI assistant on Claude API with GitHub issue/PR tools + OAuth connector ([#151](https://github.com/bamr87/zer0-mistakes/issues/151)) ([02e81af](https://github.com/bamr87/zer0-mistakes/commit/02e81afbdc02643f4bc78af5e18792cd1b9c2213))
|
|
367
|
+
* **home:** opt-out flags for RSS link and visible title ([#157](https://github.com/bamr87/zer0-mistakes/issues/157)) ([7597351](https://github.com/bamr87/zer0-mistakes/commit/7597351addd720fb4ff08b1170a1f0ef25fb3d75))
|
|
368
|
+
|
|
369
|
+
|
|
370
|
+
### Bug Fixes
|
|
371
|
+
|
|
372
|
+
* **analytics:** only load GA/GTM in production and skip dev hostnames ([#160](https://github.com/bamr87/zer0-mistakes/issues/160)) ([12d701e](https://github.com/bamr87/zer0-mistakes/commit/12d701e88ee2c76659869ccc948b2b550bb855d0))
|
|
373
|
+
* **config:** restore remote_theme contract + add missing lastmod (unblocks CI) ([#174](https://github.com/bamr87/zer0-mistakes/issues/174)) ([b995115](https://github.com/bamr87/zer0-mistakes/commit/b995115a4ffb745704f1111539085a610ba94053))
|
|
374
|
+
* **config:** restore zer0-mistakes.com site identity + CNAME (site was down) ([#176](https://github.com/bamr87/zer0-mistakes/issues/176)) ([9ef8ff8](https://github.com/bamr87/zer0-mistakes/commit/9ef8ff8335e0a9f394da1ec342f388d31470eb22))
|
|
375
|
+
|
|
376
|
+
### Added
|
|
377
|
+
- **Preview-image pixelator (`scripts/features/pixelate-preview-images`).** A
|
|
378
|
+
dependency-free (Python stdlib only — no ImageMagick/Pillow/pngquant) utility
|
|
379
|
+
that pixelates and palette-quantizes the AI-generated preview banners into
|
|
380
|
+
indexed PNG-8, shrinking them ~90% (e.g. 2.7 MB → ~230 KB) while
|
|
381
|
+
preserving the retro 8-bit aesthetic. A dry-run across all 146 banners reports
|
|
382
|
+
283 MB → 28 MB. Includes a conventions-friendly bash wrapper (config
|
|
383
|
+
default path, parallel `--jobs`, `--dry-run`), the `pixelate_images.py` engine
|
|
384
|
+
with `--selftest`, and a `scripts/test/lib/test_pixelate_images.sh` suite wired
|
|
385
|
+
into the library test runner. Non-PNG / 16-bit / interlaced inputs are skipped
|
|
386
|
+
gracefully.
|
|
387
|
+
|
|
388
|
+
### Removed
|
|
389
|
+
- **Revert the "Year of AI" / federated content-hub pivot (PR #173).** Restored
|
|
390
|
+
the original `zer0-mistakes` theme landing page: re-published `README.md` as
|
|
391
|
+
the site homepage at `/` (dropped `published: false`) and removed the
|
|
392
|
+
`Year of AI` hub homepage (`pages/home.md`), the `/hub/` dashboard
|
|
393
|
+
(`pages/hub.md`), the hub registry/metadata (`_data/hub.yml`,
|
|
394
|
+
`_data/hub_index.yml`, `_data/navigation/hub.yml`), the hub tooling
|
|
395
|
+
(`scripts/lib/hub.rb`, `scripts/sync-hub-metadata.{rb,sh}`,
|
|
396
|
+
`scripts/provision-org-sites.{rb,sh}`, `templates/org-site/*`), the daily
|
|
397
|
+
`hub-sync` workflow, the `content-hub` system doc, and the `Hub` navbar entry.
|
|
398
|
+
Feature `ZER0-061` was dropped from the features data. `_config.yml`/`CNAME`
|
|
399
|
+
were already restored to the `zer0-mistakes.com` identity by PRs #174/#176.
|
|
400
|
+
|
|
401
|
+
### Changed
|
|
402
|
+
- **Roadmap catch-up (T-022)**: recorded shipped milestones v1.14–v1.18 as `completed` in `_data/roadmap.yml` and advanced the active milestone to v1.19 so the roadmap tracks the gem version; README gantt diagram regenerated.
|
|
8
403
|
## [1.19.1] - 2026-06-16
|
|
9
404
|
|
|
10
405
|
### Changed
|
data/README.md
CHANGED
|
@@ -4,10 +4,6 @@ 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
5
|
version: 1.19.1
|
|
6
6
|
layout: landing
|
|
7
|
-
# This repo now serves as the year-of-ai organization root site; the homepage
|
|
8
|
-
# lives in pages/home.md. README stays as the repository README on GitHub but
|
|
9
|
-
# is not published as a site page.
|
|
10
|
-
published: false
|
|
11
7
|
tags:
|
|
12
8
|
- jekyll
|
|
13
9
|
- docker
|
|
@@ -761,15 +757,18 @@ All workflows live under [`.github/workflows/`](.github/workflows/).
|
|
|
761
757
|
|
|
762
758
|
| # | Workflow | File | Trigger | Purpose |
|
|
763
759
|
|---|----------|------|---------|---------|
|
|
764
|
-
| 1 | **Comprehensive CI Pipeline** | [`ci.yml`](.github/workflows/ci.yml) | push / PR / dispatch | Detect changes → fast checks → quality control → matrix test suite
|
|
765
|
-
| 2 | **TEST (Latest Dependencies)** | [`test-latest.yml`](.github/workflows/test-latest.yml) |
|
|
766
|
-
| 3 | **
|
|
767
|
-
| 4 | **
|
|
768
|
-
| 5 | **
|
|
769
|
-
| 6 | **
|
|
760
|
+
| 1 | **Comprehensive CI Pipeline** | [`ci.yml`](.github/workflows/ci.yml) | push / PR / dispatch | Detect changes → fast checks → quality control → matrix test suite → integration tests → build & validate |
|
|
761
|
+
| 2 | **TEST (Latest Dependencies)** | [`test-latest.yml`](.github/workflows/test-latest.yml) | daily schedule / push / PR / dispatch | Zero-pin Docker build with bleeding-edge gems; tests then promotes passing images to Docker Hub |
|
|
762
|
+
| 3 | **Release** | [`release.yml`](.github/workflows/release.yml) | push to `main` | release-please opens a release PR from Conventional Commits; merging it tags `vX.Y.Z` and publishes the gem to [RubyGems](https://rubygems.org/gems/jekyll-theme-zer0) |
|
|
763
|
+
| 4 | **Update Dependencies** | [`update-dependencies.yml`](.github/workflows/update-dependencies.yml) | weekly schedule | Refreshes `Gemfile.lock` to latest compatible versions and opens an automated PR |
|
|
764
|
+
| 5 | **CodeQL Security Scanning** | [`codeql.yml`](.github/workflows/codeql.yml) | push / PR on code paths + weekly | Static security analysis across Ruby, JavaScript/TypeScript, Python, Actions, and YAML |
|
|
765
|
+
| 6 | **Content & Docs Review** | [`ai-content-review.yml`](.github/workflows/ai-content-review.yml) | PR on docs/content | Deterministic SEO/quality review + optional Claude agent + docs front matter, internal-link, and markdownlint checks |
|
|
770
766
|
| 7 | **Convert Jupyter Notebooks** | [`convert-notebooks.yml`](.github/workflows/convert-notebooks.yml) | push to `pages/_notebooks/**.ipynb` | Auto-converts `.ipynb` → Jekyll-friendly Markdown with extracted images |
|
|
771
|
-
| 8 | **
|
|
772
|
-
| 9 | **
|
|
767
|
+
| 8 | **Sync** | [`sync.yml`](.github/workflows/sync.yml) | push affecting `_data/backlog.yml` or `_data/roadmap.yml` | Mirrors the backlog to GitHub Issues and regenerates the README roadmap section |
|
|
768
|
+
| 9 | **Install Matrix** | [`install-matrix.yml`](.github/workflows/install-matrix.yml) | PR on installer paths + weekly | Installer e2e across OS × Ruby, the `curl \| bash` bootstrap, and the `install doctor` diagnostic |
|
|
769
|
+
| 10 | **Deploy chat proxy** | [`deploy-chat-proxy.yml`](.github/workflows/deploy-chat-proxy.yml) | push to chat-proxy worker files | Deploys the AI chat proxy Worker to Cloudflare |
|
|
770
|
+
| 11 | **Auto-merge low-risk PRs** | [`auto-merge.yml`](.github/workflows/auto-merge.yml) | PR labeled `auto-merge` | Enables GitHub native auto-merge once required checks pass |
|
|
771
|
+
| 12 | **Lint workflows** | [`lint-workflows.yml`](.github/workflows/lint-workflows.yml) | PR/push on `.github/**` | actionlint gate on the workflow + composite-action definitions |
|
|
773
772
|
|
|
774
773
|
> 💡 GitHub Pages adds an additional managed `pages-build-deployment` run on every push to `main`.
|
|
775
774
|
|
|
@@ -784,8 +783,8 @@ gh run list --repo bamr87/zer0-mistakes --limit 10
|
|
|
784
783
|
# Manually dispatch a release
|
|
785
784
|
gh workflow run release.yml --ref main -f tag=v0.22.21
|
|
786
785
|
|
|
787
|
-
#
|
|
788
|
-
gh workflow run
|
|
786
|
+
# Re-sync the backlog issues / README roadmap from _data on demand
|
|
787
|
+
gh workflow run sync.yml --ref main
|
|
789
788
|
|
|
790
789
|
# Re-run the most recent failed CI run
|
|
791
790
|
gh run rerun --failed --repo bamr87/zer0-mistakes
|
|
@@ -798,10 +797,9 @@ gh run watch --repo bamr87/zer0-mistakes
|
|
|
798
797
|
|
|
799
798
|
When you fork the theme as a starter, the workflows come with you. To make them safe and useful in your fork:
|
|
800
799
|
|
|
801
|
-
1. **
|
|
800
|
+
1. **Configure gem publishing** if you plan to publish your own gem (`release.yml` uses [`bamr87/.github`](https://github.com/bamr87/.github) reusable workflows); otherwise disable [`release.yml`](.github/workflows/release.yml).
|
|
802
801
|
2. **Tune triggers** in [`update-dependencies.yml`](.github/workflows/update-dependencies.yml) (default: weekly).
|
|
803
|
-
3. **
|
|
804
|
-
4. **GitHub Pages** is auto-enabled when you push to `main` if your repo is `<username>.github.io`.
|
|
802
|
+
3. **GitHub Pages** is auto-enabled when you push to `main` if your repo is `<username>.github.io`.
|
|
805
803
|
|
|
806
804
|
---
|
|
807
805
|
|
|
@@ -836,8 +834,13 @@ gantt
|
|
|
836
834
|
v1.11 Continuous-Evolution Loop :done, 2026-06, 2026-06
|
|
837
835
|
v1.12 Headless Endpoints :done, 2026-06, 2026-06
|
|
838
836
|
v1.13 Quality Framework — First Wave :done, 2026-06, 2026-06
|
|
837
|
+
v1.14 Zer0-Mistake Quality Framework :done, 2026-06, 2026-06
|
|
838
|
+
v1.15 Quality Framework Batch :done, 2026-06, 2026-06
|
|
839
|
+
v1.16 AI Chat + Consumer Audit :done, 2026-06, 2026-06
|
|
840
|
+
v1.17 A11y, Mermaid & Migration Tests :done, 2026-06, 2026-06
|
|
841
|
+
v1.18 AI Content Reviewer :done, 2026-06, 2026-06
|
|
839
842
|
section Current
|
|
840
|
-
v1.
|
|
843
|
+
v1.19 Site Hardening & Polish :active, 2026-06, 2026-08
|
|
841
844
|
section Future
|
|
842
845
|
v2.0 CMS Integration :2026-06, 2026-08
|
|
843
846
|
v2.1 i18n Support :2026-08, 2026-10
|
|
@@ -871,7 +874,12 @@ gantt
|
|
|
871
874
|
| **v1.11** | ✅ Completed | Jun 2026 | Self-sustaining backlog loop so AI agents keep improving the repo between human sessions. |
|
|
872
875
|
| **v1.12** | ✅ Completed | Jun 2026 | Machine-readable site endpoints for downstream sites and AI agents. |
|
|
873
876
|
| **v1.13** | ✅ Completed | Jun 2026 | First shipped wave of the Zer0-Mistake Quality Framework: CI gate parity and DOM sanitization. |
|
|
874
|
-
| **v1.14** |
|
|
877
|
+
| **v1.14** | ✅ Completed | Jun 2026 | Second wave of the Zer0-Mistake Quality Framework: DOM sanitization hardening and workflow lint cleanup. |
|
|
878
|
+
| **v1.15** | ✅ Completed | Jun 2026 | Quality framework batch: docs lint baseline, locale guard, strict site_generation, contribution templates, and YAML export fix. |
|
|
879
|
+
| **v1.16** | ✅ Completed | Jun 2026 | AI chat widget (ZER0-060) and consumer audit tooling; render guard bug fixed. |
|
|
880
|
+
| **v1.17** | ✅ Completed | Jun 2026 | Plugin unit specs, coverage baseline, config-page sync, WCAG 2.1 AA fixes, Mermaid on 12 more pages, and migration tests. |
|
|
881
|
+
| **v1.18** | ✅ Completed | Jun 2026 | Two-tier AI content reviewer framework and chat GitHub action tools (issue/PR creation via Claude tool use). |
|
|
882
|
+
| **v1.19** | 🚧 In Progress | Current (1.19.x) | Production config hardening, analytics privacy fix, landing-page opt-out flags, and a documentation freshness sweep. |
|
|
875
883
|
| **v2.0** | 🗓 Planned | Q3 2026 | Headless CMS integration with a content API and admin dashboard. |
|
|
876
884
|
| **v2.1** | 🗓 Planned | Q4 2026 | Multi-language content support with locale-aware routing. |
|
|
877
885
|
| **v2.2** | 🗓 Planned | Q4 2026 | Visual theme customizer, A/B testing, and conversion funnels. |
|