Skip to content
This repository was archived by the owner on Aug 24, 2026. It is now read-only.

Add a changelog page generated from CHANGELOG.md - #49

Merged
mihneaptu merged 1 commit into
mainfrom
feature/site-changelog
Jul 28, 2026
Merged

mihneaptu merged 1 commit into
mainfrom
feature/site-changelog

Conversation

@mihneaptu

Copy link
Copy Markdown
Owner

The docs site had no release history. CHANGELOG.md lives outside site/, and GitHub Pages serves site/ verbatim with no build step, so the page cannot fetch it at runtime.

scripts/build-changelog.js renders the changelog into marked regions of site/changelog.html (intro, toc, releases) and the output is committed. npm test re-renders and fails when the committed page has drifted, so CHANGELOG.md stays the single source of truth rather than becoming a thing to remember to copy.

npm run build:changelog                    # write the page
node scripts/build-changelog.js --check    # report drift, write nothing

The markdown subset is exactly what CHANGELOG.md uses: ##/### headings, bullets with wrapped continuation lines, paragraphs, inline code, links, emphasis. Anything outside it — fenced code, tables, nested bullets, a non-http link scheme — fails the build naming the offending line, instead of rendering as literal markup on the site.

Design

Reuses the docs page shell (.docs-section rhythm, sticky TOC, hairlines) and adds only a release header row and mono Added/Changed/Fixed eyebrows. Group colors key off the heading text, so a new section type in the changelog renders as the neutral default rather than breaking the page. The newest dated release carries a "Latest" pill; an Unreleased heading carries "In progress".

Two fixes found while verifying

Header overflow (regression from this change). The new nav item made the widest desktop nav row need ~930px, but the mobile nav still collapsed below 900px. Between those widths the right header pill ran past the rail and gave every page a horizontal scroll. Confirmed it was this change, not pre-existing, by toggling the new item off during a width sweep. Breakpoint raised to 939px, with a test pinning it against the measured width so it can't be lowered silently.

The theme toggle's moon rendered as a lopsided blob rather than a crescent. Its inner arc asked for radius 7 across endpoints 16.3 apart; per the SVG spec a radius too small to span its endpoints is scaled up until it fits, so the terminator became a semicircle mirroring the outer edge and the shape lost its taper. It also overflowed the top and right of its 24×24 viewBox. Replaced with geometrically consistent arcs on all three pages.

Testing

npm test — 184 tests, 0 failures (15 new; the 2 skipped are the FUSION_INTEGRATION-gated live tests, skipped before this too).

Verified in a real browser over HTTP:

  • Both themes; every width from 320 to 1920 with no horizontal overflow on any of the three pages
  • Contrast clears the 4.5:1 AA floor for small text in both themes (lowest 4.91 light, 5.07 dark)
  • TOC scroll-spy, anchor links, mobile dropdown in the newly collapsed 900–939px band
  • No console errors; all local links resolve 200

The new tests cover drift, region markers, one section and TOC entry per release, escaping, links, emphasis, wrapped-bullet joining, rejection of unsupported markdown and link schemes, render idempotence, cross-page linking, and the nav breakpoint.

Also wired Changelog into the nav and footer of the existing pages, llms.txt, and docs/testing.md.

The docs site had no release history. CHANGELOG.md lives outside site/,
and GitHub Pages serves site/ verbatim with no build step, so the page
cannot fetch it at runtime. scripts/build-changelog.js renders the
changelog into marked regions of site/changelog.html and the output is
committed; npm test re-renders and fails when the committed page has
drifted, so CHANGELOG.md stays the single source of truth.

The markdown subset is exactly what CHANGELOG.md uses. Anything outside
it (fenced code, tables, nested bullets) fails the build naming the
offending line, rather than rendering as literal markup on the site.

Two fixes found while verifying in a browser:

- The new nav item made the widest desktop nav row need ~930px while the
  mobile nav still collapsed below 900px, so every page scrolled
  sideways between those widths. Breakpoint raised to 939px, with a test
  pinning it against the measured width.
- The theme toggle's moon asked for an inner-arc radius of 7 across
  endpoints 16.3 apart. SVG scales a too-small radius up until it fits,
  so the terminator became a semicircle mirroring the outer edge and the
  crescent lost its taper; it also overflowed its viewBox.

Verified in a browser: both themes, 320-1920px with no horizontal
overflow on any page, contrast above the 4.5:1 AA floor for small text
in both themes, TOC scroll-spy and mobile dropdown working, no console
errors.
@mihneaptu
mihneaptu merged commit 0dab1f3 into main Jul 28, 2026
9 checks passed
@mihneaptu
mihneaptu deleted the feature/site-changelog branch July 28, 2026 11:59
@mihneaptu mihneaptu mentioned this pull request Jul 28, 2026
mihneaptu added a commit that referenced this pull request Jul 28, 2026
Fold the Unreleased section into 1.1.0 and redate it to 2026-07-28.

The changelog page (#49) landed under Unreleased, but its code is in the
same tree as the rest of 1.1.0, so tagging with the section split would
publish a release whose own changelog says part of it is unreleased. The
date moves off 2026-07-27 because #45 through #49 all merged on the 28th.

Also record the bundled profile model refresh from #38 and #41, which
changed shipped model IDs and was itemized in neither section.

site/changelog.html is regenerated from CHANGELOG.md; npm test passes
(184 tests, 182 pass, 2 skipped).
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant