Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0f5a8cbc72 | |||
| a40f14af8e | |||
| 466b8c518d | |||
| 1c5396b37d | |||
| c23deebde5 |
@@ -1,5 +1,25 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## [0.9.19.1] – 2026-06-04
|
||||||
|
|
||||||
|
### Behoben
|
||||||
|
- Standalone-Binaries (Linux/Windows) zeigten `vunknown` als Version.
|
||||||
|
Die `VERSION`-Datei ist jetzt ins PyInstaller-Onefile eingebettet.
|
||||||
|
- Bei fehlenden TLS-Zertifikaten (`anycubic_slicer.crt`/`.key`) gab
|
||||||
|
es nur den rohen Fehler `[Errno 2] No such file or directory`. Die
|
||||||
|
Bridge meldet jetzt klar, wo die Dateien hingelegt werden müssen
|
||||||
|
und dass `anycubic-certs.zip` aus dem Gitea-Release stammt.
|
||||||
|
|
||||||
|
### 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
|
||||||
|
|
||||||
### Neu
|
### Neu
|
||||||
@@ -19,9 +39,9 @@
|
|||||||
wird beim Sync an Orca als User-Match weitergegeben. Funktioniert
|
wird beim Sync an Orca als User-Match weitergegeben. Funktioniert
|
||||||
über HTTP, also auch wenn die Bridge im Docker auf Raspi/NAS läuft
|
über HTTP, also auch wenn die Bridge im Docker auf Raspi/NAS läuft
|
||||||
und OrcaSlicer auf dem Desktop. Auch reine Override-Profile mit nur
|
und OrcaSlicer auf dem Desktop. Auch reine Override-Profile mit nur
|
||||||
`inherits: "Generic PLA @System"` + ein paar Tweaks (z.B.
|
`inherits: "Generic PLA @System"` + ein paar Tweaks werden korrekt
|
||||||
„Bert - PLA") werden korrekt erkannt — die Bridge resolved die
|
erkannt — die Bridge resolved die vererbten Felder aus dem
|
||||||
vererbten Felder aus dem System-Parent.
|
System-Parent.
|
||||||
|
|
||||||
### Fixes
|
### Fixes
|
||||||
- **AMS-Sync landete hartnäckig auf „Generic PLA":** das Orca-
|
- **AMS-Sync landete hartnäckig auf „Generic PLA":** das Orca-
|
||||||
|
|||||||
26
CHANGELOG.md
26
CHANGELOG.md
@@ -1,5 +1,25 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## [0.9.19.1] – 2026-06-04
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- Standalone-Binaries (Linux/Windows) zeigten `vunknown` als Version.
|
||||||
|
Die `VERSION`-Datei ist jetzt ins PyInstaller-Onefile eingebettet.
|
||||||
|
- Bei fehlenden TLS-Zertifikaten (`anycubic_slicer.crt`/`.key`) gab
|
||||||
|
es nur den rohen Fehler `[Errno 2] No such file or directory`. Die
|
||||||
|
Bridge meldet jetzt klar, wo die Dateien hingelegt werden müssen
|
||||||
|
und dass `anycubic-certs.zip` aus dem Gitea-Release stammt.
|
||||||
|
|
||||||
|
### 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
|
||||||
|
|
||||||
### New
|
### New
|
||||||
@@ -19,9 +39,9 @@
|
|||||||
are passed through to Orca on sync as user matches. Works over HTTP
|
are passed through to Orca on sync as user matches. Works over HTTP
|
||||||
so the bridge can run in Docker on a Raspi/NAS while OrcaSlicer
|
so the bridge can run in Docker on a Raspi/NAS while OrcaSlicer
|
||||||
lives on a desktop. Override-only profiles with just
|
lives on a desktop. Override-only profiles with just
|
||||||
`inherits: "Generic PLA @System"` + a few tweaks (e.g. "Bert - PLA")
|
`inherits: "Generic PLA @System"` + a few tweaks are detected
|
||||||
are detected correctly — the bridge resolves the inherited fields
|
correctly — the bridge resolves the inherited fields from the
|
||||||
from the system parent.
|
system parent.
|
||||||
|
|
||||||
### Fixes
|
### Fixes
|
||||||
- **AMS sync stuck on "Generic PLA":** the Orca data model has 68
|
- **AMS sync stuck on "Generic PLA":** the Orca data model has 68
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||||
|
|||||||
@@ -3973,7 +3973,9 @@ class KobraXBridge:
|
|||||||
GITEA_RAW_BASE = "https://gitea.it-drui.de/viewit/KX-Bridge-Release/raw/tag"
|
GITEA_RAW_BASE = "https://gitea.it-drui.de/viewit/KX-Bridge-Release/raw/tag"
|
||||||
|
|
||||||
def _read_version(self) -> str:
|
def _read_version(self) -> str:
|
||||||
for base in (pathlib.Path(_BASE), pathlib.Path(_BASE).parent):
|
# PyInstaller-Onefile entpackt VERSION (per kx-bridge.spec datas) nach
|
||||||
|
# sys._MEIPASS — daher _WEB_BASE statt _BASE benutzen.
|
||||||
|
for base in (pathlib.Path(_WEB_BASE), pathlib.Path(_BASE), pathlib.Path(_BASE).parent):
|
||||||
p = base / "VERSION"
|
p = base / "VERSION"
|
||||||
if p.is_file():
|
if p.is_file():
|
||||||
return p.read_text(encoding="utf-8").strip()
|
return p.read_text(encoding="utf-8").strip()
|
||||||
|
|||||||
@@ -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 = []
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user