OpenRiot v6.2 — Readable
“The best documentation is the kind you actually read.” — Someone who never used
man grep
Release Overview
OpenRiot v6.2 fixes the most embarrassing UI mistake in recent memory:
the release notes display. We spent hours crafting beautiful markdown
release notes for v6.1, then piped them through less — a tool designed
for reading kernel panics, not human prose.
The result? A screen full of ~ tildes. An (END) prompt that confuses
everyone. A : command line that looks like a shell prompt. Users had no
idea the release notes were even there, let alone how to read them.
Total changes: one custom pager, native termios, an ask prompt, and one dead dependency removed.
📖 Release Notes: Now Actually Readable
The Problem: less is a file viewer, not a release notes renderer.
It shows tildes for empty lines, prints (END) at the bottom, and drops
you into a command mode with : that looks like a broken terminal. Users
saw a wall of ~ and thought the installer had crashed.
The Fix: Replaced less with a custom Go pager that:
- Reads terminal height via
golang.org/x/sys/unix.IoctlGetWinsize— nosttyshell-out - Sets raw mode via
unix.IoctlGetTermios/unix.IoctlSetTermios— single-key input without pressing ENTER - Prints one screen of content at a time — no tildes, no
(END), no: - Prompts with
-- More -- (press any key to continue, q to quit)— plain English - Quits immediately on
q, continues on any other key - Returns to normal shell prompt when done — no mode confusion
Implementation:
pageSize := terminalHeight() - 3 // header + footer + prompt
readKey("-- More -- (press any key to continue, q to quit)")
golang.org/x/sys/unix is already a dependency. No new packages. No
stty. No less.
“If your release notes need a man page to explain how to read them, you have failed.”
🔔 Ask Before Showing
The Problem: Release notes blasted onto the screen the moment install finished, scrolling past the final status lines before the user could read them. There was no choice — you got the notes whether you wanted them or not.
The Fix: The installer now asks:
[ASK] Read v6.2 Release Notes? [Y/n]
Defaults to yes (press Y, y, or Enter). Press N, n, Q, or q to skip. If the release notes file is missing, the question is skipped silently.
The prompt uses the same readKey() raw-mode logic as the pager itself,
so it works with a single keystroke — no ENTER required.
📐 Page Size Accounting
The Problem: The first page of release notes included the header
(====, title, ====) and the last page included the footer, but the
page-size math only subtracted room for the prompt. Result: the footer
or final lines scrolled off-screen.
The Fix: Header and footer lines are now part of the content slice
that gets paginated. pageSize = terminalHeight() - 3 correctly
accounts for the blank line, prompt, and keypress newline between pages.
📦 Package Changes
- Added:
lowdown— OpenBSD-native markdown renderer for terminal output - Removed:
lessas a runtime dependency for release notes (still in base system) - Removed:
sttyshell-outs — replaced with native Go termios - New:
docs/*deployed to~/.local/share/openriot/docs/during install
🧾 Files Changed
| File | Nature of Change |
|---|---|
source/installer/release_notes.go |
Custom pager with native termios |
source/commands/helpers.go |
Calls AskShowReleaseNotes() at end |
install/packages.yaml |
Added lowdown, docs deployment |
AGENTS.md |
Added release notes requirements |
docs/v6.2-Release-Notes.md |
This file |
🗣️ Final Words
“v6.0 was about beauty. v6.1 was about correctness. v6.2 is about not being so clever that you forget how normal people think.”
This release is dedicated to everyone who ever ran openriot --install,
saw a wall of tildes, and immediately ran kill -9 because they thought
the installer had hung. We see you. We understand. And we’re sorry.
The release notes are now readable by humans. What a concept.
Upgrade with the usual command:
curl -fsSL https://OpenRiot.org/setup.sh | sh
— The OpenRiot Crew
“Good software is invisible. Bad software is a pager you need a manual to exit.”