jekyll-theme-zer0 1.12.2 → 1.13.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fbc99ee38514486f868b91a616bcfece9ab588d4c27c18f358592c12bac98225
4
- data.tar.gz: 864ff57c952cfb6c6761ab4b140545401f762bb8485d192c48a31ffee1e9ab65
3
+ metadata.gz: 300fd839d62b5d716dc62bde6853834fecca0b431871d818511f83b3b118586e
4
+ data.tar.gz: 7faf9a32a6709bb8bd4cc5c9681910b9595c81761c2582224f71f6623e5573d7
5
5
  SHA512:
6
- metadata.gz: ad7d6da5e0c707aa5ea232e5d3a714bbd0ed3955cc220d950dec7103715665a4e9a799f9a028e2eb57e1f161b0bf286dd39a5d145110f0a2936067405a698aae
7
- data.tar.gz: b5428a640a6a5aee60e170d4c69780e3538704575a9a1ff2d23d26c9583429f0e2ad1da79185906260e75a60092f4d88b139e01fa2b7cf954fa9a77258f2879b
6
+ metadata.gz: 5c41e56c171902d054122a1288a10e2a45998cfabd06231d28e78e027ffaa9fc79b7511a3c34a50d7b81ab4f4911797fed2be78891bb45bd0e977aa28d298634
7
+ data.tar.gz: 143441cff23b9bec1bbf3222d4fcf21fb4949d4a9bf6394aff67c4cefb56e8da1bd71871c76ccdb900a78cc8f8623ce28c4bbcb7004357171e4f032bc02c8242
data/CHANGELOG.md CHANGED
@@ -1,33 +1,42 @@
1
1
  # Changelog
2
2
 
3
- ## [1.12.2] - 2026-06-10
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [1.13.0] - 2026-06-11
4
9
 
5
10
  ### Changed
6
- - Version bump: patch release
11
+ - Version bump: minor release
7
12
 
8
13
  ### Commits in this release
