Releases: vladimirperovic/minimalrouter
Release list
Minimal Router OS v0.1.6 (Beta)
Minimal Router OS v0.1.6
Status: Beta / controlled pilot
v0.1.6 is a dashboard release. It standardises the table and form presentation
across every page, adds a selectable appearance for the dashboard shell, and
repairs several defects found while that work was in progress. There are no
routing, firewall, DHCP or update-trust behaviour changes in this release.
Highlights
- Selectable appearance. The topbar carries an appearance switcher offering
the default look plus three alternatives: Console (dense operator console,
monospaced figures, hairline grid), Atelier (spacious, settings-app rows,
soft elevation) and Topology (network-first, teal, addressing in mono).
The choice is remembered per browser and is independent of the existing
light/dark control, so each appearance has both a light and a dark form. - A skin is a CSS layer keyed off
data-skinon the document element. It
remaps the--classic-*tokens the shell already reads and applies a focused
set of structural overrides on top. The default appearance ships no stylesheet
at all, so an appliance where nothing is selected renders exactly as v0.1.5
did. - Unified table standard across the remaining pages, so connected devices,
reservations, port forwards, firewall rules, WireGuard peers, snapshots and
audit events share one row, header and action presentation. - Compact form standard across all pages, with LAN & DHCP grouped into
labelled WAN / LAN / DHCP / DNS sections and per-section save actions. - Offline devices can be woken with a Wake-on-LAN magic packet; firewall rules,
WireGuard peers and DHCP reservations can be edited in place. - Connected devices show a per-device traffic column, and Gateway Health shows
service recovery action tiles alongside public-IP history. - Application memory is reported separately from reclaimable file cache.
- Configuration snapshots can be deleted from the dashboard.
- Boot activity is sampled at one-second resolution.
Fixes
- WAN / PPPoE fields collapsed to zero width. The fieldset heading was
floated to pull it off the border line, and the following element cleared that
float. In the demo build the element immediately after the heading is the WAN
toggle, which is hidden and therefore clears nothing, so the field grid was
laid out beside a full-width float. Headings now sit in normal flow inside the
card and the float is gone. - Fieldset groups lost their accessible name when those headings stopped
being<legend>elements. Each group is now named witharia-labelledby
pointing at its heading, so screen readers announce the group again. - Connected devices no longer reported
Online. The unified table work
replaced the online state with the lease countdown alone. The state and the
countdown are both shown again, as documented for v0.1.5. - Device tables no longer overflow their containers.
- Runtime React source no longer carries inline style objects; the affected
column widths and two element styles moved to stylesheets. - Executable bits are preserved for distribution integration files.
GitHub Pages demo
The Pages job publishes the demo unchanged at the site root and additionally
publishes a standalone design gallery at /design/, which presents the four
LAN & DHCP appearances side by side in both light and dark for comparison
without running the appliance. The gallery is a static page built from the same
mock data as the demo; it is not part of the appliance image.
Validation
The exact release-candidate commit must pass all seven required workflows: CI,
CodeQL, Secret scan, Deep validation, Performance, Service supervision and
Appliance ISO. Dashboard coverage includes the Playwright matrix across
Chromium, WebKit, mobile WebKit and mobile Chromium for both the production and
demo builds.
The Golden ISO gate is unchanged from v0.1.5 and still covers clean-disk
installation, installed cold boot without the ISO attached, firstboot
non-reentry, SSH and Dashboard/API readiness, forced routerd crash recovery
under supervision, warm reboot, refusal to overwrite an existing MinimalRouter
disk and refusal to install onto an undersized disk.
Scope and pilot status
v0.1.6 remains a Beta / controlled pilot release and inherits the v0.1.5
pilot conditions unchanged. Because this release does not alter routing,
firewall, DHCP, WireGuard or update-trust behaviour, an appliance already
qualified on v0.1.5 does not need to repeat the full network validation matrix;
the owner lab should still confirm the dashboard reaches the appliance and that
the appearance control behaves on the browsers actually used.
Minimal Router OS v0.1.5 (Beta)
Minimal Router OS v0.1.5
Status: Beta / controlled pilot
v0.1.5 moves the approved dashboard design into the appliance production frontend and adds a focused set of operator-facing reliability controls without expanding MinimalRouter into a general-purpose network platform.
Highlights
- Production dashboard uses the v0.1.5 visual system rather than a demo-only overlay.
- GitHub Pages demo and production use the same dashboard components and final CSS; demo mode differs only in mocked data and explicitly demo-only states.
- Mobile navigation uses a fixed top-right control and a pushed/scaled foreground-page interaction inspired by Noema's mechanics, while retaining MinimalRouter's own colors, typography and navigation design.
- The mobile menu closes with the same control, Escape, an exposed-page click or section navigation and restores the previous scroll position when appropriate.
- Desktop frame uses one exact 37 px gutter at the viewport/sidebar edge, between sidebar and content, and at the far-right content edge.
- The redundant Gateway healthy Overview ribbon chip is removed while the separate topbar health control remains available.
- Logs startup diagnostics use a horizontal milestone timeline on desktop and a horizontally scrollable sequence on mobile.
- Connected devices can show Online, Last seen and New state from existing bounded DHCP/accounting data.
- A LAN device can have Internet access paused for 15 minutes, 1 hour, or until resumed. Timed pauses use nftables kernel timeouts and the privileged helper validates the address against its trusted last-good LAN configuration.
- Gateway Health exposes three fixed recovery actions: Reconnect WAN, Restart DNS & DHCP, and Restart WireGuard. The dashboard cannot select arbitrary services or execute shell commands.
- Gateway history records sampled WAN availability/outages and bounded public-IP transitions locally. The UI reports partial coverage honestly until a full 30-day history exists.
- Recovery/backup/pfSense migration tools are presented from the Recovery workspace rather than being mixed into Security.
Dashboard validation
The release candidate includes Playwright regression coverage for both the production and GitHub Pages demo builds, including:
- fixed mobile menu position while scrolling;
- pushed-page menu geometry and close behavior;
- scroll restoration;
- every dashboard route fitting the mobile viewport without page-level horizontal overflow;
- production/demo mobile behavior parity;
- desktop 37 px frame geometry;
- removal of only the redundant Gateway ribbon chip;
- horizontal startup timeline behavior on desktop and mobile.
Installation and startup validation
The exact release-candidate commit must pass the complete Golden ISO gate. That gate extends the existing clean-disk installation test with:
- installed-disk cold boot without the ISO attached;
- proof that firstboot does not run again;
- real SSH and Dashboard/API readiness after cold boot;
- forced
routerdcrash followed by supervise-daemon recovery; - warm reboot followed by another full readiness check;
- refusal to overwrite a disk that already contains MinimalRouter;
- refusal to install onto an undersized 4 GiB disk before destructive writes begin.
The final release artifacts are published only from the signed release workflow after the exact tagged commit passes the release validation path. The release publishes the tested AMD64 Golden ISO and checksum, signed AMD64/ARM64 distribution archives and manifests, SPDX SBOMs, SHA256SUMS, and GitHub attestations.
Scope and pilot status
v0.1.5 remains a Beta / controlled pilot release. CI/QEMU qualification is deliberately broader than v0.1.4, but it does not replace real Proxmox + ISP validation. Before unattended use, the owner lab should still verify real PPPoE reconnect/reboot behavior, WireGuard recovery, DDNS/public-IP changes, timed device-pause expiry, power-cycle behavior and the established pfSense fallback path.
Minimal Router OS v0.1.4 (Beta)
Minimal Router OS v0.1.4 — Beta
v0.1.4 is the first Minimal Router release built around the Golden Appliance
ISO installation model for AMD64/Proxmox.
Highlights
Golden Appliance ISO
A new release asset provides a complete router appliance:
minimalrouter-0.1.4-amd64.iso
Alpine Linux, the matching linux-lts kernel/modules/initramfs, MinimalRouter,
Dashboard and runtime dependencies are assembled before the user VM boots. The
live ISO is a small verified flasher, not a package installer.
The target flow is now:
boot ISO → verify Golden image → flash blank VM disk → reboot
→ firstboot → WAN/LAN → optional PPPoE → passwords → router services
Offline by construction
The user VM no longer depends on Alpine repositories during disk installation.
The live flasher does not run apk, setup-disk, mkinitfs, target chroots or
the MinimalRouter distribution installer.
This removes the package-repository and live-kernel/target-kernel mismatch failure
class encountered during earlier installer development.
Serial and recovery
- dedicated
MinimalRouter Installer (serial ttyS0 115200)boot entry; - firstboot can run entirely over serial;
- password-protected
ttyS0root recovery remains active after installation; - trusted-LAN OpenSSH recovery is configured with a separate root password;
- VGA/noVNC remains the production default and an independent pilot fallback.
Full install validation
The Appliance ISO workflow now tests the actual install rather than only booting
the ISO. It flashes a blank 8 GiB VirtIO disk, reboots, completes firstboot and
then proves:
- installed serial root login;
- a real password-authenticated SSH login;
- LAN
192.168.1.1/24; - trusted-LAN SSH nftables rule and listener;
- firstboot and canonical state markers;
- running kernel/module release match;
routerdservice/readiness;- Dashboard listener on
:8443.
The signed release workflow repeats this E2E test against the release ISO before
publishing it.
Signed release trust inside the ISO
The v0.1.4 release ISO is built from the already signed AMD64 release payload and
must contain firmware-signing.pub. A release build fails if that trust anchor is
missing. This keeps later A/B update verification aligned with archive installs.
Other v0.1.4 improvements
- boot-ID-based startup diagnostics with bounded history;
- lower passive runtime work and visibility-aware Dashboard polling;
- lightweight post-connect WAN estimate plus explicit full Speed Test;
- QoS-safe Speed Test restoration through canonical reconciliation;
- Smart Change Preview;
- conservative PPPoE auto-recovery;
- one-click network diagnostics and Startup Timeline;
- local recovery console and sanitized support-bundle workflow;
- build/version/commit/date reporting from release metadata;
- hardened signed A/B staging and anti-downgrade behavior.
See ../../CHANGELOG.md for the full change history.
Install on Proxmox
Use the currently qualified profile:
- AMD64/x86-64;
- SeaBIOS;
- 1 GiB RAM or more;
- one VirtIO disk of at least 8 GiB;
- two VirtIO NICs;
- noVNC available during the pilot;
- optional
serial0socket.
Verify:
sha256sum -c minimalrouter-0.1.4-amd64.iso.sha256Then attach the ISO and boot. Detailed instructions:
Release assets
The release workflow publishes:
minimalrouter-0.1.4-amd64.iso
minimalrouter-0.1.4-amd64.iso.sha256
minimalrouter-linux-amd64.tar.gz
minimalrouter-linux-arm64.tar.gz
minimalrouter-linux-amd64.manifest.json
minimalrouter-linux-arm64.manifest.json
minimalrouter-linux-amd64.spdx.json
minimalrouter-linux-arm64.spdx.json
SHA256SUMS
The ISO, archives/SBOMs, manifests and checksums receive the corresponding GitHub
attestations defined by the release workflow.
Current qualification boundary
This remains a Beta controlled-pilot release.
The complete installed-disk E2E target for v0.1.4 is SeaBIOS + MBR/ExtLinux +
VirtIO. The installer media retains UEFI boot metadata, but an installed UEFI
Golden target is not yet qualified.
Automated QEMU validation also does not replace real ISP PPPoE, physical NIC,
external scan, thermal, abrupt-power or long-duration testing. Keep a known-good
router available during the first real-WAN pilot.
Minimal Router OS v0.1.2
What's Changed
Other changes
- Sync latest minimalrouterhome changes by @vladimirperovic in #49
- fix(security): hardening pass — config isolation, extra-LAN lockdown, wg1 boot restore by @vladimirperovic in #50
- fix(hardening): second hardening round — boot safety, transaction ordering, anti-lockout by @vladimirperovic in #51
- Scenario hardening and cross-component safety by @vladimirperovic in #52
- feat(lab): full validation suite — 40 scenarios, signed updates, hardening by @vladimirperovic in #54
- fix(lab): deploy/configure reliability + lab debug notes by @vladimirperovic in #55
- feat(firewall): tunnel-only port forwards (WireGuard DNAT) by @vladimirperovic in #56
- fix(applyd): detect inadyn fatal provider responses despite exit 0 by @vladimirperovic in #57
- fix(applyd): sanitize zero-exit DDNS provider failures by @vladimirperovic in #58
- fix: close final update and firewall verification release blockers by @vladimirperovic in #60
- fix: reject root-only signed payload executables by @vladimirperovic in #63
- fix: reject unreadable signed web payload modes by @vladimirperovic in #64
- docs: refresh validation status after final hardening audit by @vladimirperovic in #62
- fix: close second-pass update and repository hardening gaps by @vladimirperovic in #65
- feat(web): port forward management panel (tunnel-only) by @vladimirperovic in #72
- feat(lab): scenarios 41-50 + fix 36/38 by @vladimirperovic in #73
- feat: sync v0.1.2 and publish dashboard demo by @vladimirperovic in #78
- fix: install-dist mv -fT (BusyBox symlink sledjenje pri reinstalaciji) by @vladimirperovic in #79
- fix: harden sessions, Pages demo and repository hygiene by @vladimirperovic in #80
Full Changelog: v0.1.1...v0.1.2