OpenRiot v7.9.7 — The One That Wraps Up The Loose Ends
“A color wheel is not a destination. It is a commitment to never seeing #7aa2f7 on your screen again. v7.9.7 is the release where we stopped seeing it everywhere.” — The OpenRiot Crew, at 4:20 AM, grepping for hardcoded paths
Release Overview
v7.9.6 gave the music player its soul back. v7.9.7 gives the
color system a spine. The shared color system — config/colors.toml
as the canonical source of truth, source/theme/colors.go as the
runtime engine — now feeds the Go TUIs (nmtui, resolution, rofi,
window switcher, settings). The rofi configs and polybar config are
static but use the same palette. Future installer template
substitution will make them dynamic too.
This release also fixes the rmpc layout so the volume indicator
(|0-100|) sits below the progress bar where it belongs, and
removes the dead header_right pane from the top bar.
Shared Color System — config/colors.toml is the canonical
palette. It defines base, accent, semantic, and compat color
sections. source/theme/colors.go reads it at init() and exposes:
Palette— raw hex strings (for rofi theme strings, polybar config substitution)Lipgloss— pre-builtlipgloss.Styleobjects (for Go TUI views)GetAccent()— current accent color as hex stringGetSemantic()— semantic colors by name (error, warning, success, info, cyan)GetSecColor()— WiFi security level colors (0=open through 4=hidden)GetCompat()— legacy aliases (green, violet, blue, dim-gray, white)
nmtui migrated — 14 hardcoded hex values replaced with
theme.Lipgloss.* and theme.GetSecColor(). WiFi security level
colors now use the shared secColors array.
resolution migrated — 6 hardcoded hex values replaced with
theme.Palette.* (the raw hex map).
rofi/window/settings migrated — The border color in rofi
theme-str strings now uses theme.GetAccent(). Shadowed theme
variables in rofi.go and settings.go were renamed to avoid
collision with the package import.
rmpc Layout Fix — The top bar now has 2 panes (header_left
and header_center). The dead header_right pane is gone. The
bottom bar has 3 panes: input_mode (left), progress_bar
(center with queue stats), and volume (right). The volume
indicator (|0-100|) is where it should be — below the progress
bar.
rmpc Config in Repo — config/rmpc/config.ron is now tracked in
the repo. Previously the installer generated it from a heredoc in
packages.yaml. The heredoc indentation was also fixed.
Documentation Cleanup — docs/Icons.md, docs/ThinkPad-X1-Carbon.md,
docs/v3.1-Release-Notes.md, docs/Color-System.md,
docs/Output-Format.md, and docs/Notification-System.md were
removed (stale or superseded). scripts/Gurk.md was moved from
docs/ where it belonged. AGENTS.md rule 1 now explicitly
names docs/Agents-Lessons.md. Hardcoded paths in docs/Agents-Lessons.md
(/home/grendel → $HOME, ~ → $HOME) were fixed. References
to deleted docs in docs/Architecture.md were updated.
🧾 Files Changed
| File | Nature of Change |
|---|---|
config/colors.toml |
NEW — canonical TOML palette |
source/theme/colors.go |
NEW — reads TOML, exposes Palette/Lipgloss, |
| GetAccent, GetSemantic, GetSecColor, GetCompat | |
source/nmtui/view.go |
14 hardcoded hex → theme.Lipgloss.* and |
theme.GetSecColor() |
|
source/resolution/view.go |
6 hardcoded hex → theme.Palette.* |
source/rofi/rofi.go |
#9ECE6A → theme.GetAccent(); |
fixed shadowed theme var |
|
source/window/switch.go |
#9ECE6A → theme.GetAccent(); |
added theme import |
|
source/settings/settings.go |
#997de1 → theme.GetAccent(); |
fixed shadowed theme var |
|
config/rmpc/themes/neo-tokyo.ron |
Top: 2 panes; bottom: 3 panes |
| (input_mode + progress_bar + volume) | |
config/rmpc/themes/neo-tokyo.ron.tmpl |
Same layout changes |
config/rmpc/config.ron |
NEW — tracked in repo |
install/packages.yaml |
Fixed rmpc config (now uses configs copy) |
docs/Icons.md |
REMOVED — stale |
docs/ThinkPad-X1-Carbon.md |
REMOVED — stale |
docs/v3.1-Release-Notes.md |
REMOVED — pre-7.0 stale |
docs/Color-System.md |
REMOVED — superseded by colors.toml |
docs/Output-Format.md |
REMOVED — stale |
docs/Notification-System.md |
REMOVED — stale |
docs/Architecture.md |
Fixed stale references to deleted docs |
docs/Agents-Lessons.md |
Fixed hardcoded paths |
AGENTS.md |
Rule 1 explicitly names docs/Agents-Lessons.md |
scripts/Gurk.md |
Moved from docs/ |
🔮 What’s Next
The rofi and polybar config files are static. They use the same
palette colors but are not yet driven by the shared color system.
When the installer learns template substitution for these configs
(the way it already does for some shell configs), the entire desktop
will be configurable through config/colors.toml alone.
🗣️ Final Words
“The color wheel is not a feature. It is a stance. Every shade of blue that survived in this codebase was a small act of resistance against the unified aesthetic. v7.9.7 is the final sweep. If you find a
#7aa2f7anywhere after this release, it is an intruder. Treat it accordingly.” — The OpenRiot Crew, at 4:20 AM, grepping for hex codes that do not belong
v7.9.7 is the mop. The color wheel is complete. The Go TUIs reference a single source of truth. The rmpc layout makes sense. The docs are clean. The release notes in the README will be trimmed to only cover v7.9.0+ — if you need the older history, it lives at GitHub where it belongs.
— The OpenRiot Crew
“Your desktop should have one canonical palette. Every file, every config, every pixel should reference the same source. v7.9.7 is the release where that became true.”