OpenRiot v7.9.25 — The Binary Ate My Backup Tool
“1.8 TB is a lot of bytes. Just one of them is not.” — The OpenRiot Crew, discovering that ParseDriveSize was splitting on the space and reading only the last character
Release Overview
v7.9.25 swallows Migrate whole. 12,631 lines of Go, 38 files, 17
external deps — all baked into openriot --backup. No separate
binary, no config/bin/migrate, no symlink to chase. The backup
tool is now part of the operating system that ships inside the
wm that lives in your terminal.
Everything from v7.9.20 through v7.9.25 is here: the Firefox
private window that finally admits it’s private, the Disk Manager
that learned what bioctl -d actually wants, the clipboard
exorcism, the Kate installer, the mascot that crawled out of the
wallpaper, and the resume hook that remembers where you left off.
🤝 Migrate Joins the Binary (v7.9.25)
| Stat | Value |
|---|---|
| Lines of Go imported | 12,631 |
| Files added | 38 |
| External deps added | 1 (x/term) |
| Binary size increase | 0.8MB (15.3→16.1MB) |
| Old standalone binary | deleted |
| Rofi launcher | -e migrate → -e openriot --backup |
Every Migrate sub-package — drives/, platform/, handlers/,
screens/, state/ — lives under source/migrate/. The 11
Linux-only files were deleted. What remains is pure OpenBSD:
syscall mounts, Getfsstat drive detection, no lsblk, no
udisksctl, no cryptsetup. Zero external binary deps. Zero
CGO. Zero apologies.
The --backup command wraps it all: openriot --backup launches
the full Bubble Tea TUI with drive selection, space validation,
home folder scanning, multi-phase backup/restore, and SHA-256
verification — all inside your existing terminal. No new install
step. No config/bin/migrate that might be stale. Just a flag.
| File | Change |
|---|---|
source/migrate/* |
NEW — 38 files, 12,631 LOC |
config/bin/migrate |
REMOVED — now openriot --backup |
config/rofi/utilities.txt |
-e migrate → -e openriot --backup |
source/commands/commands.go |
--backup command registered |
source/go.mod |
+golang.org/x/term |
🕵️ Firefox Private Browser Icon (v7.9.24)
i3’s get_tree reports class=firefox for both normal and
private windows. The only difference is the window title
containing “Private Browsing”. Three separate code paths now
detect this and emit firefox-private for icon lookup.
The icon was debated for a full thirty seconds: agent hat →
incognito dot . At 14px in polybar, the dot wins.
| File | Change |
|---|---|
source/windowicon/windowicon.go |
IsPrivateFirefox() helper |
source/workspaceicons/workspaceicons.go |
emit firefox-private |
source/window/switch.go |
detect private in walk |
source/polybar/polybar.go |
detect private in |
collectAllClasses and |
|
collectWindows |
|
config/window/icons.toml |
→ |
⌨️ Kate IDE (v7.9.22)
Prompted during setup: “Would you like to install Kate (Code IDE)? [y/N]”. Default is no, saving ~300MB of KDE deps. When installed: Ayu Dark theme, BreezeDark UI, FiraCode Nerd Font. Rofi entries auto-stripped when declined.
🖼️ Mascot Wallpapers (v7.9.22-23)
All 20 backgrounds and 60+ lock screens rebuilt. Grids. CRT glow. The ghost from the install screen is everywhere.
⌨️ Clipmenud Exorcism (v7.9.21)
clipmenud’s XFixes polling was dropping key-press events under load. The exec line was uncommented. The comment said “disabled” but the binary ran. Polybar intervals staggered to coprime values. Rightmost module group: purple → cyan-dim.
🔌 Post-Resume (v7.9.17)
openriot --resume via /etc/apm/resume: settle, xrandr, laptop
panel, lidaction sysctls, WiFi, WireGuard, done.
🔐 Disk Manager (v7.9.18-19)
openriot --disk: Bubble Tea TUI for mount, umount, format,
encrypt, benchmark. Softraid-aware. bioctl -d needs the
volume name. The volume. Name.
🧾 Files Changed (v7.9.20 — v7.9.25)
| File | Change |
|---|---|
source/migrate/ |
NEW — Migrate backup/restore |
| (38 files) | TUI, 12,631 LOC |
source/go.mod |
+golang.org/x/term |
config/bin/migrate |
REMOVED → openriot --backup |
config/rofi/utilities.txt |
-e migrate → |
-e openriot --backup |
|
source/windowicon/ |
IsPrivateFirefox() helper; |
windowicon.go |
firefox-private in class |
| collection | |
source/workspaceicons/ |
firefox-private detection |
workspaceicons.go |
|
source/window/switch.go |
firefox-private detection |
source/polybar/polybar.go |
firefox-private detection; |
| unsafe→binary.LittleEndian | |
source/network/network.go |
Log errors in |
| CheckConnectivity | |
source/crypto/crypto.go |
Log 6 swallowed errors |
source/installer/crush.go |
Log fish completions errors |
source/installer/kate.go |
NEW — Kate installer |
source/installer/cmd.go |
Wire Kate into setup.sh |
source/installer/packages.go |
cmd.Stdin; braille spinner; |
| library mismatch detection; | |
| 60m 0ad timeout | |
source/imaging/download.go |
.tgz firmware URL |
source/imaging/webp.go |
assets/ dir, PNG cleanup |
source/resume/resume.go |
NEW — post-resume restore |
source/display/hdmi.go |
RestoreDisplays(), lidaction |
source/backgrounds/ |
findFirstBackground() |
backgrounds.go |
|
source/disk/ (17 files) |
NEW — Disk Manager TUI |
source/commands/commands.go |
--disk, --resume, |
--backup commands |
|
source/settings/settings.go |
Disk Manager menu entry |
Makefile |
image: all rebuilds first |
config/window/icons.toml |
firefox-private →; |
| misc new icon mappings | |
config/rofi/apps.txt |
Utilities + Blockchain |
| submenus | |
config/rofi/utilities.txt |
NEW — Utilities submenu |
config/rofi/blockchain.txt |
NEW — Blockchain submenu |
config/rofi/games.txt |
Cromag Rally; kdiamond out |
config/i3/config |
Floating rules; clipmenud off |
install/packages.yaml |
kate, cromagrally, fio, |
| apmd hook | |
assets/disk.webp |
NEW — Disk Manager |
assets/migrate.webp |
NEW — Migrate UI |
assets/games.webp |
NEW — Games menu |
Locked/43-60.webp |
NEW — 18 lock screens |
backgrounds/06-15.webp |
Mascot branded |
backgrounds/19-24.webp |
NEW — 6 backgrounds |
README.md |
Table fixes, TOC, sections |
VERSION |
7.9.23 → 7.9.25 |
🗣️ Final Words
“The binary ate my backup tool. I’m not even mad. That’s 12,631 lines I don’t have to update separately ever again.” — The OpenRiot Crew, watching
make installfinish in approximately the same time it used to take just to copy the old binary