テーマ
変更履歴
@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-cliのuzu devサブコマンドに統合。- scenario 側は import 文ゼロ、 mountHarness 呼び出しゼロ。
run<S>({ logic, events })を書くだけでuzu devが harness page + in-memoryGameRoom/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-devharnesspackage は削除 (public 未公開だった)。 - 既存 scenario の移行は
main.ts冒頭のif (import.meta.env.DEV) { mountHarness(...); }block とpackage.jsonの@uzupj/uzu-devharnessdevDep を削除するだけ。 詳細は はじめに を参照。
- scenario 側は import 文ゼロ、 mountHarness 呼び出しゼロ。
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 を参照してください。