• KX-Bridge 0.9.27-nightly9 Nightly
    All checks were successful
    Nightly Build / build (push) Successful in 3m41s
    Pre-Release

    viewit released this 2026-06-26 23:19:02 +02:00 | 1 commits to nightly since this release

    KX-Bridge 0.9.27-nightly9 — Nightly Build

    [experimental] May be unstable — for testers and early adopters only.

    Changes since nightly-0.9.27-nightly8

    • fix(spoolman): initialize status dot on page load
    • fix(spoolman): clear SPOOLMAN_* env cache on restart, refresh status dot after save

    Update Docker image

    docker compose pull && docker compose up -d
    

    Image tag: gitea.it-drui.de/viewit/kx-bridge:nightly

    Downloads
  • viewit released this 2026-06-26 23:10:27 +02:00 | 2 commits to nightly since this release

    KX-Bridge 0.9.27-nightly8 — Nightly Build

    [experimental] May be unstable — for testers and early adopters only.

    Changes since v0.9.26

    • fix(spoolman): clear SPOOLMAN_* env cache on restart, refresh status dot after save
    • chore: include README.es.md + CONTRIBUTING.md in release.sh sync
    • docs: nightly section, maintenance notice + CONTRIBUTING.md, FR/IT languages, downloads badge
    • fix(update): compare nightly by version string instead of date
    • feat(update): separate nightly track from stable track
    • fix(release): always push nightly to nightly branch, no master push
    • fix(camera): exponential backoff on ffmpeg error + /api/camera/reset + reset button
    • fix(release): allow nightly release from nightly branch
    • feat(i18n): add missing UI translations + sort keys alphabetically (PR #70 @fenopy)
    • fix: sync config/config.ini.example in release (Issue #72)
    • feat(ui): integrations tab in settings (Spoolman + Obico hint)
    • feat(stack): KobraX full stack compose for Portainer (KX-Bridge + Obico + Spoolman)
    • feat(release): nightly/stable release workflow with separate Docker tag
    • feat(spoolman): optional Spoolman filament usage integration (PR #65, @p2l)
    • fix(release): download artifacts via HTTP instead of local path

    Update Docker image

    docker compose pull && docker compose up -d
    

    Image tag: gitea.it-drui.de/viewit/kx-bridge:nightly

    Downloads
  • KX-Bridge 0.9.27-nightly7 Nightly
    All checks were successful
    Nightly Build / build (push) Successful in 4m4s
    Pre-Release

    viewit released this 2026-06-26 22:51:32 +02:00 | 4 commits to nightly since this release

    KX-Bridge 0.9.27-nightly7 -- Nightly Build

    [experimentell] Ungetestete Features, nur fuer Tester geeignet.

    Aenderungen seit v0.9.26

    • nightly: 0.9.27-nightly7

    Docker-Image aktualisieren

    docker compose pull && docker compose up -d
    

    Image-Tag: gitea.it-drui.de/viewit/kx-bridge:nightly

    Downloads
  • KX-Bridge 0.9.27-nightly6 Nightly
    All checks were successful
    Nightly Build / build (push) Successful in 3m23s
    Pre-Release

    viewit released this 2026-06-25 23:47:34 +02:00 | 5 commits to nightly since this release

    KX-Bridge 0.9.27-nightly6 -- Nightly Build

    [experimentell] Ungetestete Features, nur fuer Tester geeignet.

    Aenderungen seit nightly-20260625

    • ci: apk/wget-Fallback für curl korrekt klammern

    Docker-Image aktualisieren

    docker compose pull && docker compose up -d
    

    Image-Tag: gitea.it-drui.de/viewit/kx-bridge:nightly

    Downloads
  • v0.9.26 Stable

    viewit released this 2026-06-21 21:54:13 +02:00 | 1 commits to master since this release

    What's new in 0.9.26

    New

    • Italian language support (PR #66, @Alex_M). The bridge UI is now fully available in Italian.

    Fixed

    • Camera always started at print begin (issue #50). camera_on_print was missing from the /api/state response.
    • Auto-leveling setting ignored in Moonraker print path (issue #57).
    • Filament mapping free-text fields replaced by dropdowns (issue #57).
    • Dashboard showed generic material type instead of profile name (issue #57).
    • Ghost profile shown on empty slot (issue #57).
    • Skip-Objects panel missing in Orca upload flow (issue #57).
    • Banner and dialog appeared simultaneously (issue #57).
    • "Clear" reloaded idle file on next poll (issue #57). Preview image and buttons disappear instantly.
    • Material matching for "PLA Silk", "Matte PLA" etc. (PR #64, @p2l).

    See CHANGELOG for full details.

    Downloads
  • v0.9.25 Stable

    viewit released this 2026-06-17 07:21:56 +02:00 | 2 commits to master since this release

    Fixed

    • Random crashes / container restarts — segfault in libcrypto.so.3 (issue #53).
      The MQTT-over-TLS client shared a single SSL socket between the reader thread
      (recv) and the sender threads (sendall) without serializing them. CPython's
      ssl module does not allow concurrent read and write on the same socket — the
      overlap corrupted OpenSSL's internal state, causing a heap corruption and a
      segfault that manifested reliably on some hosts (timing-dependent). All socket
      access (recv / sendall / close / reconnect) is now serialized under a single
      lock; the reader probes readiness with select() outside the lock so senders
      are never starved. Reconnect and disconnect now swap the socket atomically.
      Thanks to @BasK for the detailed fault-handler trace that pinpointed this.
    • File browser accepted non-GCode uploads (issue #59). Drag & drop bypassed
      the file picker's accept filter, so e.g. a JPG could be uploaded. Uploads are
      now validated both client- and server-side; only .gcode, .gcode.3mf, .3mf
      and .bgcode are accepted. Thanks @gangoke.
    Downloads
  • v0.9.24 Stable

    viewit released this 2026-06-16 21:51:36 +02:00 | 3 commits to master since this release

    New

    • Skip Objects available in every print flow (issue #57). The "Skip objects" panel in the Slot Mapper used to appear only when printing from the Browser tab. It now shows in all flows (upload / print bar included), collapsed by default behind a ✂ Skip objects (N) header to keep the dialog compact, expanding on click with the object preview and checklist.
    • Slot Mapper shows the specific profile name (issue #57). Each slot now displays its mapped filament profile (e.g. "PolyTerra PLA — Polymaker") in the dropdown options and as a hover tooltip on the slot marker, instead of just the generic type. Falls back to the generic type when no profile is mapped.

    Thanks to @Alex_M for the detailed UX feedback in issue #57.

    Downloads
  • v0.9.23 Stable

    viewit released this 2026-06-16 15:22:27 +02:00 | 46 commits to nightly since this release

    New

    • Auto-open print dialog after upload. A new print_start_dialog setting (Settings → Printer → "Start Print Behavior") controls what happens after a file is uploaded while the printer is idle: Print Dialog opens the slot-assignment dialog automatically, Print Bar keeps the previous banner behaviour. Based on PR #56 by @gangoke.
    • Per-print auto-leveling toggle. The print dialog now has its own auto-leveling checkbox that overrides the global default for a single print.

    Fixed

    • Object skip was silently ignored at print start (PR #56, @gangoke). The skip command was sent before the printer entered the printing state, so it was dropped. The skip is now re-applied in a retry loop once the print is confirmed running, with a pending-lock so the UI doesn't reset the skip state prematurely.
    • Upload during an active print overwrote the running job's preview. Uploading a new file while printing no longer replaces the thumbnail / file_ready of the job currently on the bed.
    Downloads
  • v0.9.22 Stable

    viewit released this 2026-06-16 13:24:08 +02:00 | 5 commits to master since this release

    New

    • Restructured Settings panel. The settings modal has been replaced by a persistent Master-Detail panel with five categories: Connection, Printer, Appearance, Filament, and System. Poll interval is now adjustable live.
    • Vendor visibility filter (issue #41). A new checklist in the Filament settings lets you restrict the slot profile dropdown to specific manufacturers. "Generic" and your own imported profiles are always visible. The list updates automatically after a profile import.
    • Idle file actions in the progress card (issue #55). After uploading a file while the printer is idle, three quick-action buttons appear directly in the progress card: ▶ Print, ⚙ Map Slots, and ✕ Clear — matching the file browser workflow without navigating away.

    Fixed

    • Mobileraker: app crashed with Null is not a subtype of Object in ConfigExtruder.fromJson (issue #48). configfile.config was returned as an empty object {}. Mobileraker parses both configfile.settings and configfile.config through the same strict Dart parser — both are now populated with the same extruder/bed/stepper stub.
    • Mobileraker: app hung indefinitely on refresh (issue #48). The WebSocket server.files.metadata handler called a non-existent store method, returning empty metadata. Mobileraker retried this thousands of times per second. Both the HTTP and WS paths now share a single _build_file_metadata() method.
    • Mobileraker: ETA / remaining time not shown (issue #48). Side effect of the metadata loop fix — once currentFile resolves, Mobileraker can calculate ETA from estimated_time.
    • Mobileraker: notify_status_update triggered repeated ConfigFile.parse (issue #48). Static objects (configfile, webhooks, heaters, history) were included in every live status push. They are now filtered out; only live telemetry is broadcast.
    • motion_report (live_position, live_velocity) added to printer objects for Mobileraker motion display.
    • Saving filament slot profiles no longer silently drops the visible_vendors setting from config.ini.
    Downloads
  • v0.9.21 Stable

    viewit released this 2026-06-14 11:11:11 +02:00 | 6 commits to master since this release

    Fixed

    • Camera stream not visible on Android (Chrome / Firefox). Android
      browsers do not support multipart/x-mixed-replace (MJPEG). The UI
      now detects Android and falls back to snapshot-polling at 5 fps
      (/api/camera/snapshot every 200 ms) — no server-side change needed.

    Changed

    • Docker image now pinned to Debian 12 (Bookworm) (python:3.11-slim-bookworm)
      to avoid glibc 2.41 compatibility issues introduced by the Debian 13
      base image that python:3.11-slim recently started pulling.
    • MQTT and HTTP connections now force IPv4 (AF_INET) to prevent
      connection failures on hosts where the printer is only reachable via
      IPv4 but the OS prefers IPv6.
    • Extruder stub in the Moonraker configfile response now includes
      sensor_type and filament_diameter — fixes a Mobileraker crash
      (Null is not a subtype of Object, issue #48).
    Downloads