OpenRiot v6.3 — Bitcoin

“Not your keys, not your coins.” — Everyone who ever used an exchange


Release Overview

OpenRiot v6.3 adds Bitcoin to the privacy wallet lineup alongside Monero. Where Monero is privacy by default, Bitcoin is transparency by design. Both matter. Both are now one Super+D (or Super+Space) away.

This release also fixes a critical production bug where the release notes pager auto-advanced without waiting for keypress, and optimizes install size with aggressive PNG compression.

Total changes: Bitcoin wallet, pager fix, setup.sh repair, image optimization.


₿ Bitcoin Wallet

The Problem: OpenRiot ships Monero for privacy, but some users need Bitcoin for transparent transactions, Lightning, or simple holdings. There was no native Bitcoin client in the app launcher.

The Fix: Added bitcoin-qt (Bitcoin Core v30.2) to the installer.

  • Package: bitcoin-30.2p0 from OpenBSD ports
  • Desktop entry: config/applications/bitcoin-qt.desktop
  • Rofi: Bitcoin Wallet appears after Monero Wallet in the app launcher
  • Window icon: Polybar shows when Bitcoin wallet is active
  • No build required: Native binary, installed via pkg_add

Trade-off: Unlike Monero’s pre-built tarball extract, Bitcoin Core requires ~500MB blockchain sync on first launch. This is Bitcoin’s design, not ours.

“Monero hides your balance. Bitcoin publishes it. Both have their place.”


🐛 Bug Fixes

Release Notes Pager Auto-Advanced

The Problem: The custom pager in v6.2 scrolled through all pages without waiting for user input. readKey() returned immediately because os.Stdin.Read() consumed buffered input that existed before raw mode was entered. TIOCSETA does not flush the input queue.

The Fix:

  • Changed unix.TIOCSETAunix.TIOCSETAF (flushes input buffer on raw mode entry)
  • Added n == 0 check after os.Stdin.Read() to handle empty reads
  • Removed key == 0 from AskShowReleaseNotes() “yes” condition — zero means read failed, not “accept default”

Impact: Installer now properly waits for Y/n keypress before showing release notes.

setup.sh Shallow Clone Update Failure

The Problem: On update, setup.sh failed with:

error: Could not read 2ad7255613f35b5a44f720245fedba28e681701f

git fetch --depth 1 on a shallow clone sometimes left origin/main pointing at an unresolvable commit object.

The Fix: git reset --hard now targets FETCH_HEAD instead of origin/main — the commit literally just downloaded, guaranteed to exist locally.


🖼️ Image Optimization

OpenRiot.png

Resized banner image from 3072×1360 to 1200×531. File size: ~6MB → ~960KB. No visual quality loss on web displays.

Lock Screen Backgrounds

All Locked/*.png files optimized with pngquant (8-bit palette reduction). Directory size: ~171MB → ~116MB. Average per-file: ~6.5MB → ~2MB. No visible banding on dark lock screen images.


📦 Package Changes

  • Added: bitcoin-30.2p0 — Bitcoin Core Qt wallet
  • Removed: None

🧾 Files Changed

File Nature of Change
source/installer/release_notes.go TIOCSETAF flush, readKey n==0 fix
source/commands/helpers.go AskShowReleaseNotes() wiring
config/applications/bitcoin-qt.desktop New desktop entry
config/rofi/apps.txt Bitcoin Wallet launcher entry
config/window/icons.toml bitcoin-qt, bitcoin icon mappings
install/packages.yaml bitcoin-30.2p0 package + config deploy
docs/v6.3-Release-Notes.md This file

🗣️ Final Words

“v6.0 was beauty. v6.1 was correctness. v6.2 was readability. v6.3 is choice.”

This release is dedicated to everyone who said “I love Monero, but sometimes I just need Bitcoin.” We heard you. Both wallets are now first-class citizens in OpenRiot.

Upgrade with the usual command:

curl -fsSL https://OpenRiot.org/setup.sh | sh

— The OpenRiot Crew

“Privacy and transparency are not opposites. They are tools for different jobs.”