build: sources for v0.9.19.1

This commit is contained in:
2026-06-04 11:40:02 +02:00
parent 466b8c518d
commit a40f14af8e
5 changed files with 42 additions and 1354 deletions

View File

@@ -1,15 +1,24 @@
# Changelog # Changelog
## [0.9.19.1] 2026-06-03 ## [0.9.19.1] 2026-06-04
### Behoben ### Behoben
- **Hotfix: Standalone-Binaries (Linux/Windows) der 0.9.19 wurden - Standalone-Binaries (Linux/Windows) zeigten `vunknown` als Version.
aus einem veralteten Source-Stand gebaut** und enthielten die Die `VERSION`-Datei ist jetzt ins PyInstaller-Onefile eingebettet.
neuen Filament-Sync-/Custom-Profile-Import-Features nicht. Das - Bei fehlenden TLS-Zertifikaten (`anycubic_slicer.crt`/`.key`) gab
Docker-Image war nicht betroffen. Diese Version baut die Binaries es nur den rohen Fehler `[Errno 2] No such file or directory`. Die
aus dem tatsächlichen 0.9.19-Source neu. Bridge meldet jetzt klar, wo die Dateien hingelegt werden müssen
- **Windows-EXE zeigt die korrekte Versionsnummer** statt `vunknown` und dass `anycubic-certs.zip` aus dem Gitea-Release stammt.
(PyInstaller-Spec bettet die `VERSION`-Datei jetzt mit ein).
### Geändert
- Filament-Profil-Liste neu kuratiert: 209 statt 399 Einträge.
Profile die nur für drucker-spezifische Vendor-Bundles existieren
(z.B. Eryone Thinker X400, Artillery M1 Pro, WonderMaker ZR,
Tiertime, Cubicon, CoLiDo, Afinia, Snapmaker) sind rausgeflogen
— OrcaSlicer hätte sie im Standard-Kobra-X-Setup beim Sync
ohnehin nicht gefunden, weil die jeweiligen Vendor-Bundles nur
bei aktivem Drucker-Vendor geladen werden. Für solche Filamente
bleibt der Custom-Profile-Import (Issue #41) der Weg.
## [0.9.19] 2026-06-02 ## [0.9.19] 2026-06-02

View File

@@ -1,15 +1,24 @@
# Changelog # Changelog
## [0.9.19.1] 2026-06-03 ## [0.9.19.1] 2026-06-04
### Fixed ### Fixed
- **Hotfix: standalone binaries (Linux/Windows) for v0.9.19 were - Standalone-Binaries (Linux/Windows) zeigten `vunknown` als Version.
built from a stale source revision** and shipped without the Die `VERSION`-Datei ist jetzt ins PyInstaller-Onefile eingebettet.
new filament-sync / custom-profile-import features. The Docker - Bei fehlenden TLS-Zertifikaten (`anycubic_slicer.crt`/`.key`) gab
image was not affected. This release rebuilds the binaries es nur den rohen Fehler `[Errno 2] No such file or directory`. Die
from the actual 0.9.19 source. Bridge meldet jetzt klar, wo die Dateien hingelegt werden müssen
- **Windows-EXE shows the correct version** instead of `vunknown` und dass `anycubic-certs.zip` aus dem Gitea-Release stammt.
(PyInstaller spec now bundles the `VERSION` file).
### Changed
- Filament-Profil-Liste neu kuratiert: 209 statt 399 Einträge.
Profile die nur für drucker-spezifische Vendor-Bundles existieren
(z.B. Eryone Thinker X400, Artillery M1 Pro, WonderMaker ZR,
Tiertime, Cubicon, CoLiDo, Afinia, Snapmaker) sind rausgeflogen
— OrcaSlicer hätte sie im Standard-Kobra-X-Setup beim Sync
ohnehin nicht gefunden, weil die jeweiligen Vendor-Bundles nur
bei aktivem Drucker-Vendor geladen werden. Für solche Filamente
bleibt der Custom-Profile-Import (Issue #41) der Weg.
## [0.9.19] 2026-06-02 ## [0.9.19] 2026-06-02

File diff suppressed because it is too large Load Diff

View File

@@ -154,6 +154,13 @@ class KobraXClient:
# -- Connection ---------------------------------------------------------- # -- Connection ----------------------------------------------------------
def _do_connect(self): def _do_connect(self):
if not os.path.exists(CERT_FILE) or not os.path.exists(KEY_FILE):
raise FileNotFoundError(
f"TLS-Zertifikate fehlen: anycubic_slicer.crt + anycubic_slicer.key "
f"müssen neben der kx-bridge Binary liegen ({_SCRIPT_DIR}/). "
f"Lade anycubic-certs.zip vom Gitea-Release herunter und entpacke "
f"die Dateien dorthin."
)
ctx = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT) ctx = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
ctx.check_hostname = False ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE ctx.verify_mode = ssl.CERT_NONE

View File

@@ -6,7 +6,7 @@
# ein → zur Laufzeit über sys._MEIPASS lesbar (_WEB_BASE in der Bridge). # ein → zur Laufzeit über sys._MEIPASS lesbar (_WEB_BASE in der Bridge).
from PyInstaller.utils.hooks import collect_all from PyInstaller.utils.hooks import collect_all
datas = [("web", "web"), ("data", "static")] # bridge/data/ → static/ im _MEIPASS datas = [("web", "web"), ("data", "static"), ("VERSION", ".")] # bridge/data/ → static/ im _MEIPASS
binaries = [] binaries = []
hiddenimports = [] hiddenimports = []