nightly: 0.9.27-nightly7

This commit is contained in:
2026-06-26 22:51:32 +02:00
parent f192a9943d
commit 3531cad0ef
6 changed files with 54 additions and 51 deletions

View File

@ -85,17 +85,25 @@ jobs:
git config user.name "gitea-actions" git config user.name "gitea-actions"
git config user.email "actions@it-drui.de" git config user.email "actions@it-drui.de"
# Letzten nightly-Tag finden (für Changelog-Range) # Letzten stabilen Release-Tag finden (v* ohne nightly) als Changelog-Basis
git fetch --tags origin 2>/dev/null || true git fetch --tags origin 2>/dev/null || true
PREV_TAG=$(git tag | grep '^nightly-' | sort | tail -1) PREV_TAG=$(git tag | grep -E '^v[0-9]+\.' | sort -V | tail -1)
# Fallback: letzter nightly-Tag
[ -z "$PREV_TAG" ] && PREV_TAG=$(git tag | grep '^nightly-' | sort | tail -1)
# Commits seit letztem Tag sammeln # Commits seit letztem stabilen Tag — chore/ci-Commits herausfiltern
if [ -n "$PREV_TAG" ]; then if [ -n "$PREV_TAG" ]; then
COMMITS=$(git log "${PREV_TAG}..HEAD" --pretty=format:"- %s" --no-merges 2>/dev/null || true) COMMITS=$(git log "${PREV_TAG}..HEAD" --pretty=format:"- %s" --no-merges 2>/dev/null \
| grep -v '^- chore: nightly' \
| grep -v '^- ci:' \
|| true)
else else
COMMITS=$(git log --pretty=format:"- %s" --no-merges -20 2>/dev/null || true) COMMITS=$(git log --pretty=format:"- %s" --no-merges -30 2>/dev/null \
| grep -v '^- chore: nightly' \
| grep -v '^- ci:' \
|| true)
fi fi
[ -z "$COMMITS" ] && COMMITS="- Automatischer Nightly-Build" [ -z "$COMMITS" ] && COMMITS="- Automatischer Nightly-Build (keine neuen Features seit ${PREV_TAG})"
# Body in Temp-Datei (vermeidet YAML-Probleme mit Sonderzeichen wie > oder ```) # Body in Temp-Datei (vermeidet YAML-Probleme mit Sonderzeichen wie > oder ```)
BODY_FILE=$(mktemp) BODY_FILE=$(mktemp)

View File

