Public changelog for Fohlio, hosted on GitHub Pages. Built with Jekyll so PMs can add new releases by editing a single Markdown file — no HTML required.
Live site: (set after enabling GitHub Pages — see below)
Adding a release takes ~2 minutes and a single file.
-
Copy the template. Copy
RELEASE_TEMPLATE.md(in the repo root) into the_releases/folder and rename it to something like2026-06-v3.0.0.md. The filename is just for your own organization — it doesn't appear anywhere on the site. -
Fill in the frontmatter at the top of the file:
--- version: "3.0.0" # shown as "v3.0.0" on the page date: "June 2026" # display date for the version sidebar order: 300 # higher = newer (controls sort) summary: "One-line summary shown next to the version number." items: - title: "Headline of the change" category: procurement # procurement | specifications | management description: "1–3 sentences. What changed and why a customer cares." - title: "Another change" category: specifications description: "..." ---
-
Commit & push to
main. The GitHub Actions workflow at.github/workflows/pages.ymlrebuilds and redeploys the site automatically. Allow ~1 minute.
That's it. No HTML, no CSS, no JavaScript to touch.
| Field | Required | Notes |
|---|---|---|
version |
yes | The semver string. Displayed as vX.Y.Z. |
date |
yes | Free-form display date — "June 2026" or "2026-06-12". |
order |
yes | Integer sort key. Highest renders at the top. Use version × 100 (e.g., 2.9.0 → 290) so spacing is consistent. |
summary |
yes | One-line release summary shown in the left sidebar. |
items |
yes | List of cards (one per shipped change). |
items[].title |
yes | Card heading. |
items[].category |
yes | One of the keys in _data/categories.yml. Currently: procurement, specifications, management. |
items[].description |
yes | 1–3 sentence card body. Plain text. |
Edit _data/categories.yml and add an entry. The filter bar updates automatically. If you want a new tag color, also add a matching .tag-<name> CSS rule in _layouts/default.html (search for tag-feat to see the pattern).
bundle install
bundle exec jekyll serve --livereload
# open http://localhost:4000Requires Ruby 3.x. On macOS: brew install ruby if needed.
.
├── _config.yml Jekyll config
├── _data/
│ └── categories.yml Tag/filter definitions (label, color, icon)
├── _layouts/
│ └── default.html Page chrome — header, hero, filter bar, footer, CSS, JS
├── _releases/
│ ├── 2026-05-v2.9.0.md One file per release
│ ├── 2026-03-v2.8.0.md
│ └── 2026-01-v2.7.0.md
├── RELEASE_TEMPLATE.md Copy this into _releases/ when adding a release
├── index.html Page body — loops over _releases
├── Gemfile Ruby deps (github-pages gem)
├── .github/workflows/
│ └── pages.yml Build + deploy on push to main
└── README.md This file
After pushing this repo to GitHub:
- Repo → Settings → Pages
- Source: GitHub Actions
- Push to
main— the workflow in.github/workflows/pages.ymlbuilds and publishes. The URL appears under Settings → Pages.
Custom domain (e.g., releases.fohlio.com): add a CNAME file at the repo root with the domain, configure DNS at the registrar.