Note
This is a daily beta build (2026-11-08). 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://watchtower.nickfedor.com) (image `nickfedor/watchtower`) to automatically update when new daily builds are pushed.
Added
- Personal access codes show who sent a file to a virtual printer (#1430) — A slicer signs in to a printer with one access code, so a virtual printer never knew who sent a file: in a school or makerspace, queue jobs and files had no owner. With auth on, every user now has a personal access code, at the top of Settings > Virtual Printer (copy it, or make a new one, which retires the old). Entered in Bambu Studio or OrcaSlicer instead of the virtual printer's own code, it works on any virtual printer in File Manager, Review or Queue mode, and what that slicer sends is the user's: the File Manager file, the queue jobs (which wait for a reviewer when the user's jobs must) and, in Review mode, the pending upload, whose file stays the sender's when someone else approves it. Each sign-in checks the user's account is active, that they may upload to the File Manager (plus queue jobs in Queue mode) and, for a virtual printer with a target printer, that the printer is one of theirs and they may see it, so a change of permissions or a new code takes effect at once. Sending files is all a personal code allows: the slicer's commands to the target printer (stop, pause, G-code, AMS) go through only for users with the printer control permission, checked at every command. An upload waiting for review keeps its own copy, so a later file of the same name can't replace it. The virtual printer's own code keeps working as before, without an owner. Not for Proxy mode, and with a personal code the slicer's own camera view through a virtual printer with a target printer does not work (Bambuddy's camera does). The virtual printer's FTP sign-in now refuses an address for a minute after five wrong codes, as its MQTT sign-in already did, and on both a good sign-in no longer resets the count.
- A script adds the virtual printer certificate to the slicers — Bambu Studio and OrcaSlicer only connect to a virtual printer whose certificate is in their printer.cer file, and every slicer update or reinstall puts the original file back, so the certificate had to be added by hand again. The Slicer certificate card under Settings > Virtual Printer now downloads a script for Windows or Linux / macOS with this Bambuddy's certificate already in it. It finds Bambu Studio and OrcaSlicer, adds the certificate, and keeps the original file next to it. It changes nothing where the certificate is already there, and it removes an older certificate of the same Bambuddy, which would otherwise stop the slicer from connecting. On Windows it is a double-click: it asks for administrator rights, and it installs a task that adds the certificate again at every start, at every sign-in and once an hour, so a slicer update no longer breaks the connection (
/uninstallremoves the task). On Linux and macOS it runs with bash, and is run again after a slicer update. Wiki updated. - WLED lights show the printer's status (#1528, requested and contributed by d3nn3s08 in #3124) — A WLED controller can now show what each printer is doing. Under Settings > WLED, pick a printer, enter its WLED address and assign one of the presets saved in WLED to each state: Idle, Preparing, Printing, Paused, Finished, Failed / Error, Awaiting plate clear, Filament problem, HMS error and Offline. Colours, effects and segments stay in WLED; Bambuddy only switches presets. A state without a preset falls back to the next one that has one (a filament runout without its own preset shows Paused). Awaiting plate clear applies only while the queue's Require plate clear setting holds the printer, and Filament problem only when the printer paused because the filament ran out. An optional timeout switches Finished back to Idle. The page can test the connection, load the presets from WLED and try each preset on the strip. If WLED is unreachable, Bambuddy retries every 30 seconds and logs the outage once. Several printers can share one controller when each preset is saved with "Checked segments only". The tab needs the
printers:updatepermission. - Cam Wall tiles show temperatures and finish time, and can pause, stop and switch the light (#3479, sponsor vote Q4 2026) — With the Full status overlay, every connected tile shows its nozzle (both on a dual-nozzle printer), bed and chamber temperatures, and a printing tile adds its finish time beside the time left. Hovering over a tile shows Pause/Resume and Stop, with the same confirmations as the printer card, and a chamber light switch; Tile controls: Always in the wall settings keeps them on screen, and a touch screen always shows them. The controls need the
printers:controlpermission; a user without it, an offline printer and a Cam Wall token (kiosk) wall get none.
Changed
- Virtual printer cards start collapsed — Settings > Virtual Printer opened every virtual printer's card with all its settings, so a few of them filled the page. Each card now shows only its header (name, mode, model, status) until it is clicked.
- Virtual printers put uploads in the File Manager, not the archive — An archive is a print that happened, but a virtual printer archived every file the slicer sent, in Archive, Review and Queue mode, before it ever printed. Uploads now go to the File Manager, and the archive gets the file when it prints, like any other File Manager print. Archive mode is now File Manager mode; virtual printers set to it switch over on upgrade, and archives they created before stay as they are. Each virtual printer card has a File Manager folder (by default a shared top-level folder named Virtual Printer; external folders can't be picked). The same file sent again under the same name into that folder doesn't make a second copy. Review mode stays: pending uploads now wait at the top of the File Manager page (the sidebar badge moved there too), and Add to File Manager stores them in the virtual printer's folder with their tags, notes and project (approving now needs the
library:uploadpermission as well asqueue:create, since it adds a file); the panel is translated now too. Queue mode stores the file and queues it from there, and a new switch, Remove from File Manager once it prints (off by default), takes it out of the File Manager when its print starts. With Save AMS mapping on, the slicer's tray pick still reaches the archive for reprints: the queue job keeps it until the print creates the archive, shows the saved-mapping badge meanwhile, and offers it under Mapping when edited. The virtual printer's archive-name setting (file name or 3MF title) applies to the archive made when the print starts. Wiki updated. - A queue virtual printer shows where its jobs go, and its target can be cleared — In Print Queue mode a virtual printer without a target printer sends each job to the next free printer of its model, but the card's target list only said "Select a printer...", and once a printer was picked there was no way back. The first entry now reads Any available [model] and switches the virtual printer back to that, and a line under the list says where the jobs go. The access code stays the same, so the slicer stays bound. In the other server modes the entry reads None; proxy mode still needs a printer. Wiki updated.
- Profile defaults is compact and has Apply all — Settings → Filament → Profile defaults showed every default as a large box with all its presets and K profiles, so a few products already filled the page. Each default is now one line (product, colour, slicer preset, and how many printer presets and K profiles it has), sorted by product, with a search box; click a line to see its presets and K profiles. The list scrolls on its own. Apply all applies every default to the spools in stock in one go, and like Apply to existing spools it only fills in what a spool doesn't have yet. Wiki updated.
- Slicer sidecars on Bambu Studio 02.09.01.70 and OrcaSlicer 2.5.0 (#3442) — The Bambu Studio sidecar now ships the H3C printer presets (0.2, 0.4, 0.6 and 0.8 mm nozzle). OrcaSlicer has no H3C presets yet. OrcaSlicer 2.5.0 ships its bundled presets in a new packed format, so the sidecar image now fetches the same release's presets as JSON for its preset handling. Slicing with a printer preset saved under a name of its own keeps working on 2.5.0; the sliced file then names the Bambu preset it was saved from as its printer preset. Sidecar images built for older slicer versions work as before.
- "Any model" jobs go to the printer with the fewest print hours (#3480, sponsor vote Q4 2026) — When several printers of a model can take a job, the queue used to pick the first one in its list, so on a farm the same printer got most of the work. It now picks the one with the fewest print hours (the Maintenance counter, including baseline hours entered there), so jobs and wear spread across the farm. Preferred colours still come first, and the queue powers on the least used printer too when it has to switch one on with an Auto Power On plug.
Fixed
- A printer prompt answered on the printer leaves the HMS list (#3487) — Some faults, such as the A1 mini's "is the filament extruded?" prompt while loading filament, come in the printer's print_error field rather than its HMS list. Bambuddy showed them with the HMS errors but did not notice when the printer set that field back to 0, so the entry stayed on the printer card until "Clear errors" was clicked. It now goes as soon as the printer clears it, and a newer code replaces the old one. An HMS list update that arrives while such a fault is still active no longer drops it either.
- Failed and cancelled prints get their timelapse too (#3481) — The printer saves the timelapse of a print that fails or is cancelled, up to where it stopped, and that video is the best way to see what went wrong. Bambuddy fetched timelapses only for prints that completed, so a stopped print's video stayed on the printer until it was attached by hand with Scan for Timelapse. It is now fetched and attached to that print's run like any other. Wiki updated.
- A printer named after its model no longer hides the model in the support package (#3442, reported by daltonclift) — The support package replaces printer names with [PRINTER]. A printer named "H3C" turned every "H3C" in the package into [PRINTER], including the model itself. A name that is only a model name or model code is not private, so it now stays; any other name is still replaced.
- Auto-drying no longer waits on a drying timer the printer never started (#3478, reported by superflyer11) — An AMS HT can accept a drying command while it feeds a print and never heat: its timer stays at the full time (12h 0m) and its status reads Off, for days. Since 1.3.1b1 the printer card shows such a timer as not running, but auto-drying still took it for a running cycle and never dried that unit again, while the humidity alarms kept firing. A timer that has not moved for a few minutes with the status Off now counts as not drying, so auto-drying tries again after its usual 30-minute pause. If that happens twice in a row, auto-drying stops on that unit and sends the Auto-Drying Suspended notification, saying the timer stood still (new template Auto-Drying Not Heating). It resumes once the humidity is back at or below the threshold. Wiki updated.
- The log says which auto-archive switch skipped a print (#3477, reported by Fuzzylog2x) — Since 1.3.0 the global Auto-archive prints switch (Settings > General > Archive Settings) takes effect for prints started outside Bambuddy. Before, it was saved and never read, so an install upgraded with it off stopped archiving, and the statistics stopped updating. The log only said "auto_archive: False", the same as for a printer's own switch. It now names the global switch or the printer, whichever turned archiving off. The switch's description now says what off means: those prints are missing from the archive, the print history and the statistics, while spool inventory still counts their filament. The wiki explains how to keep statistics without keeping every 3MF (auto-purge removes the files and keeps the statistics), and no longer says auto-purge removes prints from the statistics.
- A camera window no longer opens a dozen streams to the printer at once (#3431, reported by buffdriver) — When the floating camera window was open while the page loaded (after a refresh, for example), Bambuddy opened about twenty camera streams for it. Only one was shown. The browser kept the rest open until the tab was closed, and they filled its six connections to the server. The page started each stream while still preparing to draw the window. It prepared the window several times before showing it, and every attempt left a stream behind. Streams now start only once the window is on the page. The camera page, the camera wall and the stream overlay start their streams the same way.
- A printer whose file service hangs during a print is no longer asked again and again until it refuses every upload (#3474, reported by F9mm) — When the card could not be read at print start, the timelapse baseline was read again every two minutes for the whole print, and each round walked the card twice: up to eight new FTPS connections, each hanging for 30 s against a hung printer. An H2S kept a session for every one of them, then answered every connection with "421 There are too many connections", and no queued job could reach it until the printer was restarted. The card is now read once per round. It is read again only while the print records a timelapse, the wait doubles after each failed round (up to 30 minutes), and it stops after five. A connection or listing that times out now pauses the background timelapse scans of that printer for five minutes. Opening files and sending prints are not held up by this. A printer that answers "421 too many connections" now gets its own message in the queue, saying it may need a restart, instead of "Bambuddy will retry automatically". Wiki updated.