PrintStash v0.12.0: reparto de flota por material
La comprobación previa compara material y boquilla, los lotes ganan copias y prioridad, y la API se publica también en una imagen lite.
La v0.12.0 añade a la cola de flota un reparto que tiene en cuenta el material, divide la API en una imagen completa y otra lite, y elimina un comportamiento de arranque que podía borrar archivos que PrintStash no había puesto ahí. Trae migraciones de base de datos aditivas junto con cambios de despliegue y de dependencias, así que haz una copia de seguridad antes de actualizar, y lee primero las notas de actualización si usas PostgreSQL, MinIO o el archivo Compose ligero.
La cola ya compara el archivo con la máquina
Hasta esta versión, el enrutado solo contaba trabajos. Nada impedía que un laminado en ABS acabara en una impresora cargada con PLA, ni que un archivo de 0,4 mm fuera a la máquina que llevaba una boquilla de 0,6 mm. Esa era la respuesta honesta a la pregunta más habitual sobre la cola de flota, y ya no lo es.
Las herramientas de la impresora y las alimentaciones de material ahora registran de dónde salió su información, y dos de esas fuentes pueden mantenerse al día por su cuenta: el estado del AMS de Bambu y la bobina activa de Spoolman en Moonraker pueden sincronizarse automáticamente. Una comprobación previa del G-code compara entonces los metadatos de material y boquilla extraídos del archivo con lo que informa la máquina de destino antes de que salga un envío directo.
Que no coincidan no es un bloqueo duro. Puedes forzarlo, y ese forzado queda registrado en lugar de pasar en silencio, que es la forma correcta para una granja donde a veces quien opera sabe más que los metadatos.
Los lotes de flota crecieron a la vez. Un lote puede llevar un número de copias en lugar de encolar el mismo trabajo seis veces a mano, limitarse a un grupo de impresoras y esperar en un carril de prioridad. Un visto bueno opcional del operador retiene el reparto hasta que una persona da la orden, y un tablero de impresoras da a la flota una vista de un solo golpe.
El arranque ya no borra archivos que no reconoce
Esta es la entrada que hay que leer dos veces si apuntaste PrintStash a una carpeta que ya tenía cosas dentro.
El arranque y el mantenimiento cada hora deducían la propiedad de los archivos y borraban de forma recursiva los objetos sin indexar del almacenamiento configurado. Ya no lo hacen. Las rutas locales de la bóveda en el primer arranque tienen que ser directorios vacíos, dedicados y con permiso de escritura, las subidas fallidas limpian solo sus destinos exactos, y una ruta ocupada nunca se sobrescribe. Una carpeta de NAS o de Nextcloud que ya existe va en External Libraries, donde PrintStash indexa los bytes en su sitio y nunca es su dueño.
Si la ruta de tu bóveda es ahora mismo una carpeta compartida con otros archivos dentro, resuélvelo como parte de esta actualización y no después.
Dos imágenes de la API
La API se publica ahora como printstash-api y printstash-api-lite. La lite quita Chromium y
OpenCASCADE, lo que significa que no hay importaciones asistidas por navegador ni teselado de STEP, y
mantiene la generación de miniaturas de mallas con NumPy, Pillow y Trimesh. Es más de 700 MiB más
pequeña que la completa, algo que se nota en una Raspberry Pi o en cualquier host donde descargar la
imagen completa sea la parte lenta de una actualización.
Las dos imágenes informan de lo que pueden hacer de verdad a través de los detalles de salud autenticados, así que un cliente puede preguntar en lugar de suponer. El archivo Compose ligero ahora descarga la lite; el stack por defecto sigue descargando la completa.
Almacenamiento, contraseñas y dependencias
El stack normal de Compose ya no incluye MinIO. SeaweedFS sigue siendo el servicio compatible con S3 que viene incluido, los endpoints externos de MinIO siguen funcionando, y una utilidad de transición copia objetos desde un volumen de MinIO sin borrar el origen, verificando lo que ha descargado con una imagen de rclone anclada por digest. Esa utilidad es temporal y desaparece antes de la 1.0.
Los hashes de contraseña nuevos usan Argon2. Un inicio de sesión correcto actualiza en su sitio un hash bcrypt antiguo, así que nadie necesita restablecer su contraseña, y el comportamiento histórico de 72 bytes de bcrypt se conserva solo para verificar hashes viejos. Las contraseñas largas, con Unicode o mal formadas, junto con los hashes antiguos dañados, ahora fallan por caminos controlados.
Por debajo: PostgreSQL pasó a Psycopg 3, el procesado de mallas a NumPy 2 y Trimesh 5, y el soporte de
STEP está en las imágenes completas de amd64 y de arm64. aiosqlite es ahora un extra opcional. El
teselado de STEP corre en un proceso hijo desechable con un presupuesto de memoria y un tiempo límite,
así que un archivo patológico se degrada en lugar de llevarse la API por delante.
Importaciones que dicen la verdad sobre sí mismas
Los trabajos de importación publican metadatos de finalización duraderos, un resultado explícito de completo o parcial, el estado de las miniaturas con motivos estables, y un progreso monótono que sobrevive a un reinicio. Un trabajo no puede informar de que ha terminado hasta que su modelo, su artefacto, sus metadatos, su almacenamiento principal y las miniaturas esperadas se ven desde una sesión nueva, lo que cierra el hueco en el que una importación parecía terminada y no lo estaba.
El Centro de Tareas es ahora el único dueño de esas transiciones, emite un solo evento terminal por trabajo, rechaza respuestas de sondeo obsoletas y se recupera después de una recarga o de un corte de conectividad.
Las mallas demasiado grandes tienen ahora un plan B de STL en streaming con memoria acotada que produce una miniatura WebP de 640 por 480, también desde la reparación de Mantenimiento de la Bóveda y desde la subida masiva, así que un STL grande y válido ya no termina en silencio sin previsualización.
Cosas más pequeñas
La beta de Bambu en modo LAN registra las impresiones empezadas fuera de PrintStash usando los campos
de identidad que informa la impresora, e intenta capturar el G-code o el archivo de proyecto exacto
mientras sigue en la caché FTPS de la impresora, etiquetando el historial como solo metadatos cuando no
se pudo recuperar ningún artefacto. Los ajustes de previsualización controlan la nitidez del render 3D
y de G-code, la resolución de las capturas descargadas y la resolución de las imágenes generadas del
modelo, con una acción en segundo plano para volver a crear las previsualizaciones existentes. OIDC
acepta ahora URL de emisor que solo se diferencian por una barra final, lo que arregla las
configuraciones PER_PROVIDER de Authentik sin dejar de rechazar emisores que de verdad no coinciden.
Mantenimiento de la Bóveda informa de los totales de severidad a partir de los hallazgos que devuelve
de verdad y se salta las comprobaciones de archivo ausente en los elementos en la papelera.
Actualizar sigue el flujo normal de Docker Compose. Haz primero una copia de seguridad, luego repasa la guía de actualización y consulta la matriz de compatibilidad para ver qué hace cada proveedor de impresora en la versión que estés usando.