Changelog & Versioning
How ObjectOS is versioned, what changes between releases, and what's supported.
Changelog & Versioning
Versioning policy
ObjectOS follows Semantic Versioning: MAJOR.MINOR.PATCH.
| Version bump | What it means | What to do |
|---|---|---|
Patch (9.7.0 → 9.7.1) | Bug fixes, no behavior change | Roll forward, no app changes needed |
Minor (9.6 → 9.7) | New features, backward-compatible | Roll forward, optionally adopt new features |
Major (8 → 9) | Breaking changes documented in release notes | Read the migration guide before upgrading |
All @objectstack/* packages release together with a synchronized
version number — they're tested as a matrix, not independently.
Compatibility matrix
| Component | Compatibility rule |
|---|---|
| ObjectOS image ↔ compiled artifact | Same minor version. A 9.7.x image runs a 9.7.x artifact; a 9.7 artifact may use features unavailable in a 9.6 image. |
| ObjectOS ↔ CLI | Same minor version recommended. The CLI in npm i -g writes scaffolds pinned to its own version. |
| ObjectOS ↔ database driver | Driver pinned by image build; verify Postgres ≥ 13 / MongoDB ≥ 5 / Turso (any current). |
| Node.js | 20 LTS or newer. 22 LTS recommended for new deployments. |
Support windows
| Branch | Status | Until |
|---|---|---|
| 9.x (current) | Active development; new features and fixes | At least 12 months after 10.0 ships |
| 8.x | Security fixes only | EOL on 10.0 release |
| ≤ 7.x | Unsupported | Already EOL |
Critical security fixes are backported to the current and previous
major. Everything else lands on main.
Release notes
Released ObjectOS versions and their CHANGELOG entries are published at:
- npm:
@objectstack/runtime - GitHub: github.com/objectstack-ai/objectos/releases
- Source CHANGELOG:
CHANGELOG.md - Long-form release notes:
RELEASE_NOTES.md
Subscribe to releases on GitHub to get notified.
Recent highlights
9.x — current release train
ObjectOS One and the bundled server now ship on @objectstack 9.7.0.
The runtime boot contract is unchanged from 8.0 — createStandaloneStack
still takes the same artifact, environment, and database settings — so an
8.0 deployment rolls forward without config changes. The author-facing
surface is what moved:
- Analytics datasets are the single author surface (9.0, breaking) —
dashboard widgets, reports, and list-charts now bind a semantic
dataset(defineDataset(...)) and select dimensions/measures by name. The old inline query fields (object/valueField/aggregateon widgets,objectName/columns/groupingsDownon reports,xAxisField/yAxisFieldson list-charts) were removed. Migration: move the inline query into adefineDatasetand reference it by name.ChartTypeSchemaalso dropped 8 variant types that only rendered as their base (stacked-bar→bar,spline→line,bubble→scatter, …). - Stricter build-time validation (9.6–9.7) —
os compilenow fails on bare field references (amountinstead ofrecord.amount), unknown CEL functions, and wrong flow-value interpolation syntax, each with a did-you-mean hint. A stack that previously "built but was silently wrong" now fails loudly — re-runos compileafter upgrading and fix what it flags. - Number-field formulas compute mixed arithmetic (9.7) —
record.amount / 100andrecord.price * 2now evaluate instead of silently yieldingnull; the/ 100.0float-literal workaround is no longer needed. - Object-level REST gating, now enforced (ADR-0049) — an object's
apiEnabled: falseremoves it from the REST surface, and anapiMethodswhitelist restricts which operations are reachable. Previously parsed but not enforced. - Package documentation as metadata +
booknavigation (9.3–9.6) —src/docs/*.mdregister asdocmetadata; thebookelement (ADR-0046) declares a derived-membership navigation spine, served atGET /api/v1/meta/book/:name/treewith audience gating. os package install(9.3) — install a package into a running runtime from a catalog id or an inline air-gapped artifact, authenticating with--email/--password.- Approvals (9.3) — send-back-for-revision (
maxRevisions, default 3), jobs-backed SLA auto-escalation, list search/pagination, and session-less bilingual approve/reject confirm links. - Inbound webhook flow triggers (9.3) — a
type: 'api'flow mounts an HMAC-verifiedPOST /api/v1/automation/hooks/:flowName/:hookIdendpoint with idempotent, queue-backed ingestion. - Notification retention defaults on (9.5) — notification history
auto-prunes at 90 days; set the messaging
retentionDays: 0to keep history forever. - CLI bundles AI provider SDKs (9.0) — OpenAI-compatible providers (DeepSeek, DashScope, SiliconFlow, OpenRouter, Cloudflare) work out of the box on a globally-installed CLI.
One flow-authoring behavior change to note: a create_record node's
outputVariable now holds the created record object (was the bare id), so
update {var} references that expected an id to {var.id}.
8.0.x
ObjectOS One and the bundled server shipped on @objectstack 8.0.1.
- MCP over Streamable HTTP — every deployment can act as a
network-reachable Model Context Protocol
server. Opt in with
OS_MCP_SERVER_ENABLED=true; the endpoint is served at/api/v1/mcpwith fail-closed auth (anonymous requests are rejected). The plugin was renamed@objectstack/plugin-mcp-server→@objectstack/mcp. - Self-serve API keys —
POST /api/v1/keysmints a show-oncesys_api_key. The REST data and metadata APIs (/api/v1/data,/api/v1/meta) now authenticate API keys through the same verifier as MCP, running under the key owner's permissions and record-level security. - Field-level conditional rules —
visibleWhen,readonlyWhen, andrequiredWhenare enforced server-side by ObjectQL, not just in the form UI. - Reusable RLS read filter —
security.getReadFilter(object, context)exposes the record-access read scope; analytics datasets, dashboards, and reports bridge to it and fail closed when the scope cannot be applied. - Standalone host stack — the runtime ships a single-tenant
createStandaloneStackhost; the 7.x cloud-connected, hostname-routedcreateObjectOSStackwrapper was removed. A cloud deployment now pointsOS_ARTIFACT_FILEat a published artifact URL.
5.0 — project → environment rename (shipped)
The runtime concept formerly called Project was renamed to Environment throughout. Affected:
- CLI flags:
--environment/-e - HTTP paths:
/api/v1/environments/:environmentId/... - Headers:
X-Environment-Id - Env vars:
OS_ENVIRONMENT_ID(OS_PROJECT_IDkept as a deprecated alias) - DB columns:
environment_id - JSON schemas:
EnvironmentArtifact
Upgrading
See Upgrade and Rollback for the mechanical steps. Pre-flight:
- Read the CHANGELOG entry for every minor between your current and target version.
- Run
os diff <old-artifact> <new-artifact>to surface breaking schema changes. - Run
os doctoragainst the target version. - Bring up one canary instance before rolling the fleet.
- Have a rollback plan for both the image tag and the artifact version (they roll independently).
Reporting regressions
If a patch or minor breaks something previously working, file a bug at github.com/objectstack-ai/objectos/issues with the version you upgraded from / to. We treat regressions as the highest-priority class of bug.