OpenRiot v7.9.12 — The One That Stopped Lying to Itself
“The WiFi said it was connected. The packets disagreed.” — The OpenRiot Crew, discovering that someone was rewriting the route table behind the tunnel’s back.
Release Overview
v7.9.11 fixed the boot sequence: polybar waits for i3 IPC before
launching, the xenodm greeter mirrors displays, and sct replaced
redshift — a daemon that phoned home to NYC for sunrise data it
never used. v7.9.12 continues the cleanup. The WireGuard toggle no
longer breaks the internet. The update checker is quieter. And your
transmission settings survive reinstall.
WireGuard: Trust the Tool
Start() and Stop() were calling ReconnectWifi() after every
wg-quick operation. That ran /etc/netstart on the wireless
interface — a blunt instrument that flushed wg-quick’s carefully
constructed route table (0.0.0.0/1, 128.0.0.0/1, and the
endpoint-specific route via the LAN gateway) and replaced it with a
generic DHCP default. The tunnel came up, then the routes vanished.
Traffic leaked. Users toggled back off, waiting for the dust to
settle, toggled back on — repeat.
The fix: remove the meddling. Start() is now pure wg-quick up.
Stop() is pure wg-quick down. We also added Restart() — Stop,
500ms sleep, Start — for the clean WiFi+VPN reconnect path. The
nmtui module uses it when switching networks.
| File | Change |
|---|---|
source/wireguard/wireguard.go |
Removed ReconnectWifi() |
| calls from Start/Stop; added | |
| Restart() for clean reconnects | |
source/nmtui/update.go |
Uses wireguard.Restart() on |
| WiFi reconnect instead of | |
| inline stop/sleep/start |
Privacy: Quieter Update Checks
The --update-status polybar module hit openriot.org/VERSION every
3600 seconds with no opt-in and showed ? when offline. Both were
visually noisy. The interval is now 14400 seconds (4 hours). When
offline, the bar shows the up-to-date arrow instead — ? is reserved
for actual unknown states.
| File | Change |
|---|---|
config/polybar/config.ini.tmpl |
interval = 14400 |
source/update/update.go |
Offline state returns |
noUpdateIcon instead of ? |
Config Preservation
Reinstalling OpenRiot overwrote ~/.config/transmission/
settings.json with defaults, wiping ration limits, port bindings,
and the like. preserve_if_exists: [settings.json] now skips the
copy if the file already exists. User configs survive reinstall.
| File | Change |
|---|---|
install/packages.yaml |
Added preserve_if_exists for |
| transmission settings.json |
Since v7.9.11 (Recap)
Polybar Clickability
Removed the sleep 5; polybar main race condition. i3 confirms its
IPC socket is ready before polybar starts. Removed soft restart
(polybar-msg cmd restart) which reused a broken window hierarchy.
| File | Change |
|---|---|
config/i3/config |
IPC-gated polybar launch; |
| removed soft restart |
xenodm Greeter Display Mirroring
The login widget now renders on all connected outputs via --same-as.
No more contorting toward a closed laptop. xconsole is gone; the
background is solid dark.
| File | Change |
|---|---|
config/xenodm/Xsetup_0 |
NEW — mirrors displays |
install/packages.yaml |
Install with .orig backup |
Night Light: sct, Not redshift
sct 4000 sets the temperature in-process. No fork, no background
job, no NYC sunrise API. Get() reads a file. Nothing else.
| File | Change |
|---|---|
source/nightlight/nightlight.go |
sct replaces redshift daemon |
source/commands/helpers.go |
Symmetric toggle + notify |
install/packages.yaml |
sct-0.5 replaces redshift |
Games
Zero A.D. and Extreme Tux Racer added. Cleaned commented-out entries.
| File | Change |
|---|---|
config/rofi/games.txt |
Added Zero A.D., Tux Racer |
install/packages.yaml |
0ad + tuxracer packages |
Test Infrastructure
TMPDIR=$(HOME)/.tmp on all test targets. OpenBSD mounts /tmp with
noexec; Go test compiles there. Permission denied. Fixed.
| File | Change |
|---|---|
Makefile |
TMPDIR for tests; column -t |
Documentation
Nine stale docs deleted. Lessons merged into AGENTS.md. Colors.md moved to Proposals/.
| File | Change |
|---|---|
docs/* |
Deleted 10 stale files |
Proposals/Colors.md |
Moved from docs/ |
🧾 Files Changed
| File | Change |
|---|---|
source/wireguard/wireguard.go |
Removed ReconnectWifi(); |
| added Restart() | |
source/nmtui/update.go |
Uses wireguard.Restart() |
source/update/update.go |
Offline → up-to-date icon |
config/polybar/config.ini.tmpl |
Interval 3600 → 14400 |
install/packages.yaml |
preserve transmission settings |
🗣️ Final Words
“v7.9.10 made sure your packets went to the right router. v7.9.11 made sure you could click the bar that told you they arrived. v7.9.12 makes sure they don’t disappear when you turn the tunnel on.”
The packets were always right. The routes were the liar.
Ship it.