Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
1.26.0 (2026-07-07)
Features
Unreleased
Added
- Claude-orchestrated preview-image engine (ZER0-004) — the three
divergent implementations (1,404-line Bash engine, drifted Python
duplicate, dead Jekyll plugin) are consolidated into ONE Python engine,
scripts/lib/preview_generator.py. Claude directs; an image model renders:- Analyze (
prompt_engine: claude, default) — Claude reads each article and writes a subject-specific art-direction brief, replacing the generic template prompt that produced unrepresentative banners. - Produce — the configured renderer executes the brief:
openai(gpt-image-2 / DALL-E, default),xai(grok-2-image),stability,gemini(new) — orlocal, upgraded from a.txtstub to a real deterministic SVG/PNG banner (sanitized, rasterized viarsvg-convert→inkscape→magick→ the new Playwright helperscripts/dev/rasterize-svg.js). - Review (
review_engine: claude, default) — Claude inspects the rendered image with vision against the article and style; when it misrepresents the subject or contains text artifacts, Claude writes a corrected prompt and the engine regenerates once. - Claude credential chain:
CLAUDE_CODE_OAUTH_TOKEN(claude setup-token) →ANTHROPIC_AUTH_TOKEN→ANTHROPIC_API_KEY→ a logged-inclaudeCLI (zero-setup for Claude Code users); orchestration degrades gracefully to template prompts without one. - New unit suite
test/test_preview_generator.py(83 tests, zero network) wired intotest_core.sh.
- Analyze (
Fixed
-
Preview-image config keys
enabled,assets_prefix,auto_prefixandcollectionsare now honored by the generator (the Bash engine ignored them), and front-matterpreview:updates are scoped to the front-matter block only — the previous file-widesedcould corrupt body lines starting withpreview:. External-URL previews are no longer silently regenerated, and a configured model from the wrong vendor family falls back to the provider default instead of a guaranteed API error. -
Left-side FAB overlap — the Obsidian local-graph button and the page-feedback “Improve this page” button were both positioned at
bottom: 1rem; left: 1remand completely overlapped each other. The Obsidian FAB is now at slot 2 (bottom: offset + size + gap), stacking above the feedback FAB — the same pattern the TOC FAB uses above back-to-top on the right side. The docs-sidebar restore-mode FAB was also offset to slot 2 so it cannot overlap the feedback FAB on mobile. Closes #288. (evidence:test/visual/evidence/fab-stack/— feedback↔obsidian FAB overlap 3136px² → 0; regression testtest/visual/features/fab-stack.spec.js).
Changed
- Preview-image generation is now Claude-orchestrated by default
(
prompt_engine: claude+review_engine: claude; disable with--prompt-engine template --review none). The renderer default staysopenai.scripts/features/generate-preview-imagesis now a thin wrapper delegating to the Python engine (full CLI flag surface preserved;rake preview:*and the VS Code tasks work unchanged). - CI test tiering — the PR-blocking Playwright gate is now the new
criticalproject (118@critical-tagged, user-facing tests: navigation, search, mobile survival, theming baseline, security) instead of the full 331-testsmoketier; the full smoke tier, the complete shell-suite matrix, and the 9-skin pixel snapshots moved to a nightly workflow (nightly-extended.yml) that files a sticky issue on failure instead of blocking PRs. Install/deploy/site-generation shell suites run on PRs only when install-related paths change (always nightly).
Added
- Weekly agentic UI/UX audit (
ui-audit.yml) — a deterministic Playwright sweep (test/ui-audit/sweep.mjs: screenshots, axe WCAG 2.1 AA, console errors, overflow, broken internal links across critical routes × 3 viewports) interpreted by a read-only Claude Code agent (.claude/agents/ui-auditor.md) against the component contract indocs/architecture/ui-components.md; findings are filed as asource:ui-auditissue feeding the continuous-evolution loop.
1.25.0 (2026-07-03)
Features
- features: reverse-traceability source tags — applied and enforced (#270) (f2c0c07)
- includes: rebuild settings offcanvas into 3 coherent tabs (#276) (6d7fa5e)
- navigation: collection-aware sidebar modes with shared resolver (#273) (104285f)
Bug Fixes
- features: stop ZER0-061 card from swallowing every following card (#268) (46a604d)
- navigation: remove redundant entries from navigation menus (916eca2)
- sass: mobile audit — contain author card, restore consent z-order, grow tap targets (#275) (8ec9867)
Unreleased
Changed
- Settings panel rebuilt — the navbar Settings offcanvas (
#info-section) is reorganized from four overlapping tabs (Settings / Environment / Developer / Background) into three with one purpose each, guarded by the newtest/visual/settings-panel.spec.jssmoke suite (evidence:test/visual/evidence/settings-panel/— 4 tabs → 3, duplicate color-mode controls 6 → 3, dead search box removed, admin links 0 → 4):- Appearance consolidates every look-and-feel control exactly once: color mode (one-click segmented control replacing the two-click dropdown), theme skin, background toggle + layer opacity with inline values, and the primary-color picker — now mounted inside the tab instead of appended below the tab content where it duplicated the color-mode buttons under every tab.
- Site stacks the environment card (copyable page URL via a delegated
data-zer0-copyhandler — inlineonclickhandlers removed), quick links, deduplicated theme & build info, and Admin quick links. - Developer keeps page location (rendered only where breadcrumbs render — no more empty heading on the homepage), page metadata, and source shortcuts (dead never-initialized tooltip attributes dropped).
- The dead Settings-tab search box (an empty
#searchboxno JS ever bound to) is removed; the search modal remains the one search surface. - Mobile tabs keep their text labels (their accessible names) at every width and drop the decorative icons instead of the reverse.
Fixed
-
Settings panel admin links never rendered — the
_plugins/admin_page_urls.rblookup powering them never ran: thegithub-pagesgem forces safe mode and randomizesplugins_dir, so local_pluginsare disabled on GitHub Pages, in CI, and in the Docker dev server alike. The plugin is replaced with a pure-Liquid scan in the cached_includes/components/admin-links.html(jekyll-include-cache is whitelisted), so the Admin section now renders its existence-gated links (0 → 4 on the demo site). -
Mobile responsive audit — four defects found by driving every key route and component under phone emulation (320–414px), each guarded by the new
test/visual/mobile-responsive.spec.jssmoke suite (evidence:test/visual/evidence/mobile-responsive/— author-card page overflow 19px → 0 on small phones; consent buttons 0 tap-blocked; all footer/copy tap targets ≥24px):- Author card: a long nowrap expertise badge propagated through flexbox
min-width: autoand pushed the whole page past the viewport on ≤340px phones, widening the layout viewport so the fixed navbar rendered “cut off” and the page panned sideways. - Cookie consent banner: the
.zer0-bg-bodychild-elevation rule flattened the banner (and the TOC FAB) toz-index: 1, letting the chat and local-graph FABs paint over — and steal taps from — the banner’s Reject All / Accept All buttons on mobile. The rule now excludes.position-fixed, restoring the--zer0-layer-*token order. - Footer tap targets: text links (~19px) and icon-only social links (~16px) now meet the WCAG 2.5.8 24px minimum via block padding and minimum boxes — text size and visual design unchanged.
- Breadcrumb tap targets: breadcrumb links (~19px bare text) gain a ≥24px tap box via block padding + matching negative margin, without shifting the visual baseline.
- Code-copy buttons: grown from ~22px to ≥24px tall (32px on coarse/touch pointers).
- ToC / chat FAB collision: on mobile, the table-of-contents FAB and the AI-chat toggle both claimed the right-edge slot above back-to-top and overlapped (ToC painting over the chat button). The chat toggle and its panel now step one slot higher on pages that render the ToC FAB, and the chat panel is capped to the viewport so it can’t poke above short tablet/landscape screens.
- Author card: a long nowrap expertise badge propagated through flexbox
Added
- Mobile test tier:
test/visual/mobile-responsive.spec.jsruns the above guards plus offcanvas-menu, search-modal, and settings-panel fit/tap checks under real Pixel-class emulation in thesmoketier;npm run test:mobileruns just this suite. NewdismissCookieConsentfixture pre-seeds the consent choice for tests that interact with lower-screen chrome.
1.24.0 (2026-07-01)
Features
- features: backfill PR/commit/issue provenance + render it (#264) (03b584a)
- features: document 16 reconciled features (ZER0-061..076) + governance (#267) (097e842)
Bug Fixes
- features: reconcile registry with the real repo + add validation gate (#262) (786459c)
- security: close two DOM-XSS sinks (CodeQL js/xss-through-dom) (#266) (812f247)
1.23.0 (2026-06-30)
Features
- automation: issue-triage→PR autopilot (off by default) (#243) (229e076)
- automation: verify-and-close lane — autopilot closes human issues fixed on main when CI is green (#247) (7cc7cb0)
- layouts: add color_mode_default config knob with FOUC prevention (#253) (55bee97)
Bug Fixes
- ci: make claude-run truly OAuth-first — drop API key whenever an OAuth token is set (#248) (d2b44d2)
- ci: pass -R to gh pr view in the self-repair opt-in gate (#260) (67d67d7)
- includes: existence-guard component-showcase demo links (#219) (#256) (ef15e79)
- layouts: existence-gate /authors/ breadcrumb in author.html for remote-theme consumers (#252) (cae21a7)
- search: existence-gate search modal form action for remote-theme consumers (#257) (b915c4d)
- skins: map dark + contrast skins to their background assets (#245) (fb8808e), closes #240
Unreleased
Bug Fixes
- features: stop a feature card from swallowing every card after it on
/features/— a raw<key>in the ZER0-061 description rendered as a stray HTML element. Fixed the description (/authors/:key/), escaped alldescriptionoutput on the features page and infeature-card.html, and added a registry-gate check that rejects raw</>in titles/descriptions. (evidence:test/visual/evidence/features-card-escape/) - includes: existence-guard component-showcase demo links — breadcrumb and list-group items now render as real links when the target page exists in the build (
/docs/,/docs/customization/,/categories/,/tags/) and as plain text when absent; removes inerthref="#"/onclick="return false;"workaround (#219) (evidence:test/visual/evidence/component-showcase/)
Tests
- navigation: regression spec for section-sidebar /tags/ existence gate — asserts “Browse All Tags” and “View All Tags” links only render when /tags/ page is present in the build (issue #218,
test/visual/section-sidebar-tags-gate.spec.js)Features
-
color_mode_default config knob — new color_mode_defaultsetting (darklightauto, defaultauto) in_config.ymlcontrols Bootstrap’sdata-bs-themeboth server-side (in_layouts/root.html) and client-side. An early inline script (_includes/core/color-mode-init.html, loaded before Bootstrap CSS) applies the correct theme before any[data-bs-theme]selector is evaluated, preventing FOUC.localStorage["theme"](the Appearance panel override) always wins over the config default.autofollowsprefers-color-scheme— backward-compatible with the previous behaviour. (evidence:test/visual/evidence/color-mode-default/) - feature provenance — every entry in the feature registry (
_data/features.yml) gained aprovenance:block (introduced_in/pr/commit/issue) tracing the feature to the change that shipped it, surfaced on/features/as aPR #N · <commit>line on each card and a new Provenance column in the reference table. A registry-validation gate (scripts/validate-features.rb, thefeaturestest suite) now requires provenance on every active feature. (evidence:test/visual/evidence/features-provenance/) - feature registry coverage — reconciled the registry against the codebase: added 16 previously-undocumented features (ZER0-061…076 — author profiles, news/section/article layouts, theme-skins customizer, nanobar, setup wizard, table-CSV copy, share actions, archives, component showcase, and the AI-content-review / giscus-digest / evidence-gate / autonomous-pipeline / secret-scan workflows), each with provenance + a regression-test link. Every active feature now also declares a
tests:block (scripts/validate-features.rbhard-enforces both provenance and tests), and the governance infeatures.instructions.mdrequires them on every new entry.Bug Fixes
- search: existence-gate search modal form action to
/sitemap/only when that page is present in the build; falls back to#(safe no-op) for remote-theme Pages consumers without a/sitemap/stub (closes #202) - layouts: existence-gate
/authors/breadcrumb link in author.html for remote-theme consumers (#204)Tests
- tests: add negative-path smoke tests for AI chat render guard — asserts FAB/panel are absent when
proxy_ready: falseand noapi_keyis set (closes #168)
1.22.0 (2026-06-26)
Features
- ci: autonomous CI self-repair loop (pipeline Phase 6) (#237) (a43db45)
- comments: enable Giscus + wire Claude Code conversation building (#214) (fef60a5)
- obsidian: interactive callouts, parity fixes, a11y + vendored graph (#200) (affbcd6)
Bug Fixes
- ci: enable auto-merge via GraphQL (no git checkout) + graceful no-op (#232) (4c8c74c)
- includes: existence-gate category badge links for remote-theme consumers (#235) (16ed0a8)
- includes: make component-showcase demo links inert to avoid consumer 404s (#236) (e96646b)
- navigation: existence-gate the section-sidebar /tags/ links (#231) (a02b062)
- search: degrade search UI gracefully when /search.json is absent (#234) (f3a718d)
1.21.0 (2026-06-26)
Features
- automation: committee planning + specialized executor agents (Phase 4) (#226) (1e9016b)
- automation: issue intake + /issue-implement routing (Phases 2-3) (#225) (21a7008)
- scripts: issue adoption in sync-backlog (Phase 1) (#224) (512068e)
1.20.2 (2026-06-25)
Bug Fixes
- navigation: stop fixed navbar being cut off by page overflow (#215) (8c32563)
- release: re-sync Gemfile.lock and package-lock.json to 1.20.1 (#216) (294575b)
1.20.1 (2026-06-24)
Bug Fixes
- harden remote-theme consumer experience + vendor cytoscape (#205) (c6b0312)
- layouts: render hero image for breaking posts, not just featured (#189) (4473a07)
1.20.0 (2026-06-22)
Features
- authors: unified author profiles & About-the-Author across collections (#193) (a6db304)
- scripts: add dependency-free preview-image pixelator (#178) (ada91ee)
Bug Fixes
- chat-proxy: identify as Claude Code for subscription OAuth tokens (#185) (8924efd)
- config: restore remote_theme contract + add missing lastmod (unblocks CI) (#174) (b995115)
- config: restore zer0-mistakes.com site identity + CNAME (site was down) (#176) (9ef8ff8)
Performance Improvements
Reverts
Unreleased
Added
- Visual-evidence standard + reusable evidence kit. UI/behavioural changes
now ship a regression test and before/after visual evidence, surfaced in
release notes and enforced in CI:
test/visual/evidence-kit.mjs— a config-driven generator that drives the live site across a viewport matrix + configurations, measures page overflow in before/after states, composes labelled montages (Playwright, no ImageMagick), and writesmetrics.json+ a CHANGELOG snippet..github/skills/visual-evidence/SKILL.md+visual-evidence.instructions.mdcodify the standard (and how to file issues a fix uncovers into the backlog loop). Indexed fromAGENTS.md,CLAUDE.md, and the instructions README..github/workflows/evidence-gate.yml— a required check that fails a UI PR missing the test/evidence (opt-out labelskip-evidence).- Autonomy policy extended (
continuous-evolution.md,backlog-implement.prompt.md,auto-merge.yml): arisk: lowfix that ships tests + evidence is now auto-merge-eligible alongside docs/deps/lint.
Fixed
- Navbar no longer appears “cut off” at certain widths. The root cause was
page-level horizontal overflow, not the navbar itself: because the header is
position: fixed, any element that pushed the page wider than the viewport (a wide markdown table, a long inline-code token, an unwrapped Bootstrap.row) created a sideways scrollbar and left the navbar’s right edge uncovered. Fixes:- Wide content tables now scroll inside their
.content-table-wrappercard (overflow-x: auto) instead of overflowing the page — the wrapper thattable-copy.jsinjects previously hadoverflow: visible, which also bypassed the existing mobile responsive-table fallback. - Long unbroken inline-code tokens wrap in content areas instead of forcing a horizontal scrollbar.
- A theme-wide
html { overflow-x: clip }safety net guarantees no stray element can make the fixed navbar look cut off.clipis used instead ofhiddensoposition: sticky(docs sidebar / TOC) keeps working; wide content keeps its own local scroll so nothing is hidden. - The mobile menu/settings offcanvas width is clamped (
min(21rem, 86vw)) so the slide-in panel and its close button always fit narrow phones, instead of Bootstrap’s fixed 400px overflowing the viewport.
- Wide content tables now scroll inside their
- Giscus comments were silently disabled (#201).
_config.ymldefined the comment block under the misspelled keygisgus:while every template readssite.giscus, so comments never rendered. Renamed the key togiscus:. Fixing this also surfaced and fixed a latent include-path error in_includes/content/giscus.html(a literalinclude giscus.htmlLiquid tag inside an HTML doc comment) that only fired once comments were enabled. - Theme chrome no longer injects internal links that 404 for remote-theme
Pages consumers (#204).
Tag badges (
article/note/notebook), the breadcrumb collection-root crumb, the local-graph “Full graph” link, and author byline profile links are now existence-gated — they render as plain text when the target page isn’t in the build instead of linking to a 404. The post category base is configurable viacategory_base(default/news); the tags page viatags_page(default/tags/); the full-graph page viaobsidian_graph_url.
Changed
- Vendored cytoscape.js (#152),
the last runtime CDN dependency in the theme.
cytoscape@3.30.0is committed underassets/vendor/cytoscape/(matching the Bootstrap/Icons/Mermaid pattern) and loaded locally by the Obsidian local-graph FAB and full-graph page, so the graph works under strict CSP and offline. Added tovendor-manifest.json.
Added
- Dev-mode navbar fit warnings. On local/dev hosts only, the navbar module
logs an actionable
console.warnwhen the inline menubar has more top-level items than fit the bar, or when page content overflows the viewport (the usual “navbar looks cut off” cause) — naming the widest offending element. Silent on deployed sites. - Quickstart documentation hub + fork/remote-theme guide (#126). Fleshes out
pages/_docs/quickstart/(previously onlybare-minimum.md): a newindex.mdhub that links the available quickstart paths (bare-minimum, fork-and-deploy, and the step-by-step series), and a fullfork-and-deploy.mdguide covering the standard fork or remote-theme GitHub Pages workflow end to end (choose model → setup → local preview → enable Pages → verify → troubleshoot). Both pages carry annotated screenshots underassets/images/docs/quickstart/and score 🟢 excellent in the content reviewer. - Remote-theme consumer checklist doc
(#203,
#202). New
pages/_docs/deployment/remote-theme-checklist.mddocumenting whatremote_themedoes not deliver on GitHub Pages (config, data, plugins) and how to fill each gap — including the hand-authored/search.json+/sitemap/files that the plugin-only generator can’t produce in Pages safe mode. - Contributor workflow guardrails. New
change-workflowskill (.github/skills/change-workflow/SKILL.md) codifying the branch → commit → PR flow for any change (branch-first, one concern per PR, stage-by-path, worktrees for parallel work, splitting a messy working tree). Paired with expandedversion-control.instructions.mdrules — working-tree/branch discipline, theversion.rb↔Gemfile.lockinvariant, and keeping generated artifacts out of feature PRs — and indexed fromAGENTS.md,CLAUDE.md, and.github/instructions/README.md.Tests
- Navbar responsiveness regression suite. New
test/visual/navbar-responsive.spec.js(smoke tier) sweeps a 16-width matrix (320 → 1920px) asserting no page-level horizontal overflow, the fixed header spans the full viewport, the search/settings cluster stays on-screen, the brand renders, and the inline menubar never clips its items. Adds offcanvas-, dropdown-, long-title-, and many-items- fit checks, plus a reusablemeasureNavbarLayout()fixture (overflow detection is element-level so it still catches regressions theoverflow-x: clipnet would otherwise hide). - Unit tests for the
content-review.rbscoring engine (#166). Newscripts/test/lib/test_content_review.shdrives the deterministic content reviewer against synthetic Markdown fixtures using the real production config and schema: asserts a well-formed docs page scores ≥ 80, that removing the requireddescriptionlowers the score and reports the issue, that a closing bare ` ``` ` after a language-tagged fence is not flagged (the v1.18.1 regression), and that--strictexits non-zero when a file is below the fail threshold (while warn mode exits 0). Runs underLC_ALL=Cfor locale-independence parity with the T-015 guard. - Playwright smoke specs for the search modal and AI chat widget (#167,
#168). New
test/visual/search.spec.jscovers the site-wide search modal (ZER0-032): the/shortcut opens it and focuses the input, Escape closes it, a query populates results from/search.json, and opening search closes the Settings offcanvas without stacking backdrops. Newtest/visual/ai-chat.spec.jscovers the AI chat widget (ZER0-060): the render guard’s positive path (FAB + config present), and the FAB ⇄ panel toggle via click, close button, and Escape — all client-side, no AI backend. Note: the smoke build (_config.yml,_config_dev.yml) setsai_chat.proxy_ready: true, so the widget renders in the test environment; the specs assert that real behavior. - CI coverage for the installer wizard and upgrade path (#147). New
test/test_install_wizard_upgrade.sh(auto-discovered by thetest_install_*.shglob in CI) covers two previously-untested libraries: it drives the non-AI wizard prompt helpers (_wiz_prompt,_wiz_confirm,_wiz_choose) non-interactively with piped answers — defaults, typed input, yes/no confirmation, numbered/by-name menu selection, out-of-range fallback — and exercisesupgrade.shend to end: version detection (marker,_config.ymlfallback, unknown), a detect→migrate→verify run across a version gap, the dry-run (no-write) branch, and the already-current no-op branch. - Unit tests for
sanitize_config_filter.rb(T-023). Added 12 Minitest specs totest/test_plugins.rbcovering both regex paths of the security-critical Liquid filter:SENSITIVE_KEY_REmatchesapi_key,apikey,secret,password, andtoken(case-insensitive);PHC_VALUE_REcatches PostHog project keys; mixed multi-line input produces correct partial redaction; and edge cases (nil, empty string) return without error.Added
- Author profiles (“About the Author”) across all collections. A single,
layered author system replaces the three divergent ad-hoc treatments that
existed before:
components/author-card.htmlis now the canonical rendering primitive (inline/compact/full), with avatars, profile links, schema.orgPersonmicrodata, and expertise chips.- New
components/author-bio.htmlrenders the shared “About the Author” section (used by thearticle,note, andnotebooklayouts), gated by the previously-unusedauthor_profilefront-matter flag. - New
author/authorslayouts add per-author profile pages at/authors/:key/(content aggregated across every collection) and an/authors/directory index, linked from the navbar (under About) and the footer quick links. Each profile is interactive: a hero with bio/blurb, an at-a-glance stats dashboard that doubles as type filters (Posts / Docs / Notes / …), free-text search over titles + tags, sort (newest / oldest / A–Z), a clickable topic/tag cloud, a live result count, and deep-linkable filters via the URL hash — powered by the new progressive-enhancementassets/js/author-profile.js(with JS off it falls back to a full, crawlable grid). Emitsschema.org/CollectionPage+ItemListstructured data. - New
_plugins/author_pages_generator.rbauto-generates those pages for each_data/authors.ymlentry (opt out per author withprofile: false, or globally withauthors.generate_pages: false); profiles for this site’s authors are also committed under/authors/so they build under GitHub Pages safe mode, mirroring the committedsearch.json/sitemappattern. - New
_sass/components/_author.scssstyling (dark-mode safe, token-driven). _data/authors.ymldocuments the newtagline,location,expertise, andprofilefields.- AI author personas. An author can be flagged
ai: truewith apersonablock (archetype / voice / signature_moves / avoids / disclosure + customtopics); the theme then renders an “AI” badge on every byline and card and a visible authorship disclosure on the profile hero and the About-the-Author box. Ships two examples — Cassandra (a paranoid AI Security Analyst who catastrophizes trivial gaps) and Vega (an enthusiastic AI Data Analyst who over-models trivial data) — each with a profile page, an SVG avatar, and example in-voice posts, plus a reusable.github/prompts/ai-author.prompt.mdtemplate for writing as a persona. - Per-author preview art styles. An author entry can carry a
preview:block (style,style_modifiers, and — for the Bash generator —size,quality,model). When a post setsauthor: <that key>, the AI preview-image generator uses those settings instead of the site-widepreview_imagesconfig for that post’s banner, so each AI persona gets a recognisable look (Cassandra → ominous security-ops noir, Vega → vibrant data-viz). Resolved per file by bothscripts/features/generate-preview-imagesandscripts/lib/preview_generator.py; posts by non-AI authors are unaffected. Precedence — Bash generator: authorpreview:›IMAGE_STYLEenv ›_config.yml› defaults; Python generator: authorpreview:›--styleflag › default (it does not read_config.yml). The two shipped personas were given deliberately divergent styles (Cassandra → hand-inked noir graphic novel; Vega → glossy isometric 3D infographic) and their four example posts now carry real generated banners — downscaled to ~1200px JPEGs (~300 KB) — replacing the placeholder SVGs. - Guest author page is now a contribution guide.
/authors/guest/doubles as the contributor onboarding page — how to submit an article (paths, front-matter template, local preview, PR + review), how to become a credited author (add yourself to_data/authors.yml, use your key, profile stub for safe mode), and AI-authorship disclosure. Theauthorlayout now renders a page’s Markdown body (in a.author-page-bodysection) and suppresses the generic “no content” empty state when a body is present, so any profile page can carry custom content. - Avatars can be full URLs (incl. GitHub) or auto-derived from a handle.
An author’s
avatarmay now be a full URL — e.g. a GitHub avatar (https://avatars.githubusercontent.com/u/<id>?v=4) — used as-is; relative paths still resolve under the assets folder. Ifavataris omitted butgithubis set, the avatar falls back tohttps://github.com/<handle>.png. Resolution is centralised incomponents/author-avatar-url.htmland shared by the byline, bio card, profile hero, and E-E-A-T blocks. The Guest profile demonstrates the handle-only path (its avatar comes fromgithub: amr-bash), and bamr87 uses an explicit GitHub avatar URL.
Performance
- Docker dev image cut from ~4GB to ~1.7GB and cold build from ~193s to ~82s
(native arm64; far worse under the old emulated build). The
dev-teststage no longer installs@mermaid-js/mermaid-cli(its only reference in the whole repo was its own install line — Mermaid renders client-side from the vendoredmermaid.min.js, never viammdc, and it dragged in a ~300MB headless Chromium), ImageMagick, libvips, or Node/npm (all unused in-container; thepackage.jsonscripts run on the host). Kept Python + Jupyter/nbconvert for the notebook tooling. Dropped the redundant secondbundle install(thebasestage already installs all gem groups), removed theplatform: linux/amd64pin fromdocker-compose.yml(it forced QEMU emulation on Apple Silicon), removed the per-startgenerate_statistics.shregeneration from the compose command, and simplified the production runtime stage (the static-fileruby -run -e httpdserver needs no Gemfile orbundle install). - Jekyll build ~16.4s → ~12s by wrapping page-invariant chrome in
include_cached(thejekyll-include-cacheplugin was a dependency but went unused):core/footer.html,components/{cookie-consent,nanobar,svg, search-modal,shortcuts-modal,setup-banner,background-settings}.html, andcomponents/js-cdn.html. The footer alone was 3.9s of the build — it ranwhere-scans over every collection on all 172 page renders to auto-detect quick links, despite output that depends only on site config. Its page-front-matter-dependent tail (TOC/local-graph FABs) moved tocore/footer-fabs.htmlso the body stays cacheable; the FABs areposition:fixedwith explicit z-index, so the output is visually identical.root.htmlself-time dropped 9.1s → 4.4s. - Production CSS now minified (
sass: style: compressed,sourcemap: never);main.css~182KB → ~158KB render-blocking._config_dev.ymlkeepsexpanded+ sourcemaps for local debugging. - Content statistics no longer regenerate on every build.
content_statistics.auto_generatenow defaults tofalse; templates read the committed_data/content_statistics.ymldirectly. The generator hook had been re-scanning all content on everyjekyll build(~12× per CI run) and dirtying a tracked file. Refresh on demand withrake stats:generate.
Removed
- Dead vendored libraries (~1.1MB). Deleted
assets/vendor/font-awesome(1.0MB) andassets/vendor/jquery(88KB), theirvendor-manifest.jsonentries, and the misleading “jQuery”powered_bycredit. Font Awesome was loaded only bycomponents/mermaid.html(no theme diagram usesfa:icons) — that 1.0MB render-blocking stylesheet no longer loads on Mermaid pages. jQuery was already removed from page loads (Bootstrap 5 dropped it). Forks that relied on Font Awesome icons inside Mermaid diagrams must re-add the stylesheet.
Changed
- CSS Grid tutorial now ships live, in-browser demos. Expanded
pages/_posts/tutorial/2025-01-23-css-grid-mastery.mdso every concept renders a real grid next to its code — basic tracks,fr/minmax(),auto-fitvsauto-fill, line spanning, named areas, an interactive column playground, and card / holy-grail / magazine / alignment / dense-packing layouts (theme-aware, responsive, keyboard-accessible). Added bidirectional “Related Reading” links between the tutorial and the card-grid / accessible-forms posts, plus references to it from the Bootstrap, Layouts, and Styles docs. - Bylines now use the shared author component. The
article,note,notebook,news, andsectionlayouts pluscomponents/post-card.htmlpreviously printed `` as bare text; they now rendercomponents/author-card.html(inline), so a known author key resolves to a display name, avatar, and a link to their profile page. The inline “About the Author” block that was hard-coded in_layouts/article.htmlwas removed in favor ofcomponents/author-bio.html. - Author bylines and the “About the Author” section now link to the profile
even when front matter uses the display name. Previously only a direct
_data/authors.ymlkey (e.g.author: default) resolved to a profile link; posts/notes written asauthor: "Zer0-Mistakes Team"(the display name) fell back to an unlinked card.components/author-card.htmlandcomponents/author-bio.htmlnow resolve the author by key or by matchingname/display_name, so the inline byline, the full card name, and the “More from …” link all point at/authors/<key>/. Non-matching strings (template placeholders, name variants) stay unlinked as before. - Committed author pages moved to
pages/_about/authors/(into theaboutcollection), co-located with the rest of the About section instead of a top-level/authors/source directory. URLs are unchanged (explicit/authors/:key/permalinks), andauthor_pages_generator.rb’s dedup now also checks collection documents so no duplicate pages are generated. - Design framework (SCSS) refactor — structure only, no visual change.
Decomposed the 1,131-line
_sass/custom.scssmonolith into a thin back-compat barrel plus five focused partials (layouts/_global-chrome,core/_toc,core/_sidebar-extras,components/_ui-enhancements,components/_notes-index); split the code-example chrome out ofcore/_docs-layout.scssintocore/_docs-code-examples.scss; extractedcomponents/_search-modal.scss; consolidated the navbar fixed/grid layout intocore/_navbar.scss; lifted the stylesheet assembly order intoassets/css/main.scssas the single manifest; removed two redundant duplicate rules (a second.btn { position; overflow }and a duplicate globalprefers-reduced-motionreset); and deleted 141 lines of dead legacy Sass variables fromcore/_variables.scss. The compiledassets/css/main.cssis verified semantically identical (only the two redundant duplicates and some emitted comments were removed) — no tokens, selectors, or declaration values changed. - Automation no longer pushes directly to
main. The roadmap→README sync (sync.yml) and Jupyter notebook conversion (convert-notebooks.yml) now open pull requests viapeter-evans/create-pull-request(labelledautomated, assigned for review) instead of committing straight tomain— prerequisite for enabling branch protection. Mirrors the existingupdate-dependencies.ymlpattern. (PRs opened byGITHUB_TOKENdon’t auto-trigger CI; close/reopen to run checks, or merge directly.)
Fixed
Gemfile.lockre-synced toversion.rb(1.19.1 → 1.19.0) and guarded against future drift. Thevalidate_version_consistencycheck (scripts/bin/validate) now also compares the gem version pinned inGemfile.lock, and a new always-runningVersion ↔ Gemfile.lock consistencystep in CI’squality-checksjob fails any PR where the two disagree — the exact drift that left the lock at 1.19.1 whileversion.rbsaid 1.19.0.
1.19.0 (2026-06-16)
Features
- chat: rebuild AI assistant on Claude API with GitHub issue/PR tools + OAuth connector (#151) (02e81af)
- home: opt-out flags for RSS link and visible title (#157) (7597351)
Bug Fixes
- analytics: only load GA/GTM in production and skip dev hostnames (#160) (12d701e)
- config: restore remote_theme contract + add missing lastmod (unblocks CI) (#174) (b995115)
- config: restore zer0-mistakes.com site identity + CNAME (site was down) (#176) (9ef8ff8)
Added
- Preview-image pixelator (
scripts/features/pixelate-preview-images). A dependency-free (Python stdlib only — no ImageMagick/Pillow/pngquant) utility that pixelates and palette-quantizes the AI-generated preview banners into indexed PNG-8, shrinking them ~90% (e.g. 2.7 MB → ~230 KB) while preserving the retro 8-bit aesthetic. A dry-run across all 146 banners reports 283 MB → 28 MB. Includes a conventions-friendly bash wrapper (config default path, parallel--jobs,--dry-run), thepixelate_images.pyengine with--selftest, and ascripts/test/lib/test_pixelate_images.shsuite wired into the library test runner. Non-PNG / 16-bit / interlaced inputs are skipped gracefully.
Removed
- Revert the “Year of AI” / federated content-hub pivot (PR #173). Restored
the original
zer0-mistakestheme landing page: re-publishedREADME.mdas the site homepage at/(droppedpublished: false) and removed theYear of AIhub homepage (pages/home.md), the/hub/dashboard (pages/hub.md), the hub registry/metadata (_data/hub.yml,_data/hub_index.yml,_data/navigation/hub.yml), the hub tooling (scripts/lib/hub.rb,scripts/sync-hub-metadata.{rb,sh},scripts/provision-org-sites.{rb,sh},templates/org-site/*), the dailyhub-syncworkflow, thecontent-hubsystem doc, and theHubnavbar entry. FeatureZER0-061was dropped from the features data._config.yml/CNAMEwere already restored to thezer0-mistakes.comidentity by PRs #174/#176.
Changed
- Roadmap catch-up (T-022): recorded shipped milestones v1.14–v1.18 as
completedin_data/roadmap.ymland advanced the active milestone to v1.19 so the roadmap tracks the gem version; README gantt diagram regenerated.[1.19.1] - 2026-06-16
Changed
- Version bump: patch release
Commits in this release
- 9ef8ff83 fix(config): restore zer0-mistakes.com site identity + CNAME (site was down) (#176)
- 564328a3 chore(hub): refresh dashboard metadata
- ae7ea222 docs(content): verify install flow, fix broken links, add tutorial + feature screenshots (#171)
- b995115a fix(config): restore remote_theme contract + add missing lastmod (unblocks CI) (#174)
Fixed
- Restore
zer0-mistakes.comsite identity (site was down). PR #173 (the federated org content hub) accidentally rewrote this repo’s own_config.ymlto theyear-of-ai.github.ioidentity and deleted theCNAMEfile, which broke the production custom domain. Restoredgithub_user/repository_name/local_repo/title/domain/domain_ext/url/email/descriptionto thebamr87/zer0-mistakes→https://zer0-mistakes.comvalues and re-added theCNAME(zer0-mistakes.com) so GitHub Pages serves the custom domain again.
[1.19.0] - 2026-06-16
Changed
- Version bump: minor release
Commits in this release
- 9c7ae494 docs: fix broken internal docs/ links in pages/_docs (#172)
- 3d4c9464 chore(hub): refresh dashboard metadata
- a2ec16c4 updates (#173)
- 7b7a6dd4 chore(backlog): audit 2026-06-15 (#162)
- 02e81afb feat(chat): rebuild AI assistant on Claude API with GitHub issue/PR tools + OAuth connector (#151)
- 7597351a feat(home): opt-out flags for RSS link and visible title (#157)
- 12d701e8 fix(analytics): only load GA/GTM in production and skip dev hostnames (#160)
- 4a391327 chore(skills): add run-zer0-mistakes launch & screenshot skill (#159)
- 95e249d6 docs(content): tighten guide SEO metadata and fix broken cross-links (#158)
- 69394a80 docs(content): resolve AI content-review findings across 3 pages (#156)
Added
- Org Content Hub (federated): tooling to publish one GitHub Pages site per
org repository — each renders its own content at
<org>.github.io/<repo>/with this theme viaremote_theme; content never leaves the source repo. Adds the_data/hub.ymlregistry with auto-discovery, a sharedscripts/lib/hub.rb,scripts/provision-org-sites.{rb,sh}to roll the Pages scaffold (templates/org-site/*) out to org repos and enable Pages,scripts/sync-hub-metadata.{rb,sh}to refresh API-only dashboard data (_data/hub_index.yml+_data/navigation/hub.yml, deterministic), a/hub/dashboard page that tracks every site’s live/pending status, and a dailyhub-sync.ymlworkflow that commits only when the org changed (seedocs/systems/content-hub.md)
[1.18.1] - 2026-06-14
Changed
- Version bump: patch release
Commits in this release
- ae76a61f fix(content-review): correct code-fence detection (closing fences + ) (#155)
- f00fb654 docs(seo): strengthen SEO docs index metadata + fix agent-tier workflow (#154)
Fixed
- content-review: closing code fences no longer counted as “missing language”.
scripts/content-review.rbflagged every bare```line, including the closing fence of a properly tagged block, which double-counted and could tank a file’s score (e.g.pages/_about/features/jekyll.mdscored 0/100 almost entirely from this false positive). The check now tracks fence open/close state and only validates opening fences. - content-review: ignore Liquid
{% raw %}blocks in the quality and style checks. Code fences, headings, images, and terminology inside{% raw %}…are literal display examples, not page structure, and were being counted as real findings.
[1.18.0] - 2026-06-13
Changed
- Version bump: minor release
Commits in this release
- e7c8e33c feat(content-review): AI content reviewer framework with Claude Code agent (#153)
- c78433f1 fix(content): render mermaid on 12 pages, restore Obsidian graph, migration tests (T-019) (#150)
Added
- Chat GitHub actions: the assistant can file GitHub issues and open content/UI-improvement pull requests via Claude tool use (
get_page_source,create_github_issue,create_pull_request), every creation gated by an in-chat confirmation card;ai_chat.github.mode: 'url'(default) opens pre-filled github.com forms with no token anywhere,'proxy'creates them server-side - Chat proxy template (
templates/deploy/chat-proxy/): Cloudflare Worker that streams/api/chatto the Claude Messages API and serves/api/github/issue+/api/github/pull-requestwith a server-side fine-grained token, an origin allowlist, and server-pinned model/max_tokens - Chat proxy: Claude Code connector (OAuth) auth: the proxy can authenticate to Claude with a Claude Code / Claude.ai OAuth login token (
Authorization: Bearer+anthropic-beta: oauth-2025-04-20) instead of an API key — three auto-detected modes by precedence: rotatingANTHROPIC_OAUTH_REFRESH_TOKEN(KV-cached, auto-refreshed), long-livedCLAUDE_CODE_OAUTH_TOKEN(fromclaude setup-token), andANTHROPIC_API_KEY; OAuth modes pair with a Cloudflare Access gate for private deployments - Chat local dev proxy (
templates/deploy/chat-proxy/dev-proxy.mjs): runs the same Worker logic on Node, readsCLAUDE_CODE_OAUTH_TOKEN/ANTHROPIC_API_KEYfrom.env, and serves/api/chatatlocalhost:8787so the assistant works duringdocker-compose upwith no Cloudflare deploy;_config_dev.ymlwires the widget to it - Chat proxy CI deploy (
.github/workflows/deploy-chat-proxy.yml+templates/deploy/chat-proxy/wrangler.toml): deploys the Worker to Cloudflare (workers.dev, cross-origin) on push tomainor manual dispatch, settingANTHROPIC_API_KEYfrom a GitHub Actions secret viawrangler-action; requires onlyCLOUDFLARE_API_TOKEN/CLOUDFLARE_ACCOUNT_ID/ANTHROPIC_API_KEYrepo secrets - Chat local page editing (dev only): with
ai_chat.local_edit: true(set in_config_dev.yml), the assistant gains anupdate_page_contenttool and the dev proxy exposes sandboxed/api/page/source+/api/page/updateroutes (templates/deploy/chat-proxy/page-store.mjs) so it can rewrite the current page’s source file in the working tree — the dev server--watchrebuilds it live. Path-confined to the repo, content extensions only, existing files only; off in production (the Worker has no filesystem) - Chat feature registered in the layered guidance system: new
.github/instructions/ai-chat.instructions.md(auth modes, server caps, confirmation/safety contracts) registered inCLAUDE.md,AGENTS.md, the instructions index, and the ZER0-060 registry; resolved thetemplates/deploy/**glob collision withinstall.instructions.md; documented the sharedANTHROPIC_API_KEY(chat proxy + content reviewer) indocs/systems/github-secrets-setup.md; chat edit/PR prompts now bumplastmodand follow the content-review conventions so chat-authored changes pass the automated reviewer - AI content reviewer framework: a two-tier reviewer that runs on every PR
touching
pages/**/*.mdand integrates with Claude Code agents to ensure SEO is met and content is consistent, polished, and styled to the collection’s guidelines.- Deterministic tier —
scripts/content-review.rb(Ruby, stdlib-only, no API key, works on fork PRs) scores each file 0–100 for front matter, SEO (title/description length, keywords), structure (headings, code-fence languages, image alt text, bare URLs), and terminology. Thresholds are derived per collection (posts as articles, docs under the documentation guidelines, notes/notebooks as short-form, etc.). - Claude Code agent tier —
.claude/agents/content-reviewer.mdreviews tone, clarity, consistency, accessibility, and technical accuracy, loading each file’s governing instruction files (baseline + collection-specific). - Automation —
.github/workflows/ai-content-review.ymlposts the deterministic summary as a sticky PR comment (always) and runs the Claude Code agent whenANTHROPIC_API_KEYis configured. - Config & guidance —
.github/config/content_review.yml(per-collection thresholds + assigned skills/prompts),.github/instructions/content-review.instructions.md, the/content-reviewprompt + Cursor command, and thecontent-reviewskill.
- Deterministic tier —
Changed
- AI Chat Assistant rebuilt on the Claude Messages API: requests use the
POST /v1/messagesshape (top-levelsystem, content blocks,anthropic-version; direct mode addsanthropic-dangerous-direct-browser-access) instead of OpenAI Chat Completions; responses stream token-by-token over SSE; default model isclaude-opus-4-8and the unsupportedtemperatureknob was removed; widget logic moved from inline<script>toassets/js/ai-chat.js
[1.17.1] - 2026-06-13
Changed
- Version bump: patch release
Commits in this release
- f2657b68 fix(a11y): resolve all navbar & site WCAG 2.1 AA violations (T-007) (#149)
- 30d836cb fix(admin): sync config-page copy with live _config.yml and redact the Raw tab (T-018) (#148)
Added
- Mermaid diagrams now render on 12 more pages: pages with
mermaidcode fences but nomermaid: truefront-matter flag (about, several feature/dev docs, all four quickstart guides) were showing raw code instead of diagrams — the flag gates the renderer include. Added the flag; verified all 34 diagrams across the site parse with valid Mermaid syntax and render to SVG in a browser - Obsidian graph view restored: the
/docs/obsidian/graph/page (roadmap v1.4 force-directed knowledge graph) had been deleted as a “stub” but itsfull-graph.htmlinclude,obsidian-graph.js, the docs index link, and 5 inbound wiki-links all still referenced it — a 404 to a shipped feature. Restored the page (it renders 161 nodes / 269 edges from the live wiki-index with zero console errors) - Migration & theme-version coverage (T-019):
scripts/test/lib/test_migrate.sh(14 assertions for Jekyll-site detection, theme-connection classification, and version-gap logic) andThemeVersionGeneratorTestintest/test_plugins.rb— the two largest remaining zero-coverage subsystems from the T-005 baseline
Fixed
- Navbar & site accessibility (T-007): resolved all WCAG 2.1 AA violations that kept three axe-core audits frozen — dropped the redundant ARIA
menubar/menuitemroles from the nav (the nav landmark already provides semantics; menubars require menuitem children the search/settings buttons weren’t), added anaria-labelto the site-subtitle home link, kept the admin/footer separator a list item, gave the theme-preview disabled tab arole="tab"and an icon-only button anaria-label, made code blocks a single keyboard-focusable scroll region, and underlined prose links so they’re distinguishable without color. The threetest.fixmeblocks intest/visual/accessibility.spec.jsare now livetest()calls — verified 0 violations across the homepage, FAQ, and all 8 admin pages (23/23 a11y, 223/223 smoke tier)
[1.17.0] - 2026-06-12
Changed
- Version bump: minor release
Commits in this release
- ac36e1a3 feat(tests): plugin unit specs and coverage baseline — T-011, T-005 (#145)
Fixed
- Admin config page sync (T-018): the page’s config copy is now byte-synced with the live
_config.yml(raw-wrapped so Liquid-looking comment text renders literally) andvalidatefails on drift; the visible Raw-YAML tab now applies the same sensitive-line redaction as the hidden copy element (it previously showed the raw file — the stale copy was the only thing keeping the live PostHog key off that tab); the raw-tab security test targets the realcode#cfg-raw-yamlelement and asserts presence instead of silently skipping
Added
- Plugin unit specs (T-011): 19 Minitest specs for the previously-untested
preview_image_generator.rb,content_statistics_generator.rb, andadmin_page_urls.rbplugins (config merge, path normalization, index dedupe by relative path, hook output, edge cases); wired into the core suite as “Plugin Unit Specs” - Coverage baseline (T-005): structural survey recorded at
docs/development/coverage-baseline.md— 10/10 suites green; the two remaining zero-coverage subsystems filed as T-019 (migrate.sh + theme_version.rb) and T-020 (installer wizard/upgrade)
[1.16.0] - 2026-06-12
Changed
- Version bump: minor release
Commits in this release
- 341cc675 feat(chat): add AI chatbot widget with page context (#33)
- 5a35597a feat(scripts): add consumer audit tooling and theme manifest (#110)
Added
- AI Chat Assistant (ZER0-060): opt-in floating chat widget grounded in the current page’s content, with proxy-first auth — renders nothing until
ai_chat.enabledplus a deployed proxy (proxy_ready: true) or an explicit direct-mode key are configured; FAB positioning/stacking driven by the design tokens (new--zer0-layer-fab-chat)
Fixed
- Chat render guard: the original guard used boolean expressions inside Liquid
assigntags (always truthy), which would have rendered a dead chat button on every page; computed with if-tags instead - Locale independence:
scripts/lint-pages(viascripts/lib/frontmatter.sh) read pages with the locale-dependent default encoding, reporting every multibyte post as a YAML parse error under a C locale; now reads UTF-8 explicitly and the T-015 locale guard covers it
[1.15.0] - 2026-06-12
Changed
- Version bump: minor release
Commits in this release
- 85d0295a feat(quality): implement six backlog tasks — T-003/004/008/014/015/016 (#144)
- 71b8fe46 fix(gemspec): require Ruby >= 3.2 to match modern dependency floor (#93)
Added
- Contribution templates (T-003): bug-report and feature-request issue forms, contact links, and a PR template with the conventional-commit/CHANGELOG/test checklist
- Locale-independence guard (T-015): lib test suite runs the roadmap/backlog/preflight validators under
LC_ALL=C LANG=Cso the UTF-8 crash class fixed in 1.12.1 cannot return
Fixed
- Theme customizer (T-008): YAML export now quotes hex color values in both builders — unquoted
#RRGGBBparsed as a YAML comment and silently dropped colors; frozen regression test promoted to live - 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 - site_generation suite (T-016):
jekyll buildfailures now fail the suite instead of degrading to warnings (missing-bundler skip retained)
Changed
- Docs lint gate (T-014): both
|| truesuppressions removed fromdocs-validate.yml— markdownlint now blocks on a zero-violation baseline
[1.14.0] - 2026-06-11
Changed
- Version bump: minor release
Commits in this release
- 5de341aa feat(security): sanitize sensitive config lines in admin config-page DOM (T-009) (#140)
- 42468785 chore(deps): update Ruby gem dependencies (#129)
- 89e21988 Improve LinkedIn share flow with cleaned article summary (#99)
Security
- Admin config page (T-009 hardening): added a pure-Liquid line-redaction layer for the hidden
<pre id="cfg-full-yaml">element — thesanitize_config_yamlplugin filter shipped in 1.13.1 does not run on GitHub Pages builds (safe mode ignores custom plugins, and the unknown filter is a silent no-op), so Pages-built sites were still injecting raw config; the Liquid layer protects every build path, with the plugin filter kept as defense-in-depth
Fixed
- Workflow lint (T-017):
version-bump.ymlnow passes the repo yamllint config (trailing spaces, bracket spacing, sequence indentation) — these pre-existing violations failed theauto-versionintegration suite on every code PR once the T-012 gate went live; YAML verified semantically identical before/after - Changelog tooling:
update_changelog_filenormalizes trailing newlines on the entry, guaranteeing exactly one blank line before the next release block even when callers pass entries via command substitution (review feedback on the T-012 PR)
[1.13.1] - 2026-06-11
Changed
- Version bump: patch release
Commits in this release
- 583fa997 fix(infra): sanitize sensitive config keys before DOM injection (T-009) (#141)
Security
- Admin config page sanitization (T-009): the hidden
<pre id="cfg-full-yaml">element on the admin config page now has values masked for keys matchingapi_key,secret,password,token, andphc_(PostHog) prefixes via a newsanitize_config_yamlLiquid filter (_plugins/sanitize_config_filter.rb); the corresponding Playwright regression guard (test/visual/security.spec.js) is promoted fromtest.fixmeto a live test
[1.13.0] - 2026-06-11
Changed
- Version bump: minor release
Commits in this release
- cee6f379 feat(ci): gate PRs on the full canonical test entrypoint (T-012) (#138)
Added
- CI gate parity (T-012): the
ci.ymltest job now runs every non-Playwright theme suite (core, deployment, quality, installation, installer, site_generation, obsidian) plus the canonical./scripts/bin/testscript suites (lib unit, theme validate, integration, installer e2e) on every code PR — previously onlycore,quality,installationgated, which is how three suites rotted unnoticed before PR #132; a “Gate Coverage — What Enforces What” table in.github/workflows/README.mdnow documents the controls contract
Fixed
- Release changelog path:
version-bump.ymlnow inserts release entries via the sharedupdate_changelog_filelibrary instead of an inlinehead/tailprepend 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
[1.12.2] - 2026-06-10
Added
- 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/testentrypoint (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
Changed
- Version bump: patch release
Commits in this release
- 846bd9ff chore(backlog): plan the Zer0-Mistake Quality Framework (roadmap v1.13, T-012–T-015) (#133)
- 33a727c0 docs: expand CLAUDE.md into a comprehensive Claude Code guide (#131)
[1.12.1] - 2026-06-10
Changed
- Version bump: patch release
- 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)
- Changelog: restored the Keep a Changelog preamble at the top of this file
Fixed
- Tooling encoding:
generate-roadmap.rb,sync-backlog.rb, andscripts/bin/validatenow read repo files as UTF-8 explicitly, fixinginvalid byte sequence in US-ASCIIcrashes in environments without a UTF-8 locale (minimal containers, some CI runners) —generate-roadmap.sh --checkandvalidate --quickboth crashed in such environments - Test suite: repaired the three test suites that failed on
main:scripts/test/integration/auto-versionrewritten against the current release architecture (scripts/analyze-commits.shwrapper,scripts/utils/analyze-commits,scripts/bin/release,version-bump.yml) — it previously targeted the retiredgem-publish.sh/auto-version-bump.ymland aborted underset -edue to((var++))returning non-zeroscripts/test/integration/mermaidrepointed atpages/_docs/features/mermaid-diagrams.md(the doc moved frompages/_docs/jekyll/) and at the current Bootstrap-aware theming instead of the removed forest theme/FontAwesome config_layouts/search.htmlgiven a front matter block so theme layout validation passes
- Changelog tooling:
update_changelog_filenow 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
Commits in this release
- 0c04f703 fix: repair failing test suites, validator crashes, and roadmap/changelog drift (#132)
[1.12.0] - 2026-06-03
Changed
- Version bump: minor release
Commits in this release
- 7e227c59 feat: auto-generate /search.json and /sitemap/ endpoints for downstream sites (#104)
- 300dabaf chore(deps): update Ruby gem dependencies (#120)
- 3a1a810c chore(deps-dev): bump mermaid from 10.9.5 to 10.9.6 (#105)
[1.11.2] - 2026-06-03
Changed
- Version bump: patch release
Commits in this release
- 452022ae chore(backlog): audit 2026-06-01 (#121)
[1.11.1] - 2026-06-01
Changed
- Version bump: patch release
Commits in this release
- d4a53d51 docs: consolidate, standardize, and add maintenance system (#112)
[1.11.0] - 2026-06-01
Changed
- Version bump: minor release
Commits in this release
- 8a5ba7e2 feat(ci): add continuous-evolution backlog loop (#114)
Added
- Continuous-evolution loop: a self-sustaining backlog mechanism so AI agents can keep improving the repo between human sessions.
_data/backlog.yml— tactical task queue (single source of truth), mirroring the_data/roadmap.ymlpattern.scripts/sync-backlog.rb(+scripts/sync-backlog.sh) — schema validator and GitHub Issues sync (idempotent via<!-- backlog-id -->markers)..github/workflows/backlog-sync.yml— syncs the backlog to issues on push tomain; validates schema on PRs..github/workflows/auto-merge.yml— enables native auto-merge for low-risk (docs/deps/lint) PRs once CI is green..github/prompts/repo-audit.prompt.md(/repo-audit) and.github/prompts/backlog-implement.prompt.md(/backlog-implement) — the audit and implement routines..github/instructions/backlog.instructions.md— file-scoped guidance for the backlog.docs/systems/continuous-evolution.md— full design, autonomy policy, and setup.CLAUDE.md— Claude Code pointer toAGENTS.md(per the documented convention).
[1.10.0] - 2026-06-01
Changed
- Version bump: minor release
Commits in this release
- 309202f2 feat(roadmap): add –validate mode, catch-up milestones v1.0–1.9, README accuracy fixes (#113)
[1.9.10] - 2026-05-31
Changed
- Version bump: patch release
Commits in this release
- ef6a3f39 fix: update copyright year range in LICENSE file
[1.9.9] - 2026-05-31
Changed
- Version bump: patch release
Commits in this release
- 2ffb820d docs: align pages/_docs/ (user guides) ↔ docs/ (technical guides)
[1.9.8] - 2026-05-30
Changed
- Version bump: patch release
Commits in this release
- 4e0273b8 docs: update Gemfile.lock handling and release workflow guidelines
[1.9.7] - 2026-05-30
Changed
- Version bump: patch release
Commits in this release
- c01d4e85 fix(quickstart): remove broken image reference from Quick Start Guide
- 7f6b13fd docs: enhance release pipeline documentation for clarity and completeness
[1.9.6] - 2026-05-30
Changed
- Quickstart: Comprehensive rewrite of all quickstart docs (
pages/_quickstart/) with improved structure, Mermaid decision flowchart, and step-by-step screenshots - Quickstart:
index.mdpublished from draft — now live at/quickstart/ - Quickstart: Removed
homebrew.mdandwinget.md(content consolidated intomachine-setup.md) - Quickstart: 18 new screenshots added to
assets/images/quickstart/for visual walkthroughs
[1.9.5] - 2026-05-30
Changed
- Version bump: patch release
Commits in this release
- d4e1a789 fix(skins): remove contrast/dark skins, set air as default, improve link contrast
[1.9.4] - 2026-05-30
Changed
- Skins: Removed
contrastanddarkskins;airis now the default skin - Accessibility: Rewrote per-skin link and hover colors to meet WCAG AA (≥4.5:1) contrast in both light and dark mode — all 7 remaining skins now use a darker brand tone for light-mode links and a lighter accent tone for dark-mode links
_config.yml:theme_skindefault changed from"dark"to"air"
[1.9.3] - 2026-05-30
Changed
- Version bump: patch release
Commits in this release
- 90ff5f8 fix(landing): update URL for secondary CTA to point to features page
[1.9.2] - 2026-05-29
Changed
- Version bump: patch release
Commits in this release
- 6e73c5f Update README and content statistics
[1.9.1] - 2026-05-27
Fixed
- Harden one-line installer path
[1.9.0] - 2026-05-27
Changed
- Version bump: minor release
Commits in this release
- 8a2bd84 feat(install): modular installer with deploy plugins, AI wizard pipeline, scrape v2, and test suite (#111)
Added
- Modular installer (
scripts/install/): spec-driven, AI-aware installer dispatched byscripts/bin/install. Single.zer0/install.spec.jsoncontract feeds CLI flags, the TUI wizard, and the OpenAI wizard into one apply pipeline. - Deploy plugins:
tasks/deploy_github-pages.sh,tasks/deploy_azure-swa.sh,tasks/deploy_docker-prod.sh. Spec deploy targets now auto-render the matching workflow / config fromtemplates/deploy/. - AI wizard end-to-end:
install wizard --ainow chains spec generation →apply_run, records AI provenance (ai.used/provider/model) in the spec, lets CLI flags override AI guesses, and falls back to profile defaults when the model returns empty arrays. - Profile defaults fallback:
ai/wizard.shre-loads the selected profile to fill in emptydeploy/agentsarrays from the AI output, ensuring decisive installs. genericagent target added to spec schema enum (cross-toolAGENTS.mdbaseline alongsideclaude,cursor,aider,copilot).- Installer test suite (
test/test_installer.sh): 17-check regression harness covering module syntax, all 6 profile inits, all 3 deploy plugins, all 5 agent flavours, and the AI wizard pipeline. Wired intotest/test_runner.shas theinstallersuite (included in--suites alland--suites full). - Site scraping (
install scrape <URL>+install init --scrape <URL>): newscripts/install/scrape.shBFS crawler + stdlib-onlyscripts/install/scrape_html.pyextractor convert any existing website into a fully-rendered zer0-mistakes site. Now distributes pages by detectedkind: home →index.mdwithpermalink: /, events →pages/events/<slug>.md, posts →pages/news/<slug>.md, rest →pages/<slug>.md. Downloads referenced images intoassets/scraped/and rewrites markdown to local paths. Wires navigation into_data/navigation/main.yml(the file the theme actually reads) with kind-based Bootstrap Icons, filters junk labels (Back / Cart / Folder:) and?format=ical/?format=jsonURLs, skips commerce paths (/cart,/checkout,/login). Seeds_config.ymltitle/description/lang/logofromog:/<html lang>metadata. New flags:--scrape URL,--scrape-depth N(default 2),--scrape-max-pages N(default 25). Covered bytest/test_install_scrape.sh(standalone + init-integration, asserts new layout + nav cleanliness).
Fixed
_cmd_wizardpreviously left targets containing only.zer0/install.spec.json; now chainsapply_runto write all task outputs.plan.shYAML parser now accepts bothdeploy:/deploy_targets:keys and parsesagents:block lists andai_features.agent_files:inline flow lists, matching the actual profile YAML shape.- Rewrote
ai/prompts/wizard.system.mdwith explicit profile, deploy, and agent heuristics plus a full example output, eliminating empty AI responses. plan_load_profileandplan_apply_flagsnow return0explicitly so Bash 3.2 doesn’t propagate a trailing-test exit code.
[1.8.2] - 2026-05-26
Changed
- Version bump: patch release
Changed
- Gem packaging:
jekyll-theme-zer0.gemspecnow excludesassets/images/(287 MB of content previews/author photos),assets/backgrounds/,.DS_Storefiles, and binary media outsideassets/vendor/, reducing gem payload to ~8.9 MB
[1.8.1] - 2026-05-26
Changed
- Version bump: patch release
Commits in this release
- 6a9bac4 chore(docker): remove unused prod and publish compose files
[1.8.0] - 2026-05-25
Changed
- Version bump: minor release
Commits in this release
- f62849f feat(ui): design tokens, navigation chrome, docs overhaul, sidebar rail & skin fixes (#108)
[1.7.2] - 2026-05-25
Changed
- Version bump: patch release
Commits in this release
- be8fd2b Expand Ruby 101 page with comprehensive beginner content (#107)
[1.7.1] - 2026-05-24
Changed
- Version bump: patch release
Commits in this release
- 580f2b4 perf: Jekyll build performance improvements + MathJax 3 fix + richer Obsidian cache (#100)
Added
- Design system & layouts: Sass token layers (
_sass/tokens/), component and layout partials (_sass/components/,_sass/layouts/), skins (theme_skins.yml+_sass/theme/_skins.scss), utilities, and developer docs (docs/design-system.md,design-tokens.md,theming.md,layouts-and-navigation.md, and related guides). Homepage sections are driven by_data/landing.ymlper_includes/components/README.md. - Navigation & chrome: Drawer/TOC FAB and sidebar visibility modules (
assets/js/modules/navigation/),appearance.jstheme helper, refreshed navbar/footer/breadcrumb markup aligned with Bootstrap 5.3. - Statistics:
_plugins/content_statistics_generator.rboptionally regenerates_data/content_statistics.ymlduringjekyll build(toggle viacontent_statistics.auto_generate);./scripts/generate-content-statistics.shdelegates to_data/generate_statistics.shand is wired fromrake stats:generate. - Testing: Expanded Playwright coverage (
test/visual/ui-refresh.spec.js,layouts.spec.js) and refreshed smoke visuals/results.jsonfor the new chrome.
Changed
- Testing: Consolidated three Playwright configs into a single
test/playwright.config.jswithsmoke,snapshots, andregression-{chromium,firefox,webkit}projects (tiers). The newtest/test_playwright.shrunner replacestest_styling.shand selects the tier viaPLAYWRIGHT_PROJECT. Snapshot baselines now live intest/visual/snapshots/(committed Linux images) and can be refreshed via the newtest/update-snapshots.shDocker helper. - CI: Split the styling step in
ci.ymlinto a Playwright smoke step (every code-change PR) and a path-filtered Playwright snapshot step (only when_sass/,assets/,_layouts/,_includes/,test/visual/change); both go through the new reusable.github/actions/playwright-testscomposite action and uploadtest/visual-results/artifacts on failure (14-day retention) for easier triage. - Performance:
setup-banner.html— added{% unless site.site_configured %}early-exit guard that skips all setup detection logic and thesetup-check.htmlsub-include whensite_configured: true; eliminated 151 redundant include renders per build (-87% per-render time, setup-check fully eliminated from profile) - Performance:
info-section.html— replaced full-site URL megastring (site.html_pages | map | join) with a single pre-filtered admin-page lookup (where_exp: "p.url contains '/about/'") that accessessite.html_pagesonce and builds a ~10-entry string instead of 150+, makingcontainschecks ~18× faster - Performance:
sidebar-right.html— added heading-presence guard before calling the expensivetoc.htmlLiquid parser; pages without<h2>/<h3>/<h4>headings skip TOC generation entirely (-18% per-render fortoc.html) - Performance: Made MathJax loading conditional via
page.mathjaxfront matter flag (mirrors Mermaid pattern) — saves 1.8 MB transfer on pages without math - Performance: Cached Obsidian plugin wiki-link index across incremental builds — index is rebuilt only when document URLs, titles, or aliases change
- Performance: Disabled
notebooks,hobbies, andquestscollections in dev config for faster local builds - Performance: Removed jQuery from page loads — Bootstrap 5.3.3 does not require it and no custom JS uses jQuery APIs
Fixed
- Accessibility: Dynamically-rendered color inputs in the Theme Customizer (Skin Editor gradient stops in
assets/js/skin-editor.jsand Live Preview pickers inassets/js/palette-generator.js) now have associated<label for>elements andaria-labels, fixing a regression that left them inaccessible to assistive tech. - Tests:
test/visual/theme-colors.spec.jsnow activates the Color Editor tab and waits for the panel to be visible before interacting, eliminating a 45 slocator.filltimeout caused by hitting hidden inputs in inactive tabs. - Tests: Replaced flaky
waitForTimeout(300)andnetworkidlecalls intest/visual/fixtures.jsandtest/visual/skins.spec.jswith deterministic waits ondomcontentloaded,load, thedata-theme-skinattribute, and thezer0:skin-changeevent. - Tests: Retired the legacy
test/test_visual.sh(ImageMagick + bash screenshot pipeline) and the placeholderhomepage-*-chromium-darwin.pngbaselines in favor of the unified Playwright snapshot tier. - Added missing
mathjax: truefront matter to pages that use math notation (test-notebook.md, jupyter-notebooks.md, jekyll-math-symbols-with-mathjax.md) - MathJax 3 inline math: Added
window.MathJaxconfig block before the script tag so$...$inline math (used in test-notebook.md) renders correctly — MathJax 3 does not enable dollar-sign inline delimiters by default - Updated
mathjax-math.mddocumentation to show MathJax 3 API (window.MathJax = {}) instead of the removed MathJax 2MathJax.Hub.ConfigAPI
Tests
- Added
ObsidianCacheTestsuite (5 new tests) covering fingerprint invalidation on document addition, title change, alias change, cache hit, and cache miss
Changed (UI/UX)
- Sidebar collapse — VS Code style: Left sidebar (
#bdSidebar) and right TOC (#tocContents) now collapse to a slim 36 px rail (--zer0-sidebar-rail-width) instead of being fully hidden on desktop. The visibility toggle icon (bi-layout-sidebar-inset/bi-layout-sidebar-inset-reverse) stays mounted on the rail so users can re-expand the panel with a single click — the floating action buttons (.bd-sidebar-fab,.bd-toc-fab) are now hidden at≥992 pxsince the rail toggle replaces them._sass/core/_docs-layout.scss,_sass/layouts/_navbar-extras.scss. - Smooth transitions:
.bd-layoutand.bd-mainnow animategrid-template-columnsandgapover--zer0-motion-duration-base(0.3 s) with--zer0-motion-ease-standard; sidebar contents cross-fade viaopacity+ delayedvisibility. Honors@media (prefers-reduced-motion: reduce)by disabling all related transitions. - Toggle behavior:
sidebar-visibility.jsandtoc-visibility.jsno longer setbutton.hidden = trueon the rail toggle when collapsed, keeping it interactive in the collapsed state. Aria labels (Hide…/Show…) update on each toggle. - Cache-bust: Added
?v=1783975529to the navigation ES-module<script type="module">tag in_includes/components/js-cdn.htmlto force re-fetch on rebuild (browsers cache ES modules indefinitely by URL). - Navbar dropdown: Dropdown toggle button set to
align-self: stretchso it spans the full navbar height, making it easier to invoke on touch/small screens; chevron iconfont-sizeincreased to1emfor better legibility._sass/core/_navbar.scss. - Syntax highlighting: Dual-palette system —
_sass/core/_syntax.scssnow uses a GitHub Light palette for.highlight(light mode) and scopes the Material Dark base16 palette to[data-bs-theme="dark"] .highlight, fixing near-invisible token colors on light backgrounds. - Theme preview gallery: Expanded to 20 sections with 6 new components: Callouts (5 types), Accordion, Progress & Spinners, Breadcrumb & Pagination, Tooltips & Popovers, and Icons showcase. TOC updated accordingly; Bootstrap tooltip/popover JS initializer added.
_includes/components/theme-preview-gallery.html,pages/_about/settings/theme-preview.md.
Fixed (UI)
- Contrast skin — light mode: The
contrastskin’szer0-skin-palettemixin sets--bs-link-color: #ffffff(white accent) which rendered sidebar nav links invisible on a white background in light mode. Added[data-theme-skin="contrast"]:not([data-bs-theme="dark"])override in_sass/theme/_skins.scssto pin link color to#111111in light mode while leaving dark-mode behavior unchanged.
[1.6.5] - 2026-05-19
Changed
- Version bump: patch release
Commits in this release
- 4b45cc7 docs(agents): slash .github instructions and prompts to actionable rules
[1.6.4] - 2026-05-19
Changed
- Version bump: patch release
Commits in this release
- d6ecf4e fix(features): correct stale file references in feature registry (#98)
[1.6.3] - 2026-05-21
Fixed
- Feature Registry: Remove stale
_includes/navigation/menu-collections.htmlreference from ZER0-049 - Feature Registry: Fix roadmap script path from
generate-roadmap-diagram.sh→generate-roadmap.shin ZER0-052 - Feature Registry: Replace non-existent
structured-data.html/eeat-signals.htmlwith correctseo.html,jsonld-faq.html,author-eeat.htmlin ZER0-054 - Feature Registry: Remove stale
_includes/components/settings-modal.htmlreference from ZER0-055
Commits in this release
- fix(features): correct stale file references in ZER0-049/052/054/055
[1.6.2] - 2026-05-19
Changed
- Version bump: patch release
Commits in this release
- 6651b38 fix(docs): update layout references from journals to article, add docs pages, and update feature registry (#97)
[1.6.1] - 2026-04-29
Changed
- Version bump: patch release
Commits in this release
- e1999c6 Improve About page: tighten copy, add preview image, fix CTA and broken link (#90)
[1.6.0] - 2026-04-29
Changed
- Version bump: minor release
Commits in this release
- 3dbfcad Expand About page with prerequisites, quick start, FAQ, and architecture diagram (#88)
- f969fc0 perf(jekyll): cache page-url lookups and short-circuit obsidian rewrites (#80)
- d50b04c chore(deps): update Ruby gem dependencies (#81)
- b6de350 Expand “Wizard Topples Capitalist Dominance” post with examples, diagram, and reference sections (#85)
- 21eb458 feat(search,components): remove Algolia and fix Powered By links to open in new tab (#86)
[1.5.1] - 2026-04-29
Changed
- Version bump: patch release
Commits in this release
- ad00bf3 [WIP] Optimize Git workflow page for SEO best practices (#79)
[1.5.0] - 2026-04-29
Changed
- Version bump: minor release
Commits in this release
- ffdc1eb feat(posts): add 12 example posts and regenerate all previews with gpt-image-2 (#83)
[1.4.1] - 2026-04-28
Changed
- Version bump: patch release
Commits in this release
- 9830d3d refactor(obsidian): extract full graph include and sync docs (#82)
[1.4.0] - 2026-04-25
Changed
- Version bump: minor release
Commits in this release
- d39dfa9 Add standalone Obsidian local graph panel (#77)
[1.3.0] - 2026-04-24
Changed
- Version bump: minor release
Commits in this release
- 31e042c feat: Obsidian vault integration with client-side wiki-link resolver and backlinks (#73)
[1.2.1] - 2026-04-22
Changed
- Version bump: patch release
Commits in this release
- 5c04e62 fix(footer,welcome,info): eliminate broken links on bare-minimum sites
[1.2.0] - 2026-04-22
Changed
- Version bump: minor release
Commits in this release
- 4bd3e36 feat(welcome): add bare-minimum 3-file remote-theme starter
[1.1.0] - 2026-04-21
Changed
- Version bump: minor release
Commits in this release
- 3d91006 fix(release): replace ((var++)) with var=$((var + 1)) in release path
- d33e5e6 feat(intro): refocus Copilot Agent prompts on frontend/CMS workflows (#74)
Changed
- Docker/Jekyll build performance — Reduced repeated full-page Liquid scans in the footer, settings offcanvas, and cookie consent includes; cached preview image checks during generation; skipped server-side Obsidian rewrites for documents without Obsidian syntax; and changed Docker dev startup to run
bundle installonly whenbundle checkreports missing dependencies. The profiled Docker build improved from 119.2s to 86.8s in local validation.
Added
- Example Posts: Added twelve new section examples across Business,
Development, Science, Technology, Tutorial, and World posts to provide
richer sample content for
_postscategory sections. - Development Automation: Added
scripts/bin/validateandscripts/validateas the canonical preflight validation command for repository files, version consistency, YAML/data parsing, active configuration contracts, config-file classification, navigation data shape, Jekyll build/doctor, compiled assets, and optional tests/Obsidian/HTMLProofer checks. CI fast checks now call./scripts/bin/validate --quick. - Obsidian Integration — The repo’s markdown content is now editable as an Obsidian vault and rendered identically on GitHub Pages.
- Shared vault config (
.obsidian/app.json,core-plugins.json,community-plugins.json,appearance.json,hotkeys.json,templates.json) and a Templates-compatible note template atpages/_notes/_templates/note-template.md. - Liquid-generated
assets/data/wiki-index.jsonlisting every collection document and standalone page (title, basename, permalink, tags, aliases, excerpt) — works on the default GitHub Pages remote_theme build, no plugin whitelist changes required. assets/js/obsidian-wiki-links.js— client-side resolver that rewrites[[wiki-links]](with aliases, header anchors, broken-link styling),![[embeds]](image with width modifiers, note transclusion), inline#tags, and Obsidian callout blockquotes (> [!note] Title …) into Bootstrap-styled HTML._includes/content/backlinks.html— server-side backlinks panel auto-rendered on everynotelayout (and on any page withbacklinks: true); fully indexable by search engines._includes/content/transclude.html— note embed renderer used by both the JS resolver and the Ruby converter._sass/core/_obsidian.scss(imported via_sass/custom.scss) — styles for wiki-links, broken links, callouts, embeds, and the backlinks panel._plugins/obsidian_links.rb— opt-in Ruby converter that performs the same transformations server-side for forks that build with vanilla Jekyll (without thegithub-pagesgem) or use a custom GH Actions workflow that bypasses the plugin whitelist.pages/_docs/obsidian/— full documentation section: index, getting started, syntax reference, authoring workflow, troubleshooting._config.yml— added*.canvasand*.excalidraw.mdtoexclude:;jekyll-redirect-fromenabled to map Obsidianaliases:to URL redirects..gitignore— ignore Obsidian’s local-only state (workspace*,cache,plugins/*/data.json,graph.json,.trash/).
- Shared vault config (
- Tests:
test/test_ruby_converter.rb— 18-test, 65-assertion Minitest suite for_plugins/obsidian_links.rbcovering wiki-links, embeds, callouts (including fold markers and unknown-type fallback), inline tags, code-block isolation, and a plain-markdown regression guard.test/test_resolver.js— 16-assertion Node test forassets/js/obsidian-wiki-links.jsusing a hand-rolled DOM shim; exercises wiki-link resolution, embeds, tags, and DOM-level callout rewriting.test/test_obsidian.sh— orchestrator that runs both unit suites and validates that the Jekyll build emits a well-formedwiki-index.json. Wired intotest/test_runner.sh.test/fixtures/obsidian/sample-note.md— representative Obsidian note exercising every supported feature.
- Obsidian Graph View — Live, force-directed knowledge graph at
/docs/obsidian/graph/mirroring Obsidian’s local graph view. Built from the sameassets/data/wiki-index.jsonthat powers the resolver and backlinks panel.pages/_docs/obsidian/graph.md— graph page (Bootstrap toolbar with title filter, “Show orphans” switch, “Reset view” button; collection-color legend; usage tips). Cytoscape.js loaded only on this page via CDN with SRI +crossorigin="anonymous".assets/js/obsidian-graph.js— vanilla-JS renderer (~330 lines, no build step). Mirrors the resolver’s normalization (toLowerCase().trim()+ whitespace collapse) so wiki-index keys match.coseforce layout, hover-highlight neighborhood, click-to-navigate (⌘/Ctrl-click for new tab), search-driven node fading, orphans hidden by default with a Bootstrap switch toggle. Broken targets render as dashed red nodes prefixed__broken__:in the graph model.assets/data/wiki-index.json— extended each entry with anoutgoing: [...]array of normalized wiki-link targets, extracted at build time via Liquid (masks![[…]]embeds, splits on[[/]]/|/#/^, downcases, dedupes).
- Docs:
README.mdandAGENTS.mdupdated with an Obsidian vault section pointing to the new docs. - Bare-minimum 3-file remote-theme starter. Consumers can now publish a
fully styled site to GitHub Pages with only
_config.yml,Gemfile, andindex.md— no installer required. The new_layouts/welcome.htmlshipped by the theme detects unconfigured sites and renders an onboarding screen with a hero checklist, a 3-step starter accordion, and the embedded_includes/setup/wizard.htmlthat generates a personalised_config.ymlon the fly. README gained a “Bare-Minimum Starter” section documenting the pattern. - Smarter setup detection in
_includes/components/setup-check.html. Whensite_configuredis not set, the heuristic now flags a site as unconfigured if it has no owner (founder/author/email) or its title matches a known placeholder (zer0-mistakes,zer0-pages-remote,Your Site Title,My Awesome Site,Welcome,Untitled, or empty).
Fixed
- Preview Image Generator: Fixed
scripts/features/generate-preview-imagesproject-root detection when invoked through the wrapper and added support for OpenAI GPT image generation responses that returnb64_jsoninstead of URL downloads. The generator now reports the active image model and defaults togpt-image-2with GPT-image-friendly size and quality settings. - Obsidian Local Graph: Moved the local graph out of the documentation navigation sidebar into its own collapsible side panel with a larger canvas and resize-on-open behavior so Cytoscape renders cleanly. Pages with no local wiki-link neighbors now keep the graph control visible and render a current-page-only graph instead of hiding the panel.
- Obsidian Resolver: The client-side wiki-link resolver now receives baseurl-safe index, attachment, and tag URLs from Liquid and derives a safe fallback from its script path for GitHub Pages project sites.
- Backlinks: The linked-mentions include now skips draft and unpublished
candidates unless
site.show_draftsis enabled. - Validation:
scripts/bin/validate --quicknow accepts YAML anchors and date values used by repository config/data files. - Tests:
test/test_runner.shnow includes anobsidiansuite key/name so suite keys, scripts, and labels stay aligned. - Footer Quick Links no longer 404 on bare-minimum sites.
_includes/core/footer.htmlpreviously hard-coded links to/about/,/services/,/news/,/contact/,/privacy-policy, and/terms-of-service— none of which exist in a 3-file remote-theme consumer. Quick Links are now resolved in this order:site.footer_quick_links(array of{label, url}) — explicit override- Auto-detection: each candidate link only renders if the target page
exists in
site.html_pages - Fallback to
Home+Sitemap (XML)only. Privacy Policy / Terms of Service links use the same existence check and optionally read fromsite.privacy_policy_url/site.terms_of_service_url.
- Welcome layout external links now point to existing README anchors.
The “Next steps” cards in
_layouts/welcome.htmllinked to#content-creationand#customisation, which don’t exist in the theme README. They now point toREADME.md#-quick-startandREADME.md#-key-featuresrespectively. - Theme info admin links are conditional.
_includes/components/info-section.htmlpreviously rendered Admin Dashboard links to/about/config/,/about/settings/theme/,/about/settings/navigation/, and/about/settings/environment/unconditionally — guaranteed 404s on bare-minimum sites. The links and surrounding section now only render when the corresponding page exists. - Source Code shortcuts skip GitHub buttons when repository is unknown.
_includes/components/dev-shortcuts.htmlrenderedhttps://github.com//blob//URLs whensite.repositoryandsite.branchwere empty (typical on bare consumer sites). It now hides the GitHub-based buttons and shows a hint to setrepository: USER/REPOin_config.yml. - Cookie-consent privacy link is conditional. The “Learn more in our
Privacy Policy” anchor in
_includes/components/cookie-consent.htmlonly renders if a/privacy-policy/page exists orsite.privacy_policy_urlis configured. - Setup banner link.
_includes/components/setup-banner.htmlno longer points at the non-existent/404.html; it now links to/#setup-wizard, which is provided by the new welcome layout. - Version-bump workflow no longer crashes on bash 5.x runners.
scripts/utils/analyze-commits(andscripts/lib/changelog.sh,scripts/lib/migrate.sh) used the((var++))post-increment idiom. On bash 5.x, whenvaris 0 the expression evaluates to 0 → exit code 1 →set -euo pipefailterminates the script silently. macOS bash 3.2 was more forgiving, so the bug only surfaced in CI. Replaced all release-path sites withvar=$((var + 1)), which always returns 0. Added a static regression check to the unit tests so the pattern can’t return.
[1.0.0] - 2026-04-20
First stable major release. Consolidates the breaking-change installer rewrite (shipped in error as v0.22.22 due to a silent bug in the version analyzer) and the fix that restored the release automation.
⚠️ Breaking changes
- Modular installer. The 2,400-line monolithic
install.shis decomposed into a CLI dispatcher (scripts/bin/install) backed by focused library modules (scripts/lib/install/*.sh) and declarative YAML profiles (templates/profiles/*.yml). The legacycurl | bashone-liner still works — it bootstraps the same pipeline. - Legacy mode flags deprecated.
--full,--minimal,--fork,--remote,--githubcontinue to work in 1.0.x with a one-line deprecation warning. They map 1:1 toinstall init --profile <name>. Targeted removal: 2.0. --azureflag removed. Replaced byinstall deploy azure-swa. Old flag emits a clear error pointing at the new command.- Templates are the single source of truth. Embedded heredoc fallbacks in
install.share gone. A stripped distribution (theme tarball withouttemplates/) will fail; the bootstrap downloads the templates tarball alongsideinstall.shforcurl | bash.
See docs/installation/migration-from-0.x.md for the full flag-by-flag mapping.
Added
Modular installer (Phases 1-7 of the refactor)
scripts/bin/install— canonical CLI with subcommands:init,wizard [--ai],agents,deploy,doctor [--ai] [--quiet] [--json],diagnose [--ai],upgrade,list-profiles,list-targets,version,help.scripts/lib/install/— focused modules:core,platform,template,fs,config,pages,profile,wizard_interactive,doctor,upgrade,agents,ai/{openai,wizard,diagnose,suggest},deploy/{registry,github-pages,azure-swa,docker-prod}. All bash 3.2 compatible.templates/profiles/*.yml— declarative profile manifests (full,minimal,fork,remote,github).templates/deploy/<target>/— pluggable deploy templates (workflow YAMLs, Dockerfile, nginx.conf).templates/agents/— distributable AI agent guidance (CLAUDE.md, aider.conf.yml templates).templates/ai/prompts/— system prompts for AI subcommands..zer0-installedmarker file — tracks installed theme version for idempotentinstall upgrade.- AI integration (opt-in, sandboxed):
install wizard --ai(OpenAI-backed_config.ymlgeneration),install diagnose --ai(unified-diff patch proposals),install deploy --ai-suggest(deploy-target recommendation). HonorsZER0_NO_AI=1kill switch. All payloads sanitized; all writes diffed before confirmation. install doctor— platform/tooling/site/AI health check with PASS/WARN/FAIL counters,--quietand--jsonmodes. Used as preflight ininstall init(opt out with--skip-doctor).install upgrade— idempotent in-place upgrade tracked via.zer0-installed.--from,--force,--dry-run,--auto-accept. Refreshes agents and checks deploy-workflow drift.docs/installation/— full doc tree:index,architecture,profiles,deploy-targets,ai-features,migration-from-0.x,customization..github/instructions/install.instructions.md— agent guidance for installer code..github/workflows/doctor.yml— CI matrix (ubuntu-latest, macos-latest) runninginstall doctor --jsonon every push/PR touching installer code..github/workflows/install-matrix.yml— full installer e2e matrix (ubuntu-latest + macos-latest × ruby 2.7/3.0/3.2) plus acurl|bashbootstrap smoke job.- Installer e2e suites under
test/:test_install_profiles.sh,test_install_deploy.sh,test_install_ai_mock.sh,test_install_legacy_flags.sh,test_install_idempotency.sh. scripts/bin/test install— new test-suite group that executes all installer e2e tests.
Versioning & release automation (new in 1.0.0)
- New unit-test file
scripts/test/lib/test_analyze_commits.sh(15 assertions) covering: scoped conventional types,!breaking-change marker,BREAKING CHANGE/BREAKING-CHANGEfooters, and stdout/stderr separation. Wired intoscripts/test/lib/run_tests.sh.
Fixed
- Versioning automation no longer silently swallows analyzer crashes.
scripts/utils/analyze-commitscalledlog_info/log_warning/log_debug/log_errorhelpers that were never defined inscripts/lib/common.sh, causing the script to exit 127 with empty stdout. The version-bump workflow then fell back topatchvia2>/dev/null || echo "patch", which is exactly what shipped v0.22.22 instead of the intended v1.0.0 for the breaking-change installer rewrite (PR #76). The analyzer now defines stderr-only logging helpers, and the workflow refuses to publish on analyzer failure or invalid output. - Conventional Commits
!breaking-change marker is now recognised.feat!:,fix(scope)!:, andrefactor(api)!:correctly trigger a major bump in both the version analyzer and changelog categoriser. Previously only the long-formBREAKING CHANGE:footer was detected. - Scoped types are recognised everywhere.
feat(auth):,fix(api):,chore(deps):, etc. are now properly classified byanalyze-commitsand grouped correctly inchangelog.sh. install.sh—gh_args[@]: unbound variablecrash when invoking the github profile with no fork environment variables set (set -u+ empty array). Guarded with${gh_args[@]+"${gh_args[@]}"}.
Changed
scripts/utils/analyze-commitsnow guarantees that only the bump type (patch|minor|major|none) is written to stdout. All progress and debug output is sent to stderr, so callers can safely useBUMP=$(./analyze-commits ...)..github/workflows/version-bump.ymlstreams the analyzer’s stderr into a collapsible job-log group and validates the returned bump type, failing the run with an annotated error if the analyzer crashes or returns garbage.README.mdInstallation Methods section now references the modular CLI alongside the legacy one-liner.docs/FORKING.mdincludes aninstall init --profile forkflow alongside the standalonefork-cleanup.shscript.AGENTS.mdinstruction map adds the new install instructions row.
[0.22.22] - 2026-04-21
Changed
- Version bump: patch release
Commits in this release
- 36cd015 feat(installer)!: modular installer + AI + deploy targets + test matrix (#76)
- 555bead docs(readme): add AI-native branding and GitHub Actions automation section
[0.22.21] - 2026-04-19
Changed
- Version bump: patch release
Commits in this release
- 7f00e4d docs(roadmap): data-driven roadmap with auto-generated README mermaid diagram (#71)
Changed
- Copilot Agent prompts (
_data/prompts.yml): rewritten to focus on frontend/CMS workflows for the Jekyll theme. Replaced the previous general-purpose software-engineering templates with 10 prompts split into two scopes: Page Improvements (improve-page,expand-page,update-page,fix-page,seo-optimize,accessibility-audit) that act on the current page, and Site Improvements (ui-ux-improvement,new-feature,component-enhancement,performance-optimization) for theme-wide changes. Every prompt explicitly references the auto-injected Page Context table. - Intro component (
_includes/content/intro.html): the Copilot Agent dropdown now renders Bootstrapdropdown-headersection labels and dividers when prompt entries declare agroup. Entries without agroupcontinue to render as plain items (backward compatible). - Docs (
docs/implementation/copilot-agent-prompt-button.md): updated the prompt registry table and YAML schema to document the newgroupfield and the new template set.
Added
- Roadmap data file:
_data/roadmap.ymlis now the single source of truth for the project roadmap (versions, status, dates, targets, and feature highlights). - Roadmap generator:
scripts/generate-roadmap.rb(and shell wrapperscripts/generate-roadmap.sh) renders a Mermaid gantt diagram and summary table from_data/roadmap.ymland injects them intoREADME.mdbetween<!-- ROADMAP_MERMAID:START/END -->and<!-- ROADMAP_TABLE:START/END -->markers. Supports--checkmode for CI drift detection and--stdoutfor previewing. - Roadmap sync workflow:
.github/workflows/roadmap-sync.ymlregenerates the README on push tomainwhen the data file or generator changes, and verifies sync on PRs that touch those files. - Local Graph Sidebar Widget — Per-page mini Obsidian-style local graph rendered at the top of the left sidebar on every page that has one.
_includes/navigation/local-graph.html— small widget with a “Local graph” heading, a “full ›” link to/docs/obsidian/graph/, and a#obsidian-local-graphcontainer. Honorslocal_graph: falseandlocal_graph_depth: N(default 1) in page front matter.assets/js/obsidian-local-graph.js— fetcheswiki-index.json, finds the current page bywindow.location.pathname(with title/basename fallback), BFS through both outgoing and incoming wiki-links to the configured depth, renders the subgraph with cytoscape.js (coselayout sized for ~220px sidebar canvas). Highlights the current page with an orange border + larger node + bold label. Click navigates (⌘/Ctrl-click opens new tab). Hides itself silently if the page isn’t in the wiki-index or has no neighbors. Cytoscape is lazy-loaded from CDN with SRI +crossorigin="anonymous"and de-duplicated against the full graph page’s existing load._includes/navigation/sidebar-left.html— includes the new widget at the top of.offcanvas-body, before the nav-mode chain._sass/core/_obsidian.scss— added.obsidian-local-graph-widgetstyles for the 220px container with theme-aware borders/background.
- Docs:
docs/FORKING.md— progressive fork → configure → personalize workflow for theusername.github.iouser-site pattern - Tests:
test/test_fork_cleanup.sh— 32-assertion suite covering CLI parsing, dry-run, real cleanup, YAML anchor preservation, and idempotency
Changed
- Obsidian docs:
pages/_docs/obsidian/syntax-reference.md— graph view now marked Available (was “Not yet implemented”);pages/_docs/obsidian/index.md— added Graph view row to the section table. - Documentation cross-linking: appended a
## See alsoblock of[[wiki-links]]to every page inpages/_docs/(76 files — section indexes, leaf pages, and the obsidian cluster) so the graph view shows real cluster structure. Edge count grew from 12 → 292 with 90+ visible nodes after orphan filtering. - Obsidian Graph View polish: removed the white pill backgrounds behind labels (now halo-only outlines that match the canvas color, so edges read through cleanly); labels hide by default and reveal on zoom-in or hover, while the 37 hub nodes (degree ≥ 6 — Docker, Front Matter, Jeykll, Layouts, Customization, Release Management, etc.) keep their labels always-on as landmarks; loosened
coselayout (nodeRepulsion8000→18000,idealEdgeLength80→130, addednodeOverlap: 24andcomponentSpacing: 80, dropped gravity 0.25→0.18,numIter2500); taller canvas (82vh/620pxmin, was75vh/520px); biggercy.fit()padding (40→70 default, 80→100 for search matches) so top-row labels don’t clip the canvas edge. - README roadmap section is now auto-generated from
_data/roadmap.ymlinstead of being hand-maintained, and includes status, target, and detailed highlight columns. pages/roadmap.mdrewritten to render the Mermaid gantt chart, release summary, and per-version detail sections directly from_data/roadmap.ymlvia Liquid — so the Jekyll page is always live with the canonical data._data/README.mddocuments the newroadmap.ymldata file.- Landing page:
_includes/landing/landing-install-cards.html— “Fork & Deploy” card now guides users to fork into<username>.github.ioand runscripts/fork-cleanup.sh; safergithub_forkURL handling - README:
README.md— Method 3 (Fork & Customize) reframed as “Fork & Deploy as Your Site” with a 4-step path; deployment section updated for user-site flow - Docs:
pages/_quickstart/github-setup.md,pages/_quickstart/index.md,pages/_docs/getting-started/quick-start.md,pages/_docs/deployment/github-pages.md,docs/configuration/url-configuration-guide.md— aligned with the user-site fork pattern (baseurl: "") - Templates:
templates/cleanup/reset-fields.yml— annotatedbaseurlreasoning; clarified user-site vs. project-site behavior - Templates:
templates/config/install.conf— minor consistency tweaks
Fixed
- Fork cleanup:
scripts/fork-cleanup.sh—get_reset_field_value()now usesYAML.safe_load_file(..., aliases: true)so anchors inreset-fields.ymlno longer break parsing under newer Ruby - Fork cleanup:
scripts/fork-cleanup.sh— repository name derivation now strips.gitsuffix and falls back gracefully whenoriginis missing (noset -euo pipefailaborts) - Fork cleanup:
scripts/fork-cleanup.sh—posthog/giscusblocks reset only within their own YAML range (no stray matches in unrelated blocks) - Welcome post:
templates/pages/welcome-post.md.templateand embedded fallback inscripts/fork-cleanup.sh— correctedlayout: journals→layout: articleso the generated welcome post builds without “Layout does not exist” warnings on a freshly cleaned fork
[0.22.20] - 2026-04-19
Changed
- Version bump: patch release
Commits in this release
- f5d5e97 fix(ui): UI/UX fixes — navbar dropdown, landing hero, cookie banner, nanobar, footer (#72)
[0.22.19] - 2026-04-18
Changed
- Version bump: patch release
Commits in this release
- 1b3993e docs(fork): add fork-to-deploy workflow and user site guidance (#56)
[0.22.18] - 2026-04-18
Changed
- Version bump: patch release
Commits in this release
- 02d0295 feat(setup): add site configuration detection and smart 404 page (#58)
[0.22.17] - 2026-04-18
Changed
- Version bump: patch release
Commits in this release
- 10ba722 Add config-driven frontmatter validation system with review fixes (#34)
[0.22.16] - 2026-04-18
Changed
- Version bump: patch release
Commits in this release
- bc41b0d Add AGENTS.md and refresh stale agent instructions (#70)
[0.22.15] - 2026-04-18
Changed
- Version bump: patch release
Commits in this release
- 939af77 feat(nav): dynamic collection-based navigation fallback for zero-config sites (#64)
- ca7da2e docs: align project documentation with v0.22.13 (#66)
- 9b23b63 chore(deps-dev): bump dompurify from 3.3.3 to 3.4.0 (#68)
[0.22.14] - 2026-04-18
Changed
- Version bump: patch release
Commits in this release
- f0a1cac fix: correct comments for clarity in SEO-related files
- d1998ff chore(deps): update Ruby gem dependencies (#67)
[0.22.13] - 2026-04-10
Changed
- Version bump: patch release
Commits in this release
- 3c00a3d refactor: remove duplicate code — use standard libraries and existing plugins (#59)
[0.22.12] - 2026-04-10
Changed
- Version bump: patch release
Commits in this release
- 7ba0f83 feat(news): add data-driven feature showcase & live Bootstrap components to news index (#54)
[0.22.11] - 2026-04-09
Changed
- Version bump: patch release
Commits in this release
- 8e83a51 Create SECURITY.md for security policy and reporting
[0.22.10] - 2026-04-06
Changed
- Version bump: patch release
Commits in this release
- 27550da feat(admin): add admin layout and configuration dashboards (#57)
[0.22.9] - 2026-04-05
Added
- Skin Editor: New colorffy-inspired skin editor (
assets/js/skin-editor.js) for creating and customizing theme skins from the browser- Edit all 9 built-in skin gradient colors with live color pickers
- Auto-generated palettes: primary tints, surface, tonal surface, semantic colors (success/warning/danger/info)
- WCAG contrast ratio badges on all palette swatches
- Random skin generation, save/load custom skins to localStorage
- Export SVGs and copy CSS custom properties to clipboard
- Advanced SVG filter controls (turbulence, octaves, seed, scale, overlay opacity)
- Palette Generator: New standalone palette generator (
assets/js/palette-generator.js) with chroma.js-powered color mixing and live CSS variable editor - Playwright Tests: 12 new visual regression test specs (skins, backgrounds, accessibility, admin layout, config editor/viewer, env dashboard, security, theme colors)
Fixed
- Skin Rendering: Added
.zer0-bg-heroclass to landing layout to prevent Bootstrap.bg-primaryfrom overriding skin background gradients - CSS Scoping: Added
.bg-primary:not(.zer0-bg-hero)in custom SCSS to isolate skin backgrounds from Bootstrap utility classes
Changed
- Theme Customizer: Expanded to 6 tabs — added Skin Editor between Skins and Palette Generator
- Admin Navigation: Minor layout adjustment
- Environment Dashboard: Minor component update
[0.22.8] - 2026-04-04
Changed
- Version bump: patch release
Commits in this release
- e0b4f13 fix: cross-platform installation compatibility — Gemfile platform sections, fork mode tests, portable sed replacements (#55)
[0.22.7] - 2026-04-03
Changed
- Version bump: patch release
Commits in this release
- a70ae8a chore: consolidate configuration, dependencies, and installation (PRs #48, #51, #52, #53) (#51)
Added
- Installer: New
--remoteinstall mode — forks repo and creates an orphangh-pagesbranch with only the bare minimum files needed to render viaremote_theme(no local theme source) - Installer: New
--githubinstall mode — interactive fork viaghCLI with automatic platform detection and setup - Installer: New
--codespacesflag — adds.devcontainer/devcontainer.jsonfor GitHub Codespaces support (auto-included in remote mode, opt-in for full/minimal) - Installer: Cross-platform setup scripts:
scripts/platform/setup-macos.sh,setup-linux.sh,setup-wsl.sh - Installer: GitHub CLI fork/clone helper:
scripts/github-setup.sh - Installer: Platform auto-detection (
detect_platform()) for macOS, Linux, and WSL - Templates:
_config.remote.yml.template— minimal config for remote-theme consumer sites - Templates:
_config.starter.yml.template— heavily annotated full starter config - Templates:
Gemfile.remote.template— minimal Gemfile (github-pages + jekyll-remote-theme) - Templates:
devcontainer.json.template— lightweight devcontainer for consumer sites - Templates:
theming.md.template— Bootstrap 5 customization guide (dark mode, typography, layouts) - Templates:
setup.html.template— dev-only setup wizard page - Wizard: Interactive browser-based config wizard (
pages/setup.html,_includes/setup/wizard.html,assets/js/setup-wizard.js) for generating_config.ymlvia a 5-step Bootstrap form - CI:
.github/workflows/setup-template.yml— auto-detects non-upstream repos and creates PR with prefilled config
Changed
- Installer:
install.sh— added--remote,--github,--codespacesflags and corresponding mode dispatchers - Installer:
render_template()now substitutesREPOSITORY_NAME,RAW_GITHUB_URL,FORK_GITHUB_USERvariables - Installer:
install.conf— addedremoteandgithubtoVALID_INSTALL_MODES, platform detection vars, wizard config, expandedTEMPLATE_VARS - Templates:
quickstart.md.template— enhanced with Bootstrap pill tabs for macOS/Linux/WSL/GitHub Fork platform-specific instructions - Templates:
configuration.md.template— comprehensive rewrite with URL tables, all config sections, cookie consent, dev config - Templates:
welcome-post.md.template— enhanced Day 1 tutorial with folder structure diagram, commands table, feature checklist
[0.22.6] - 2026-04-03
Changed
- Version bump: patch release
Commits in this release
- 0117620 chore(ci): streamline CI workflows with path-based change detection - Bump version to 0.22.5
[0.22.5] - 2026-04-03
Changed
- CI: Streamlined
ci.yml— added path-based change detection to skip heavy jobs on docs-only PRs, removed scheduled cron runs andcomprehensivetest scope - CI: Simplified
codeql.ymlworkflow - CI: Added
test-latest.ymlfor latest dependency testing - CI: Removed redundant summary job from
release.yml - CI: Simplified
version-bump.yml - Docs: Updated
.github/workflows/README.mdand.github/actions/README.md
Removed
- CI: Removed
.github/actions/prepare-release/action.ymlcomposite action
[0.22.4] - 2026-04-03
Changed
- Version bump: patch release
Commits in this release
- 9c56fe0 Review article: fix front matter and expand content for wizard-topples post (#47)
[0.22.3] - 2026-04-02
Changed
- Version bump: patch release
Commits in this release
- 059244d fix(landing): stabilize hero layout and scroll animations (#44)
[0.22.2] - 2026-04-02
Changed
- Version bump: patch release
Commits in this release
- a9b8daf docs(prompts): update commit-publish workflow with PR branching and CI fix guidance
[0.22.1] - 2026-04-02
Changed
- Version bump: patch release
Commits in this release
- a82f670 chore(ci): update Gemfile.lock to v0.22.0 and upgrade actions/checkout to v5
[0.22.0] - 2026-04-01
Added
- Copilot Agent dropdown: New
btn-successdropdown in the intro section action button group that lists AI prompt templates, each opening a pre-filled GitHub issue assigned to@copilotwith the selected prompt body, page context, and environment metadata _data/prompts.yml: Data-driven prompt registry with 9 built-in templates (article-review, code-implementation, code-refactoring, debugging, documentation, requirements-analysis, system-design, test-generation, prompt-engineering)docs/implementation/copilot-agent-prompt-button.md: Full implementation guide covering architecture, configuration, prompt registry, issue body structure, customization, troubleshooting, and FAQ
Changed
_includes/content/intro.html: Replaced single Copilot Agent link with a prompt-selection dropdown;repo_branchnow sourced fromsite.branch | default: "main"(fixes hardcodedmaster); file path uses dedicatedfile_pathvariable; issue title format is[Prompt Label] Page Titlewithai-agentlabel pre-applieddocs/implementation/README.md: Added Copilot Agent Prompt Button entry to contents table
[0.21.6] - 2026-03-30
Changed
- Version bump: patch release
Commits in this release
- 56c70b8 docs: fix Quick Links, harmonize bash commands, and update version references across READMEs (#42)
[0.21.5] - 2026-03-30
Changed
- Version bump: patch release
Commits in this release
- c74f26d Automate README.md version sync and fix GitHub release dispatch in release workflow (#40)
[0.21.4] - 2026-03-29
Changed
- Version bump: patch release
Commits in this release
- 3c96620 feat: vendor assets, theme architecture, CI and docs (v0.21.3) (#39)
[0.21.3] - 2026-03-29
Changed
- Test runner: When
test.confsets a non-defaultTEST_TIMEOUT_DEFAULT, pass--timeoutonly to suites whose scripts accept it (core,deployment,quality). AvoidsUnknown option: --timeouton installation and site-generation suites. - Vendor assets (GitHub Pages): Bootstrap, jQuery, Bootstrap Icons, MathJax, Mermaid, Font Awesome, and GitHub Calendar load from committed
assets/vendor/withrelative_url(no runtime CDN for core assets). Addedvendor-manifest.json,scripts/vendor-install.sh, andnpm run vendor:install..gitignoreuses/vendor/for Bundler only; removed blanketvendor/from Jekyllexcludesoassets/vendor/is published. Docker base image includesjqfor vendor installs;scripts/bin/buildruns vendor-install before gem build. - Mermaid vendor source:
mermaidis a devDependency;npm run vendor:mermaidcopiesnode_modules/mermaid/dist/mermaid.min.jsintoassets/vendor/mermaid/. The jsDelivr Mermaid entry was removed fromvendor-manifest.json;vendor-install.shcopies from npm whennode_modulesis present. - Version bump: patch release
- CSS architecture: Removed unused
assets/css/custom.css(legacy#mainNav); overrides use_sass/custom.scssor optionaluser-overrides.css. Replaced vendored_sass/core/_docs.scss(~3.2k lines) with trimmed_sass/core/_docs-layout.scss. Theme modes:_sass/theme/_color-modes.scssre-exports_wizard-mode.scss(wizard Sass/CSS) and_css-variables.scss(--bd-*tokens); dropped duplicate blocks from_theme.scss, duplicate Bootstrap font/line-height block in_variables.scss, and unused social/base16 duplicates from_variables.scss. Feature metadata now points styles at_docs-layout.scss. - Optional npm Bootstrap: Added
package.jsonwithnpm run css:bootstrap(Dart Sass + Bootstrap 5.3.3) producingassets/css/vendor/bootstrap-from-npm.css; documented alternate<link>in_includes/core/head.html.stats.cssremains a conditional stylesheet for the stats layout only.
Commits in this release
- 1fd2061 Enhance navigation UX: responsive design, accessibility, and interaction polish (#25)
- 9a27ad7 feat(aieo): add structured data, E-E-A-T signals, FAQ, glossary, and roadmap pages (#38)
- 96a31f9 chore(deps): update Ruby gem dependencies (#37)
[0.21.2] - 2026-03-21
Changed
- Version bump: patch release
- Release tooling: RubyGems publishing now supports API-key auth via
.env(RUBY_API_KEYmapped toGEM_HOST_API_KEY)
Commits in this release
- 34bed37 chore(deps): update Ruby gem dependencies (#31)
- 50ebdd4 chore(deps): update Ruby gem dependencies (#32)
[0.21.1] - 2026-03-13
Changed
- Version bump: patch release
Commits in this release
- 9665afd feat(templates): add README.md for templates directory and usage instructions
- cc81bd9 chore(deps): update Ruby gem dependencies (#24)
[0.21.0] - 2026-02-01
Added
- Environment Switcher: New settings modal tab with dev/prod URL shortcuts and copy actions
- Navigation Assets: Extracted navigation styles and scripts into
_sass/core/_navbar.scssandassets/js/navigation.js
Changed
- Settings Modal: Redesigned info section with tabbed layout and compact theme info
- Navigation UI: Refined header utility controls, navbar labels/icons, and loaded navigation JS via js-cdn include
- Dev Shortcuts: Updated source shortcuts layout and labeling for clarity
- Theme Branding: Updated default title icon and subtitle in
_config.yml
[0.20.8] - 2026-02-02
Changed
- Version bump: patch release
Commits in this release
- d71a42a feat(docker): add local Docker publishing capability
[0.20.7] - 2026-02-01
Changed
- Version bump: patch release
Commits in this release
- 969ce94 refactor(ci): abstract hardcoded values to GitHub variables and secrets
[0.20.6] - 2026-02-01
Changed
- Version bump: patch release
Commits in this release
- af25fc8 fix(ci): improve Docker compose compatibility for CI environments
[0.20.5] - 2026-02-01
Changed
- Version bump: patch release
Commits in this release
- 7a2eeaf fix(docker): add PAGES_REPO_NWO environment variable for Jekyll builds
[0.20.4] - 2026-02-01
Changed
- Version bump: patch release
Commits in this release
- a71e7a3 fix(ci): add PAGES_REPO_NWO env var and skip-remote for Jekyll builds
- 74e0929 fix(ci): ensure Gemfile.lock is updated during version bumps
- e06520e docs(prompts): enhance release pipeline documentation with best practices
[0.20.3] - 2026-02-01
Added
- Notes Collection: 5 new developer reference notes
bash-shortcuts.md- Essential terminal keyboard shortcutsdocker-commands.md- Docker and Docker Compose command referencegit-cheatsheet.md- Git commands quick referencejekyll-front-matter.md- Jekyll front matter variables guidemarkdown-tips.md- Advanced Markdown formatting tricks
- Python Statistics Notebook: New
python-statistics.ipynbJupyter notebook with scipy, pandas, and statistical analysis examples - Enhanced Notes page: Added tag filtering and improved card-based layout
- Enhanced Notebooks page: Added difficulty filtering and improved card-based layout with download links
Changed
- Layout Standardization: Updated all posts from
layout: journalstolayout: articlefor consistency - Section Index Pages: Updated category index pages to use
layout: sectionwith proper section_style settings - News URL Structure: Changed permalinks from
/posts/to/news/across all news sections - Removed: Deleted unused
pages/blog.mdpage
Fixed
- Layout consistency: Standardized layouts across Business, Development, Science, Technology, Tutorial, and World news sections
[0.20.2] - 2026-01-30
Added
- GitHub Pages Compatible Search: New out-of-box search functionality that works with GitHub Pages safe mode
_includes/search-data.json- Liquid template for generating search index_layouts/search.html- Layout wrapper for search.json generation- Enhanced search index with
date,categories, andtagsfields - Configurable content length via
site.search.content_length
Changed
- search.json: Now uses layout-based approach instead of inline Liquid for better theme integration
- Theme users only need a 5-line
search.jsonfile to enable search functionality
Technical Details
- Works in GitHub Pages safe mode (no Ruby plugins required)
- Indexes pages, posts, and all collection documents
- Produces valid JSON with 131+ items indexed
- Automatically included in gem via
_includes/and_layouts/directories
[0.20.1] - 2026-01-26
Changed
- Version bump: patch release
Commits in this release
- 80ee1da feat(release): prepare 0.20.0
- 8c74a60 Merge branch ‘main’ of https://github.com/bamr87/zer0-mistakes
- 4d1c28c chore: update README for version 0.19.1
- 8157508 chore(deps): update Ruby gem dependencies (#22)
- 0f9d100 Merge branch ‘main’ of https://github.com/bamr87/zer0-mistakes
- 0cf42e9 chore: update Docker image reference in CI workflow
[0.20.0] - 2026-01-26
Added
- Scaffolding templates: New templates directory and helper scripts for fork cleanup and content setup.
- Testing assets: New test helpers and configs including installation, site generation, and visual suites.
Changed
- CI: Expanded workflow coverage for the updated test suite and automation paths.
- Install: Enhanced installation flow for template-based setup and post-install configuration.
- Docs: Updated Jekyll documentation index.
Fixed
- Dev build: Exclude templates from Jekyll processing to prevent invalid date parsing.
[0.19.1] - 2026-01-25
Changed
- Version bump: patch release
Commits in this release
- 516e56b fix(install): include docker/ directory in full installation
- c8a3dbb ci: optimize CI pipeline performance and integration tests
- 93fce7b ci: enhance CI workflow for Jekyll with improved Docker handling and site accessibility checks
[0.19.0] - 2026-01-25
Added
- Feature Discovery: Identified and documented 15 previously unlisted features (ZER0-029 through ZER0-043):
back-to-top.md- Floating scroll-to-top buttoncode-copy.md- One-click code block copycolor-modes.md- Dark/light mode toggle with system preference detectionsite-search.md- Client-side search with modal and keyboard shortcuttoc.md- Table of contents with scroll spybreadcrumbs.md- Hierarchical navigation with Schema.org markupstatistics-dashboard.md- Content metrics visualization- Google Analytics and Google Tag Manager integrations
- Auto-hide navigation, particles background, SEO optimization, sitemap generation
- Development Documentation (
pages/_docs/development/):index.md- Development section overviewrelease-management.md- Semantic versioning and gem publishing guidetesting.md- Comprehensive test suite documentationversion-bump.md- Automated version workflow guidesecurity.md- CodeQL scanning documentationci-cd.md- CI/CD pipeline guidedependency-updates.md- Automated dependency managementscripts.md- Shell script automation librarydocumentation.md- Dual documentation architecture guideprd.md- Product requirements document
- Feature Documentation (
pages/_docs/features/):copilot-integration.md- GitHub Copilot integration guidecookie-consent.md- GDPR/CCPA compliant consent systemsidebar-navigation.md- Enhanced sidebar with scroll spymobile-toc.md- Mobile TOC floating action buttonskip-to-content.md- WCAG 2.1 accessibility linkjupyter-notebooks.md- Jupyter notebook supporttheme-version.md- Theme version display plugin
- Analytics Section (
pages/_docs/analytics/):index.md- Analytics overviewgoogle-analytics.md- GA4 integration guidegoogle-tag-manager.md- GTM setup guide
- SEO Section (
pages/_docs/seo/):index.md- SEO features overviewmeta-tags.md- Open Graph, Twitter Cards, JSON-LDsitemap.md- XML sitemap and search index generation
- Jekyll Documentation:
collections.md- Jekyll collections organization guide
- Customization Documentation:
includes.md- 70+ include components guide
Changed
- features.yml: Added 15 new features (ZER0-029 to ZER0-043) with complete metadata
- features.yml: Updated all documentation links from GitHub URLs to local
/docs/pages - bootstrap/index.md: Expanded with comprehensive examples (grid, components, utilities)
- preview-image-generator.md: Complete rewrite with AI provider details and configuration
Documentation Stats
- 43 total features now fully documented
- 40+ new/updated documentation pages created
- All features linked to
/docs/pages (no external GitHub links for docs)
[0.18.2] - 2026-01-25
Changed
- Documentation Architecture: Major restructure separating user documentation (
pages/_docs/) from developer documentation (docs/) - Navigation: Updated
_data/navigation/docs.ymlwith new section structure
Added
- User Documentation (
pages/_docs/):getting-started/- Installation guides, quick start, theme guidefeatures/- Mermaid diagrams, MathJax, Giscus comments, PostHog analytics, keyboard navigationdeployment/- GitHub Pages, Netlify, custom domain guidescustomization/- Layouts, styles, navigation customization guides
- Developer Documentation (
docs/):architecture/- Project structure, layouts/includes, build systemdevelopment/- Local setup, testing, code style guidesimplementation/- Feature implementation changelogs (renamed fromfeatures/)
Removed
- Duplicate user-facing documentation from
docs/jekyll/(moved topages/_docs/) - Legacy
docs/QUICKSTART.mdanddocs/keyboard-navigation.md(content moved to user docs)
[0.18.1] - 2026-01-24
Changed
- Documentation: Complete refactoring of Jekyll documentation from 22 tutorial-style files into 13 consolidated feature-focused guides
Added
docs/jekyll/theme-guide.md- Comprehensive theme setup and customization (461 lines)docs/jekyll/diagrams-mermaid.md- Mermaid diagrams integration guide (454 lines)docs/jekyll/analytics-posthog.md- PostHog privacy-first analytics setup (323 lines)docs/jekyll/math-mathjax.md- MathJax mathematical notation guide (257 lines)docs/jekyll/comments-giscus.md- GitHub Discussions-powered comments (223 lines)docs/jekyll/code-highlighting.md- Syntax highlighting with Rouge/highlight.js (151 lines)docs/jekyll/liquid-reference.md- Liquid templating quick reference (132 lines)docs/jekyll/pagination.md- Pagination implementation guide (130 lines)docs/jekyll/config-reference.md- Jekyll configuration options reference (102 lines)docs/jekyll/troubleshooting-port.md- Port 4000 troubleshooting guide (89 lines)docs/jekyll/deploy-netlify.md- Netlify deployment guide (84 lines)docs/jekyll/security-headers.md- Netlify security headers configuration (70 lines)docs/jekyll/custom-domain.md- GitHub Pages custom domain setup (65 lines)
Removed
- Deprecated Jekyll tutorial files replaced by new consolidated guides:
jekyll-pagination.md,jekyll-performance-optimization.md,jekyll-progress-bar.mdjekyll-search-function-for-static-website.md,jekyll-security.mdjekyll-social-share-buttons-with-sharethis.md,jekyll-social-share-buttons.mdjekyll-usage-and-customization.md,jekyll-highlighting.md,jekyll-liquid.mdjekyll-math-symbols-with-mathjax.md,jekyll-diagram-with-mermaid.mdjekyll-comments-with-disqus.md,jekyll-google-analytics.md,jekyll-config.mdjekyll-frontmatter-cms.md,mermaid-native-markdown.md,mermaid-test-suite.md,mermaid.mddeploying-jekyll-website-to-netlify.md,deploying-personal-website-with-custom-domain.mdcontinuously-deploy-jekyll-website-to-gitHub-pages-with-travis-ci.mdcannot-start-jekyll-at-specific-port.md
[0.18.0] - 2026-01-19
Added
- Search Modal: New site-wide search popup with live results, keyboard shortcuts (
/,Cmd/Ctrl+K), and offcanvas entry - Search Index: Generated
search.jsonindex including page content for client-side search
Changed
- Navigation: Added search button to the main navbar with improved mobile layout support
Fixed
- Search UX: Highlight query matches and show content-based snippets where the match occurs
[0.17.5] - 2026-01-17
Changed
- Version bump: patch release
Commits in this release
- eeb8ea3 fix(ui): remove cursor tilt and prep v0.17.4
[0.17.4] - 2026-01-16
Changed
- Version bump: patch release
Fixed
- UI/UX: Removed cursor-based 3D parallax tilt effect on cards to prevent perspective shifts on hover
- Config YAML: Corrected anchor definitions used by gravatar and local repo settings to pass YAML validation
Commits in this release
- 226b0a5 chore(structure): reorganize root directory for better maintainability
[0.17.3] - 2026-01-15
Changed
- Version bump: patch release
Commits in this release
- a0c1df4 fix(ui): fix Mermaid dark mode and cookie banner rendering
[0.17.2] - 2025-12-31
Fixed
- Mermaid Dark Mode: Fixed diagram rendering issues in dark mode by dynamically detecting Bootstrap theme (
data-bs-theme) and switching Mermaid theme accordingly - Cookie Consent Banner: Fixed banner appearing twice on initial page load by implementing CSS-first visibility control and removing inline style conflicts
Enhanced
- UI/UX Improvements: Comprehensive frontend enhancements including:
- Smooth scroll animations with Intersection Observer
- Enhanced card hover effects with 3D parallax on desktop
- Improved button styles with ripple effects and better transitions
- Better code block styling with enhanced copy functionality
- Mobile-responsive improvements with touch-friendly tap targets
- Improved focus states for accessibility
- Hero section animations with staggered fade-in effects
Added
- UI Enhancements Module: New
assets/js/ui-enhancements.jsfor scroll animations, card interactions, and smooth scrolling - Enhanced Code Copy: Improved copy-to-clipboard functionality with better visual feedback and fallback support
Changed
- CI Configuration: Made HTMLProofer non-blocking for pre-existing link issues
- Documentation: Enhanced contributing guide and release pipeline documentation 4630c33 (fix(ui): fix Mermaid dark mode and cookie banner rendering)
[0.17.1] - 2025-12-24
Changed
- Version bump: patch release
Commits in this release
- d56de0b fix(ci): update Gemfile.lock for v0.17.0 and improve HTMLProofer config
[0.17.0] - 2025-12-23
Added
- Navbar Hover Dropdowns: Desktop users can now hover over navigation items to reveal sub-menus with smooth fade transitions
- ES6 Navigation Modules: Complete rewrite of navigation JavaScript using native ES6 modules (
type="module")config.js- Centralized configuration with CSS custom propertiesscroll-spy.js- Table of contents highlightingsmooth-scroll.js- Animated scrolling to anchorskeyboard.js- Full keyboard navigation supportgestures.js- Touch gesture support for mobilefocus.js- Focus management and accessibilitysidebar-state.js- Persistent expand/collapse stateindex.js- Module orchestration and initialization
- Nav Tree Component: New
_includes/navigation/nav-tree.htmlfor rendering hierarchical YAML navigation (2 levels deep) - Navigation Schema Documentation: Added
_data/navigation/README.mdwith complete schema definition - Migration Script: Added
scripts/migrate-nav-modes.shto update front matter from old to new nav modes
Changed
- Navigation YAML Schema: Standardized on
childrenkey (previouslysublinks) across all navigation files - Navigation Modes: Simplified to 3 standard modes:
auto- Auto-generates from collection documents (replacesdynamic)tree- Uses YAML data files for hierarchical navigationcategories- Groups content by Jekyll categories (replacessearchCats)
- Sidebar Component: Refactored
_includes/navigation/sidebar-left.htmlto use new nav modes - Script Loading: Updated
_includes/components/js-cdn.htmlto usetype="module"for ES6 modules - Default Collection Config: Updated
_config.ymlwith new navigation mode defaults
Removed
- Legacy sidebar.js: Deleted 512-line IIFE-based sidebar script, replaced by modular ES6 architecture
Fixed
- Mobile Dropdown Behavior: Fixed glitch where opening one dropdown would close others; each now operates independently
- Dropdown Positioning: Fixed desktop hover dropdowns appearing on top of parent links (now correctly appear below)
[0.16.3] - 2025-01-27
Changed
- Documentation Navigation: Restructured
_data/navigation/docs.ymlwith logical sections (Getting Started, Core Technologies, Theme Features, Deployment) - Main Navigation: Updated
_data/navigation/main.ymlwith expanded Docs dropdown entries (Documentation Home, Installation, Docker, Troubleshooting)
Fixed
- Liquid Syntax Error: Fixed pre-existing bug in
pages/features.mdwherewhere_expfilters used unsupportedorconditions (Liquid 4.x compatibility)
Documentation
- Installation Guide: Expanded with platform-specific guides (macOS, Windows, Linux), Docker quick start, verification steps
- Docker Guide: Added essential commands, container workflows, configuration files, Apple Silicon support, troubleshooting
- Troubleshooting Guide: Added sections for Docker issues, Jekyll build errors, front matter problems, performance optimization
- Jekyll Guide: Added directory structure, configuration files, content collections, essential commands, topic index
- Bootstrap Guide: Added CDN loading patterns, key components, responsive breakpoints, custom styles, icons
- Liquid Guide: Added syntax examples with `` tags, filters, control flow, includes
- Ruby Guide: Added version commands, common commands, key files, Docker usage, troubleshooting
- Front Matter Guide: Added required/optional fields, layout options, collection-specific fields, complete examples
- All documentation pages now include
sidebar: nav: docsfor consistent navigation
[0.16.2] - 2025-12-20
Changed
- Version bump: patch release
Commits in this release
- 2a0057e Comprehensive features.yml with references, documentation, and showcase page (#17)
[0.16.1] - 2025-12-20
Changed
- Hardened CI workflows with least-privilege
permissionsandconcurrency - Updated landing/repo links to render correctly with YAML-array URL config
- Excluded repo technical
docs/from the published site build (GitHub links used instead)
Fixed
- Removed false-green behavior in
test-latest.yml(RSpec/HTMLProofer now fail the workflow) - Fixed broken internal links/hashes and aligned navigation anchors (strict HTMLProofer-compatible)
[0.16.0] - 2025-12-20
Added
- Configurable Assets Prefix: New
assets_prefixandauto_prefixconfiguration options for preview images- Allows shorter frontmatter paths like
/images/previews/image.pnginstead of/assets/images/previews/image.png - Automatic path normalization in Liquid templates detects external URLs vs local paths
- Configured via
_config.ymlunderpreview_images.assets_prefixandpreview_images.auto_prefix
- Allows shorter frontmatter paths like
- xAI Grok Image Provider: Added xAI as a new AI provider for preview image generation
- Uses
grok-2-imagemodel athttps://api.x.ai/v1/images/generations - Set
XAI_API_KEYenvironment variable and use--provider xaiflag
- Uses
- Preview Path Migration Script: New
scripts/update-preview-paths.shfor migrating existing frontmatter- Supports dry-run and apply modes
- Removes
/assets/prefix from preview paths in markdown files
Changed
- Updated
preview-image.htmlinclude with path normalization logic - Updated
intro.htmlinclude with assets prefix support for hero backgrounds - Updated
seo.htmlinclude with assets prefix normalization for og:image meta tags - Enhanced
preview_image_generator.rbRuby plugin withnormalize_preview_pathmethod - Enhanced
preview_generator.pywith xAI provider,--assets-prefix, and--no-auto-prefixCLI options - Migrated 24 markdown files to use shorter preview paths (without
/assets/prefix) - Updated scripts/README.md documentation with new provider and prefix options
Fixed
- Critical: Liquid syntax error in
seo.html- Fixed invalid nested curly braces on line 27
[0.15.5] - 2025-12-20
Changed
- Version bump: patch release
Commits in this release
- d46cdb1 Merge branch ‘main’ of https://github.com/bamr87/zer0-mistakes
- 36767cd fix: update last modified timestamp in quick start guide
- f606096 fix: update quick start guide for clarity and consistency
[0.15.4] - 2025-12-20
Changed
- Version bump: patch release
Commits in this release
- bafb5ea fix: resolve CI quality check failures for preview images
[0.15.3] - 2025-12-20
Changed
- Version bump: patch release
Commits in this release
- 2f8b580 chore: merge branch and version bump to 0.15.2
- a239892 chore: bump version to 0.15.2
[0.15.2] - 2025-12-19
Changed
- Version bump: patch release
Commits in this release
- e1342ab Add configuration files for content organization, prerequisites, statistics, and UI text
- 366e8a2 chore(deps): update Ruby gem dependencies (#16)
[0.15.1] - 2025-12-14
Changed
- update test runner documentation for Bash 3.2 compatibility
- update version to 0.15.0 and enhance documentation with new features
Fixed
- refactor changelog.sh for Bash 3.2 compatibility (macOS default)
Other
- document Bash 3.2 compatibility in automation
- unfreeze bundler before updating Gemfile.lock in version-bump workflow
- update Windows Developer Mode instructions and correct spelling errors
- Social sharing buttons use production URLs instead of localhost
- update Gemfile.lock for v0.15.0
[0.15.0] - 2025-12-11
Added
- Documentation: Product Requirements Document - Comprehensive PRD detailing product vision, goals, and architecture
- Added
docs/PRD.mdwith complete product specifications - Includes vision statement, key differentiators, and metrics
- Documents AI-powered features and privacy-first principles
- Added
- Documentation: Sidebar Improvements Summary - Complete implementation documentation for sidebar enhancements
- Added
docs/SIDEBAR_IMPROVEMENTS.mddocumenting UI/UX modernization - Details scroll spy fixes, mobile TOC button positioning
- Documents responsive design improvements and accessibility features
- Added
- Documentation: Theme Version Implementation - Theme version display system documentation
- Added
docs/THEME_VERSION_IMPLEMENTATION.md - Documents automatic version extraction from gem specification
- Explains modal integration and footer access points
- Added
- Content: Privacy Policy Page - GDPR/CCPA compliant privacy policy
- Added
pages/privacy-policy.mdwith comprehensive privacy documentation - Details PostHog analytics data collection practices
- Explains user rights and data protection measures
- Added
- Content: Terms of Service Page - Legal terms for site usage
- Added
pages/terms-of-service.md - Provides basic terms framework for site operators
- Added
- Testing: Notebook Conversion Test Script - Automated testing for Jupyter notebook conversion
- Added
test/test-notebook-conversion.shfor notebook workflow testing - Validates Python/nbconvert installation in Docker
- Tests notebook listing and conversion processes
- Added
Documentation
- All new files are fully documented with appropriate frontmatter
- Privacy policy provides transparency for analytics usage
- PRD serves as single source of truth for product direction
[0.14.2] - 2025-12-07
Changed
- Version bump: patch release
Commits in this release
- 82d7441 fix(build): improve gem info retrieval error handling
- 67a8e5b fix(ci): remove Ruby 3.0 from test matrix
- afe057d chore(deps): update Ruby gem dependencies (#11)
- 64ee1c9 fix(ci): add proper permissions for PR creation
- 3b55b60 feat(ci): add automated dependency update workflow
- a3197b3 fix(deps): commit Gemfile.lock for reproducible builds
- d8188dd fix(docker): install bundler 2.3 to match Gemfile.lock requirement
- 04d7c26 fix(docker): remove bundle update –bundler that requires existing bundle
[0.14.1] - 2025-12-04
Fixed
- Docker: Bundler Version Compatibility - Resolved CI/CD build failure
- Added
bundle update --bundlerstep in Dockerfile to auto-update lockfile - Allows using latest Bundler (4.0.0) while maintaining dependency stability
- Preserves all gem versions from
Gemfile.lock - Aligns with project’s “zero version pin” philosophy
- Fixes GitHub Actions “Build (Latest Deps)” workflow failure
- Added
[0.14.0] - 2025-12-01
Added
- Navigation: Enhanced Sidebar System - Complete overhaul of sidebar navigation with modern features
- New
assets/js/sidebar.js(16KB) with Intersection Observer scroll spy - Smooth scrolling to TOC anchors with fixed header offset
- Keyboard shortcuts:
[and]for section navigation - Swipe gestures for mobile (left/right edge detection)
- Focus management for accessibility
docs/keyboard-navigation.md- Complete keyboard navigation documentation
- New
- Navigation: Skip-to-Content Link - Accessibility enhancement in header
- Visually hidden until focused with Tab key
- Direct jump to main content bypassing navigation
- WCAG 2.1 Level AA compliant
- Mobile: TOC Floating Action Button - Improved mobile table of contents access
- Repositioned from center-right to bottom-right (90px from bottom)
- FAB pattern with 56x56px circular button
- Proper stacking above back-to-top button
- z-index: 1030 for proper layering
Changed
- Navigation: Unified Bootstrap Icons - Standardized icon library across all sidebars
- Replaced Font Awesome (
fas fa-file-alt) with Bootstrap Icons (bi-file-text) - Consistent icon sizing and spacing (me-2 margin)
- Icons:
bi-folder2-open,bi-folder,bi-file-earmark-text,bi-list-ul
- Replaced Font Awesome (
- Navigation: Scroll Spy Fix - Corrected scroll tracking in default layout
- Fixed
data-bs-targetfromtoc-contentto#TableOfContents - Added
data-bs-smooth-scroll="true"for better UX - Added
data-bs-offset="100"for fixed header compensation
- Fixed
- Navigation: Responsive Sidebar Widths - Removed hardcoded widths for better responsiveness
sidebar-categories.html: Changed fromwidth: 280pxtow-100- Uses Bootstrap grid system for fluid layouts
- Improved mobile and tablet compatibility
- Styles: Unified Sidebar Classes - Consolidated duplicate CSS definitions
- Removed duplicate
.sidebarclass fromcustom.scss - Kept only
.bd-sidebarin_docs.scssfor consistency - Uncommented z-index (2) for proper TOC stacking
- Removed duplicate
- Styles: Enhanced Active States - Improved visual feedback for navigation
- Active TOC links: 600 font-weight, subtle background highlight
- Category active state: Primary color with background tint
- Sidebar hover states: Smooth 0.2s transitions
- Mobile TOC button: Scale transforms on hover/active
- JavaScript: Deferred Loading - Optimized script loading for better performance
- Added
deferattribute tosidebar.js - Prevents blocking and scroll event conflicts
- Fixed auto-hide navbar functionality
- Parallel download with in-order execution
- Added
- Accessibility: ARIA Enhancements - Improved screen reader support
- Added
role="navigation"andaria-labelto TOC - Added
aria-controlsto all collapse/offcanvas buttons - Improved button accessibility with descriptive labels
- Better focus management in offcanvas panels
- Added
Fixed
- Critical: Scroll Spy Not Working - Resolved selector mismatch in default layout
- Corrected target from
toc-contentto#TableOfContents - Active section now properly highlights in TOC
- Smooth scroll with proper offset for fixed headers
- Corrected target from
- Critical: Mobile Button Conflict - Fixed TOC and back-to-top button overlap
- TOC button: moved to
bottom: 90pxfrombottom: 0 - Back-to-top button: updated z-index to 1020
- 14px vertical spacing between buttons
- No more overlapping on mobile devices
- TOC button: moved to
- Critical: Auto-Hide Navbar Broken - Fixed navbar hiding on scroll
- Added
deferattribute tosidebar.jsscript tag - Resolved scroll event listener conflicts
- Both scripts now use requestAnimationFrame optimization
- Navbar properly hides/shows on scroll
- Added
- UI: Icon Library Inconsistency - Unified icon usage across components
- Eliminated mixed Font Awesome and Bootstrap Icons usage
- All components now use Bootstrap Icons exclusively
- Consistent visual language throughout theme
Performance
- Intersection Observer Scroll Spy - 70% reduction in scroll event overhead
- Replaced scroll events with Intersection Observer API
- Configurable root margins and thresholds
- Auto-scrolling TOC to show active link
- Debounced event handlers (100ms delay)
- Passive Scroll Listeners - Improved scrolling performance
- All scroll events use
{ passive: true }option - Prevents scroll jank and layout thrashing
- Better frame rates on mobile devices
- All scroll events use
Documentation
- Guide: Keyboard Navigation - Comprehensive accessibility documentation
- Complete shortcut reference table
- Skip navigation instructions
- Focus management guidelines
- Browser compatibility matrix
- Troubleshooting section
- Technical: Implementation Summary - Development documentation
SIDEBAR_IMPROVEMENTS.mdwith complete implementation details- Architecture decisions and patterns
- Testing checklist and verification steps
- Future enhancement roadmap
[0.13.0] - 2025-12-01
Added
- Navigation: Bootstrap Icons - Added icons to all main navigation items
- Quick Start:
bi-rocket-takeoff - Blog:
bi-journal-text - Docs:
bi-journal-bookmark - About:
bi-info-circle
- Quick Start:
- Navigation: New Links - Enhanced navigation structure with additional pages
- Categories page (
/categories/) - Tags page (
/tags/) - Contact page (
/contact/) - Features page (
/about/features/) - Statistics page (
/about/stats/)
- Categories page (
- Frontmatter CMS: Navigation Data Type - Enhanced data schema for navigation management
- Added optional
descriptionfield for parent and child links - Added optional
iconfield for sublinks - Registered all 6 navigation files (main, quickstart, about, docs, posts, home)
- Improved schema validation with proper required fields
- Added optional
Changed
- Navigation: Restructured All Files - Aligned navigation with actual site content
main.yml- Updated Quick Start, Blog, Docs, and About sectionsquickstart.yml- Added icons to setup stepsdocs.yml- Reorganized into Jekyll, Features, Deployment, Configuration sectionsabout.yml- Structured into About, Site Info, Settings, Legal sectionsposts.yml- Fixed icon prefixes (addedbi-), added descriptionshome.yml- Added Discover and Connect navigation groups
- Frontmatter: Website Configuration - Updated preview and website hosts
- Changed preview host from
localhost:4002tolocalhost:4000 - Changed website host from
it-journey.devtozer0-mistakes.com
- Changed preview host from
Removed
- Navigation: Dead Link - Removed orphaned
/zer0/link from Quick Start menu - Navigation: Unused Entry - Removed Theme page link (replaced with Features)
Fixed
- Navigation: Icon Consistency - Standardized Bootstrap icon class format across all files
- Navigation: URL Completeness - Ensured all top-level navigation items have required URL field
[0.12.1] - 2025-11-30
Changed
- Refactored: Scripts Directory Structure - Consolidated and organized automation scripts
- Entry point scripts (
build,release) inscripts/are now thin wrappers toscripts/bin/ - Test scripts (
test.sh,test-auto-version.sh,test-mermaid.sh) forward toscripts/test/ - Utility scripts (
setup.sh,analyze-commits.sh,fix-markdown-format.sh) forward toscripts/utils/ - Feature scripts (
generate-preview-images.sh,install-preview-generator.sh) forward toscripts/features/ - Maintains backward compatibility while establishing canonical locations
- Entry point scripts (
- Moved:
validate_preview_urls.pyfromscripts/lib/toscripts/features/- Better organization as a feature-specific validator rather than core library
- Updated: Documentation - Corrected all script path references
scripts/README.md- New directory structure documentationscripts/lib/README.md- Updated test pathsdocs/systems/release-automation.md- Updated test pathsdocs/TROUBLESHOOTING.md- Updated test pathsdocs/archive/PHASE_1_COMPLETE.md- Updated historical referencesdocs/archive/RELEASE_WORKFLOW_IMPROVEMENTS.md- Updated historical references
Removed
- Deleted:
scripts/lib/test/- Redundant test directory (tests are inscripts/test/lib/) - Deleted:
scripts/features/preview_generator.py- Duplicate ofscripts/lib/preview_generator.py - Deleted:
scripts/version.sh- Deprecated (usescripts/lib/version.shorscripts/bin/release)
Fixed
- Fixed: Function ordering in
scripts/bin/build- Movedshow_usage()definition before it’s called
[0.12.0] - 2025-11-30
Added
- New Component:
preview-image.html(_includes/components/preview-image.html)- Centralized preview image rendering component
- Consistent handling of absolute paths and external URLs
- Supports custom classes, styles, and lazy loading
- Eliminates duplicated image rendering logic across layouts
- New Script:
validate_preview_urls.py(scripts/lib/validate_preview_urls.py, 400+ lines)- Python-based validation for preview image URLs in frontmatter
- Checks URL format (must start with
/) - Validates image extensions (
.png,.jpg,.jpeg,.gif,.webp,.svg) - Verifies file existence on disk
- Detects empty, null, or malformed preview values
- JSON output support for CI integration
- Standalone CLI tool with
--verbose,--suggestions,--list-missingoptions
- New Test Category: Content Quality Tests in Quality Assurance Suite
- Added
test_preview_image_urls()function totest/test_quality.sh - Validates all preview URLs in content frontmatter during test runs
- Integrated into main test runner with new “📄 Content” category
- Reports missing files and format errors with suggestions
- Added
Changed
- Refactored: Layout Image Handling - Simplified preview image logic
_layouts/blog.html- Replaced 5 separate image blocks withpreview-image.htmlinclude_layouts/journals.html- Unified preview image rendering_layouts/category.html- Consistent image component usage_layouts/collection.html- Streamlined image rendering_includes/components/post-card.html- Uses centralized component_includes/content/intro.html- Simplified image handlingindex.html- Updated to use preview-image componentposts.html- Consistent preview image renderingpages/blog.md- Updated image handling
- Enhanced: Quality Test Suite (
test/test_quality.sh)- Added Content Quality Tests section with preview URL validation
- Updated help text and summary to include content category
- Extended JSON report generation with content test metrics
- Fixed: Preview URL Paths - Corrected several preview paths in content
pages/_posts/2024-06-17-wizard-topples-capitalist-dominance-ingeniously.mdpages/_posts/2025-01-01-getting-started-jekyll.mdpages/_posts/2025-01-05-web-accessibility-guide.mdpages/_posts/2025-01-10-bootstrap-5-components.mdpages/_posts/2025-01-15-docker-jekyll-guide.md
Documentation
- Updated
_includes/README.mdwithpreview-image.htmlcomponent documentation
[0.11.0] - 2025-11-30
Added
- New Feature: Jupyter Notebook Support - Complete integration for data science and computational content
- New Layout:
notebook.html(_layouts/notebook.html, 294 lines)- Dedicated layout for converted notebooks with metadata display
- Author, date, kernel info, and reading time display
- Previous/next navigation between notebooks
- Related notebooks section
- Schema.org TechArticle markup for SEO
- Download original
.ipynblink - Giscus comments integration
- New Stylesheet:
notebooks.scss(_sass/notebooks.scss, 450+ lines)- Code cell styling with execution counts
- Output area formatting (text, images, tables, errors)
- MathJax equation styling
- Responsive design with mobile breakpoints (@media max-width: 768px)
- Dark mode support
- Bootstrap 5 variable integration
- New Conversion Script:
convert-notebooks.sh(scripts/convert-notebooks.sh, 408 lines)- Converts
.ipynbfiles to Jekyll-compatible Markdown - Extracts images to
/assets/images/notebooks/ - Generates proper front matter with title, description, date, permalink
- JSON-based metadata parsing to avoid delimiter issues
- CLI options:
--force,--dry-run,--list,--clean,--verbose - Follows project script patterns with colored logging
- Converts
- New GitHub Actions Workflow (
.github/workflows/convert-notebooks.yml, 220+ lines)- Triggers on push/PR to
pages/_notebooks/**.ipynb - Dry-run mode for pull requests
- Automatic conversion and commit on main/develop branches
- Validation job checks markdown and image references
- Commits with
[skip ci]to prevent loops
- Triggers on push/PR to
- New Documentation (
docs/JUPYTER_NOTEBOOKS.md)- Complete feature documentation
- Usage examples and workflow
- Troubleshooting guide
- Architecture explanation
- File manifest
- New Test Suite (
test-notebook-conversion.sh, 150+ lines)- 8-step automated validation
- Docker status, Python/nbconvert checks
- Conversion validation
- Front matter and image verification
- New Layout:
- Makefile Targets - Added notebook conversion commands
convert-notebooks- Convert all notebooksconvert-notebooks-dry-run- Preview conversionsconvert-notebooks-force- Force reconvert alllist-notebooks- List available notebooksclean-notebooks- Remove converted markdown
- Sample Content (
pages/_notebooks/test-notebook.ipynb)- Comprehensive demonstration notebook with 10 cells
- LaTeX equations, matplotlib plots, pandas DataFrames
- Fibonacci function example
- All outputs rendered (text, images, HTML tables)
Changed
- Enhanced: Docker Environment (
docker/Dockerfile)- Added Python 3.13.5, pip, jupyter, nbconvert
- Used
--break-system-packagesflag for PEP 668 compatibility - Multi-stage build preserves Python tooling
- Enhanced: Jekyll Configuration (
_config.yml)- Added notebooks collection defaults
- Set
layout: notebook,jupyter_metadata: true - Configured sidebar navigation for notebooks
- Enhanced: Sass Import (
_sass/custom.scss)- Added
@import "notebooks";at top of file - Ensures notebook styles load properly
- Added
- Documentation (
README.md)- Added “Jupyter Notebook Support” feature section
- Installation and usage examples
- Feature highlights: automatic conversion, output rendering, GitHub Actions
[0.10.6] - 2025-11-29
Changed
- Improved: Version Definition (
lib/jekyll-theme-zer0/version.rb)- Added conditional version definition to prevent reinitialization warnings
- Uses
unless defined?guard to safely handle multiple requires - Improves compatibility with various Jekyll plugin loading scenarios
- Enhanced: Dependency Management (
Gemfile)- Added
faraday-retrygem for Faraday v2.0+ compatibility - Resolves “To use retry middleware with Faraday v2.0+, install
faraday-retrygem” warning - Ensures robust HTTP client functionality for API integrations
- Added
Fixed
- Build Optimization (
_config.yml)- Added
_site/lib/to exclude list to prevent recursive gem building - Reduces build size and prevents unnecessary file processing
- Improves build performance and artifact cleanliness
- Added
- Documentation: CHANGELOG Formatting
- Removed raw Liquid syntax markers from CHANGELOG for better readability
- Cleaned up technical implementation details in previous entries
[0.10.5] - 2025-11-29
Fixed
- Critical: Nested Liquid Output Tags in Footer (
_includes/core/footer.html)- Fixed nested Liquid output tags causing template errors
- Used capture blocks to properly combine icon classes
- Resolved syntax errors in powered-by credits and social links sections
- Ensures proper icon rendering in Bootstrap 5 components
- Critical: Sass Syntax Errors (
_sass/custom.scss)- Fixed missing spaces after colons in CSS vendor prefix properties
- Corrected
position:-webkit-stickytoposition: -webkit-sticky(lines 40, 105) - Ensures proper CSS compilation and browser compatibility
- Validates against CSS linting standards
- Improved: Test Suite Reliability (
test/test_deployment.sh,test/test_quality.sh)- Docker Volume Mounting Test: Changed from hard failure to graceful warning when Docker image not built
- Fixed incorrect path expectation (/app → /site) to match Dockerfile WORKDIR
- Accepts incomplete Docker setup as valid state for development environments
- Jekyll Docker Build Test: Made timeout handling more lenient
- Changed timeout errors to warnings for resource-constrained environments
- Prevents false positives on slow Docker builds or limited CPU/memory
- Ruby Version Compatibility: Added comprehensive Ruby version guards
- Detects Ruby < 2.7.0 and skips incompatible tests gracefully
- Prevents test failures due to environment limitations
- HTML5 Validation: Fixed case-sensitive doctype detection
- Changed from case-sensitive
<!DOCTYPE html>to case-insensitive<!doctype html> - Properly handles various HTML5 doctype formats
- Changed from case-sensitive
- Accessibility: Reduced noise from multiple h1 tag warnings
- Removed warnings for multiple h1 tags (valid HTML5 sectioning pattern)
- Added clarifying comments about HTML5 semantic sections
- Overall improvement: Test suite now handles environmental constraints gracefully rather than failing harshly
- Docker Volume Mounting Test: Changed from hard failure to graceful warning when Docker image not built
[0.10.4] - 2025-11-29
Changed
- Improved: Bootstrap Theme Color Scheme (
_includes/stats/)- Migrated from gradient backgrounds (
bg-gradient) to Bootstrap 5 subtle variants (bg-primary-subtle,bg-info-subtle,bg-warning-subtle) - Updated text colors to use emphasis variants (
text-primary-emphasis,text-info-emphasis,text-warning-emphasis) - Replaced
bg-lightwith semanticbg-body-secondaryfor better theme consistency - Updated footer and card backgrounds to use theme-aware classes
- Removed
border-0classes to allow default Bootstrap borders - All statistics components now follow Bootstrap 5 color system conventions
- Migrated from gradient backgrounds (
- Improved: Cookie Consent Component (
_includes/components/cookie-consent.html)- Updated modal styling with theme-aware background classes
- Better visual consistency with updated color scheme
- Improved: Post Card Component (
_includes/components/post-card.html)- Enhanced visual styling to match theme updates
- Improved: Sitemap Component (
_includes/content/sitemap.html)- Updated styling for consistency with Bootstrap 5 theme
- Improved: Landing Page Layout (
_layouts/landing.html)- Refined layout styling for better visual hierarchy
- Improved: Blog Layout (
_layouts/blog.html)- Updated layout to align with theme improvements
- Improved: Sitemap Collection Layout (
_layouts/sitemap-collection.html)- Enhanced layout for better content presentation
- Restructured: README.md Documentation
- Reorganized content structure for better readability
- Updated version references from 0.9.2 to 0.10.3
- Added centered layout with improved badge display
- Changed tagline to “The Self-Healing Jekyll Theme”
- Updated lastmod date to 2025-11-29
- Added mermaid support flag to front matter
- Improved navigation structure in documentation
Removed
- Deleted: Duplicate Index File (
pages/index.html)- Removed 341-line duplicate index file from pages directory
- Site now uses single
index.htmlat root for cleaner architecture
Fixed
- Fixed: Git Workflow Documentation (
pages/_posts/development/2025-01-22-git-workflow-best-practices.md)- Corrected formatting and content issues
- Fixed: Page Navigation (
pages/blog.md,pages/categories.md,pages/tags.md,index.html)- Improved navigation consistency across pages
[0.10.3] - 2025-11-29
Added
- New: AI-Generated Preview Images - 17 new preview images for posts and collections
- Business, Development, Science, Technology, Tutorial, World category index pages
- Individual post previews: startup funding, quantum computing, AI tools, CSS grid, remote work
- Quickstart guide previews: GitHub setup, Jekyll setup, machine setup
- Documentation and blog index previews
Changed
- Improved: Preview Image Path Handling (
_layouts/journals.html,_layouts/category.html,_layouts/collection.html)- Layouts now support both absolute paths (
/assets/...) and relative paths - Conditional logic detects path type and constructs URL correctly
- Eliminates double-slash issues in image URLs
- Layouts now support both absolute paths (
- Improved: Intro Section Preview Image Logic (
_includes/content/intro.html)- Smart path detection for preview images (absolute vs relative)
- Handles URLs with
://schemes, paths starting with/, and relative filenames - Cleaner Liquid template logic with proper variable assignment
- Improved: Docker Development Setup (
docker-compose.yml,docker/Dockerfile)- Command now runs
bundle installbefore Jekyll serve (fixes volume mount overwrites) - Dockerfile copies gemspec and lib/ for proper dependency resolution
- More reliable container startup with dependency installation
- Command now runs
- Improved: Preview Image Generator (
scripts/lib/preview_generator.py)- Switched from OpenAI SDK to direct HTTP API calls
- Eliminates SDK dependency - only requires
requestspackage - Better error handling with HTTP status code parsing
- Added request timeouts (120s for generation, 60s for download)
Fixed
- Fixed: Asset Paths in Config (
_config.yml)- Corrected
teaserandinfo_bannerpaths to use/assets/images/prefix - Images now load correctly across all pages
- Corrected
- Fixed: Preview Image Double-Slash URLs
- Removed extra
/betweenpublic_folderandsite.teaserin fallback images - All layouts now generate clean, valid image URLs
- Removed extra
[0.10.2] - 2025-11-28
Added
- Enhanced: Navbar Auto-Hide on Scroll (
assets/js/auto-hide-nav.js)- Navbar hides when scrolling down past 100px threshold
- Navbar reappears immediately when scrolling up
- Automatic body padding to prevent content jump under fixed navbar
- Performance-optimized with
requestAnimationFramethrottling - Respects
prefers-reduced-motionaccessibility setting
Changed
- Improved: Header Positioning (
_includes/core/header.html)- Changed from
z-1to Bootstrap’sfixed-topclass - Provides proper z-index (1030) and fixed positioning
- Changed from
- Refactored: Navbar CSS (
_sass/custom.scss)- Replaced broken
.hide-navbarand.fixed-navbarclasses - New
.navbar-hiddenclass withtranslateY(-100%)transform - Added
!importantto override Bootstrap’sfixed-toppositioning - Added explicit background color for opaque navbar
- Added
prefers-reduced-motionmedia query for accessibility
- Replaced broken
Fixed
- Fixed: Navbar Blocking Content on Scroll Up
- Content no longer obscured when scrolling back to top
- Body padding dynamically calculated based on navbar height
[0.10.1] - 2025-11-28
Added
- Enhanced: Mermaid v2.1 - GitHub Pages Compatible (
_includes/components/mermaid.html)- Client-side conversion of native markdown ` ```mermaid ` code blocks to rendered diagrams
- Full GitHub Pages compatibility without custom plugins (all processing client-side)
- CSS to hide code blocks during conversion (prevents flash of unstyled content)
- Print styles and improved responsive design
- Documented dual syntax support (native markdown and HTML div)
Changed
- Improved: Mermaid Configuration (
_config.yml)- Added clear comments explaining GitHub Pages compatibility
- Documented that
jekyll-mermaidplugin is optional - Updated usage instructions for both syntax options
- Improved: Mermaid Documentation
docs/jekyll/mermaid.md: Added native markdown syntax as recommended optiondocs/jekyll/mermaid-native-markdown.md: Fixed documentation about front matter requirements- Added GitHub Pages compatibility badges to documentation
Fixed
- Fixed: Native Markdown Mermaid Syntax Not Rendering
- ` ```mermaid ` code blocks now properly convert to diagrams via JavaScript
- Works with GitHub Pages remote_theme deployment
- Fixed: Mermaid Test Script (
scripts/test-mermaid.sh)- Corrected file path references from
pages/_docs/jekyll/todocs/jekyll/ - Fixed SIGPIPE issues with
curl | greppipelines causing false test failures - All 21 tests now pass successfully
- Corrected file path references from
[0.10.0] - 2025-11-28
Added
- New: Zero Version Pin Strategy - Enterprise-grade dependency management paradigm
- Always use latest compatible versions with zero pins anywhere
- Fail fast in CI if incompatible → caught early, not in production
- Production uses immutable image tags (date+commit hash), never
:latest - Full documentation in
docs/systems/ZERO_PIN_STRATEGY.md
- New: Docker Multi-Stage Dockerfile (
docker/Dockerfile)basestage: Ruby slim + build dependenciesdev-teststage: Full dev/test gems for CI validationbuildstage: Production Jekyll buildproductionstage: Minimal runtime for serving
- New: Docker Compose Configurations
docker-compose.yml: Development environment with live reloaddocker-compose.test.yml: CI testing overlay with validationdocker-compose.prod.yml: Production with immutable tags only
- New: CI Workflow for Zero Pin Strategy (
.github/workflows/test-latest.yml)- Builds with
--no-cachefor latest dependencies - Documents resolved versions in workflow summary
- Tags and publishes immutable images on success
- Debug information on failure
- Builds with
- New:
.dockerignore- Optimized Docker build context- Excludes development files, tests, logs, and build artifacts
- Keeps only files needed for container builds
- New: VS Code Workspace Configuration (
zer0-mistakes.code-workspace)- Copilot settings for all file types
- File associations for Jekyll/Liquid
- Terminal environment variables for Docker
Changed
- Improved:
Gemfile- Refactored for zero version pin strategy- Removed all version constraints
- Added development/test group with html-proofer, rspec, rake, rubocop
- Added platform-specific dependencies for Windows
- Comprehensive documentation comments
- Improved:
docker-compose.yml- Enhanced for zero pin strategy- Uses custom Dockerfile instead of jekyll/jekyll image
- Added bundle cache volume for faster rebuilds
- LiveReload port (35729) exposed
- TTY enabled for interactive commands
- Improved:
jekyll-theme-zer0.gemspec- Compatibility updates- Ruby requirement lowered to >= 2.7.0 (from 3.0.0) for broader compatibility
- Bundler dependency changed to ~> 2.3 (from >= 2.3)
- Improved: CI Workflow (
.github/workflows/ci.yml)- Added documentation comments explaining version strategy
- Clarified that explicit versions are for backwards compatibility testing
Fixed
- Fixed:
scripts/generate-preview-images.sh- Reverted to simpler collection handling- Removed dynamic collection reading (caused issues in some environments)
- Restored hardcoded collection list for reliability
- Fixed yq vs sed front matter update logic
[0.9.2] - 2025-11-28
Changed
- Version bump: patch release
Commits in this release
- 509d705 fix(ci): fix false positive failure detection in test report validation
- 77dc04b fix(ci): fix shell syntax error in test-suite validation step
[0.9.1] - 2025-11-27
Fixed
- CI: Test suite failures across Ruby versions - Resolved issues causing CI failures
- Fixed
--skip-dockeroption error by only passing it to deployment tests (not quality tests) - Fixed bash arithmetic syntax error in Liquid tag validation by sanitizing grep output
- Added bundler 2.5 requirement to setup-ruby action for Ruby 3.0 compatibility
- Fixed
[0.9.0] - 2025-06-30
Changed
- Refactored: Scripts Directory Structure - Complete reorganization for better maintainability
- New
bin/directory for main entry points (release,build,test) - New
utils/directory for utility scripts (setup,analyze-commits,fix-markdown) - New
features/directory for feature-specific scripts (generate-preview-images,install-preview-generator) - New
test/directory hierarchy withlib/,theme/, andintegration/subdirectories - Unified test runner in
bin/testthat runs all test suites with single command
- New
- Improved: Script Library Integration - All scripts now use shared
lib/common.sh- Consistent logging functions (
log,info,success,warn,error,debug) - Standardized color output and formatting
- Removed duplicate code from individual scripts
- Consistent logging functions (
- Updated: Documentation - Complete rewrite of
scripts/README.md- Clear directory structure overview
- Quick start guide for common operations
- Migration table from legacy to new script locations
- Dependency graph for library modules
Added
- New:
bin/testUnified Test Runner - Single command to run all tests- Supports running specific test suites (
lib,theme,integration,all) - Verbose output mode with
--verboseflag - Summary of passed/failed test suites
- Supports running specific test suites (
- New:
test/theme/validate- Theme structure validation tests- Validates layouts, includes, and assets directories
- Sources shared library for consistent output
- New:
test/integration/auto-version- Auto-version integration tests- Moved from
tests/directory with updated library paths
- Moved from
Deprecated
- Deprecated:
scripts/version.sh- Now displays deprecation warning- Recommends using
bin/releasefor full workflow - Will be removed in future release
- Recommends using
Migration Guide
| Legacy Script | New Location |
|---|---|
version.sh |
bin/release |
setup.sh |
utils/setup |
test.sh |
bin/test or test/theme/validate |
analyze-commits.sh |
utils/analyze-commits |
fix-markdown-format.sh |
utils/fix-markdown |
generate-preview-images.sh |
features/generate-preview-images |
install-preview-generator.sh |
features/install-preview-generator |
[0.8.2] - 2025-11-27
Changed
- Refactored: GitHub Actions Workflows - Consolidated 5 workflows into 3 streamlined workflows
- Merged
auto-version-bump.ymlintoversion-bump.ymlwith both automatic and manual triggers - Merged
gem-release.ymlandgithub-release.ymlinto unifiedrelease.yml - Removed duplicate
qualityjob fromci.yml(functionality retained inquality-checksjob) - Updated
ci.ymlbuild job to usescripts/buildinstead of deprecatedbuild.sh
- Merged
- Updated: Composite Action
prepare-release- Now usesscripts/buildinstead of deprecatedbuild.sh
Added
- New Documentation:
.github/workflows/README.md- Comprehensive workflow documentation- Workflow trigger flow diagram
- Job descriptions and timeout configurations
- Manual dispatch options and troubleshooting guide
- New Documentation:
.github/actions/README.md- Composite actions documentation- Input/output specifications for all 5 actions
- Usage examples and best practices
- Action creation guide and troubleshooting
Removed
- Deleted:
auto-version-bump.yml- Functionality merged intoversion-bump.yml - Deleted:
gem-release.yml- Functionality merged intorelease.yml - Deleted:
github-release.yml- Functionality merged intorelease.yml - Deleted: Deprecated wrapper scripts -
build.sh,gem-publish.sh,release.shand their.legacyversions- These were deprecated redirects to the new modular commands (
scripts/build,scripts/release)
- These were deprecated redirects to the new modular commands (
[0.8.1] - 2025-11-27
Added
- New Page:
pages/categories.md- Browse all categories with post counts and links- Alphabetical category overview with badge sizing based on post count
- Post listing under each category with descriptions and dates
- Smooth anchor navigation between categories
- New Page:
posts.html- Paginated posts index with jekyll-paginate support- Responsive 3-column card grid layout
- Smart pagination with ellipsis for many pages
- Page jump feature for quick navigation when >10 pages
- New Page:
index.html- Alternative posts index with client-side pagination- Responsive 5-column compact card grid for high-density display
- URL hash-based page state (#page=2) for bookmarkable pages
- Empty state handling when no posts exist
Changed
- Enhanced:
README.md- Consolidated landing page content- Changed layout from
defaulttolandingfor proper homepage rendering - Updated permalink from
/zer0/to/for clean root URL - Added hero_image and updated preview image
- Added “Welcome to Error-Free Jekyll Development” section with proven results metrics
- Added “Perfect For” section highlighting target audiences
- Changed layout from
- Enhanced:
pages/index.html- Improved posts archive page- Responsive card grid (1→2→3→4→5 columns as screen grows)
- Client-side pagination (10 posts per page)
- Compact card design with constrained image height
- Category badges and post metadata display
- Filter buttons for Categories and Tags pages
- Improved:
pages/_posts/development/2025-01-22-git-workflow-best-practices.md- Front matter formatting standardization
Removed
- Deleted:
index.md- Content merged into README.md to avoid duplicate landing pages
[0.8.0] - 2025-11-27
Added
- New Feature: AI Preview Image Generator (ZER0-003) - Automatic AI-powered preview image generation for Jekyll posts
- Supports OpenAI DALL-E 3, Stability AI, and local placeholder generation
- Configurable via
_config.ymlunderpreview_imagessection - Default retro pixel art style with 1792x1024 landscape banners
- One-command remote installation for other Jekyll sites
- New Plugin:
_plugins/preview_image_generator.rb- Jekyll integration with:- Liquid filters:
has_preview_image,preview_image_path,preview_filename - Liquid tags: {% raw %}
{% preview_image_status %},{% preview_images_missing %} - Build hook that reports missing preview images during Jekyll build
- Liquid filters:
- New Script:
scripts/generate-preview-images.sh- Main CLI for image generation--list-missingto find posts without preview images--dry-runto preview without making changes--collectionto target specific collections--providerto choose AI provider (openai, stability, local)
- New Script:
scripts/install-preview-generator.sh- Remote installer for other repos- One-line installation:
curl -fsSL .../install-preview-generator.sh | bash - Automatic configuration, VS Code tasks, and environment setup
- One-line installation:
- New Script:
scripts/lib/preview_generator.py- Python alternative implementation - New Documentation:
docs/features/preview-image-generator.md- Comprehensive feature documentation - New Rake Tasks:
preview:missing,preview:generate,preview:dry_run,preview:posts,preview:docs,preview:force,preview:file - New VS Code Tasks: Four preview image tasks for IDE integration
- New Config Section:
preview_imagesin_config.ymlwith full customization options - New Feature Entry: ZER0-003 in
features/features.yml
Changed
- Updated:
jekyll-theme-zer0.gemspec- Now includes_plugins/andscripts/directories in gem distribution - Updated:
Rakefile- Added preview image tasks and development/test task namespaces - Updated:
scripts/README.md- Documented new preview generator scripts - Updated:
.gitignore- Added.envfor API key security
[0.7.2] - 2025-11-26
Fixed
- Critical: Category pages 404 error - Renamed category index files from
index.mdto2000-01-01-index.mdto comply with Jekyll’s_postscollection naming convention (date-prefixed filenames required) - Category pages now correctly render at
/posts/technology/,/posts/business/,/posts/development/,/posts/science/,/posts/tutorial/,/posts/world/
Added
- New sample blog posts for each category:
2025-01-25-ai-tools-productivity.md(Technology)2025-01-20-startup-funding-guide.md(Business)2025-01-22-git-workflow-best-practices.md(Development)2025-01-18-quantum-computing-explained.md(Science)2025-01-23-css-grid-mastery.md(Tutorial)2025-01-21-remote-work-revolution.md(World)
.github/prompts/commit-publish.prompt.md- Comprehensive release workflow documentation
[0.7.1] - 2025-01-30
Fixed
- Directory structure: Moved category index pages from
posts/to_posts/directory for proper Jekyll collection handling
[0.7.0] - 2025-01-30
Added
- New Layout:
category.html- Category archive pages with card grid, featured posts section, and related categories navigation - New Layout:
tag.html- Tag archive pages with breadcrumbs, tag cloud, and related tags discovery widget - New Component:
post-card.html- Reusable post card component with configurable display (badges, images, metadata, reading time) - New Component:
author-card.html- Author profile card with social links and multiple display styles (compact, full, inline) - New Data File:
authors.yml- Author profiles configuration with avatar, bio, role, and social links - New Page:
tags.md- Tags index page with tag cloud and posts grouped by tag - New Category Pages - Six category archive pages (Development, Technology, Tutorial, World, Business, Science)
- Sample Blog Posts - Four new demo posts showcasing the blog features:
- Docker Jekyll development guide (featured)
- Bootstrap 5 components tutorial (featured)
- Web accessibility guide (featured)
- Getting started with Jekyll
Changed
- Complete Redesign:
blog.html- Transformed into full-width news homepage with:- Dark header with category navigation
- Hero section for breaking/featured news
- Category quick navigation with article counts
- Featured stories grid layout
- Posts organized by category sections
- Latest posts horizontal cards
- Tags & Archives sidebar widgets
- Newsletter signup CTA
- Enhanced:
journals.html- Major improvements including:- Rich metadata display with author, date, reading time
- Inlined author bio section (replaced include to fix nesting)
- Inlined related posts section (replaced include to fix nesting)
- Card-based post navigation (previous/next)
- Giscus comment integration support
- Updated:
_data/navigation/posts.yml- Reorganized categories with Bootstrap icons and proper hierarchy - Refactored:
sidebar-folders.html- Simplified structure with icon support - Refactored:
branding.html- Fixed URL references, added comprehensive documentation - Refactored:
js-cdn.html- Cleaned up, removed redundant Popper.js (included in Bootstrap bundle)
Fixed
- Critical: Liquid “Nesting too deep” error - Resolved recursive include issues by inlining card content in layouts
- Post filtering - Added
where_expfilters to exclude index pages from post listings - Script loading performance - Added
deferattribute to non-critical scripts inhead.html - Reading time calculation - Changed from calculated to front matter
estimated_reading_timeto avoid recursion
[0.6.0] - 2025-11-22
Added
- Implement PostHog analytics and cookie consent
- Add code copy functionality and enhance documentation structure
- Revise copilot instructions and add comprehensive Jekyll include development guidelines
- Implement automatic theme version display with comprehensive system information
- Add automatic theme version display and system information integration
- Enhance Copilot instructions with comprehensive guidelines
- Enhance CI/CD testing framework with comprehensive documentation and automated workflows
Changed
- Ignore .frontmatter directory
- Update VS Code settings
- Documentation: Update README with new features and architecture
- Documentation: Add documentation architecture guidelines
- Refactor: Clean up redundancies in includes.instructions.md
- Update version control instructions and add feature documentation
Other
- Revert “Merge pull request #10 from bamr87/copilot/plan-mdx-file-handling”
- Add Mermaid documentation and test suite, enhance site structure
- Merge pull request #9 from bamr87/copilot/setup-copilot-instructions
- Merge branch ‘main’ into copilot/setup-copilot-instructions
- Merge pull request #10 from bamr87/copilot/plan-mdx-file-handling
- Address code review feedback and add summary documentation
- Improve MDX processing and add comprehensive tests
- Add MDX and Tailwind CSS support to zer0-mistakes theme
- Initial plan
- Initial plan
Added
- Comprehensive documentation organization system in
/docs/directory - Standardized templates for feature documentation, release notes, and change tracking
- Organized directory structure for releases, features, systems, and configuration documentation
Changed
- Migrated scattered documentation files to organized structure
- Improved documentation discoverability and maintenance
0.5.0 - 2025-10-25
Added
- 📊 Comprehensive Sitemap Integration: Unified layout combining collections, statistics, and navigation
- Real-time site statistics dashboard with 6 key performance indicators
- Interactive search and filtering across all content types
- Collections overview with detailed analysis and recent item previews
- Advanced content discovery tools with visual organization
- Mobile-optimized responsive design with touch-friendly interface
- Dark mode support with theme-aware styling
- 🔧 Enhanced User Experience Components: Modern interface with professional design
- Bootstrap 5-based responsive layout with hover animations
- WCAG 2.1 AA compliant accessibility features
- Performance-optimized loading with lazy content rendering
- Comprehensive documentation and implementation guides
Changed
- 🏗️ Navigation System: Consolidated duplicate sitemap entries into unified comprehensive view
- 🎨 Visual Design: Updated to modern card-based layout with smooth transitions
- 📱 Mobile Experience: Enhanced mobile responsiveness and touch interactions
Fixed
- 🐛 Dark Mode Compatibility: Resolved background color issues in dark theme
- 🔧 Collection Filtering: Fixed functionality for dynamic content filtering
- 🔗 Link Navigation: Corrected internal link behavior and navigation flow
Technical Details
- Files Added:
_layouts/sitemap-collection.html, enhanced navigation data files - Files Modified: Main navigation configuration, sitemap pages
- Performance: Optimized DOM manipulation and content rendering
- Accessibility: Full screen reader support and keyboard navigation
Full Documentation: v0.5.0 Release Summary
0.4.0 - 2025-10-10
Added
- 📊 Comprehensive Site Statistics Dashboard: Complete analytics system for content insights
- Dynamic statistics generation from site content using Ruby script
- Real-time analytics showing content pieces, categories, tags, and word counts
- Interactive Bootstrap 5-based dashboard with responsive design
- Modular component architecture with 6 specialized statistics components
- Intelligent activity level calculations based on actual data distribution
- Professional tag cloud visualization with dynamic sizing
- Mobile-optimized layout with smooth animations and transitions
- 🔧 Advanced Data Processing Engine: Automated content analysis and metric generation
- Ruby-based statistics generator script analyzing posts, pages, and collections
- YAML data file generation with comprehensive site metrics
- Smart categorization and tagging analysis with usage frequency tracking
- Monthly content distribution analysis and trend identification
- 🎨 Enhanced User Experience Components: Professional dashboard interface
- Bootstrap 5-first design approach with minimal custom CSS
- Card-based layout for metric organization and visual hierarchy
- Interactive tooltips and progress indicators for enhanced usability
- Print-friendly styling and accessibility compliance (ARIA support)
- Smooth scroll navigation and fade-in animations for modern UX
Changed
- 📈 Activity Level Intelligence: Dynamic threshold calculation replacing static values
- Categories: High activity (≥70% of max), Medium (≥40% of max), Low (remainder)
- Tags: Frequently used (≥60% of max), Moderately used (≥20% of max), Occasionally used (remainder)
- Real-time adaptation to content distribution patterns
- 🏗️ Template Architecture: Modular include system for maintainable code
- Separated concerns across 6 specialized components
- Clean Liquid template syntax with proper error handling
- Optimized data processing without complex sorting operations
Fixed
- 🐛 Data Display Issues: Resolved template rendering and data access problems
- Fixed Liquid template syntax errors causing empty displays
- Corrected data structure references across all components
- Eliminated type conversion errors in sorting operations
- Proper handling of nested array data structures
Full Documentation: v0.4.0 Release Summary
0.3.0 - 2025-01-27
Added
- 🎨 Mermaid Diagram Integration v2.0: Comprehensive diagramming system
- Complete diagram support: flowcharts, sequence diagrams, class diagrams, state diagrams, ER diagrams, Gantt charts, pie charts, git graphs, journey diagrams, and mindmaps
- GitHub Pages compatibility with both local development and deployment
- Conditional loading for performance optimization
- Responsive design with automatic scaling across devices
- Dark mode support with forest theme optimization
- 📚 Comprehensive Documentation: Complete user and developer guides
- Step-by-step user guide with live examples
- Developer-focused integration tutorial
- Live test suite with validation examples
- Comprehensive troubleshooting guide
- 🧪 Automated Testing Framework: Complete validation system
- 16 automated tests covering all aspects
- Multiple test modes: quick, local, Docker, headless
- Cross-browser compatibility testing
- Performance validation and benchmarking
Changed
- 📁 File Organization: 53% reduction from 15 to 7 Mermaid-related files
- 🏗️ Architecture: Modular include system with clear responsibilities
- 📖 Documentation: Consolidated and improved documentation structure
Fixed
- 🔧 Configuration: Enhanced Jekyll and GitHub Pages compatibility
- ⚡ Performance: Optimized loading and rendering speed
- 🎯 Usability: Improved setup process and error handling
Full Documentation: v0.3.0 Release Notes
0.2.1 - 2025-09-30
Added
- Enhanced markdown linting configuration
- Improved Jekyll template support for link checking
- Better configuration for markdown validation
Changed
- Updated markdown-link-check configuration with Jekyll-specific patterns
- Relaxed line length requirements in markdownlint configuration
- Added support for more HTML elements in markdown
Fixed
- Improved markdown validation for Jekyll projects
- Better handling of Liquid templates in link validation
0.2.0 - 2025-09-01
Changed
- Version bump to 0.2.0 with improvements
0.1.9 - 2025-01-27
Added
- 🐳 Docker-First Development Evolution: Complete transformation to containerized development
- AI-powered
init_setup.shwith intelligent environment detection and auto-healing - Cross-platform Docker Compose configuration with Apple Silicon optimization
- Self-healing
_config_dev.ymlgeneration for Docker compatibility - Enhanced
install.shwith Docker-first optimization functions - Comprehensive Docker troubleshooting and platform detection
- AI-powered
- 🧠 AI-Powered Self-Healing Configuration: Intelligent automation and error recovery
- Auto-detection and resolution of Jekyll theme dependency issues
- Intelligent platform-specific optimizations (Intel/Apple Silicon)
- Automatic generation of Docker-compatible development configurations
- Smart error recovery with detailed logging and guidance
- 🚀 Enhanced Installation System: Robust, error-tolerant setup process
optimize_development_config()function for Docker-friendly configsfix_content_issues()function to resolve Jekyll include problems- Comprehensive error handling with actionable troubleshooting steps
- AI-generated documentation and setup instructions
Changed
- 🔧 Installation Philosophy: Shifted from traditional Ruby/Jekyll setup to Docker-first approach
- Disabled local theme dependencies to avoid gemspec issues
- Optimized for containerized development environments
- Enhanced cross-platform compatibility and consistency
Fixed
- 🐛 Theme Dependency Issues: Resolved Jekyll theme not found errors
- Commented out problematic Jekyll includes in README.md
- Disabled
remote_themein development configuration - Added essential Jekyll plugins for Docker compatibility
- 🍎 Apple Silicon Compatibility: Fixed Docker platform issues
- Added
platform: linux/amd64for Apple Silicon compatibility - Automatic platform detection and optimization
- Cross-architecture Docker image support
- Added
0.1.8 - 2025-01-03
Added
- Comprehensive Gem Automation System: Unified automation ecosystem
- Zero-click releases with multi-environment testing
- Production-ready CI/CD pipeline with GitHub Actions integration
- Semantic versioning, building, testing, and publishing automation
- Complete documentation consolidation following IT-Journey principles
- Remote Installation Support: Direct installation from GitHub
- Azure Static Web Apps Integration: Automatic workflow creation for Azure deployment
- Build Directory Structure: Added
build/directory for logs and temporary files - Enhanced Error Handling: Comprehensive error handling with colored output
- Cleanup Functions: Automatic cleanup of temporary files after remote installation
Changed
- Feature Documentation Restructure: Consolidated redundant automation feature entries
- Simplified Installation Process: Updated to use single install command
- Azure-Ready Configuration: Pre-configured directory structure for Azure Static Web Apps
- Enhanced Documentation: Updated with Azure deployment instructions
- Improved Help System: Added remote installation examples
Removed
- Redundant Documentation: Eliminated duplicate automation documentation files
Fixed
- Installation Script Compatibility: Made compatible with both local and remote execution
- Directory Structure: Optimized for Azure Static Web Apps deployment
- Markdown Lint Issues: Fixed all markdown formatting violations
0.1.7 - 2024-12-01
Added
- Bootstrap Jekyll theme for headless GitHub Pages CMS
- Basic theme structure with layouts, includes, and assets
- Jekyll compatibility with GitHub Pages
- Scripts for version management, build, and test automation
- GitHub Actions workflows for CI/CD
- Makefile for simplified command access
Changed
- Initial theme implementation and project structure
Documentation
For detailed documentation on features, systems, and configuration:
- Documentation Center - Complete documentation overview
- Release Documentation - Historical release information
- Feature Documentation - Detailed feature guides
- System Documentation - Core systems and automation
- Configuration Guides - Setup and configuration