Note
This is a daily beta build (2026-04-29). It contains the latest fixes and improvements but may have undiscovered issues.
Docker users: Update by pulling the new image:
docker pull ghcr.io/maziggy/bambuddy:daily
or
docker pull maziggy/bambuddy:daily
**Tip:** Use [Watchtower](https://containrrr.dev/watchtower/) to automatically update when new daily builds are pushed.
Fixed
- AMS slot configuration intermittently fails to reach the printer after several configs in a row (#1164, reported by RosdasHH) — Configuring AMS slots a handful of times (the reporter saw it almost every 6th change) would silently stop reaching the printer; ~1 minute later the filament colours on the printer would briefly jump between slots, then settle. Root cause was the zombie-session watchdog at
bambu_mqtt.py:861introduced for #887. When anams_filament_settingresponse took >10 s (normal under load — concurrent K-profile fetches, busy printer, network jitter) the watchdog incremented an_ams_cmd_unansweredcounter and zeroed_last_ams_cmd_timeso it wouldn't re-trigger on the next status push. The bug: the response handler that reset the counter was guarded byand self._last_ams_cmd_time > 0— so when the late response did arrive (after the watchdog had already zeroed the timer), the counter stayed armed at 1. The next slow response on anyams_filament_settingcommand — possibly minutes or hours later, on an entirely unrelated config attempt — would take the counter to 2 and triggerforce_reconnect_stale_session(). The user-visible symptoms match exactly: configs stop landing (because MQTT reconnects mid-publish, dropping the in-flight command and surfacing asCannot set AMS filament setting: not connectedif the user retries during the ~1 min reconnect window), then the queued state finally lands when the reconnect completes (the "filament colours jumping around" the reporter described). Fix is to drop the_last_ams_cmd_time > 0guard: anyams_filament_settingresponse — late or not — proves the channel is alive, so the counter must reset. Watchdog still trips on a real zombie session (no responses at all for two consecutive >10 s windows). Regression test intest_bambu_mqtt.py::TestZombieSessionDetection::test_late_response_after_watchdog_clears_counter_issue_1164simulates the exact sequence (watchdog fires → late response arrives → second slow response on a fresh command) and asserts the counter resets to 0 on the late response and the second command doesn't tip the threshold to 2. Other 10 zombie-detection tests still pass unchanged.