github rinkhals-community/Rinkhals 20260601_02_test_webui
Rinkhals 20260601_02_test_webui

pre-release5 hours ago

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/state endpoint backed by Moonraker's print_stats.
  • Apps page Install / Uninstall buttons disable while the printer is
    printing, paused, pausing, or cancelling. 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 /commit with a
    single-use 60s-TTL install_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.py extract_swu / install_swu): download to
    /useremain/update.swu, unzip with model-specific password,
    MD5-verify setup.tar.gz if a sidecar is present, untar, patch
    update.sh to 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.log and
    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
    before update.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 S1 2.7.2.1, 2.5.9.9, 2.5.0.2, 2.4.8.3;
    Kobra S1 Max 2.6.9.6, 2.6.9.3; Kobra 3 2.3.7.1, 2.3.7,
    2.3.5.3, 2.3.3.9, 2.2.9.6; Kobra 2 Pro 3.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.1 as up-to-date instead of being told to "update" to the
    older 2.7.0.9 that 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 firmware 2.7.2.1 with the previous
    test build (20260601_01_test_webui) underneath.
  • Catalog endpoints all return the expected wire shape; the post-PR-5
    manifest correctly surfaces 2.7.2.1 as 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 before update.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

Don't miss a new Rinkhals release

NewReleases is sending notifications on new releases.