jekyll-theme-zer0 1.11.2 → 1.12.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: 9501bcc820ec7514f9b42ebe63e0541de0287933c388facb2b6eaec3bac2e4e3
4
- data.tar.gz: 4d756e820a18743a6a7fc391b52fd40fa606493d60d2854d2d377cdede74d496
3
+ metadata.gz: ad67d8675eed54308dc843c4f5025aaa20f7fe2b627d517dfaada7522cb68151
4
+ data.tar.gz: b1156a1f8b0f70bfbc1ca0299be338c78c989740b8c40c7f249dfee73d161dd5
5
5
  SHA512:
6
- metadata.gz: b617c07bb328bcebf4be86fd0fdd8a3bc3cd513cdcf5fb6e6a1ebb564e39f318e245411a382eceeec0746549f6eb40b177682167f488a6b450e7d073042b9cb2
7
- data.tar.gz: 1fab63085e0fc3be064120316e61b840c705e551e19c08a7329dc2290b682bbbb475e935917822c1538c9ca76b0a9ee7aa730e4cd5973d1e45a92addda390a40
6
+ metadata.gz: 58ec18a1c0e3f222340325fd44677c64798c4bb1e33f4e69f0247fa73f547a4aeabc6dfd81735f98096f01303405f25178a7fbff3e29000e2d31f85720fec4b6
7
+ data.tar.gz: 00d341d37e50337fc262ce6055cebfcfe040713bf768c673c7a653045649299c06e95c94e46225c7bfab5b3190817196642f950a956573dae3a8c5056f96b8ed
data/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.12.0] - 2026-06-03
4
+
5
+ ### Changed
6
+ - Version bump: minor release
7
+
8
+ ### Commits in this release
9
+ - 7e227c59 feat: auto-generate /search.json and /sitemap/ endpoints for downstream sites (#104)
10
+ - 300dabaf chore(deps): update Ruby gem dependencies (#120)
11
+ - 3a1a810c chore(deps-dev): bump mermaid from 10.9.5 to 10.9.6 (#105)
12
+
13
+
3
14
  ## [1.11.2] - 2026-06-03
4
15
 
5
16
  ### 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.11.2
5
+ version: 1.12.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-03T01:19:09.000Z
23
+ lastmod: 2026-06-03T01:23:07.000Z
24
24
  draft: false
25
25
  permalink: /
26
26
  slug: zer0
@@ -901,7 +901,7 @@ git push origin feature/awesome-feature
901
901
 
902
902
  | Metric | Value |
903
903
  |--------|-------|
904
- | **Current Version** | 1.11.2 ([RubyGems](https://rubygems.org/gems/jekyll-theme-zer0), [CHANGELOG](/CHANGELOG)) |
904
+ | **Current Version** | 1.12.0 ([RubyGems](https://rubygems.org/gems/jekyll-theme-zer0), [CHANGELOG](/CHANGELOG)) |
905
905
  | **Documented Features** | 43 ([Feature Registry](https://github.com/bamr87/zer0-mistakes/blob/main/_data/features.yml)) |
906
906
  | **Setup Time** | 2-5 minutes ([install.sh benchmarks](https://github.com/bamr87/zer0-mistakes/blob/main/install.sh)) |
907
907
  | **Documentation Pages** | 70+ ([browse docs](https://zer0-mistakes.com/pages/)) |
@@ -956,6 +956,6 @@ And these AI partners that make zer0-mistakes truly AI-native:
956
956
 
957
957
  **Built with ❤️ — and a little help from our AI partners — for the Jekyll community**
958
958
 
959
- **v1.11.2** • [Changelog](CHANGELOG.md) • [License](LICENSE) • [Contributing](CONTRIBUTING.md) • [AI Agent Guide](AGENTS.md)
959
+ **v1.12.0** • [Changelog](CHANGELOG.md) • [License](LICENSE) • [Contributing](CONTRIBUTING.md) • [AI Agent Guide](AGENTS.md)
960
960
 
961
961
 
@@ -0,0 +1,100 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # File: search_and_sitemap_generator.rb
5
+ # Path: _plugins/search_and_sitemap_generator.rb
6
+ # Purpose: Auto-generate /search.json and /sitemap/ endpoints for downstream
7
+ # sites consuming this theme, so they work out of the box without
8
+ # requiring users to manually create these files.
9
+ #
10
+ # The search modal (search-modal.js) fetches /search.json and the modal form
11
+ # action targets /sitemap/. This generator ensures both endpoints exist even
12
+ # when the consuming site hasn't created them.
13
+ #
14
+ # Behaviour:
15
+ # - If the site already has a page at /search.json, no page is generated.
16
+ # - If the site already has a page at /sitemap/, no page is generated.
17
+ # - Generation can be disabled via _config.yml:
18
+ # search:
19
+ # generate_index: false
20
+ # sitemap_page:
21
+ # generate: false
22
+ #
23
+
24
+ module Jekyll
25
+ class SearchAndSitemapGenerator < Generator
26
+ safe true
27
+ priority :low
28
+
29
+ def generate(site)
30
+ generate_search_json(site)
31
+ generate_sitemap_page(site)
32
+ end
33
+
34
+ private
35
+
36
+ # ------------------------------------------------------------------
37
+ # /search.json — uses _layouts/search.html which includes search-data.json
38
+ # ------------------------------------------------------------------
39
+ def generate_search_json(site)
40
+ return if search_index_disabled?(site)
41
+ return if page_exists?(site, "/search.json")
42
+
43
+ Jekyll.logger.info "SearchAndSitemapGenerator:", "Auto-generating /search.json endpoint"
44
+
45
+ page = PageWithoutFile.new(site, site.source, "", "search.json")
46
+ page.data.merge!(
47
+ "layout" => "search",
48
+ "permalink" => "/search.json",
49
+ "sitemap" => false
50
+ )
51
+ page.content = ""
52
+
53
+ site.pages << page
54
+ end
55
+
56
+ # ------------------------------------------------------------------
57
+ # /sitemap/ — uses _layouts/sitemap-collection.html
58
+ # ------------------------------------------------------------------
59
+ def generate_sitemap_page(site)
60
+ return if sitemap_page_disabled?(site)
61
+ return if page_exists?(site, "/sitemap/")
62
+
63
+ Jekyll.logger.info "SearchAndSitemapGenerator:", "Auto-generating /sitemap/ endpoint"
64
+
65
+ page = PageWithoutFile.new(site, site.source, "", "sitemap.html")
66
+ page.data.merge!(
67
+ "layout" => "sitemap-collection",
68
+ "title" => "Site Map",
69
+ "description" => "Complete site overview with navigation and content discovery tools",
70
+ "permalink" => "/sitemap/",
71
+ "sidebar" => false,
72
+ "collection" => "all"
73
+ )
74
+ page.content = ""
75
+
76
+ site.pages << page
77
+ end
78
+
79
+ # ------------------------------------------------------------------
80
+ # Helpers
81
+ # ------------------------------------------------------------------
82
+
83
+ def page_exists?(site, permalink)
84
+ normalized = permalink.chomp("/")
85
+ site.pages.any? do |p|
86
+ url = (p.url || "").chomp("/")
87
+ perm = (p.permalink || "").chomp("/")
88
+ url == normalized || url == permalink || perm == normalized || perm == permalink
89
+ end
90
+ end
91
+
92
+ def search_index_disabled?(site)
93
+ site.config.dig("search", "generate_index") == false
94
+ end
95
+
96
+ def sitemap_page_disabled?(site)
97
+ site.config.dig("sitemap_page", "generate") == false
98
+ end
99
+ end
100
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-theme-zer0
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.11.2
4
+ version: 1.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Amr Abdel
@@ -220,6 +220,7 @@ files:
220
220
  - _plugins/content_statistics_generator.rb
221
221
  - _plugins/obsidian_links.rb
222
222
  - _plugins/preview_image_generator.rb
223
+ - _plugins/search_and_sitemap_generator.rb
223
224
  - _plugins/theme_version.rb
224
225
  - _sass/components/_back-to-top.scss
225
226
  - _sass/components/_callout.scss