9
- - 846bd9ff chore(backlog): plan the Zer0-Mistake Quality Framework (roadmap v1.13, T-012–T-015) (#133)
10
- - 33a727c0 docs: expand CLAUDE.md into a comprehensive Claude Code guide (#131)
14
+ - cee6f379 feat(ci): gate PRs on the full canonical test entrypoint (T-012) (#138)
11
15
 
16
+ ### Added
17
+ - **CI gate parity (T-012)**: the `ci.yml` test job now runs every non-Playwright theme suite (core, deployment, quality, installation, installer, site_generation, obsidian) plus the canonical `./scripts/bin/test` script suites (lib unit, theme validate, integration, installer e2e) on every code PR — previously only `core,quality,installation` gated, which is how three suites rotted unnoticed before PR #132; a "Gate Coverage — What Enforces What" table in `.github/workflows/README.md` now documents the controls contract
12
18
 
13
- ## [1.12.1] - 2026-06-10
19
+ ### Fixed
20
+ - **Release changelog path**: `version-bump.yml` now inserts release entries via the shared `update_changelog_file` library instead of an inline `head`/`tail` prepend that duplicated (and regressed) the insertion logic — the 1.12.1 release had pushed the file preamble below its entry and stranded the pending `[Unreleased]` notes; both repaired in this file
21
+
22
+ ## [1.12.2] - 2026-06-10
23
+
24
+ ### Added
25
+ - **Zer0-Mistake Quality Framework (planning)**: new roadmap milestone v1.13 and backlog tasks T-012–T-015 to close the gap between the repo's quality gates and what CI enforces — CI gate parity with the canonical `./scripts/bin/test` entrypoint (whose integration suites previously rotted unnoticed), re-armed pixel-snapshot and docs link-check gates, and a locale-independence regression guard; coverage baseline task T-005 repointed at the new milestone
14
26
 
15
27
  ### Changed
16
28
  - Version bump: patch release
17
29
 
18
30
  ### Commits in this release
19
- - 0c04f703 fix: repair failing test suites, validator crashes, and roadmap/changelog drift (#132)
20
-
21
-
22
- All notable changes to this project will be documented in this file.
23
-
24
- The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
25
- and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
31
+ - 846bd9ff chore(backlog): plan the Zer0-Mistake Quality Framework (roadmap v1.13, T-012–T-015) (#133)
32
+ - 33a727c0 docs: expand CLAUDE.md into a comprehensive Claude Code guide (#131)
26
33
 
27
- ## [Unreleased]
34
+ ## [1.12.1] - 2026-06-10
28
35
 
29
- ### Added
30
- - **Zer0-Mistake Quality Framework (planning)**: new roadmap milestone v1.13 and backlog tasks T-012–T-015 to close the gap between the repo's quality gates and what CI enforces — CI gate parity with the canonical `./scripts/bin/test` entrypoint (whose integration suites previously rotted unnoticed), re-armed pixel-snapshot and docs link-check gates, and a locale-independence regression guard; coverage baseline task T-005 repointed at the new milestone
36
+ ### Changed
37
+ - Version bump: patch release
38
+ - **Roadmap**: advanced to track the shipped gem — v1.9 marked completed, v1.10 (Roadmap Validation) and v1.11 (Continuous-Evolution Loop) recorded, v1.12 (Headless Endpoints) is the active milestone (closes backlog T-001, T-002)
39
+ - **Changelog**: restored the Keep a Changelog preamble at the top of this file
31
40
 
32
41
  ### Fixed
33
42
  - **Tooling encoding**: `generate-roadmap.rb`, `sync-backlog.rb`, and `scripts/bin/validate` now read repo files as UTF-8 explicitly, fixing `invalid byte sequence in US-ASCII` crashes in environments without a UTF-8 locale (minimal containers, some CI runners) — `generate-roadmap.sh --check` and `validate --quick` both crashed in such environments
@@ -37,9 +46,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
37
46
  - `_layouts/search.html` given a front matter block so theme layout validation passes
38
47
  - **Changelog tooling**: `update_changelog_file` now folds any pending `## [Unreleased]` section into the new release entry and inserts before the first release heading (preserving the file preamble) — stale Unreleased blocks no longer accumulate mid-file; the eight historical stray blocks were folded into the releases that shipped them
39
48
 
40
- ### Changed
41
- - **Roadmap**: advanced to track the shipped gem — v1.9 marked completed, v1.10 (Roadmap Validation) and v1.11 (Continuous-Evolution Loop) recorded, v1.12 (Headless Endpoints) is the active milestone (closes backlog T-001, T-002)
42
- - **Changelog**: restored the Keep a Changelog preamble at the top of this file
49
+ ### Commits in this release
50
+ - 0c04f703 fix: repair failing test suites, validator crashes, and roadmap/changelog drift (#132)
43
51
 
44
52
  ## [1.12.0] - 2026-06-03
45
53
 
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.12.2
5
+ version: 1.13.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-10T22:17:20.000Z
23
+ lastmod: 2026-06-11T04:16:44.000Z
24
24
  draft: false
25
25
  permalink: /
26
26
  slug: zer0
@@ -909,7 +909,7 @@ git push origin feature/awesome-feature
909
909
 
910
910
  | Metric | Value |
911
911
  |--------|-------|
912
- | **Current Version** | 1.12.2 ([RubyGems](https://rubygems.org/gems/jekyll-theme-zer0), [CHANGELOG](/CHANGELOG)) |
912
+ | **Current Version** | 1.13.0 ([RubyGems](https://rubygems.org/gems/jekyll-theme-zer0), [CHANGELOG](/CHANGELOG)) |
913
913
  | **Documented Features** | 43 ([Feature Registry](https://github.com/bamr87/zer0-mistakes/blob/main/_data/features.yml)) |
914
914
  | **Setup Time** | 2-5 minutes ([install.sh benchmarks](https://github.com/bamr87/zer0-mistakes/blob/main/install.sh)) |
915
915
  | **Documentation Pages** | 70+ ([browse docs](https://zer0-mistakes.com/pages/)) |
@@ -964,6 +964,6 @@ And these AI partners that make zer0-mistakes truly AI-native:
964
964
 
965
965
  **Built with ❤️ — and a little help from our AI partners — for the Jekyll community**
966
966
 
967
- **v1.12.2** • [Changelog](CHANGELOG.md) • [License](LICENSE) • [Contributing](CONTRIBUTING.md) • [AI Agent Guide](AGENTS.md)
967
+ **v1.13.0** • [Changelog](CHANGELOG.md) • [License](LICENSE) • [Contributing](CONTRIBUTING.md) • [AI Agent Guide](AGENTS.md)
968
968
 
969
969
 
data/_data/backlog.yml CHANGED
@@ -56,7 +56,7 @@
56
56
  meta:
57
57
  title: "zer0-mistakes Backlog"
58
58
  updated: 2026-06-10
59
- next_id: 16
59
+ next_id: 17
60
60
 
61
61
  tasks:
62
62
  # --- Housekeeping (seeded so the loop has work on day one) ------------------
@@ -287,7 +287,7 @@ tasks:
287
287
 
288
288
  - id: T-012
289
289
  title: "CI gate parity: run the full canonical test entrypoint on PRs"
290
- status: open
290
+ status: done
291
291
  priority: P1
292
292
  area: infra
293
293
  risk: standard
@@ -300,6 +300,13 @@ tasks:
300
300
  PR #132), the obsidian suite, and the installer e2e suites that
301
301
  `./scripts/bin/test` runs locally. PRs must gate on the same entrypoint
302
302
  contributors are told to run.
303
+ Done 2026-06-10: test job expanded to all seven non-Playwright theme
304
+ suites plus a `./scripts/bin/test` step; gate-coverage table added to
305
+ the workflows README. Canary experiment: a deliberately failing
306
+ integration test was committed and reverted on the implementing PR;
307
+ GitHub did not schedule the CI pipeline on the canary push, so the
308
+ gate failure was verified locally (`./scripts/bin/test` exit 1) and
309
+ the new gate is exercised for real by the PR's final CI run.
303
310
  acceptance:
304
311
  - "The `ci.yml` test job executes `./scripts/bin/test` (or an explicit suite list that includes lib, integration, obsidian, and installer e2e) on every code PR."
305
312
  - "A deliberately broken integration test fails CI in a draft PR experiment (then reverted)."
@@ -371,3 +378,28 @@ tasks:
371
378
  links: { issue: null, pr: null, roadmap: "1.13" }
372
379
  created: 2026-06-10
373
380
  updated: 2026-06-10
381
+
382
+ - id: T-016
383
+ title: "site_generation suite: fail on Jekyll build errors instead of warning"
384
+ status: open
385
+ priority: P2
386
+ area: tests
387
+ risk: standard
388
+ effort: S
389
+ source: audit
390
+ summary: >-
391
+ `test/test_site_generation.sh` downgrades `bundle exec jekyll build`
392
+ failures to a warning ("Don't fail the test for build issues (may be
393
+ environment)"), so the suite reports success even when every mode's
394
+ build fails — a masked gate discovered while implementing T-012. With
395
+ the suite now gating PRs in CI (working bundler guaranteed), build
396
+ failures should fail the suite; keep the skip only for genuinely
397
+ missing toolchain (no bundler).
398
+ acceptance:
399
+ - "A non-zero `jekyll build` exit fails the suite when bundler is available."
400
+ - "The bundler-missing path still skips with a warning (local minimal environments)."
401
+ - "Suite passes in CI and via `./test/test_runner.sh --suites site_generation` locally."
402
+ links: { issue: null, pr: null, roadmap: "1.13" }
403
+ created: 2026-06-10
404
+ updated: 2026-06-10
405
+
@@ -331,27 +331,33 @@ update_changelog_file() {
331
331
  } > "${CHANGELOG_FILE}.tmp"
332
332
  mv "${CHANGELOG_FILE}.tmp" "$CHANGELOG_FILE"
333
333
 
334
- # Append the pending notes to the new entry (if any are non-blank)
334
+ # Append the pending notes to the new entry (if any are non-blank),
335
+ # separated by a blank line so section headings don't collide.
335
336
  if [[ -n "${unreleased_body//[[:space:]]/}" ]]; then
336
337
  debug "Folding pending [Unreleased] notes into the new entry"
337
- entry+=$'\n'"$(echo "$unreleased_body" | sed -e '/./,$!d')"$'\n'
338
+ entry="${entry%$'\n'}"$'\n\n'"$(echo "$unreleased_body" | sed -e '/./,$!d')"$'\n'
338
339
  fi
339
340
  fi
340
341
 
341
342
  # Insert the new entry before the first release heading so the file
342
343
  # header/preamble (title, Keep a Changelog blurb) stays at the top.
344
+ # Normalize the entry's trailing newlines first: callers that build the
345
+ # entry via command substitution (e.g. version-bump.yml's
346
+ # `"$(cat "$TEMP_FILE")"`) lose them, so guarantee exactly one blank
347
+ # line between the entry and the next release block here.
348
+ while [[ "$entry" == *$'\n' ]]; do entry="${entry%$'\n'}"; done
349
+
343
350
  local first_release
344
351
  first_release=$(grep -n '^## ' "$CHANGELOG_FILE" | head -1 | cut -d: -f1)
345
352
 
346
353
  {
347
354
  if [[ -n "$first_release" ]]; then
348
355
  head -n "$((first_release - 1))" "$CHANGELOG_FILE"
349
- echo "$entry"
356
+ printf '%s\n\n' "$entry"
350
357
  tail -n +"$first_release" "$CHANGELOG_FILE"
351
358
  else
352
359
  cat "$CHANGELOG_FILE"
353
- echo ""
354
- echo "$entry"
360
+ printf '\n%s\n' "$entry"
355
361
  fi
356
362
  } > "${CHANGELOG_FILE}.tmp"
357
363
 
@@ -152,6 +152,15 @@ _v100_line=$(grep -n '^## \[1.0.0\]' CHANGELOG.md | cut -d: -f1)
152
152
  assert_true "[[ $_v101_line -lt $_v100_line ]]" "New entry inserted before previous release"
153
153
  assert_true "grep -q 'All notable changes' CHANGELOG.md" "Preamble preserved without Unreleased"
154
154
 
155
+ # Case 3: entries passed via command substitution lose trailing newlines
156
+ # (e.g. version-bump.yml's "$(cat "$TEMP_FILE")"); the insert must still
157
+ # leave exactly one blank line before the next release block.
158
+ printf '## [1.0.2] - 2026-06-11\n\n### Fixed\n- Another bug\n\n' > entry.txt
159
+ update_changelog_file "$(cat entry.txt)" >/dev/null 2>&1
160
+ _v101_line=$(grep -n '^## \[1.0.1\]' CHANGELOG.md | cut -d: -f1)
161
+ assert_true "[[ -z \"\$(sed -n $((_v101_line - 1))p CHANGELOG.md)\" ]]" "Blank line separates entry from next release block"
162
+ assert_true "[[ -n \"\$(sed -n $((_v101_line - 2))p CHANGELOG.md)\" ]]" "Exactly one blank line (no double spacing)"
163
+
155
164
  popd >/dev/null
156
165
  rm -rf "$_changelog_tmp"
157
166
 
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.12.2
4
+ version: 1.13.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-10 00:00:00.000000000 Z
11
+ date: 2026-06-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll