Caution
Developer test build. Not for production use under any circumstances.
This is an internal test build cut to validate the new firmware
install flow on real hardware before it ships as part of a stable
release. It is not an official release, has not been broadly
tested across the printer fleet, and may regress in ways the stable
June release (20260601_01) does not.
Do not flash this on a printer you rely on for printing. Do
not recommend it to other users. Do not treat this as a
beta - betas get distributed; this is for the maintainer team and
invited testers only.
Anyone reading this who is not on the maintainer team or has not been
explicitly asked to flash this by a maintainer: please install the
stable 20260601_01
instead.
What changed since 20260601_01_test_webui
This iteration focuses on landing the firmware management story in
the Web Portal. The Apps surface from the previous test build remains
in place; this build adds the Firmware page, the install pipeline that
sits behind it, and the print-state gating that protects both Apps and
Firmware installs.
Phase 1A - print-state gating (Apps page)
- Shared printer-state store polled every 5s against a new
/api/printer/stateendpoint backed by Moonraker'sprint_stats. - Apps page Install / Uninstall buttons disable while the printer is
printing,paused,pausing, orcancelling. A "Printer is
busy" banner explains what is gated and what stays available (start,
stop, restart, configure all remain functional).
Phase 1B - read-only Firmware page
- New sidebar entry between Apps and File Browser.
- Two tabs: Rinkhals releases (GitHub releases for this repo) and
Anycubic stock firmware (community-curated manifest at
rinkhals-community/Rinkhals.Firmwares). - "Currently installed" card showing both Anycubic firmware and
Rinkhals versions with up-to-date / update-available indicators. - Release-notes modal rendering full GitHub markdown via
marked+DOMPurify. Anycubic changelog modal for stock entries. - Show-developer-releases toggle on the Rinkhals tab.
- Dashboard chip "Firmware update available" hidden when up-to-date,
surfaces inline when a newer version is available for either side. - Manage Rinkhals page gains a Firmware status card and a Rinkhals
patches card that lists every binary patch (K3SysUi,gkapi,
per model + firmware) plus the script-level hooks (boot loader,
DNS fallback, profile env).
Phase 2 - firmware install flow
POST /api/firmware/install/preflight+POST /commitwith a
single-use 60s-TTLinstall_id. Stale tabs cannot trigger a flash.- URL allowlist: Rinkhals SWUs must come from this repo's release
attachments; Anycubic SWUs must come from
cdn.cloud-universe.anycubic.com. - Anycubic compatibility check: warns when the installed Rinkhals does
not include patches for the target stock firmware version. Warning
is shown but non-blocking - user can proceed (matches the project's
no-limitation-on-version-choice policy). - Unified install pipeline mirroring the existing touch-panel logic
(common.pyextract_swu/install_swu): download to
/useremain/update.swu, unzip with model-specific password,
MD5-verifysetup.tar.gzif a sidecar is present, untar, patch
update.shto suppress self-cleanup and reboot, run, ensure the
start.sh loader is in place, set the reboot marker, reboot. - SSE progress stream (
/api/firmware/install/progress) with
per-line log mirroring to/useremain/rinkhals/install.logand
a download-percentage indicator. - Install modal handles confirm -> running -> rebooting -> reconnect.
When the SSE drops on reboot, the modal polls/api/printer/state
every 5s until the portal is back, then offers Reload. - Optional dry-run checkbox: downloads and extracts the SWU but stops
beforeupdate.sh. Off by default; primary action is "Confirm
install".
Catalog data quality
- Merged rinkhals-community/Rinkhals.Firmwares#5:
backfills 13 firmware versions missing from the manifest
(Kobra S12.7.2.1,2.5.9.9,2.5.0.2,2.4.8.3;
Kobra S1 Max2.6.9.6,2.6.9.3; Kobra 32.3.7.1,2.3.7,
2.3.5.3,2.3.3.9,2.2.9.6; Kobra 2 Pro3.1.2.3,2.3.9).
Dates extracted from each SWU's internal file mtimes are the real
Anycubic build timestamps, not mirror upload times. - The Firmware page now correctly identifies a printer running
2.7.2.1as up-to-date instead of being told to "update" to the
older2.7.0.9that used to top the catalog.
Polish
- Terminal bottom row padding bumped so the prompt no longer reads as
touching the panel's rounded-xl frame.
What this build is for
End-to-end validation of the Web Portal firmware install flow on
real hardware before merging it onto the stable release track. The
install pipeline mirrors the existing touch-panel logic byte-for-byte,
but mirror does not equal verified - a real install over the WebUI on
each model is the goal of this round of testing.
What is tested today
- KS1 only. Phase 1A + 1B (read-only Firmware page, print-state
gating, dashboard chip, patches card) exercised end-to-end on a KS1
(20025) running stock firmware2.7.2.1with the previous
test build (20260601_01_test_webui) underneath. - Catalog endpoints all return the expected wire shape; the post-PR-5
manifest correctly surfaces2.7.2.1as the latest available
Anycubic firmware for KS1. - The install endpoint, preflight token, and SSE progress stream have
been exercised with a dry-run install (download + extract + log
streaming, stopped beforeupdate.sh).
What is NOT tested
- A real Rinkhals SWU install through the WebUI on any printer.
The dry-run path is verified; the wet path is the whole point of
cutting this test build. - A real Anycubic SWU install through the WebUI on any printer.
Same. Compatibility check fires correctly; the install execution
is the missing piece. - K2P, K3, K3V2, K3M, KS1M. No on-hardware verification yet on any
of these. The build pipeline produced SWUs for all four model
groups, but that is not a substitute for actually flashing one and
driving the install flow. - Long-duration soak. The portal has been exercised for hours, not
days. Memory drift, file descriptor accumulation, and similar
long-tail issues have not been observed for, but also not been
excluded. - Multi-user concurrent access patterns.
Reporting issues
Maintainer team only. If you flashed this and something is broken,
report it in the maintainer Discord channel with model, firmware
version, and steps to reproduce. Do not open a public repository
issue against this tag - it is not a released artifact.
Build / source
- Branch:
develop - Tag:
20260601_02_test_webui - Previous test build:
20260601_01_test_webui - Compare against the stable June release:
20260601_01...20260601_02_test_webui - Compare against the previous test build:
20260601_01_test_webui...20260601_02_test_webui