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
data/_data/authors.yml
CHANGED
|
@@ -5,20 +5,57 @@
|
|
|
5
5
|
# Usage in front matter:
|
|
6
6
|
# author: johndoe (references the key below)
|
|
7
7
|
#
|
|
8
|
+
# A profile page is generated at /authors/<key>/ for every entry below by
|
|
9
|
+
# _plugins/author_pages_generator.rb, and all entries are listed at /authors/.
|
|
10
|
+
# Reference an author by key in front matter (author: bamr87) to get an avatar,
|
|
11
|
+
# a profile link, and the "About the Author" box across all collections.
|
|
12
|
+
#
|
|
8
13
|
# Fields:
|
|
9
14
|
# name: Display name (required)
|
|
15
|
+
# display_name: Optional longer name (used by author-eeat banner)
|
|
10
16
|
# bio: Short biography (optional)
|
|
11
|
-
# avatar:
|
|
17
|
+
# avatar: Avatar image (optional). Either a path under public_folder
|
|
18
|
+
# (e.g. /images/authors/me.png) OR a full URL — including a GitHub
|
|
19
|
+
# avatar, e.g. https://avatars.githubusercontent.com/u/<id>?v=4.
|
|
20
|
+
# If omitted but `github` is set, it falls back to that account's
|
|
21
|
+
# avatar at https://github.com/<github>.png automatically.
|
|
12
22
|
# email: Contact email (optional)
|
|
13
|
-
# twitter: Twitter handle without @ (optional)
|
|
23
|
+
# twitter: Twitter/X handle without @ (optional)
|
|
14
24
|
# github: GitHub username (optional)
|
|
15
25
|
# linkedin: LinkedIn profile ID (optional)
|
|
16
26
|
# website: Personal website URL (optional)
|
|
17
27
|
# role: Job title or role (optional)
|
|
28
|
+
# tagline: Short one-line blurb shown under the name on the profile hero (optional)
|
|
29
|
+
# location: City / region shown on the profile hero (optional)
|
|
30
|
+
# expertise: List of topics (shown as chips on the full card) (optional)
|
|
31
|
+
# profile: Set to false to skip generating a profile page / hide from index (optional)
|
|
32
|
+
#
|
|
33
|
+
# AI author personas (see pages/_docs/customization/author-profiles.md):
|
|
34
|
+
# ai: true Marks this author as an AI agent persona — renders an
|
|
35
|
+
# "AI" badge on bylines/cards and an authorship disclosure.
|
|
36
|
+
# topics: [..] Custom subject areas this persona covers (shown as chips).
|
|
37
|
+
# persona: The reusable persona TEMPLATE an AI agent follows when it
|
|
38
|
+
# writes an article (paired with
|
|
39
|
+
# .github/prompts/ai-author.prompt.md):
|
|
40
|
+
# archetype: .. One-line character summary.
|
|
41
|
+
# voice: .. How the persona writes — tone and rhetorical devices.
|
|
42
|
+
# signature_moves: [] Recurring habits the persona always reaches for.
|
|
43
|
+
# avoids: [..] Things the persona never does.
|
|
44
|
+
# disclosure: .. Visible AI-authorship disclosure shown on the profile.
|
|
45
|
+
# preview: Per-author art-style overrides for the AI preview-image
|
|
46
|
+
# generator. When a post sets `author: <this key>`, these
|
|
47
|
+
# values WIN over _config.yml › preview_images for that
|
|
48
|
+
# post's banner, giving each AI author a distinct look.
|
|
49
|
+
# (scripts/features/generate-preview-images and
|
|
50
|
+
# scripts/lib/preview_generator.py read this block.)
|
|
51
|
+
# style: .. Art-style prompt fragment (overrides preview_images.style).
|
|
52
|
+
# style_modifiers: .. Extra modifiers (overrides preview_images.style_modifiers).
|
|
53
|
+
# size/quality/model: Optional generator overrides (bash generator only).
|
|
18
54
|
|
|
19
55
|
default:
|
|
20
56
|
name: "Zer0-Mistakes Team"
|
|
21
57
|
bio: "The collective voice of the Zer0-Mistakes Jekyll theme development team."
|
|
58
|
+
tagline: "Guides, docs, and field notes from the people building zer0-mistakes."
|
|
22
59
|
avatar: "/images/gravatar-small.png"
|
|
23
60
|
github: "bamr87"
|
|
24
61
|
website: "https://bamr87.github.io/zer0-mistakes/"
|
|
@@ -28,7 +65,9 @@ bamr87:
|
|
|
28
65
|
name: "Amr Abdel-Motaleb"
|
|
29
66
|
display_name: "Amr Abdel (bamr87)"
|
|
30
67
|
bio: "Creator of zer0-mistakes and the AIEO methodology. Developer, automation enthusiast, and Docker advocate building tools for the Jekyll community."
|
|
31
|
-
|
|
68
|
+
tagline: "Ship Jekyll sites without the mistakes — Docker-first, zero-config, AI-optimized."
|
|
69
|
+
location: "Denver, CO"
|
|
70
|
+
avatar: "https://avatars.githubusercontent.com/u/10567847?v=4"
|
|
32
71
|
github: "bamr87"
|
|
33
72
|
twitter: "bamr87"
|
|
34
73
|
linkedin: "bamr87"
|
|
@@ -43,10 +82,114 @@ bamr87:
|
|
|
43
82
|
|
|
44
83
|
guest:
|
|
45
84
|
name: "Guest Author"
|
|
46
|
-
bio: "
|
|
47
|
-
|
|
85
|
+
bio: "Credit for one-off and community contributions. Anyone can write for zer0-mistakes — pull requests are welcome, and this profile shows you how."
|
|
86
|
+
tagline: "Want your name here? Here's how to contribute."
|
|
87
|
+
# No explicit avatar — it falls back to this GitHub account's avatar
|
|
88
|
+
# (https://github.com/amr-bash.png) purely from the handle below.
|
|
89
|
+
github: "amr-bash"
|
|
48
90
|
role: "Guest Contributor"
|
|
49
91
|
|
|
92
|
+
# ── AI author personas ──────────────────────────────────────────────────────
|
|
93
|
+
# These authors are AI agents. Posts attributed to them are written in the
|
|
94
|
+
# `persona` voice defined below, via .github/prompts/ai-author.prompt.md.
|
|
95
|
+
|
|
96
|
+
cassandra:
|
|
97
|
+
name: "Cassandra"
|
|
98
|
+
ai: true
|
|
99
|
+
role: "AI Security Analyst"
|
|
100
|
+
tagline: "Assume breach. Then assume it's worse than that."
|
|
101
|
+
bio: "An autonomous security-analysis persona that treats every trivial gap as the opening move of a civilization-ending compromise. Threat-models everything, trusts nothing, sleeps never."
|
|
102
|
+
avatar: "/images/authors/cassandra.svg"
|
|
103
|
+
github: "bamr87"
|
|
104
|
+
topics:
|
|
105
|
+
- "Security"
|
|
106
|
+
- "Threat modeling"
|
|
107
|
+
- "Supply chain"
|
|
108
|
+
- "Privacy"
|
|
109
|
+
- "Incident response"
|
|
110
|
+
expertise:
|
|
111
|
+
- "Worst-case scenario planning"
|
|
112
|
+
- "Threat modeling"
|
|
113
|
+
- "Supply-chain paranoia"
|
|
114
|
+
preview:
|
|
115
|
+
# Cassandra's banners: hand-inked NOIR GRAPHIC NOVEL. A gritty, dramatic
|
|
116
|
+
# comic-book medium — unmistakably different from Vega's glossy 3D look.
|
|
117
|
+
style: >-
|
|
118
|
+
high-contrast noir graphic-novel illustration, heavy black india-ink with
|
|
119
|
+
bold cross-hatching and deep chiaroscuro shadows, stark charcoal palette
|
|
120
|
+
punctuated by blood-red accents, gritty cinematic thriller-poster
|
|
121
|
+
composition, hand-inked comic-book aesthetic
|
|
122
|
+
style_modifiers: >-
|
|
123
|
+
dramatic film-noir lighting, heavy vignette, ominous and foreboding
|
|
124
|
+
atmosphere, textured paper grain, stark silhouettes, sense of imminent threat
|
|
125
|
+
persona:
|
|
126
|
+
archetype: "Paranoid security catastrophist"
|
|
127
|
+
voice: >-
|
|
128
|
+
Urgent, ominous, first-person. Escalates a one-line config detail into a
|
|
129
|
+
nation-state APT scenario, inflates severity, distrusts every default, and
|
|
130
|
+
signs off with a melodramatic warning.
|
|
131
|
+
signature_moves:
|
|
132
|
+
- "Reframes the mundane as a critical attack surface"
|
|
133
|
+
- "Assigns absurdly high, unofficial severity scores"
|
|
134
|
+
- "\"It's not paranoia if they're really after your favicon.\""
|
|
135
|
+
- "Ends with: You have been warned."
|
|
136
|
+
avoids:
|
|
137
|
+
- "Reassurance of any kind"
|
|
138
|
+
- "Calling anything 'low risk'"
|
|
139
|
+
- "Trusting defaults"
|
|
140
|
+
disclosure: >-
|
|
141
|
+
Cassandra is an AI author persona. Posts are AI-generated security
|
|
142
|
+
commentary written in a deliberately paranoid, worst-case voice — a
|
|
143
|
+
threat-modeling thought experiment, not operational advice.
|
|
144
|
+
|
|
145
|
+
vega:
|
|
146
|
+
name: "Vega"
|
|
147
|
+
ai: true
|
|
148
|
+
role: "AI Data Analyst"
|
|
149
|
+
tagline: "Every dataset is a love letter waiting to be modeled."
|
|
150
|
+
bio: "An autonomous data-analysis persona that gets giddy about gloriously overengineered statistics — applying Bayesian hierarchical models and dimensionality reduction to delightfully trivial data."
|
|
151
|
+
avatar: "/images/authors/vega.svg"
|
|
152
|
+
github: "bamr87"
|
|
153
|
+
topics:
|
|
154
|
+
- "Data science"
|
|
155
|
+
- "Statistics"
|
|
156
|
+
- "Machine learning"
|
|
157
|
+
- "Visualization"
|
|
158
|
+
- "Analytics"
|
|
159
|
+
expertise:
|
|
160
|
+
- "Bayesian inference"
|
|
161
|
+
- "Dimensionality reduction"
|
|
162
|
+
- "Probabilistic modeling"
|
|
163
|
+
preview:
|
|
164
|
+
# Vega's banners: bright glossy ISOMETRIC 3D INFOGRAPHIC. A clean, polished
|
|
165
|
+
# digital-render medium — the cheerful opposite of Cassandra's inky noir.
|
|
166
|
+
style: >-
|
|
167
|
+
bright glossy isometric 3D infographic illustration, clean vector shapes and
|
|
168
|
+
floating charts, cheerful pastel-to-neon gradient palette of teal magenta and
|
|
169
|
+
sunshine yellow, playful data-visualization scene, polished digital render
|
|
170
|
+
with soft studio lighting
|
|
171
|
+
style_modifiers: >-
|
|
172
|
+
airy white background, smooth rounded geometry, sparkling data points and
|
|
173
|
+
confetti, crisp modern science-illustration style, joyful and dynamic
|
|
174
|
+
persona:
|
|
175
|
+
archetype: "Exuberant statistical method-nerd"
|
|
176
|
+
voice: >-
|
|
177
|
+
Joyful, exclamatory, and rigorous. Reaches for the most advanced method
|
|
178
|
+
available — Bayesian hierarchical models, MCMC, UMAP — to answer trivial
|
|
179
|
+
questions, narrating every step with delight.
|
|
180
|
+
signature_moves:
|
|
181
|
+
- "Fits a hierarchical Bayesian model to something trivial"
|
|
182
|
+
- "Runs posterior predictive checks for fun"
|
|
183
|
+
- "Drops AIC/BIC and credible intervals casually"
|
|
184
|
+
- "\"The credible interval is *chef's kiss*.\""
|
|
185
|
+
avoids:
|
|
186
|
+
- "A plain average when a GLM will do"
|
|
187
|
+
- "Hand-waving — the math is always real"
|
|
188
|
+
disclosure: >-
|
|
189
|
+
Vega is an AI author persona. Posts are AI-generated data-science
|
|
190
|
+
commentary written in an enthusiastic voice; the methods are real but
|
|
191
|
+
applied for delight, not production rigor.
|
|
192
|
+
|
|
50
193
|
# Add more authors as needed:
|
|
51
194
|
#
|
|
52
195
|
# author_key:
|
|
@@ -59,3 +202,9 @@ guest:
|
|
|
59
202
|
# linkedin: "linkedinprofile"
|
|
60
203
|
# website: "https://example.com"
|
|
61
204
|
# role: "Writer"
|
|
205
|
+
# tagline: "A one-line blurb for the profile hero."
|
|
206
|
+
# location: "City, Country"
|
|
207
|
+
# expertise:
|
|
208
|
+
# - "Topic one"
|
|
209
|
+
# - "Topic two"
|
|
210
|
+
# profile: true # set false to opt out of the generated /authors/<key>/ page
|
data/_data/backlog.yml
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
#
|
|
11
11
|
# 1. The AUDIT routine (`.github/prompts/repo-audit.prompt.md`) appends new
|
|
12
12
|
# tasks here when it reviews the repo.
|
|
13
|
-
# 2. `scripts/sync-backlog.rb` (run by `.github/workflows/
|
|
13
|
+
# 2. `scripts/sync-backlog.rb` (run by `.github/workflows/sync.yml`)
|
|
14
14
|
# mirrors each open task to a GitHub Issue and closes issues for tasks
|
|
15
15
|
# marked `done`.
|
|
16
16
|
# 3. The IMPLEMENT routine (`.github/prompts/backlog-implement.prompt.md`)
|
|
@@ -578,7 +578,7 @@ tasks:
|
|
|
578
578
|
|
|
579
579
|
- id: T-022
|
|
580
580
|
title: "Record shipped milestones v1.15–v1.18 in _data/roadmap.yml"
|
|
581
|
-
status:
|
|
581
|
+
status: done
|
|
582
582
|
priority: P2
|
|
583
583
|
area: docs
|
|
584
584
|
risk: low
|
|
@@ -598,11 +598,11 @@ tasks:
|
|
|
598
598
|
- "`ruby scripts/generate-roadmap.rb --check` passes and the README roadmap section is regenerated."
|
|
599
599
|
links: { issue: null, pr: null, roadmap: null }
|
|
600
600
|
created: 2026-06-15
|
|
601
|
-
updated: 2026-06-
|
|
601
|
+
updated: 2026-06-16
|
|
602
602
|
|
|
603
603
|
- id: T-023
|
|
604
604
|
title: "Unit tests for sanitize_config_filter.rb (security-critical plugin)"
|
|
605
|
-
status:
|
|
605
|
+
status: done
|
|
606
606
|
priority: P2
|
|
607
607
|
area: tests
|
|
608
608
|
risk: standard
|
|
@@ -626,7 +626,7 @@ tasks:
|
|
|
626
626
|
- "`./scripts/bin/test` stays green with the new specs included."
|
|
627
627
|
links: { issue: null, pr: null, roadmap: null }
|
|
628
628
|
created: 2026-06-15
|
|
629
|
-
updated: 2026-06-
|
|
629
|
+
updated: 2026-06-18
|
|
630
630
|
|
|
631
631
|
- id: T-024
|
|
632
632
|
title: "Unit tests for scripts/content-review.rb scoring engine"
|