Registro de cambios y versionado
Cómo se versiona ObjectOS, qué cambia entre versiones y qué tiene soporte.
Registro de cambios y versionado
Política de versionado
ObjectOS sigue el Versionado semántico: MAJOR.MINOR.PATCH.
| Incremento de versión | Qué significa | Qué hacer |
|---|---|---|
Parche (9.7.0 → 9.7.1) | Corrección de errores, sin cambios de comportamiento | Actualiza, no se requieren cambios en la aplicación |
Menor (9.6 → 9.7) | Nuevas funciones, compatible con versiones anteriores | Actualiza y, opcionalmente, adopta las nuevas funciones |
Mayor (8 → 9) | Cambios incompatibles documentados en las notas de versión | Lee la guía de migración antes de actualizar |
Todos los paquetes @objectstack/* se publican juntos con un número de
versión sincronizado: se prueban como una matriz, no de forma independiente.
Matriz de compatibilidad
| Componente | Regla de compatibilidad |
|---|---|
| Imagen de ObjectOS ↔ artefacto compilado | Misma versión menor. Una imagen 9.7.x ejecuta un artefacto 9.7.x; un artefacto 9.7 puede usar funciones no disponibles en una imagen 9.6. |
| ObjectOS ↔ CLI | Se recomienda la misma versión menor. La CLI en npm i -g genera andamiajes fijados a su propia versión. |
| ObjectOS ↔ controlador de base de datos | El controlador queda fijado por la compilación de la imagen; verifica Postgres ≥ 13 / MongoDB ≥ 5 / Turso (cualquiera actual). |
| Node.js | 20 LTS o posterior. Se recomienda 22 LTS para nuevos despliegues. |
Ventanas de soporte
| Rama | Estado | Hasta |
|---|---|---|
| 9.x (actual) | Desarrollo activo; nuevas funciones y correcciones | Al menos 12 meses después del lanzamiento de 10.0 |
| 8.x | Solo correcciones de seguridad | EOL en el lanzamiento de 10.0 |
| ≤ 7.x | Sin soporte | Ya en EOL |
Las correcciones de seguridad críticas se retroportan a la versión mayor
actual y a la anterior. Todo lo demás se incorpora en main.
Notas de versión
Las versiones publicadas de ObjectOS y sus entradas de CHANGELOG se publican en:
- npm:
@objectstack/runtime - GitHub: github.com/objectstack-ai/objectos/releases
- CHANGELOG de origen:
CHANGELOG.md - Notas de versión extensas:
RELEASE_NOTES.md
Suscríbete a las versiones en GitHub para recibir notificaciones.
Aspectos destacados recientes
9.x — tren de versiones actual
ObjectOS One y el servidor incluido ahora se ejecutan sobre @objectstack 9.7.0.
El contrato de arranque del runtime no cambia respecto a 8.0 —
createStandaloneStack sigue tomando el mismo artefacto, entorno y ajustes de
base de datos—, por lo que un despliegue 8.0 actualiza sin cambios de
configuración. Lo que se movió es la superficie orientada al autor:
- Los datasets de analítica son la única superficie de autor (9.0, cambio
incompatible): los widgets de panel, los informes y los gráficos de lista
ahora vinculan un
datasetsemántico (defineDataset(...)) y seleccionan dimensiones/medidas por nombre. Se eliminaron los antiguos campos de consulta en línea (object/valueField/aggregateen widgets,objectName/columns/groupingsDownen informes,xAxisField/yAxisFieldsen gráficos de lista). Migración: mueve la consulta en línea a undefineDatasety refiérete a él por nombre.ChartTypeSchematambién eliminó 8 tipos de variante que solo se renderizaban como su base (stacked-bar→bar,spline→line,bubble→scatter, …). - Validación más estricta en tiempo de compilación (9.6–9.7):
os compileahora falla ante referencias de campo sin prefijo (amounten lugar derecord.amount), funciones CEL desconocidas y sintaxis de interpolación de valores de flujo incorrecta, cada una con una sugerencia «quizás quisiste decir». Un stack que antes «compilaba pero estaba silenciosamente mal» ahora falla de forma visible: vuelve a ejecutaros compiletras actualizar y corrige lo que señale. - Las fórmulas de campos numéricos calculan aritmética mixta (9.7):
record.amount / 100yrecord.price * 2ahora se evalúan en lugar de producir silenciosamentenull; ya no se necesita el truco del literal flotante/ 100.0. - Control de REST a nivel de objeto, ahora aplicado (ADR-0049): el
apiEnabled: falsede un objeto lo retira de la superficie REST, y una lista blancaapiMethodsrestringe qué operaciones son accesibles. Antes se analizaba pero no se aplicaba. - Documentación de paquetes como metadatos + navegación
book(9.3–9.6): lossrc/docs/*.mdse registran como metadatosdoc; el elementobook(ADR-0046) declara una espina de navegación de pertenencia derivada, servida enGET /api/v1/meta/book/:name/treecon control por audiencia. os package install(9.3): instala un paquete en un runtime en ejecución desde un id de catálogo o un artefacto en línea aislado de la red, autenticándose con--email/--password.- Aprobaciones (9.3): devolución para revisión (
maxRevisions, predeterminado 3), autoescalada de SLA respaldada por jobs, búsqueda/paginación de listas y enlaces de confirmación de aprobar/rechazar bilingües y sin sesión. - Disparadores de flujo por webhook entrante (9.3): un flujo
type: 'api'monta un endpointPOST /api/v1/automation/hooks/:flowName/:hookIdverificado con HMAC, con ingesta idempotente y respaldada por cola. - Retención de notificaciones activada por defecto (9.5): el historial de
notificaciones se poda automáticamente a los 90 días; pon
retentionDays: 0en la mensajería para conservar el historial para siempre. - La CLI incluye los SDK de proveedores de IA (9.0): los proveedores compatibles con OpenAI (DeepSeek, DashScope, SiliconFlow, OpenRouter, Cloudflare) funcionan de inmediato en una CLI instalada globalmente.
Un cambio de comportamiento en la autoría de flujos a tener en cuenta: el
outputVariable de un nodo create_record ahora contiene el objeto de
registro creado (antes era el id sin más), así que actualiza las referencias
{var} que esperaban un id a {var.id}.
8.0.x
ObjectOS One y el servidor incluido se ejecutaban sobre @objectstack 8.0.1.
- MCP sobre Streamable HTTP: cada despliegue puede actuar como un servidor
Model Context Protocol accesible por red.
Actívalo con
OS_MCP_SERVER_ENABLED=true; el endpoint se sirve en/api/v1/mcpcon autenticación fail-closed (las solicitudes anónimas se rechazan). El plugin pasó a llamarse de@objectstack/plugin-mcp-servera@objectstack/mcp. - Claves de API autoservicio:
POST /api/v1/keysgenera unasys_api_keyque se muestra una sola vez. Las API REST de datos y metadatos (/api/v1/data,/api/v1/meta) ahora autentican las claves de API con el mismo verificador que MCP, ejecutándose bajo los permisos y la seguridad a nivel de registro del propietario de la clave. - Reglas condicionales por campo:
visibleWhen,readonlyWhenyrequiredWhense aplican en el servidor mediante ObjectQL, no solo en la UI del formulario. - Filtro de lectura RLS reutilizable:
security.getReadFilter(object, context)expone el alcance de lectura del acceso a registros; los datasets de analítica, los paneles y los informes se conectan a él y fallan en cerrado cuando el alcance no puede aplicarse de forma segura. - Stack de host autónomo: el runtime incluye un host
createStandaloneStackde inquilino único; se eliminó el wrappercreateObjectOSStackde 7.x, conectado a la nube y enrutado por hostname. Un despliegue en la nube ahora apuntaOS_ARTIFACT_FILEa una URL de artefacto publicada.
5.0 — cambio de nombre de project a environment (publicado)
El concepto de runtime antes llamado Project pasó a llamarse Environment en todo el sistema. Afectó a:
- Indicadores de CLI:
--environment/-e - Rutas HTTP:
/api/v1/environments/:environmentId/... - Cabeceras:
X-Environment-Id - Variables de entorno:
OS_ENVIRONMENT_ID(OS_PROJECT_IDse mantiene como alias obsoleto) - Columnas de BD:
environment_id - Esquemas JSON:
EnvironmentArtifact
Actualización
Consulta Actualización y reversión para los pasos mecánicos. Comprobaciones previas:
- Lee la entrada del CHANGELOG de cada versión menor entre tu versión actual y la de destino.
- Ejecuta
os diff <old-artifact> <new-artifact>para detectar cambios de esquema incompatibles. - Ejecuta
os doctorcontra la versión de destino. - Pon en marcha una instancia canary antes de desplegar en toda la flota.
- Ten un plan de reversión tanto para la etiqueta de la imagen como para la versión del artefacto (se revierten de forma independiente).
Informar regresiones
Si un parche o una versión menor rompe algo que antes funcionaba, abre un informe de error en github.com/objectstack-ai/objectos/issues indicando la versión desde la que actualizaste y a la que actualizaste. Tratamos las regresiones como la clase de error de máxima prioridad.