Latest test build on the way to the June 1 stable release. This covers everything since 20260501_01 and adds the long-awaited fix for the missing live Z-offset control in Mainsail. If nothing else regresses over the next few days, the contents of this build will become 20260601_01.
Highlights
- Live Z-offset adjustment is back in Mainsail during prints. A long-standing bug that hid the Z-offset control once leveling set a non-zero offset is fixed.
- KS1 firmware 2.7.2.1 is now supported (manifest, binary patches, runtime check). KS1 owners who already upgraded no longer need
.enable-rinkhalson a USB drive. - Auto-feed at print start now picks the correct ACE slot for Orca prints that use a non-default tool, instead of guessing from the mapping table.
- The touchscreen Color Match flow, Fluidd, Mainsail, USB-loaded files, and Orca remote-send all extrude correctly after the ACE has retracted filament between prints (#464).
- New opt-in Firmware Collector app (disabled by default). Helps the community catch new Anycubic firmware faster. Never transmits certificates, account info, or personal data.
- SWU installer now keeps only the current Rinkhals install plus one previous. Frees up to ~2.6 GB on
/useremain.
New Features
- MMU ACE auto-feed when no filament is loaded at print start. Race-safe task management, configurable feed length and speed via
[mmu_ace]inmoonraker.conf, graceful bail-out on cancel or error (#19, thanks @sharpmonk). - Opt-in
60-firmware-collectorRinkhals app. Uses the printer's own Anycubic device certificate to discover new firmware. Sends only the public URL and version metadata to the Rinkhals community archive. - SWU installer prunes older Rinkhals installs on every update. Current and previous are kept.
- MMU ACE shows an Unload button whenever a gate is physically loaded (#11).
- UI: download Anycubic stock firmware to USB.
- KS1 firmware 2.7.2.1 support (manifest, K3SysUi and gkapi binary patches, runtime check).
- Dev container and justfile for contributors (#12, #14, thanks @basvd).
Bug Fixes
- Restored the Mainsail live Z-offset control during prints. GoKlipper does not report
endstop_pinunderstepper_z, so Mainsail's Z-offset component read a null value, threw, and Vue dropped the entire control once a non-zero Z offset existed (which happens after LeviQ3 leveling). Moonraker now injectsstepper_z.endstop_pin = probe:z_virtual_endstopinto the config Mainsail sees, which both stops the crash and routes saves throughZ_OFFSET_APPLY_PROBE. Also reported upstream (mainsail-crew/mainsail#2508, fix PR #2509). - Auto-feed now consults the slicer's actual tool list before picking which ACE slot to pre-load (#24). Previously it always used the first entry in the internal mapping table, which for Orca single-color prints using a non-default tool meant loading the wrong slot, extruding briefly, then having to unload and switch. It now reads the
; referenced_tools = ...trailer that the metadata pre-processor already writes to every gcode and resolves the right slot viattg_map. Multi-tool prints skip the auto-feed entirely; the gcode's T-commands handle slot selection themselves. - Fixed unbound
filenamevariable inpatch_mqtt_printthat crashed Vanilla Klipper (#18, thanks @Kobra-S1). - Fixed GoKlipper panic during homing on Kobra S1 Max by excluding
motion_reportfrom the exposed objects list (#17, thanks @Kobra-S1). - Fixed
process-cfg.pyregex to accept indented section headers in KS1 Max config files. Also adds the missing raw-string prefix on the second regex. - Fixed Fluidd Tool Mapping dialog deselecting on every ACE poll (#9).
- Safely verify
filament_hubobject exists before querying so a missing object no longer crashes gklib. - LVGL fixes for the touchscreen UI:
- Cast STATE enum to int for bitwise OR operations.
- Removed unsupported
lv.PART.ITEMSconstant that crashed the UI when editing text fields. - Resolved text input dialog not showing by removing flex align assert and reverting overridden dialog method.
- hostname-dns app: fixed disabled text input and number fields by adding LVGL keyboard modal support.
Documentation
- Migrated from MkDocs to ProperDocs (#15).
- New introduction for firmware internals, plus a "how Rinkhals works" overview.
- Consolidated supported firmware versions across docs.
- Repaired invalid YAML front matter and remaining legacy links.
- Repository references migrated to the rinkhals-community organization.
Community archive infrastructure
These changes live in the rinkhals-firmware-site repository and support the new 60-firmware-collector app. Not user-facing in this build, but worth listing for context.
- New ingest Lambda and SQS FIFO queue at
ingest.firmwareforge.org/v1/notifyfor receiving notifications from opted-in printers. firmware-fetcherECS task now drains the contribution queue at the start of each scheduled run (06:00 and 18:00 UTC).- Custom domain mapping with ACM certificate for the ingest endpoint.
Upgrade notes
- Mainsail users: the live Z-offset control now appears in the Toolhead panel during prints again, including after LeviQ3 leveling. No action needed; the fix is applied automatically by Moonraker.
- KS1 owners on Anycubic firmware 2.7.2.1: this is the first build where Rinkhals starts cleanly without
.enable-rinkhals. You can remove the marker file after upgrading. - Orca users who saw the printer load the wrong ACE slot first on single-color prints: please upgrade and retest. The auto-feed now reads the slicer's intended tool and resolves the correct slot directly.
- First boot after upgrading from any pre-
20260526_03_testbuild: the new installer will prune accumulated old version directories on/useremain. Current and previous are kept; everything else matching theYYYYMMDD_NN[_test][-N]pattern is removed. Custom folders are untouched.
Known issues
- One K3 owner reported a gklib crash with
"stuck at preheating"symptoms when starting Orca prints in LAN mode (#20). We were not able to reproduce it on other K3, KS1, or KS1M hardware, and the auto-feed slot-selection fix in this build does not change behaviour for their specific case. If you hit this, try reinstalling the Anycubic firmware and then reinstalling Rinkhals on top; that often clears the kind of accumulated state corruption that produces this symptom. If it persists after a clean install, please open a new issue with fresh logs.
New Contributors
- @basvd made their first contribution in #12
- @Kobra-S1 made their first contribution in #17
- @sharpmonk made their first contribution in #19
Full Changelog: 20260501_01...20260528_01_test