Skip to content

変更履歴

@uzuhq/code-sdk のリリース履歴。

Unreleased

破壊的変更

  • @uzuhq/code-sdk を runtime only に純化。 SDK は import しても DOM を一切触らない。 親 frame で init() / run() / sync() を呼んでも何もしない (= noop)。

    • runDevHarness / showDevButton / startDevHost / buildDevPlayers は削除。
    • 動機: Svelte / React 等 framework 系 scenario が body に template mount しようとすると SDK の body 上書きと衝突する問題の根本解消。 Google Analytics / firebase 等の modern library と同じ「import しただけでは host page の DOM を奪わない」原則。
  • dev harness (iframe grid / HUD / state inspector / virtual server) を @uzuhq/code-cliuzu dev サブコマンドに統合。

    • scenario 側は import 文ゼロ、 mountHarness 呼び出しゼロ。 run<S>({ logic, events }) を書くだけで uzu dev が harness page + in-memory GameRoom / SyncRoom / RelayRoom (本番と同一 WebSocket プロトコル) を立ち上げる。
    • virtual server は BroadcastChannel から WebSocket に切り替わり、 本番 (Cloudflare Worker DO) と同じ通信 shape になる。 disconnect / reconnect / message ordering など dev でしか再現しなかった bug が early に見つかる。
    • 子 iframe SDK は既存 online mode (?server=ws://localhost:<port>) をそのまま使うので改造ほぼゼロ。
    • window.__uzu_dev は harness page (親 frame) が dev-server の管理 channel と WebSocket で会話して expose する。 setRawState / sendAction / pauseTick / stepTick / reset は引き続き Playwright / E2E から使える。
    • @uzupj/uzu-devharness package は削除 (public 未公開だった)。
    • 既存 scenario の移行は main.ts 冒頭の if (import.meta.env.DEV) { mountHarness(...); } block と package.json@uzupj/uzu-devharness devDep を削除するだけ。 詳細は はじめに を参照。
  • firstFrameReady() / gameReady() ライフサイクル API を追加

    • YouTube Playables 互換の 2 段階ライフサイクル契約
    • 黒画面 / 二重 splash 問題の構造的解消
    • 詳細は API リファレンス を参照

計画中

  • manifest.json の constraints フィールド追加
  • npx uzu publish 時の自動 lint (bundle size / DOM 使用 / 絶対パス 等)
  • iOS WKWebView CI 自動テスト

SDK API のメジャー変更履歴

@uzuhq/code-sdk のバージョンごとの API 変更は npm install 後の node_modules/@uzuhq/code-sdk/CHANGELOG.md を参照してください。