Journal des modifications et versionnage
Comment ObjectOS est versionné, ce qui change entre les versions et ce qui est pris en charge.
Journal des modifications et versionnage
Politique de versionnage
ObjectOS suit le versionnage sémantique : MAJOR.MINOR.PATCH.
| Incrément de version | Signification | Que faire |
|---|---|---|
Patch (9.7.0 → 9.7.1) | Corrections de bogues, aucun changement de comportement | Mettre à jour, aucune modification de l'application nécessaire |
Mineur (9.6 → 9.7) | Nouvelles fonctionnalités, rétrocompatibles | Mettre à jour, adopter éventuellement les nouvelles fonctionnalités |
Majeur (8 → 9) | Changements incompatibles documentés dans les notes de version | Lire le guide de migration avant de mettre à niveau |
Tous les paquets @objectstack/* sont publiés ensemble avec un numéro de
version synchronisé — ils sont testés en tant que matrice, et non
indépendamment.
Matrice de compatibilité
| Composant | Règle de compatibilité |
|---|---|
| Image ObjectOS ↔ artefact compilé | Même version mineure. Une image 9.7.x exécute un artefact 9.7.x ; un artefact 9.7 peut utiliser des fonctionnalités indisponibles dans une image 9.6. |
| ObjectOS ↔ CLI | Même version mineure recommandée. Le CLI dans npm i -g écrit des squelettes épinglés à sa propre version. |
| ObjectOS ↔ pilote de base de données | Pilote épinglé par la construction de l'image ; vérifier Postgres ≥ 13 / MongoDB ≥ 5 / Turso (toute version actuelle). |
| Node.js | 20 LTS ou plus récent. 22 LTS recommandé pour les nouveaux déploiements. |
Fenêtres de support
| Branche | Statut | Jusqu'à |
|---|---|---|
| 9.x (actuelle) | Développement actif ; nouvelles fonctionnalités et corrections | Au moins 12 mois après la sortie de la 10.0 |
| 8.x | Corrections de sécurité uniquement | Fin de vie à la sortie de la 10.0 |
| ≤ 7.x | Non prise en charge | Déjà en fin de vie |
Les correctifs de sécurité critiques sont rétroportés vers la version
majeure actuelle et la précédente. Tout le reste atterrit sur main.
Notes de version
Les versions publiées d'ObjectOS et leurs entrées de CHANGELOG sont publiées à :
- npm :
@objectstack/runtime - GitHub : github.com/objectstack-ai/objectos/releases
- CHANGELOG source :
CHANGELOG.md - Notes de version détaillées :
RELEASE_NOTES.md
Abonnez-vous aux versions sur GitHub pour être notifié.
Points marquants récents
9.x — train de versions actuel
ObjectOS One et le serveur intégré tournent désormais sur @objectstack 9.7.0.
Le contrat de démarrage du runtime est inchangé depuis la 8.0 —
createStandaloneStack prend toujours les mêmes paramètres d'artefact,
d'environnement et de base de données — de sorte qu'un déploiement 8.0 se met à
jour sans changement de configuration. C'est la surface destinée aux auteurs qui
a évolué :
- Les datasets d'analytique sont l'unique surface d'auteur (9.0, incompatible) —
les widgets de tableau de bord, les rapports et les list-charts lient désormais
un
datasetsémantique (defineDataset(...)) et sélectionnent les dimensions/mesures par nom. Les anciens champs de requête en ligne (object/valueField/aggregatesur les widgets,objectName/columns/groupingsDownsur les rapports,xAxisField/yAxisFieldssur les list-charts) ont été supprimés. Migration : déplacez la requête en ligne dans undefineDatasetet référencez-le par nom.ChartTypeSchemaa également abandonné 8 types de variantes qui ne faisaient que rendre comme leur type de base (stacked-bar→bar,spline→line,bubble→scatter, …). - Validation plus stricte au moment du build (9.6–9.7) —
os compileéchoue désormais sur les références de champ nues (amountau lieu derecord.amount), les fonctions CEL inconnues et la mauvaise syntaxe d'interpolation de valeurs de flux, chacune avec une suggestion « vouliez-vous dire ». Une stack qui auparavant « se construisait mais était silencieusement erronée » échoue désormais bruyamment — relancezos compileaprès la mise à niveau et corrigez ce qu'il signale. - Les formules de champ numérique calculent l'arithmétique mixte (9.7) —
record.amount / 100etrecord.price * 2s'évaluent désormais au lieu de produire silencieusementnull; le contournement par littéral flottant/ 100.0n'est plus nécessaire. - Contrôle REST au niveau de l'objet, désormais appliqué (ADR-0049) — un
apiEnabled: falsesur un objet le retire de la surface REST, et une liste blancheapiMethodsrestreint les opérations accessibles. Auparavant analysé mais non appliqué. - Documentation de paquet sous forme de métadonnées + navigation
book(9.3–9.6) — lessrc/docs/*.mds'enregistrent comme métadonnéesdoc; l'élémentbook(ADR-0046) déclare une colonne vertébrale de navigation à appartenance dérivée, servie surGET /api/v1/meta/book/:name/treeavec un contrôle par audience. os package install(9.3) — installe un paquet dans un runtime en cours d'exécution à partir d'un identifiant de catalogue ou d'un artefact en ligne isolé (air-gapped), en s'authentifiant avec--email/--password.- Approbations (9.3) — renvoi pour révision (
maxRevisions, par défaut 3), auto-escalade de SLA adossée aux jobs, recherche/pagination de listes, et liens de confirmation d'approbation/rejet bilingues et sans session. - Déclencheurs de flux par webhook entrant (9.3) — un flux
type: 'api'monte un endpointPOST /api/v1/automation/hooks/:flowName/:hookIdvérifié par HMAC, avec une ingestion idempotente et adossée à une file d'attente. - Rétention des notifications activée par défaut (9.5) — l'historique des
notifications est auto-purgé à 90 jours ; définissez
retentionDays: 0dans la messagerie pour conserver l'historique indéfiniment. - Le CLI embarque les SDK des fournisseurs d'IA (9.0) — les fournisseurs compatibles OpenAI (DeepSeek, DashScope, SiliconFlow, OpenRouter, Cloudflare) fonctionnent immédiatement sur un CLI installé globalement.
Un changement de comportement à noter côté création de flux : l'outputVariable
d'un nœud create_record contient désormais l'objet enregistrement créé (et
non plus l'id nu), donc mettez à jour les références {var} qui attendaient un id
en {var.id}.
8.0.x
ObjectOS One et le serveur intégré tournaient sur @objectstack 8.0.1.
- MCP via Streamable HTTP — chaque déploiement peut agir comme un serveur
Model Context Protocol accessible via le
réseau. Activez-le avec
OS_MCP_SERVER_ENABLED=true; l'endpoint est servi sur/api/v1/mcpavec une authentification fail-closed (les requêtes anonymes sont rejetées). Le plugin a été renommé de@objectstack/plugin-mcp-serveren@objectstack/mcp. - Clés d'API en libre-service —
POST /api/v1/keysgénère unesys_api_keyaffichée une seule fois. Les API REST de données et de métadonnées (/api/v1/data,/api/v1/meta) authentifient désormais les clés d'API via le même vérificateur que MCP, en s'exécutant sous les permissions et la sécurité au niveau des enregistrements du propriétaire de la clé. - Règles conditionnelles au niveau des champs —
visibleWhen,readonlyWhenetrequiredWhensont appliquées côté serveur par ObjectQL, et pas seulement dans l'UI du formulaire. - Filtre de lecture RLS réutilisable —
security.getReadFilter(object, context)expose la portée de lecture de l'accès aux enregistrements ; les datasets d'analytique, les tableaux de bord et les rapports s'y connectent et échouent en mode fermé lorsque la portée ne peut pas être appliquée en toute sécurité. - Stack hôte autonome — le runtime fournit un hôte
createStandaloneStackmono-locataire ; le wrappercreateObjectOSStackde 7.x, connecté au cloud et routé par hostname, a été supprimé. Un déploiement cloud pointe désormaisOS_ARTIFACT_FILEvers une URL d'artefact publiée.
5.0 — renommage de project → environment (publié)
Le concept de runtime autrefois appelé Project a été renommé en Environment partout. Cela a affecté :
- Drapeaux CLI :
--environment/-e - Chemins HTTP :
/api/v1/environments/:environmentId/... - En-têtes :
X-Environment-Id - Variables d'environnement :
OS_ENVIRONMENT_ID(OS_PROJECT_IDconservé comme alias déprécié) - Colonnes de base de données :
environment_id - Schémas JSON :
EnvironmentArtifact
Mise à niveau
Voir Mise à niveau et restauration pour les étapes mécaniques. Avant le décollage :
- Lire l'entrée du CHANGELOG pour chaque version mineure entre votre version actuelle et la version cible.
- Exécuter
os diff <old-artifact> <new-artifact>pour faire apparaître les changements de schéma incompatibles. - Exécuter
os doctorsur la version cible. - Démarrer une instance canari avant de déployer sur l'ensemble du parc.
- Avoir un plan de restauration à la fois pour le tag d'image et la version d'artefact (ils sont restaurés indépendamment).
Signaler des régressions
Si un correctif ou une version mineure casse quelque chose qui fonctionnait auparavant, signalez un bogue sur github.com/objectstack-ai/objectos/issues en indiquant la version depuis / vers laquelle vous avez effectué la mise à niveau. Nous traitons les régressions comme la catégorie de bogues la plus prioritaire.