Skip to content

v0.74.0 — the changelog moves to the help site

The Changelog tab has never rendered the changelog. It bundles CHANGELOG.md?raw, splits it on # , and prints each line as a <Text> with a regex for bullets — so links arrive as literal text, tables as pipes, and the 123 per-version notes the changelog only links to do not arrive at all. Everything under "Released" is a list of markdown that goes nowhere. The history is shipped and unreadable.

The fix is not a better renderer in the app. docs/help is already a wiki, already rendered by ursa, already published on its own origin, and the app already embeds it for the Guide. So the changelog is hoisted into that wiki before it builds — the file, and every document reachable from it, rewritten so the copy is internally consistent — and the app's Changelog tab becomes what the Guide tab already is: the wiki, showing a page.

Hoisting rather than authoring, because CHANGELOG.md is a working file at the repo root that every release edits, and a second copy under docs/help/ would be stale by the next commit. The generated tree is gitignored for the same reason.

Help site

  • [x] Hoist the changelog, and everything it links to, into the wiki at build time. A dependency-free apps/help/scripts/hoistChangelog.mjs that runs before ursa on build, dev and test. Transitive, because a changelog whose per-version notes 404 is the same unreadable history in a nicer font: it follows relative markdown links from CHANGELOG.md and copies every document it reaches into docs/help/changelog/, rewriting links so hoisted documents point at each other, documents already in the wiki are linked rather than copied a second time, and anything that cannot be hoisted — the source files the notes cite, and the ~130 links in this corpus that are already broken in the repo — degrades to its own link text rather than to a 404.
  • [x] Point the app's Changelog at that page. The tab renders HelpWiki on changelog/index, exactly as the Guide tab renders it on a wiki page; the CHANGELOG.md?raw import, the bespoke parser's second caller, and the accordion go with it. One constant (HELP_CHANGELOG_PAGE) names the page on the app's side and the script names the directory on the wiki's, with a contract test holding the two together — a rename that missed one would leave the tab on a 404.