En la v0.1.0, Aether empieza a llevar la cuenta de sí mismo. El director puede probar otro motor en un solo mundo y el servidor ya tiene información para impedir una reversión peligrosa.
Canales del motor
El director puede poner un mundo en un motor de acceso anticipado mientras los demás siguen en el actual. El cambio detiene ese mundo, guarda una copia, la comprueba y cambia su motor.
Volver es la parte delicada. Un motor nuevo puede guardar algo que el actual no entiende. En ese caso, sigue usando el nuevo o restaura la copia anterior al cambio. Esa copia no incluye las sesiones posteriores. La aplicación web, la puerta de enlace y la aplicación Aether siguen en la versión más reciente.
Cada mundo también tiene una versión de datos. Los mundos anteriores a v0.1.0 se aceptan al abrirse. Si un motor antiguo encuentra una versión nueva, se niega a abrir y muestra ambas versiones. Todavía no hay migración hacia delante; se añadirá cuando los datos cambien de verdad.
Mundos existentes y controles de publicación
Antes, un mundo conservaba la configuración con la que se creó. Ahora, al despertar, el servidor detecta si está desactualizada. Una mesa en marcha no se interrumpe. Para mundos siempre activos, recreate-worlds muestra los cambios antes de aplicarlos. Como su aplicación corta las conexiones, el comando comienza como simulación.
La comprobación de la etiqueta y la prueba de humo completan la protección. CI debe haber terminado bien para el commit exacto. Después, la prueba crea un mundo, lo despierta, abre un WebSocket por Caddy y la puerta de enlace, comprueba la versión y borra el mundo. Esto habría detectado v0.0.10, que respondía HTTP 200 aunque la creación de mundos estaba rota.