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 Systemconfig/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-built lipgloss.Style objects (for Go TUI views)
  • GetAccent() — current accent color as hex string
  • GetSemantic() — 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 Repoconfig/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 Cleanupdocs/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 #9ECE6Atheme.GetAccent();
  fixed shadowed theme var
source/window/switch.go #9ECE6Atheme.GetAccent();
  added theme import
source/settings/settings.go #997de1theme.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 #7aa2f7 anywhere 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.”

← Back to README