@ -63,13 +63,13 @@ The PR template will be pre-filled. Set the target branch to **`nightly`**.
## Branch model ## Branch model
``` ```
main ← stable releases only (merged by maintainer) master ← stable releases only (merged by maintainer)
nightly ← integration branch — PRs go here nightly ← integration branch — PRs go here
feature/* ← your feature branch (in your fork) feature/* ← your feature branch (in your fork)
fix/* ← your bugfix branch (in your fork) fix/* ← your bugfix branch (in your fork)
``` ```
Your PR always targets `nightly`. The maintainer periodically merges `nightly → main` for a new stable release. Your PR always targets `nightly`. The maintainer periodically merges `nightly → master` for a new stable release.
--- ---

View File

@ -14,22 +14,13 @@ ninguna está oficialmente probada ni soportada. Se agradece el feedback.</sub>
<sub>🇬🇧 <a href="README.md">English version</a> · 🇩🇪 <a href="README.de.md">Deutsche Version</a></sub> <sub>🇬🇧 <a href="README.md">English version</a> · 🇩🇪 <a href="README.de.md">Deutsche Version</a></sub>
</div>
> [!CAUTION]
> **Trabajos de mantenimiento en curso esta semana** — Estamos reestructurando el repositorio (modelo de ramas, flujos CI, proceso de contribución). Es posible que notes cambios en los nombres de ramas, plantillas de PR y la forma en que se publican las versiones. Pedimos disculpas por los inconvenientes. El manejo, el flujo de trabajo y la mantenibilidad a largo plazo mejorarán significativamente como resultado.
>
> 👉 ¿Quieres contribuir? Por favor lee primero [CONTRIBUTING.md](CONTRIBUTING.md).
<div align="center">
<br> <br>
[![Ko-fi](https://img.shields.io/badge/Ko--fi-Apoya%20este%20proyecto-FF5E5B?style=for-the-badge&logo=ko-fi&logoColor=white)](https://ko-fi.com/viewitde) [![Ko-fi](https://img.shields.io/badge/Ko--fi-Apoya%20este%20proyecto-FF5E5B?style=for-the-badge&logo=ko-fi&logoColor=white)](https://ko-fi.com/viewitde)
&nbsp; &nbsp;
[![Releases](https://img.shields.io/badge/Descargar-Lanzamientos-2EA043?style=for-the-badge&logo=gitea&logoColor=white)](https://gitea.it-drui.de/viewit/KX-Bridge-Release/releases) [![Releases](https://img.shields.io/badge/Descargar-Lanzamientos-2EA043?style=for-the-badge&logo=gitea&logoColor=white)](https://gitea.it-drui.de/viewit/KX-Bridge-Release/releases)
&nbsp; &nbsp;
[![Downloads](https://img.shields.io/badge/Descargas-800%2B-8957E5?style=for-the-badge&logo=gitea&logoColor=white)](https://gitea.it-drui.de/viewit/KX-Bridge-Release/releases) [![Downloads](https://img.shields.io/badge/Descargas-3.1k%2B-8957E5?style=for-the-badge&logo=gitea&logoColor=white)](https://gitea.it-drui.de/viewit/KX-Bridge-Release/releases)
&nbsp; &nbsp;
[![Video](https://img.shields.io/badge/YouTube-Tutorial-FF0000?style=for-the-badge&logo=youtube&logoColor=white)](https://www.youtube.com/watch?v=1Ql4wfH27fM) [![Video](https://img.shields.io/badge/YouTube-Tutorial-FF0000?style=for-the-badge&logo=youtube&logoColor=white)](https://www.youtube.com/watch?v=1Ql4wfH27fM)
@ -37,6 +28,11 @@ ninguna está oficialmente probada ni soportada. Se agradece el feedback.</sub>
</div> </div>
> [!CAUTION]
> **Trabajos de mantenimiento en curso** — Estamos reestructurando el repositorio (modelo de ramas, flujos CI, proceso de contribución). Es posible que notes cambios en los nombres de ramas, plantillas de PR y la forma en que se publican las versiones. Pedimos disculpas por las molestias. El manejo, el flujo de trabajo y la mantenibilidad a largo plazo mejorarán considerablemente.
>
> 👉 ¿Quieres contribuir? Por favor lee [CONTRIBUTING.md](CONTRIBUTING.md) primero.
--- ---
## ✨ Características ## ✨ Características
@ -53,7 +49,7 @@ ninguna está oficialmente probada ni soportada. Se agradece el feedback.</sub>
| 🧩 | **Multi-impresora** — múltiples impresoras en **una** instancia del puente, cambia mediante un menú desplegable | | 🧩 | **Multi-impresora** — múltiples impresoras en **una** instancia del puente, cambia mediante un menú desplegable |
| | **Añade una impresora con un clic** — solo introduce la IP, las credenciales se importan automáticamente | | | **Añade una impresora con un clic** — solo introduce la IP, las credenciales se importan automáticamente |
| 🔁 | **Reconexión MQTT robusta** — el puente sobrevive a reinicios nocturnos de la impresora sin reinicio manual | | 🔁 | **Reconexión MQTT robusta** — el puente sobrevive a reinicios nocturnos de la impresora sin reinicio manual |
| 🌐 | **Interfaz multilingüe** — DE / EN / ES / 中文, detecta automáticamente el idioma del navegador | | 🌐 | **Interfaz multilingüe** — DE / EN / ES / FR / IT / 中文, detecta automáticamente el idioma del navegador |
| 🔄 | **Actualización automática** — instala nuevas versiones directamente desde el navegador | | 🔄 | **Actualización automática** — instala nuevas versiones directamente desde el navegador |
| 🧠 | **OrcaSlicer** — protocolo Moonraker completo (HTTP + WebSocket); usa el [build OrcaSlicer-KX](#-slicer-recomendado) para emparejamiento correcto de vendor por ranura | | 🧠 | **OrcaSlicer** — protocolo Moonraker completo (HTTP + WebSocket); usa el [build OrcaSlicer-KX](#-slicer-recomendado) para emparejamiento correcto de vendor por ranura |
@ -75,43 +71,17 @@ docker compose up -d
**Binario Linux (sin Docker):** **Binario Linux (sin Docker):**
```bash ```bash
chmod +x kx-bridge-linux-amd64 && ./kx-bridge-linux-amd64 chmod +x kx-bridge && ./kx-bridge
``` ```
**EXE Windows (sin Docker):** **EXE Windows (sin Docker):**
``` ```
kx-bridge.exe kx-bridge.exe
``` ```
> `config\` y `data\` se crean junto al EXE — instalación portátil.
> ⚠️ **Certificados TLS necesarios para el binario standalone** > Con los binarios de Linux y Windows, `config/` y `data/` (configuración, SQLite, almacén de GCode)
> > viven junto al programa. Copia toda la carpeta para mover la instalación.
> El bridge habla con el MQTT de la impresora vía mTLS y necesita dos
> ficheros de certificado **junto al binario**:
>
> - `anycubic_slicer.crt`
> - `anycubic_slicer.key`
>
> Ambos vienen en **`anycubic-certs.zip`** en la misma página de release.
> Descárgalo y extrae los dos ficheros en el mismo directorio que
> `kx-bridge-linux-amd64` o `kx-bridge.exe`. Sin ellos verás
> `Verbindung fehlgeschlagen: TLS-Zertifikate fehlen …` (0.9.19.1+) o
> `[Errno 2] No such file or directory` (versiones anteriores).
>
> Estructura correcta:
> ```
> ~/kx-bridge/
> ├── kx-bridge-linux-amd64 (o kx-bridge.exe)
> ├── anycubic_slicer.crt ← de anycubic-certs.zip
> ├── anycubic_slicer.key ← de anycubic-certs.zip
> └── config/ (se crea en el primer arranque)
> ```
>
> Los usuarios de Docker no necesitan hacer esto — los certificados
> están incluidos en la imagen.
> Con los binarios de Linux y Windows, `config/` y `data/` (configuración,
> SQLite, almacén de GCode) viven junto al programa. Copia toda la carpeta
> para mover la instalación.
**Python directamente:** **Python directamente:**
```bash ```bash
@ -139,6 +109,11 @@ Impresora → Tipo de conexión **Moonraker** → Host: `http://IP-DEL-PUENTE:71
--- ---
## 📺 Vídeo tutorial
[![Configuración y uso de KX-Bridge](https://img.youtube.com/vi/1Ql4wfH27fM/hqdefault.jpg)](https://www.youtube.com/watch?v=1Ql4wfH27fM)
---
## 🎨 Slicer recomendado ## 🎨 Slicer recomendado
@ -212,6 +187,24 @@ docker compose up -d --build # recompilar localmente (en lugar de desc
--- ---
## 🌙 Builds nocturnos (Nightly)
Los builds nocturnos contienen las últimas funciones no publicadas y se generan automáticamente en cada push de desarrollo.
Pueden ser inestables — úsalos para pruebas o acceso anticipado a nuevas funciones.
```bash
docker compose -f docker-compose.yml -f docker-compose.nightly.yml pull
docker compose -f docker-compose.yml -f docker-compose.nightly.yml up -d
```
Volver a la versión estable:
```bash
docker compose pull && docker compose up -d
```
---
## 🩹 Solución de problemas ## 🩹 Solución de problemas
<details> <details>

View File

@ -1 +1 @@
0.9.27-nightly6 0.9.27-nightly7

View File

@ -4488,7 +4488,8 @@ class KobraXBridge:
for _k in ("PRINTER_IP", "MQTT_PORT", "MQTT_USERNAME", "MQTT_PASSWORD", for _k in ("PRINTER_IP", "MQTT_PORT", "MQTT_USERNAME", "MQTT_PASSWORD",
"MODE_ID", "DEVICE_ID", "DEFAULT_AMS_SLOT", "AUTO_LEVELING", "MODE_ID", "DEVICE_ID", "DEFAULT_AMS_SLOT", "AUTO_LEVELING",
"CAMERA_ON_PRINT", "WEB_UPLOAD_WARNING", "PRINT_START_DIALOG", "CAMERA_ON_PRINT", "WEB_UPLOAD_WARNING", "PRINT_START_DIALOG",
"FILE_READY_DIALOG", "BRIDGE_PRINTER_NAME"): "FILE_READY_DIALOG", "BRIDGE_PRINTER_NAME",
"SPOOLMAN_SERVER", "SPOOLMAN_SYNC_RATE"):
os.environ.pop(_k, None) os.environ.pop(_k, None)
in_docker = os.path.exists("/.dockerenv") or os.environ.get("KX_IN_DOCKER") in_docker = os.path.exists("/.dockerenv") or os.environ.get("KX_IN_DOCKER")

View File

@ -1654,6 +1654,7 @@ function saveSettings(){
btn.disabled=false; btn.disabled=false;
setText('btn-save-settings',T.settings_save); setText('btn-save-settings',T.settings_save);
closeSettings(); closeSettings();
_loadSpoolmanStatus();
poll(); poll();
},4000); },4000);
}).catch(function(e){ }).catch(function(e){