# Changelog ## [0.9.17] โ€“ 2026-05-30 ### New - **๐Ÿงช Obico integration (experimental):** The bridge now exposes a Moonraker-compatible surface that the [moonraker-obico](https://github.com/TheSpaghettiDetective/moonraker-obico) plugin accepts. Time-lapses, layer-aligned first-layer scan and WebRTC live streaming work against a (self-hosted or cloud) Obico server. **Note:** the spaghetti-detection ML model is trained on side-view cameras (Ender/Voron); how well it works with the Kobra X's top-down camera is still to be evaluated empirically (it already looked promising in our tests). Stream, time-lapse and telemetry work โ€” the failure-detection side stays flagged as experimental for now. - **Multi-language UI (PR #37 by @gangoke):** Inline translations have moved into JSON files; a globe-icon dropdown lets you switch language. Browser locale is auto-detected; manual choice persists in LocalStorage. Languages: ๐Ÿ‡ฉ๐Ÿ‡ช ๐Ÿ‡ฌ๐Ÿ‡ง ๐Ÿ‡ช๐Ÿ‡ธ ๐Ÿ‡จ๐Ÿ‡ณ (ES + ZH-CN are AI-translated and not verified by native speakers yet). - **OrcaSlicer filament profile per AMS slot:** The slot-edit dialog now lets you pick a concrete OrcaSlicer profile (e.g. "PolyTerra PLA โ€” Polymaker") per slot; the bridge sends it along on AMS sync instead of just "Generic PLA". Profile list is generated from the OrcaSlicer source (~1000 profiles, 43 vendors). A matching patch in OrcaSlicer-KX is on the way so OrcaSlicer fully honours the hint. - **H.264 direct stream:** New `/api/camera/h264` endpoint serves the printer camera stream as MPEG-TS without re-encoding โ€” dramatically reduces latency, bridge CPU during Obico streaming drops from ~13 % to ~3 %. ### Fixes - **Setting temperature via bridge UI / Obico caused a printer system error:** Fixed via live MQTT capture from Anycubic Slicer Next โ€” the `tempature/set` command needs a `type` field (0=nozzle, 1=bed, 2=both) and must go over the `web/printer/โ€ฆ` topic, not `slicer/printer/โ€ฆ`. Nozzle/bed heating from the bridge now works. - **Large GCode uploads (>50 MB) timed out:** The socket connect timeout was active during `sendall()` too โ€” pushing ~200 MB over LAN took more than 30 s and was falsely aborted. Connect / send / read phases are now timed out separately. - **Camera snapshots were slow and could collide with the live stream:** The bridge now keeps a central camera cache (one ffmpeg pulls from the printer, all consumers share it). Snapshots return in ~1.3 ms from RAM instead of 1โ€“2 s per spawned ffmpeg. Also resolves the single-client limit on the printer (HTTP 429 on parallel access). - **Language switch did not refresh the GCode browser:** Strings baked into the file cards ("Print", "Estimate", "Download") stayed in the previous language. Cards are now re-rendered on language switch. - **GCode web upload + download + verify dialog (PR #32 by @gangoke):** Files can be uploaded / downloaded directly in the browser, with a warning dialog when starting a GCode that was not uploaded via OrcaSlicer. ### CI/Build - Multi-arch Docker image (amd64 + arm64) automated via Gitea Actions. - Release builds for all three targets (linux-amd64, linux-arm64, windows.exe) via the local CodeBuilder. ## [0.9.16] โ€“ 2026-05-22 ### New - **Auto-start camera on print:** new setting "Turn camera on at print start" โ€” when enabled, the bridge starts the camera stream automatically when a print begins (works for both OrcaSlicer and the Bridge UI). ### Fixes - **Single-color print blocked by an empty AMS slot:** OrcaSlicer writes all configured filaments into the GCode header even when the model uses only one, so the bridge told the printer it needed every color โ€” and an empty unused slot aborted the print. The bridge now maps only the filaments actually used by the GCode. - **Filament sync now position-accurate:** with an empty slot in the middle (e.g. slot 1 yellow, 2 empty, 3 red, 4 white) OrcaSlicer showed the colors shifted onto the wrong slots. Fixed โ€” empty slots keep their position, and the sync color format follows the Happy Hare convention (RRGGBB without `#`). - **Slicer time + thumbnail missing after a browser reload** (or when a print was started directly from OrcaSlicer): both are now restored from the GCode store by filename instead of relying on volatile state. - **German translation gaps** in the ACE dryer dialog fixed. ### Logging - Repeated log lines are collapsed into a counter ("ร—N") instead of spamming the console; status-poll traffic is no longer logged at INFO. - New log level filter (All / Errors / Warnings), a toast on new errors, full tracebacks forwarded to the browser log, and a timestamped download filename. ## [0.9.15] โ€“ 2026-05-21 ### Fixes (Issue #29) - **UI in the OrcaSlicer device tab was broken:** OrcaSlicer's embedded webview only loads the bare HTML and ignores external `