18 Commits

Author SHA1 Message Date
6ab5c31035 feat(kxgauge): add KXGauge round-display integration
All checks were successful
Testing Build / build (push) Successful in 8m44s
Adds an optional per-printer integration with KXGauge
(https://gitea.it-drui.de/viewit/kxgauge), a small ESP32 round-face
display that shows printer status as an emotion and hotend temperature
as a color ring. KXGauge only exposes a GET-only HTTP API with no
push/websocket, so the bridge actively pushes to it from the existing
MQTT callbacks (_on_temp for the heat ring, _on_print + offline
transitions for the emotion) whenever state actually changes, with a
built-in dedupe so it doesn't spam the device every poll tick.

- kxgauge_client.py: thin synchronous HTTP client (mirrors
  spoolman_client.py's shape - called from the MQTT reader thread).
- New [kxgauge]/[kxgauge_mapping] config.ini sections; the mapping
  (kobra_state -> KXGauge emotion) is user-editable with a sane
  default and falls back per-key if only partially configured.
- Settings UI: new card under Integrations with enable/URL/target-temp
  fields, a per-state emotion mapping list, and a connection-test
  button (/api/kxgauge/test).
- Multi-printer aware: kxgauge_url/enabled/heat_peak merge per
  [printer_N] like the existing power-switch settings.

Also fixes a real bug found while testing this: _find_config_path()
resolves to the live project config/config.ini, not a sandboxed path,
so any test hitting /api/settings POST without stubbing it out will
silently overwrite the real printer config. test_settings.py already
guards against this - test_kxgauge.py now does too.
2026-08-05 15:13:43 +02:00
55acd323f4 fix(docker): copy all refactored bridge modules into the image
All checks were successful
Testing Build / build (push) Successful in 8m40s
The Dockerfile still only COPYed the pre-refactor module list, so the
testing image built from the split-module branch crashed immediately
with ModuleNotFoundError: No module named 'spoolman_client'. Add the
new bridge_*.py mixins plus spoolman_client/gcode_store/gcode_meta/
camera/credentials. Verified with a local docker build + run against
the real printer.
2026-08-05 10:25:34 +02:00
44383fabec fix(docker): gcc + python3-dev für pycryptodome arm/v7 Kompilierung
All checks were successful
Nightly Build / build (push) Successful in 12m26s
2026-06-30 14:30:10 +02:00
1f300589d1 build: sources for v0.9.21 2026-06-14 11:00:32 +02:00
3f6ea269e6 build: sources for v0.9.20 2026-06-08 23:14:50 +02:00
9c82073540 build: sources for v0.9.19 2026-06-02 13:31:47 +02:00
d26b37b332 build: sources for v0.9.17 2026-05-30 19:29:10 +02:00
312b4083d2 build: sources for v0.9.14 2026-05-21 14:35:25 +02:00
81729c37a5 build: sources for v0.9.12 2026-05-20 15:00:02 +02:00
374457fb07 release: v0.9.8 2026-05-12 15:05:35 +02:00
1d3c5a7e1b release: v0.9.4 2026-05-01 11:24:08 +02:00
d9d3581e22 fix: VERSION ins Dockerfile, STABLE_RELEASE_API fix, Version im Header (#14) 2026-05-01 10:11:54 +02:00
966d421016 fix: Dockerfile für flache Release-Struktur angepasst, config.ini.example hinzugefügt 2026-04-30 09:51:17 +02:00
2a12ecca51 chore: sync v0.9.2 – README/CHANGELOG DE+EN, config_loader, aktuelle Bridge-Quelldateien
- README.md (EN), README.de.md (DE) – README.en.md entfernt
- CHANGELOG.md (EN), CHANGELOG.de.md (DE)
- config_loader.py neu (config.ini statt .env)
- kobrax_moonraker_bridge.py, kobrax_client.py, env_loader.py aktualisiert
- Dockerfile, docker-compose.yml, VERSION auf 0.9.2

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-29 14:53:23 +02:00
4f1eaf7e93 fix: apt ffmpeg entfernt, imageio-ffmpeg übernimmt 2026-04-26 15:18:38 +02:00
3687c28239 fix: Dockerfile Pfade für Release-Repo (kein 05_scripts/-Präfix) 2026-04-25 16:58:11 +02:00
808ac13ce0 release: v0.9.1-beta8 2026-04-25 13:55:45 +02:00
9bfd455a7c feat: KX-Bridge 0.9.0-beta1 – initiales Release-Repo 2026-04-20 16:07:43 +02:00