# 0.39.4 — 2026-07-26 — "Real Pages"

## Fixed

- **Every release page on the website was serving a bare fragment instead of the page.** Opening a link such as `/changelogs/v0.39.1` returned about 500 bytes of unstyled HTML — a heading and a list, with no site header, no navigation, no styling and no page title — while the real, fully rendered page sat unreachable underneath it. All ninety-one releases were affected, and had been since the changelog section launched.

  The cause was a filename collision. The build writes one HTML fragment per release into the same public folder the release pages are generated into, and both wanted the same address: the fragment for `v0.39.1` was written as `v0.39.1.html`, which the host resolves for the URL `/changelogs/v0.39.1` before it ever considers the real page in the folder beside it. The fragment won every time. Fragments now use a `.frag` extension that cannot be mistaken for a page, so the two no longer compete.

  The bug was invisible during development, where the local server always renders the route and never the file — it only appeared once deployed, which is why it survived several releases. Both the build script and the loader now carry a prominent warning explaining why the extension must stay as it is.

- **The changelog fragments are no longer indexable.** They are served with an explicit `noindex` and a correct content type, so search engines index the ninety-one real release pages rather than the raw fragments behind them.
