🐛 Fix: Slot assignment now properly marks "Aktive Rolle" in Spoolman
When you tapped a slot button (T0–T3) on the DetailScreen, the spool was registered in Spoolman but the per-slot "Aktive Rolle" radio button in the Spoolman web UI stayed empty.
Root cause
The app sent only SET_ACTIVE_SPOOL ID=<id> — a generic command without slot information. The Snapmaker U1 (with the Davo1624 spoolman setup) needs three commands to fully assign and activate a spool on a specific slot. Console-log analysis showed Spoolman itself sends them as three separate API calls — packing them into one multi-line script tripped Klipper's parser in some setups ('T3' is not valid for MACRO).
Fix
The app now sends the three commands as separate /printer/gcode/script POSTs, in the same order Spoolman uses:
SET_GCODE_VARIABLE MACRO=T<slot> VARIABLE=spool_id VALUE=<id>— drives the Spoolman UISAVE_VARIABLE VARIABLE=t<slot>__spool_id VALUE=<id>— persists across Klipper restartsSET_CHANNEL_SPOOL CHANNEL=<slot> ID=<id>— Davo1624 channel state for consumption tracking
Result
- ✅ "Aktive Rolle" radio button updates correctly under the right tool
- ✅ Per-slot consumption tracking maps to the right slot during prints
- ✅ Slot assignment survives Klipper restarts
- ✅ Klipper errors now show as a short, readable snackbar instead of a 100-line Python stack trace
Requirements (printer side)
- Snapmaker official firmware ≥ v1.2.0
- paxx12 SnapmakerU1-Extended-Firmware (e.g.
v1.2.0-paxx12-14or newer) — adds OpenRFID support - Davo1624 snapmaker-u1 spoolman setup — Klipper macros for per-slot Spoolman mapping
Install
Download spoolscan-v1.1.4.apk below and install over your existing v1.1.1 — settings are preserved.