Releases: thereprocase/bambu-bridge
Release list
Approximate live toolhead tracking (v0.6.0)
The 3D viewer now estimates toolhead movement along the sliced extrusion path and straight travel connectors. It uses distance weighting and observed layer durations, follows reported layer changes, and freezes during pauses, stale telemetry, disconnections, and hidden tabs. Changed jobs and mismatched toolpath responses require a reload.
XY position, speed, and travel remain estimates. Reopen the server-hosted 3D viewer after upgrading; this feature requires no new APK. Mesh views show reported layers without an invented moving XY marker.
Validation includes motion/state regressions, responsive Chromium fixtures, the full Python suite, Ruff, mypy, Home Assistant vendor checks, standalone package builds, and source/artifact privacy scans. Linux Python 3.12/3.13 and Windows PowerShell CI passed. test-results-3.13: 934 collected, 10 skipped, zero failures/errors; test-results-3.12: 934 collected, 10 skipped, zero failures/errors; windows-setup-results: 1 collected, 0 skipped, zero failures/errors.
This remains a preview. Physical XY accuracy and live Home Assistant installation have not been qualified. Existing native setup and phone pairing are retained by the server update.
Continuous camera and faster 3D viewer (v0.5.0)
The dashboard fetched camera snapshots on a timer, adding delay and sometimes showing the same image repeatedly. Stream MJPEG with Bearer authentication, render each arriving frame, show received FPS, and reconnect silent streams. Remove the initial display delay and obsolete FPS polling preference.
The 3D viewer previously requested a mesh before requesting the toolpath, and repeated directory searches on cached opens. Load binary toolpaths directly with an unsliced-mesh fallback; reuse known paths while retaining file revision checks; fill both representations from one archive download. Warm prints whose job name arrives after restart, and move response encoding/compression off the event loop.
Also fix camera recovery after silent/partial frames, bounded retries through prolonged outages, stale snapshot expiry, and streaming-only linger. This is a server update; native printer identity, credentials and certificates remain unchanged.
Validation: focused Python camera/viz tests, Node parser regressions, Ruff/mypy, and headless Chromium synthetic fixtures covering unrestricted frame delivery, reconnect/cleanup, responsive widths and toolpath/mesh startup. Package/vendor checks and source/archive credential scans passed. Full CI passed on Linux Python 3.12 and 3.13 (924 passed, 10 skipped on each), Windows PowerShell (1 passed), and the Node streaming parser (4 passed). No real camera images or printer data are redistributed.
Orca native live-view frame fix (v0.4.2)
Orca could authenticate and receive JPEG data but fail to start live view: the bridge emitted zero for the camera frame's keyframe flag. The physical P1S sets that flag for each independently decodable JPEG.
Emit the correct flag and assert all four frame-header words in the native regression. An isolated Windows fixture exercises the installed Orca camera DLL: the old header remains in startup after 25 seconds; changing only the keyframe flag starts the stream and returns a frame in 0.2 seconds.
This is a server-only patch for existing 0.4.1 clients. Their separate printer identity, native code and certificate stay unchanged. Dismiss the old failure dialog and retry Play after upgrading the server.
Validation: 29 focused native/owner tests, Ruff, mypy, the installed-camera-library fixture, package/vendor checks and source/archive credential scans. Full CI passed on Linux Python 3.12 and 3.13 and Windows PowerShell. test-results-3.12: 926 tests, 10 skipped, zero failures or errors; test-results-3.13: 926 tests, 10 skipped, zero failures or errors; windows-setup-results: 1 tests, 0 skipped, zero failures or errors. The fixture uses a generated JPEG and dummy credentials; no vendor binary or real camera image is distributed. Actual Orca UI playback and a physical print remain separate acceptance checks.
The live backcheck also passed through the installed Orca camera DLL: successful stream startup and three real JPEG samples, all marked as keyframes. Native identity, access-code replies, address transposition, authenticated camera framing and read-only FTPS checks passed. TLS certificate and hostname checks remained enabled. Actual Orca UI playback and a completed physical print remain separate acceptance checks.
Separate Bridge P1S identity and credentials (v0.4.1)
The native bridge reused the physical printer serial, so Orca on the same LAN could replace its name and address with the real P1S. Firmware access-code replies could also overwrite the separate bridge password.
Bridge P1S now has a persistent virtual serial across discovery, identification, TLS certificates, MQTT topics and the Windows setup helper. It appears as a second printer alongside P1S. Native access-code requests are answered locally, and upstream replies cannot replace the bridge password. Print commands still reach the physical printer with their original AMS and external-spool settings.
Upgrading from 0.4.0 requires running a fresh Windows setup command with Orca closed. The helper adds the separate printer and trusts its updated certificate while preserving existing printer entries.
Validation: 29 focused protocol/owner tests; Windows PowerShell fixtures check two distinct printers, unchanged existing credentials, repeat setup, backups and TLS failure handling; browser checks at 320, 1440 and 3840 pixels; Ruff, mypy, packaging and credential scans. Full CI passed on Linux Python 3.12 and 3.13 and Windows PowerShell. test-results-3.13: 926 tests, 10 skipped, zero failures or errors; test-results-3.12: 926 tests, 10 skipped, zero failures or errors; windows-setup-results: 1 tests, 0 skipped, zero failures or errors. Actual Orca UI selection and a physical print remain acceptance checks; protocol tests do not establish those.
Protocol backcheck passed for distinct native identity, local native access-code replies, initial and refreshed MQTT address transposition, authenticated JPEG reception, read-only FTPS listing, and per-client printer/camera connection checks. TLS certificate and hostname verification remained enabled. Actual Orca UI playback and a completed physical print remain separate acceptance checks. No print was started.
Guided Orca setup and camera address fix (v0.4.0)
After an offsite Orca connection succeeded, printer telemetry replaced its saved bridge address with the physical LAN address. The camera then timed out, and later connections could use the wrong endpoint again. Transpose firmware's packed little-endian network addresses in both initial and incremental MQTT reports, alongside string/URL addresses. Keep unconfigured interfaces and unrelated values intact. Native discovery, identification and passive FTPS continue to advertise the same configured gateway.
Add a four-step owner dashboard guide for Windows: enable native access, copy a setup command, open Bridge P1S in Orca, and check printer/camera connections from that computer. The helper verifies the instance certificate, backs up and repairs only the target printer entry and shared code, and appends only that certificate to Orca's existing printer bundle. Only the certificate update can request elevation; the user's profile remains in the original session. Manual setup and repeatable Show/Copy remain available. Existing access codes and phone identities are preserved.
Validation: 27 focused native/owner tests pass, including wire address transposition, camera and peer isolation, owner-only HTTPS boundaries, code preservation and existing file-transfer/command behavior. The shipped Windows helper passes disposable fresh/existing/repeated-profile tests, valid checksums, exact backups, Unicode/settings preservation, and refusal of a mismatched server certificate before edits. Chromium checks cover guided copy, recovery, rotation, separate connection checks and responsive layouts at 320, 1440 and 3840 pixels with no JavaScript errors or overflow. Lint, types, package contents, standalone add-on builds and source/artifact credential scans pass. Full CI passed on Linux Python 3.12 and 3.13 and Windows PowerShell. test-results-3.12: 924 tests, 10 skipped, zero failures or errors; test-results-3.13: 924 tests, 10 skipped, zero failures or errors; windows-setup-results: 1 tests, 0 skipped, zero failures or errors.
Version 0.4.0 remains a preview. A direct native camera client received real JPEG frames before this change; actual Orca camera playback after deployment and a physical print remain user acceptance checks. Automated checks do not establish interactive UAC behavior on every Windows installation. No physical print is started by this release.
Protocol backcheck passed for initial and refreshed MQTT address transposition, authenticated JPEG reception, read-only FTPS listing, and per-client printer/camera connection checks. TLS certificate and hostname verification remained enabled. Actual Orca UI playback and a completed physical print remain separate acceptance checks. No print was started.
Native code Show/Copy preview (v0.3.3)
The native code disappeared after leaving or refreshing Settings, forcing owners to replace a shared code just to add another computer. Keep a masked Native access code field with Show/Hide and Copy controls, available on every visit through a dedicated owner-only HTTPS endpoint with no-store responses.
Save an encrypted recoverable copy in the protected pairing storage while retaining the authentication hash. A verified reconnect or the owner dashboard Save existing code action recovers an older hash-only code without rotating it; a code that was lost and has no configured client still needs one replacement. Code retrieval never changes the active code or disconnects clients. Keep the new storage separate so the previous server version can still operate if a deployment rolls back.
Validation: 24 focused native/owner API tests pass, including repeat retrieval, unauthenticated/HTTP/paired-phone denial, encrypted storage, restart, rotation, disabling and verified legacy-code recovery. Browser checks verify Show/Hide/Copy after navigation and refresh with no errors or overflow at mobile, desktop and 4K widths. Lint, types, packaging and credential scans pass. Full CI passed on Python 3.12 and 3.13. test-results-3.12: 920 tests, 9 skipped, zero failures or errors; test-results-3.13: 920 tests, 9 skipped, zero failures or errors.
Version 0.3.3 remains a preview. The separate offsite Orca connection failure is still being diagnosed; this change is not presented as its fix. No physical print was started.
Native P1S automatic identification preview (v0.3.2)
Orca's initial IP/access-code screen performs a separate native identity lookup before opening MQTT. The bridge did not listen for that query, forcing users into Manual Setup. Add the read-only identity response on private TCP port 3000 so Orca can obtain the P1S model, name and serial automatically.
The listener accepts bounded detect frames only, never forwards commands, and exposes no credentials. Native MQTT, FTPS and camera keep their existing authentication. Dashboard diagnostics distinguish identification from TLS, and setup instructions now match Orca's two screens. Explain that a native code is displayed once but reusable across multiple simultaneous computers; replacing it requires updating every client.
Validation: 22 focused native/owner API tests pass, including fragmented requests, malformed frames, credential exclusion, rejection of control and cloud-login requests, disabling partial connections, and simultaneous status subscribers sharing one code. Ruff, mypy, JavaScript syntax, HTML structure/local links, vendor synchronization, server/add-on builds, integration packaging and source/artifact credential scans pass. Full CI passed on Python 3.12 and 3.13. test-results-3.13: 918 tests, 9 skipped, zero failures or errors; test-results-3.12: 918 tests, 9 skipped, zero failures or errors. Actual offsite Orca UI and physical-print acceptance remain unverified; no print was started.
Release version: 0.3.2 preview, preserving the existing native code and phone identity on upgrade.
Native P1S TLS compatibility preview (v0.3.1)
Publish the tested native P1S preview and its existing pairing/upload prerequisites on main. Orca uses one bridge endpoint and native code for either a four-color AMS job or an external-spool job, with the source chosen per print. The gateway relays status, camera, uploads and commands over a private connection.
The README and Gridline project site now explain that the bridge server owns the Tailscale address and the physical printer stays on its LAN connection. The site includes two clearly labeled print modes, native setup links and a connection diagram. The native guide and validation record distinguish live protocol checks from the still-unverified physical print through the installed Orca UI.
v0.3.1 also fixes a reproduced native TLS limitation: RSA-only clients could not negotiate the previous EC certificate. A separate persistent RSA identity and address certificate preserve existing phone pairing and native codes. Owner-only connection diagnostics expose stages and rejected-code counts without credentials or peer addresses. A new real TLS regression uses an RSA-only cipher with normal certificate and hostname verification. The reported offsite Orca failure remains under investigation and is not claimed fixed solely from fixture results.
The earlier v0.3.0 release passed 895 tests with 9 skipped on each of Python 3.12/3.13, plus live MQTT/AMS/external status, camera frames, read-only acknowledgement, FTPS listing and HTTPS checkbox checks. Focused compatibility tests, lint, types, HTML structure, local links, source synchronization and full-tree private-string/credential checks pass for this revision. The full Python 3.12/3.13 CI matrix passed for this commit.
Includes the already released work reviewed in #1, #2 and #3. GitHub Pages publishes /docs from main.
Native P1S gateway preview (v0.3.0)
Bambu Bridge can expose a registered P1S to native Orca clients over a private LAN/Tailscale address. Settings → Orca · native P1S adds the “Expose to Orca as a P1S” checkbox, a separate one-time access code, rotation, disable and unicast discovery.
The gateway multiplexes the existing MQTT and camera sessions and proxies implicit FTPS. Native print commands preserve plate selection and per-print AMS mapping or external-spool selection. An upload receives success only after it reaches the printer. Physical printer/Orca limitations still apply; the gateway does not add automatic mixing of AMS and external spool. Native mode grants full printer control and uses the printer's validation path.
Server setup requires an explicit private bind address and access to TCP 8883/990/6000 plus passive FTPS data ports. Codes are hashed, management requires owner authentication over HTTPS, and disabling closes native sessions. No proprietary networking library or vendor credential is bundled.
Validation: real TLS protocol fixtures cover status, commands, camera, FTPS upload/download, authentication and disconnects. Owner authorization, Ruff, mypy and responsive Chromium setup checks pass. The full Python 3.12/3.13 CI matrix passed on this commit. A physical print and installed Orca UI acceptance remain unverified.
Setup: https://github.com/thereprocase/bambu-bridge/blob/feature/native-p1s-gateway/docs/NATIVE-P1S.md
Additional validation: 904 tests on each of Python 3.12 and 3.13; 895 passed,
9 skipped, zero failures and zero errors. Live protocol checks against a P1S
confirmed AMS/external-spool status, a read-only command acknowledgement,
camera JPEG framing and dimensions, and an FTPS file listing. Browser checks
confirmed the native checkbox at 320/1440/3840 pixels over normally verified
HTTPS, with no JavaScript errors. Temporary test access was disabled.
An actual print and installed Orca UI acceptance remain unverified.
OrcaSlicer HTTPS print-host preview (v0.2.2)
OrcaSlicer 2.4.2 can send a sliced plate through Bambu Bridge's HTTPS Octo/Klipper print-host adapter. Settings → OrcaSlicer creates a separate revocable key scoped to one printer, with copyable connection fields. Upload-only is the default; explicitly permitted upload-and-print uses a fixed AMS mapping or one external spool and enters the existing validated job lifecycle.
Keys are hashed at rest, HTTPS-only and rejected by the main API. The adapter preserves slice bytes, uses unique SD filenames, and rejects unsupported plate selections, malformed/oversized containers, busy/offline printers and changed certificate identity. No proprietary networking DLL is distributed or replaced.
Preview limits: one sliced plate at position 1; native Orca AMS sync/device controls are separate. Camera, live 3D and controls remain in the bridge dashboard. A physical print from the installed Orca UI has not been performed; release checks do not start production prints.
Validation: API authorization/upload tests, a real FTPS transfer to a disposable TLS server, Ruff and mypy passed. Isolated Chromium exercised real HTTPS key create/copy/connection-test/revoke and fixed mapping at 320/1440/3840 pixels with no overflow or JavaScript errors. Source and package credential scans found no secrets. Full Python 3.12/3.13 CI passed: 887 passed and 9 skipped in each run. The deployed dashboard also passed create/connection-test/revoke at 320/1440/3840 pixels over the actual trusted HTTPS endpoint with normal certificate validation; existing phone pairing was preserved.