← Blog

PrintStash v0.11.3: Centauri Carbon y copias seguras

Las Elegoo Centauri Carbon y Carbon 2 reciben por red el G-code de la bóveda, y la selección de bobina avisa antes de quedarse sin filamento.

versión

v0.11.3 es un número de parche que trae dos funciones visibles para quien la usa y una migración de base de datos que solo añade, así que haz una copia de seguridad antes de actualizar. Igual que v0.11.1 antes de ella, es una excepción explícita a la política normal de parches 0.x y no una entrega rutinaria de correcciones.

La Centauri Carbon puede recibir archivos

Los dos modelos de Centauri Carbon aceptan ya G-code enviado desde la bóveda. La transferencia va por HTTP sin cifrar, como un POST multipart por trozos de 1 MiB en la Carbon original y un PUT por trozos con Content-Range en la Carbon 2, y es independiente del canal SDCP o MQTT que lleva el estado y el control de impresión. El trabajo llegó con una actualización de la dependencia pycentauri.

Trátalo como beta, porque la evidencia sobre hardware real es escasa. Detrás del camino de la Carbon original hay un único informe de la comunidad, que probó el estado en vivo y un envío de solo subida a través de PrintStash contra una máquina física y confirmó que el archivo llegó al almacenamiento de la impresora. Iniciar, pausar, reanudar, cancelar y reconectar con la impresión en pausa no se probaron en esa sesión, así que es una prueba de humo parcial y no una validación completa. El camino de subida de la Carbon 2 no tiene ningún informe con hardware real.

El inventario de archivos y el borrado siguen desactivados a propósito en los dos modelos. La consulta de listado de archivos de la Carbon original puede tumbar el demonio de la impresora cuando se envía con una carga vacía, y la petición de listado documentada de la Carbon 2 no responde en el firmware que se ha validado, así que PrintStash no prueba ninguna de las dos operaciones.

La configuración y los ajustes de la Centauri explican ahora el ID de la placa base como es debido. Es lo que mantiene fiables los comandos mientras la impresora está inactiva, en pausa o en estado de error, no un simple apoyo para reconectar.

Un aviso cuando la bobina no da para la impresión

Al seleccionar una bobina en el diálogo de envío, ahora se compara con el peso de filamento leído de la revisión. Si la bobina no da para la impresión, recibes un aviso. Si la comprobación no se puede hacer, porque el slicer nunca escribió un peso de filamento o la bobina no tiene peso restante registrado, también recibes un aviso sobre eso, en lugar de un silencio que se lee como aprobación. Ninguno de los dos bloquea el envío, así que la decisión sigue siendo tuya.

La escritura en Spoolman está apagada hasta que la pidas

La escritura del consumo ya no viene activada por defecto. Se queda apagada hasta que un operador la habilita a propósito, lo que se ajusta a la realidad: Moonraker es hoy el único proveedor que informa del consumo medido, así que en cualquier otra impresora el ajuste no tenía nada sobre lo que actuar.

El endpoint de inventario de bobinas, GET /api/v1/spoolman/spools, y el selector construido sobre él llevan ahora el campo location de Spoolman. Dos bobinas del mismo fabricante, material y color son por lo demás idénticas en la lista, que es justo el caso que crea un cambiador de varias ranuras, sea un AMS, un CANVAS o un MMU.

Trabajo de integridad de datos

Las importaciones concurrentes de artefactos reservan ahora los números de revisión de forma atómica. La actualización repara los números de revisión duplicados o las marcas de recomendada que ya estuvieran en la base de datos y luego añade restricciones que mantienen intactas ambas invariantes de ahí en adelante.

Las copias de seguridad de SQLite capturan ahora una instantánea de la base de datos consistente a nivel transaccional, incluidos los datos WAL confirmados, y archivan el conjunto de blobs que pertenece a esa misma instantánea. La restauración valida y prepara la base de datos y los blobs antes de aplicar nada, pausa a los escritores concurrentes mientras trabaja y deshace los cambios en el almacenamiento si falla a medio camino.

El ejecutor de migraciones ya no marca como actual una base de datos incompleta y sin versión. Una base de datos huérfana se adopta solo cuando su esquema coincide con el esquema completo de la aplicación, y cualquier caso ambiguo falla con indicaciones de recuperación en lugar de saltarse migraciones en silencio.

Cambios menores

Importar un archivo zip con carpetas muy anidadas ya no falla con “too many files”, porque el límite de entradas cuenta archivos reales y no los registros de directorio que acumula un árbol anidado. Las subidas a OctoPrint envían el G-code en streaming dentro de la petición multipart en lugar de cargar el archivo completo en memoria antes. La dependencia de Python cryptography pasó a su versión 50.0.0 con el parche.

Actualizar sigue el flujo habitual de Docker Compose, y esta versión trae migraciones de base de datos. Haz primero una copia de seguridad y luego sigue la guía de actualización para los comandos actuales. La matriz de compatibilidad recoge lo que puede hacer cada proveedor de impresora en la versión publicada, y enviar impresiones a una Elegoo Centauri Carbon cubre el nuevo camino de subida en la práctica.