docs: generate release notes from CHANGELOG, expand v2026.9.14 entry

Merged
MI
2mo ago
+83-29

Why

Every GitHub release shipped an identical static body: a downloads table, four first-run steps, and a requirements list. Nothing about what actually changed. That is a large part of why #140, #141 and #143 were all people asking whether the project was still being updated: from the Releases page you could not tell one release from another.

The boilerplate also contained a line that the previous PR made wrong:

4. Access the web dashboard at `http://127.0.0.1:18789`

That hard-codes the port immediately after #147 made it configurable, and it ignores the auth token, so following it lands you on the Control UI's manual token prompt.

What changed

Release notes are generated from CHANGELOG.md. A new Build release notes step extracts the ## v<version> section with awk and composes it with the downloads table, first-run steps and requirements, then passes it to softprops/action-gh-release via body_path instead of an inline body.

awk -v hdr="## v${VERSION}" '
  index($0, hdr) == 1 { flag = 1; next }
  /^## v/ { if (flag) exit }
  flag { print }
' CHANGELOG.md

If the section is missing it falls back to a link to CHANGELOG.md rather than producing an empty release body.

First-run steps corrected. They now point at the tokenised dashboard URL shown on the dashboard card, mention that the port follows gateway.port, and warn that upgrading should be an install-over-the-top because uninstalling destroys the roughly 500MB rootfs and all config.

The v2026.9.14 changelog entry was incomplete. It was written before several of the fixes in #147 were found. Added:

  • the PRoot libandroid-shmem fix, which is the headline bug: setup could not complete at all on a fresh install, and it now leads the entry
  • the guaranteed gateway.auth.token, so the tokenised dashboard URL works
  • the splash-screen repair move (#125)
  • the stale node token fix (#94)
  • a Performance section: parallel Node.js download, deferred node-gyp toolchain, leaner apt and npm, the quadratic log pipeline
  • AGENTS.md and the no-dash style rule
  • corrected test counts (25 Dart, 18 npm)

Verification

I ran the exact awk extraction against the real CHANGELOG.md before shipping it:

VERSION=2026.9.14
extracted bytes: 9012
OK: stops before the previous release
OK: headline present

It correctly stops at the ## v1.8.6 heading rather than swallowing older entries, and includes the libandroid-shmem headline. npm test 18/18, including the no-dash guard.

Note

The already-published v2026.9.14 release notes were updated by hand, since it shipped before this change. All five assets are untouched. Future releases pick the notes up automatically.


Summary by cubic

Generates GitHub release notes from CHANGELOG.md so releases no longer ship identical static boilerplate, and fills in the missing v2026.9.14 changelog entries that were written before several fixes were found.

  • The release workflow now extracts the ## v<version> section with awk and passes it via body_path; missing sections fall back to a CHANGELOG.md link.
  • First-run steps now point at the tokenised dashboard URL, mention gateway.port, and warn that uninstalling destroys the rootfs and config.
  • The v2026.9.14 entry gains the PRoot libandroid-shmem fix (setup could not complete on fresh installs), the guaranteed gateway.auth.token, the splash-screen repair move, the stale node token fix, a Performance section, AGENTS.md, and corrected test counts (25 Dart, 18 npm).

Summary by CodeRabbit

  • Bug Fixes

    • Fixed setup failures on new installations by restoring a missing PRoot dependency.
    • Added automatic repair for frozen setups.
    • Improved dashboard token generation and cleared stale node token caches.
    • Ensured tokens are excluded from version-change exports.
  • Performance

    • Improved download, setup, logging, and status-check performance.
  • Documentation

    • Expanded release notes with custom port, first-run, download, and system requirement guidance.
    • Added verified release details and updated maintenance and testing information.