変更履歴とバージョニング
ObjectOS のバージョン管理方法、リリース間の変更点、サポート対象について。
変更履歴とバージョニング
バージョニングポリシー
ObjectOS は セマンティックバージョニング に従います: MAJOR.MINOR.PATCH。
| バージョンの更新 | 意味 | 対応 |
|---|---|---|
パッチ (9.7.0 → 9.7.1) | バグ修正、動作の変更なし | そのまま更新でき、アプリの変更は不要 |
マイナー (9.6 → 9.7) | 新機能、後方互換あり | そのまま更新でき、必要に応じて新機能を採用 |
メジャー (8 → 9) | リリースノートに記載された破壊的変更 | アップグレード前に移行ガイドを必読 |
すべての @objectstack/* パッケージは、同期されたバージョン番号で一緒にリリースされます。これらは個別ではなく、マトリックスとしてテストされます。
互換性マトリックス
| コンポーネント | 互換性ルール |
|---|---|
| ObjectOS イメージ ↔ コンパイル済みアーティファクト | 同一のマイナーバージョン。9.7.x のイメージは 9.7.x のアーティファクトを実行します。9.7 のアーティファクトは 9.6 のイメージで利用できない機能を使用している場合があります。 |
| ObjectOS ↔ CLI | 同一のマイナーバージョンを推奨。npm i -g の CLI は、自身のバージョンに固定されたスキャフォールドを書き出します。 |
| ObjectOS ↔ データベースドライバー | ドライバーはイメージビルドで固定されます。Postgres ≥ 13 / MongoDB ≥ 5 / Turso(現行いずれか)を確認してください。 |
| Node.js | 20 LTS 以降。新規デプロイには 22 LTS を推奨。 |
サポート期間
| ブランチ | ステータス | 期限 |
|---|---|---|
| 9.x(現行) | 活発に開発中。新機能と修正 | 10.0 リリース後、少なくとも 12 か月 |
| 8.x | セキュリティ修正のみ | 10.0 リリースで EOL |
| ≤ 7.x | サポート対象外 | すでに EOL |
重大なセキュリティ修正は、現行および 1 つ前のメジャーバージョンにバックポートされます。それ以外はすべて main に取り込まれます。
リリースノート
リリース済みの ObjectOS バージョンとその CHANGELOG エントリは、次の場所で公開されています:
- npm:
@objectstack/runtime - GitHub: github.com/objectstack-ai/objectos/releases
- ソース CHANGELOG:
CHANGELOG.md - 詳細リリースノート:
RELEASE_NOTES.md
GitHub でリリースを購読すると、通知を受け取れます。
最近のハイライト
9.x — 現行リリーストレイン
ObjectOS One とバンドル版サーバーは現在 @objectstack 9.7.0 上で動作します。
ランタイムの起動コントラクトは 8.0 から変更ありません。createStandaloneStack
は引き続き同じアーティファクト・環境・データベース設定を受け取るため、8.0 のデプロイは
設定変更なしでそのまま更新できます。変わったのはオーサリング向けの表面です:
- 分析データセットが唯一のオーサリング表面に(9.0、破壊的)—
ダッシュボードのウィジェット、レポート、リストチャートは、セマンティックな
dataset(defineDataset(...))をバインドし、ディメンション/メジャーを名前で選択するようになりました。 従来のインラインクエリフィールド(ウィジェットのobject/valueField/aggregate、 レポートのobjectName/columns/groupingsDown、リストチャートのxAxisField/yAxisFields)は削除されました。移行方法: インラインクエリをdefineDatasetに移し、名前で参照します。ChartTypeSchemaも、ベースとしてしか 描画されなかった 8 つのバリアントタイプを廃止しました(stacked-bar→bar、spline→line、bubble→scatter、…)。 - ビルド時の検証が厳格化(9.6–9.7)—
os compileは、裸のフィールド参照 (record.amountではなくamount)、未知の CEL 関数、誤ったフロー値の補間構文に対して、 それぞれ did-you-mean ヒント付きで失敗するようになりました。以前は「ビルドは通るが 暗黙的に誤っていた」スタックが、明示的に失敗するようになります。アップグレード後にos compileを再実行し、指摘された箇所を修正してください。 - 数値フィールドの数式が混合演算を計算(9.7)—
record.amount / 100やrecord.price * 2が、暗黙的にnullを返すのではなく評価されるようになりました。/ 100.0という浮動小数点リテラルの回避策はもう不要です。 - オブジェクト単位の REST ゲーティングを強制適用(ADR-0049)— オブジェクトの
apiEnabled: falseは REST 表面からそのオブジェクトを除外し、apiMethodsホワイトリストは到達可能な操作を制限します。以前はパースされるだけで強制されていませんでした。 - パッケージドキュメントをメタデータ化 +
bookナビゲーション(9.3–9.6)—src/docs/*.mdはdocメタデータとして登録されます。book要素(ADR-0046)は 派生メンバーシップのナビゲーション軸を宣言し、対象者ゲーティング付きでGET /api/v1/meta/book/:name/treeから提供されます。 os package install(9.3)— カタログ ID またはインラインのエアギャップ用アーティファクトから、 稼働中のランタイムにパッケージをインストールします。--email/--passwordで認証します。- 承認(Approvals)(9.3)— 差し戻し再提出(
maxRevisions、デフォルト 3)、 ジョブベースの SLA 自動エスカレーション、一覧の検索/ページネーション、 セッションレスのバイリンガル承認/却下確認リンク。 - インバウンド Webhook のフロートリガー(9.3)—
type: 'api'のフローは、 HMAC 検証付きのPOST /api/v1/automation/hooks/:flowName/:hookIdエンドポイントをマウントし、 冪等かつキューベースの取り込みを行います。 - 通知の保持期間がデフォルトで有効に(9.5)— 通知履歴は 90 日で自動的に剪定されます。
履歴を永久に保持するには、メッセージングの
retentionDays: 0を設定します。 - CLI が AI プロバイダーの SDK をバンドル(9.0)— OpenAI 互換プロバイダー (DeepSeek、DashScope、SiliconFlow、OpenRouter、Cloudflare)が、 グローバルインストールした CLI でそのまま動作します。
フロー作成での動作変更として 1 点注意: create_record ノードの outputVariable は、
裸の ID ではなく作成されたレコードオブジェクトを保持するようになりました。ID を期待していた
{var} 参照は {var.id} に更新してください。
8.0.x
ObjectOS One とバンドル版サーバーは @objectstack 8.0.1 上で動作していました。
- MCP over Streamable HTTP — すべてのデプロイがネットワーク到達可能な
Model Context Protocol サーバーとして機能できます。
OS_MCP_SERVER_ENABLED=trueで有効化すると、エンドポイントは/api/v1/mcpで提供され、 fail-closed 認証(匿名リクエストは拒否)が適用されます。プラグインは@objectstack/plugin-mcp-serverから@objectstack/mcpに名称変更されました。 - セルフサービス API キー —
POST /api/v1/keysは一度だけ表示されるsys_api_keyを発行します。REST のデータ/メタデータ API(/api/v1/data、/api/v1/meta)は MCP と同じ検証器で API キーを認証し、キー所有者の権限と レコードレベルセキュリティの下で実行されます。 - フィールド単位の条件ルール —
visibleWhen、readonlyWhen、requiredWhenは フォーム UI だけでなく、ObjectQL によってサーバー側で強制されます。 - 再利用可能な RLS 読み取りフィルター —
security.getReadFilter(object, context)が レコードアクセスの読み取り範囲を公開します。分析データセット、ダッシュボード、レポートは これにブリッジし、範囲を安全に適用できない場合は fail closed になります。 - スタンドアロン host スタック — ランタイムはシングルテナントの
createStandaloneStackhost を提供します。7.x のクラウド接続・ホスト名ルーティング型のcreateObjectOSStackラッパーは削除されました。クラウドデプロイではOS_ARTIFACT_FILEを公開済みの artifact URL に向けます。
5.0 — project → environment への名称変更(リリース済み)
これまで Project と呼ばれていたランタイムの概念が、全体を通して Environment に名称変更されました。影響範囲:
- CLI フラグ:
--environment/-e - HTTP パス:
/api/v1/environments/:environmentId/... - ヘッダー:
X-Environment-Id - 環境変数:
OS_ENVIRONMENT_ID(OS_PROJECT_IDは非推奨のエイリアスとして維持) - DB カラム:
environment_id - JSON スキーマ:
EnvironmentArtifact
アップグレード
具体的な手順については アップグレードとロールバック を参照してください。事前チェック:
- 現行バージョンとターゲットバージョンの間にあるすべてのマイナーについて、CHANGELOG エントリを読みます。
os diff <old-artifact> <new-artifact>を実行して、破壊的なスキーマ変更を洗い出します。- ターゲットバージョンに対して
os doctorを実行します。 - フリート全体に展開する前に、カナリアインスタンスを 1 台立ち上げます。
- イメージタグとアーティファクトバージョンの両方についてロールバック計画を用意します(これらは独立してロールします)。
リグレッションの報告
パッチまたはマイナーによって、以前は動作していたものが壊れた場合は、github.com/objectstack-ai/objectos/issues で、アップグレード元/先のバージョンを添えてバグを報告してください。リグレッションは最優先で対応すべきバグとして扱います。