Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

| Version | Date | Notes |
|---|---|---|
| [v1.4.3](docs/releases/v1.4.3.md) | 2026-08-30 | Fixed sending a print failing with "Failed to get AMS mapping table" (07FF-8012) — a re-sliced `.3mf` has no AMS data, so the print now always feeds from the threaded filament; fixed live status stuck on "Not connected" / "No live job data yet" (MQTT packet-size limit was smaller than a P2S status dump, causing a silent connection flap); fixed a DB error during a print killing telemetry and the pause/resume/stop buttons; fixed `stop`/`pause`/`resume` sometimes ignored (non-numeric command id); camera on the printer card is now pop-out only (the always-on feed starved the printer's own camera) |
| [v1.4.2](docs/releases/v1.4.2.md) | 2026-08-29 | Fixed the live camera feed failing on every Docker install (`ffmpeg` was missing from the container image); fixed live telemetry showing "No live job data yet" during a print (never requested a full status dump on connect); fixed the "Docs site" CI workflow being invalid since the template sync |
| [v1.4.1](docs/releases/v1.4.1.md) | 2026-08-29 | Fixed a printer added or edited through the UI never starting its live-telemetry connection until the next backend restart (Test connection worked, but the card stayed "Not connected" and Print failed) — mostly affected Docker installs |
| [v1.4.0](docs/releases/v1.4.0.md) | 2026-08-26 | Export/import to migrate data between spoolbook installs (merges, doesn't replace) from the Settings page; fixed uploaded `.3mf` files being lost on every redeploy (were stored in temp, not the persistent volume) |
Expand Down
13 changes: 13 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,19 @@ cd spoolbook-rs && cargo run # backend, port 5070, sqlite at spoolbo
cd spoolbook-rs && cargo test
```

`tests/printer_live.rs` holds hardware-in-the-loop tests (MQTT connect, FTPS upload, send a
print and cancel it in the prep phase, unsliced `.3mf` → slicer-service → print). They're
`#[ignore]`d and need a real printer on the LAN — run them by hand while developing the printer
integration:

```sh
SPOOLBOOK_TEST_PRINTER_IP=… SPOOLBOOK_TEST_PRINTER_ACCESS_CODE=… SPOOLBOOK_TEST_PRINTER_SERIAL=… \
cargo test --test printer_live -- --ignored --nocapture
```

The print tests also need `SPOOLBOOK_TEST_ALLOW_REAL_PRINT=1` and a `.3mf` path; `examples/stop_print.rs`
is a standalone cancel command if one gets away.

## Releasing

See the "Release checklist" in `CLAUDE.md`. `.github/workflows/docker-images.yml` builds and
Expand Down
47 changes: 47 additions & 0 deletions docs/releases/v1.4.3.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# spoolbook v1.4.3 — sending a print works again

**Released**: 2026-08-30

PATCH: bug fixes only, no new capability.

## Fixed

- **Sending a print failed with *"Failed to get AMS mapping table" (HMS 07FF-8012)*.** A print
re-sliced by spoolbook's headless slicer carries no per-filament AMS metadata, so telling the
printer to use the AMS could never succeed regardless of the tray picked. The print command
now always feeds from the filament threaded through the printer (the AMS tray's PTFE in
practice) and no longer sends an AMS mapping. Confirmed end-to-end against a real P2S,
including the full unsliced-`.3mf` → re-slice → print path.

- **Live status stuck on *"Not connected"* / *"No live job data yet"*** even with the printer on
and reachable. The MQTT client's incoming-packet size limit (128 KB) was smaller than a P2S's
full status dump, so the connection dropped the instant that dump arrived and immediately
retried — a silent flap. Raised to 1 MB. The reconnect loop also logs now (it was completely
silent before).

- **A database hiccup during a print could kill live telemetry and the pause / resume / stop
buttons** for that printer until the backend restarted. The telemetry writer ran on the MQTT
connection's own task and aborted it on any error; it now logs and drops the one reading.

- **`stop` / `pause` / `resume` from spoolbook were sometimes ignored by the printer.** The
command carried a non-numeric id the P2S doesn't accept. Fixed.

- **The live camera on the printer card was always streaming.** An always-on `<img>` feed is a
permanent camera client, and Bambu firmware only serves one at a time — so the card holding it
starved the printer's own toolhead-camera init mid-print. The card now shows a static icon;
the live feed is in the camera pop-out only.

## For developers

- `spoolbook-rs/tests/printer_live.rs` — hardware-in-the-loop tests (`#[ignore]`d, need a real
printer on the LAN): MQTT connect stays up, FTPS upload, send-a-print-then-cancel, and the
full unsliced-`.3mf` → slicer-service → print flow. See the README "Testing" section.
- `spoolbook-rs/examples/stop_print.rs` — standalone MQTT stop command.

## Upgrading

No manual migration step. Pull the new image and restart:

```sh
docker compose pull && docker compose up -d
```
2 changes: 1 addition & 1 deletion spoolbook-rs/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion spoolbook-rs/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "spoolbook-rs"
version = "1.4.2"
version = "1.4.3"
edition = "2024"

[dependencies]
Expand Down