lunaEditer の codegen が、不具合を生成する問題
Description
杉浦さんより相談の件
lunaEditerのcodegenするとlunaEditer側とUltemist側にある違いで壊れるんですよ。
それ直さないとHomeも背景しか表示されないみたいなバグが起こります。
マヤヤの”デフォルト”がlunaEditer側から消えてるのでUltemist側で
マヤヤのデフォルトを笑顔とかに一時的に置き換えると治ります。
が、根本的な解決にはならないのでそこの修正をお願いしたい形です。
-
起きたこと
Luna Editor 側でマヤヤの「デフォルト」表情が削除され、codegen で型定義から該当 state が消失。しかしアルテミスト側の master-data(mayaya.ts と home-voices.ts)は旧来の マヤヤ.デフォルト を参照したままで、実行時に undefined を画像表示関数に渡して例外発生。Home 画面の描画が中断し、背景画像のみが表示される状態になった。 一時的な対応 マヤヤ.デフォルト を参照していた5箇所を マヤヤ.笑顔 に書き換えて復旧。
-
┌──────────────────────────────────────────────────────┬────────────────────┐ │ ファイル │ 行 │ ├──────────────────────────────────────────────────────┼────────────────────┤ │ packages/shared/src/master-data/characters/mayaya.ts │ 72 │ ├──────────────────────────────────────────────────────┼────────────────────┤ │ packages/shared/src/master-data/home-voices.ts │ 109, 115, 121, 128 │ └──────────────────────────────────────────────────────┴────────────────────┘ 根本的な対応
- CI に bun typecheck を必須ゲート化(最優先)。TS は警告を出していたが dev/build が無視して起動するため気付けなかった。マージ前に型エラーで赤くなるようにすれば同種の事故は必ず止まる。 2. bun codegen:luna-editor 直後に typecheck を自動実行(pre-commit フック推奨)。codegen を走らせた本人が即座に気付ける。 3. 運用ルール: Luna Editor で state を削除/リネームする前に rg "LunaEditorStates.<キャラ>." で参照を洗い出し、手書き側を同時に追従させる。
--- Homeページクラッシュ 不具合レポート 事象
- #/home で背景画像のみ表示され、Home UI が描画されない
- 他シーン(Members 等)は正常
- 発生コミット: 5194c0d8 chore: auto-update codegen output 以降
-
原因 Luna Editor からマヤヤの デフォルト state が削除 → codegen で型から消失。手書き側は未追従で LunaEditorStates.マヤヤ.デフォルト が undefined になり、resolveLayeredPictureUrls(undefined) が throw して Home 描画が中断。dev/build は型エラーを無視して起動するため事前に気付けなかった。 修正ファイル
- packages/shared/src/master-data/characters/mayaya.ts:72
- packages/shared/src/master-data/home-voices.ts:109, 115, 121, 128
いずれも マヤヤ.デフォルト → マヤヤ.笑顔 に置換。 再発リスク Luna Editor で state を削除/リネーム後に codegen を走らせれば再発する構造的問題。複数人で Luna Editor を触っている現体制では高確率で再発する。 推奨対策
- CI に bun typecheck 必須ゲートを導入(最優先) 2. codegen:luna-editor 後に typecheck 自動連鎖(pre-commit) 3. state 削除前の参照洗い出しを運用手順化
- packages/shared/src/master-data/characters/mayaya.ts:72
Comments (2)
これが問題の構造か?
auto-fix-codegen.yml
→ codegen 実行 → LunaEditorStates.ts 更新(デフォルト state 消滅)
→ 型エラーを無視してそのままコミット・プッシュ ← ここが盲点
lint-and-test.yaml
→ lint / test / build は通る
→ typecheck なし ← 型エラーが CI で止まらない
① lint-and-test.yaml(最優先)
Build ステップの直前に追加:
- name: Typecheck
run: cd apps/client && bun run typecheck
これで PR マージ前に型エラーが必ず CI で止める。
② auto-fix-codegen.yml(推奨)
Run codegen ステップの直後に追加:
- name: Typecheck after codegen
run: |
cd apps/client && bun run typecheck || {
echo "::error::codegen 後に型エラーが検出されました。手書き側 master-data の修正が必要です。"
exit 1
}
これで「codegen が壊れた状態のまま自動コミットされる」のを防ぐか