Skip to content

BamDude v0.6.0

Choose a tag to compare

@kainpl kainpl released this 20 Sep 14:06
· 1177 commits to main since this release

⚠️ Three things to know before upgrading. The statistics endpoints moved to their own API — /api/v1/statistics/… — and the old /archives/stats, /archives/aggregate and their neighbours are gone rather than aliased, so a script that read them needs the new paths. Importing a Bambuddy database is no longer supported: BamDude forked at Bambuddy 2.2.2 and the two schemas have diverged too far for a one-time import to be honest. And finish photos are opt-in now — if you want a photo attached to the completion, turn it on in Settings.

Orders, products and what is actually on the shelf. Projects became orders, products got a catalog of their own, and between them sits a ledger of free stock: extra parts from an order can be banked with one button, a print made without an order lands there by itself, and the next order for the same product starts with what is already sitting on the shelf. Every order says Ready ≈, what filament it still needs against your inventory, and what to print next — from the page, to a printer. A plan can be split across the farm, and the library can price a plan out of plain files before any product exists.

A queued job owns the bytes it will print. The moment work enters a queue, BamDude takes an immutable copy of the file. Delete the library original, let retention clear the archive, rename the model on the NAS, unplug the share, close the laptop it came from — a job already queued prints exactly what it was queued with. The same file queued a hundred times is stored once, and the copy goes away when no job references it any more.

PostgreSQL without installing PostgreSQL. DATABASE_URL=embedded runs a bundled server inside your data directory, on loopback only, with its own credentials; the installers ask which storage you want rather than assuming SQLite. Moving an existing SQLite farm over takes the database as it is, with its migration history intact.

A farm this size should not render as one burst. The library file list, the spool inventory, the forecast and the statistics page are computed by the server now, and large fleets no longer arrive as a single card-render. System → Database health says which statement is slow and whether the database was the problem at all.

The bell is a notification centre of your own, filling even on a farm with no provider configured, with every channel scopeable to specific printers — and a Signal channel to send to, via self-hosted signal-cli-rest-api (contributed by @dimonalek in #48). The provider form now offers all thirty-four events instead of the eighteen it had drifted to, six of which were on by default and reaching people who had never been shown them.

Cameras. A camera no longer has to belong to a printer: the room, the shelf or the dryer gets its own tile on the wall and its own window. The chamber light can come on for the camera and go off again — only a light that was off, only a light BamDude switched on. The camera wall opens as snapshots and goes live only where you click, and camera work can move to a separate supervised process with CAMERA_RUNTIME=worker. Snapshots are cached briefly instead of opening a fresh connection per request (contributed by @volnov in #38).

Passwords you can actually recover. «Forgot your password?» works without Advanced Authentication, sends a link rather than a password, and an install with no e-mail at all can reset an administrator from the server console.

Elsewhere: printer tags with colours, and staggered start split into groups so one bucket can be a room or an electrical phase; search finds Cyrillic names whatever their case, on both database backends; every dialog closes only by its own buttons or Esc, and keyboard focus stays inside it; every dropdown in the app is one control now, and the interface carries one step less empty space throughout; a print that started while BamDude was down is archived once it is back; an HMS entry the printer refuses to drop can be hidden; and the queue page has the same S · M · L · XL switch the printers page has.

Image: ghcr.io/kainpl/bamdude:0.6.0 / kainpl/bamdude:0.6.0 (:latest tracks this).

Full changelog: https://github.com/kainpl/bamdude/blob/v0.6.0/CHANGELOG.md