Adventure Editor Pro v53 (2026-10-02)
基準: AdventureEditorPro_interactive_video_v52

変更:
- 変数一覧の名前を直接編集。Enterまたはフォーカスを離すと確定。変数ID・値・既存ID参照は維持。Undo対応。
- 保留した終了/周回パルスを常時監視が上書きしない。
- 終了起点の遷移失敗時、終了パルスを保持し250ms後に条件を再評価。自動再試行は1回まで。
  再試行も失敗した場合は IV END RECOVERY FAILED を記録。独自の全体終了や条件変更は行わない。
- fallback経路も旧動画の背面で実サイズ化してからplay()。非表示時はinline displayもnoneにする。
- play()待機に8秒の期限を追加。解放・全体停止時には待機を中止。
- ended受信/無視、終了評価、パルス保持、再試行、終了後無遷移、seek/seeked/pause/abortの診断を追加。
- EVENT LOOP GAPとフリーズ警告へフレーム数・buffered・seek・lock・pending・request経過・終了通知履歴を追加。
- Long Task監視（対応ブラウザ）・visibility/freeze/resume・ログ描画時間を記録。
- 常時 EVAL DEFER は同一要求で最大1秒に1件。終了/周回通知のログは省略しない。
- テストプレイ用mainとリリースbundle内runtimeMainは同一。

再生途中の長時間停止は原因未確定。今回の診断ログで追加確認する。
既存条件・優先順位・終了設定・元のマクロ文字列は変更しない。
名前を文字列で指定する未解析マクロを再入力する場合は、新しい変数名を使用する。
起動: AdventureEditorPro_interactive_video_v53.html

--- v52以前の説明 ---
Adventure Editor Pro v52

[v52 preload解放修正]
- インタラクティブ動画遷移中、現在の候補から外れたpreload videoを即時解放する処理を追加。
- 解放順序は pause → src解除 → load → DOM削除 → preloadPool削除。
- active video / main video / 現在の先読み候補は保持し、不要分だけ回収。
- 切替用fallback videoの再生準備失敗時も同じ解放処理を使用。
- 条件判定・遷移条件ロジックは変更していない。


主な変更:
- リリース時の簡易 player.js 生成方式を廃止。
- エディタのテストプレイと同じ runtime_main.js / runtime_tools.js をリリース版で使用。
- リリースZIPは index.html / runtime_main.js / runtime_tools.js / project.js / boot.js / assets / lib で構成。
- Python等の外部実行ファイルは生成しない。
- 画像・音声・映像は assets 配下へコピーし、project.js の参照先のみリリース用へ変更。
- テストプレイとリリース版の実行ロジック差を縮小。


v37 changes:
- Interactive video uses start video + addable conditional video clips.
- Each added clip has its own loop range, max duration, audio, volume, sync and playback rate.
- Video buttons start with one row and can be added.
- Video overlay messages added.
- Message macro hide button inserts the selected character name.
- Character placement preview/test-play use one shared transform.

- 人物タブ: 表情画像クリックで、画像ごとの左右オフセットX/Yを個別調整可能。


[v37] リリースZIPはWindowsのJS展開警告を避けるため、runtime_main.js等を生成せず、実行コードをindex.html内へ埋め込みます。


v37: インタラクティブ動画の開始エフェクト（なし/黒/白/クロスフェード）を追加。背景変更コマンドにソリッドカラーを追加。[hide_msg] は継続対応。


v37: インタラクティブ動画の各動画ブロックに変数変化ルールを追加。開始/指定秒/一定間隔/終了/ループ/条件成立に対応。


v37: インタラクティブ動画の変数操作を「1回変化 / 時間変化」の変化タイプ方式へ統一。動画ボタンは複数変数を追加可能。時間変化はその動画中/全体継続を選択可能。


v37: インタラクティブ動画の分岐候補を最大4本まで事前読込し、読込済みvideo要素へ即時切替するプリロード・プール方式を追加。選択されなかった候補は待機し、動画切替後も次候補を再先読みします。


[v46]
- 追加動画の遷移条件を複数追加可能に変更（AND / OR）。
- 遷移条件タイプに「変数条件」「前の動画が終了したら」「ループ1周したら」を追加。
- ループONでは「前の動画終了」は成立せず、ループ周回条件で遷移。
- AIマクロに ivideo_clip_condition を追加し、複数遷移条件を保持。


[v46]
- 時間変化の継続範囲デフォルトを「動画全体（インタラクティブ動画全体）」へ変更。クリップ切替では停止しない。
- 「この動画だけ」は明示選択時のみクリップ切替で停止。
- 通常ボタンとQTE成功時は同じ変数設定を共用。QTE OFF=「クリック時」、ON=「成功時」に見出しだけ変更。
- QTE ON時のみ「失敗時」設定を表示。ON/OFFでは設定データを削除しない。


v46: ループONでも1周終了時に遷移条件を再判定し、「前の動画が終了したら」を成立させるよう修正。最大秒に「0=無制限」を明記し、最大秒到達時の動作（この動画を終了扱い／全体終了／何もしない）を追加。デフォルトは自然終了と同じ「この動画を終了扱い」で、終了時変数・previous_end遷移・特定動画終了条件を共通処理する。


[v46 修正]
- 「前の動画が終了したら」を含む遷移は、自然終了・ループ1周終了・最大秒による動画終了時だけ評価します。
- 「ループ1周したら」を含む遷移は、ループ周回終了時だけ評価します。
- 100ms常時監視や変数変化/QTE直後の再評価では、上記イベント型条件を含む遷移は成立しません。
- 純粋な変数条件だけの遷移は従来どおり即時評価されます。


[v46]
- インタラクティブ動画の詳細診断ログを追加。
- 条件重複、優先順位、遷移要求、同時遷移、preload状態、waiting/stalled/error、再生時刻停止を記録。
- Macro Log保持件数を1000件へ拡張。


[v46 遷移競合修正]
- インタラクティブ動画の遷移を直列化し、同時切替を禁止。
- 新動画のplay成功後にactiveClipIndex/currentClipを確定。
- 遷移中の条件判定は切替を開始せず、完了後の再判定として保留。
- 切替失敗時は旧動画を維持し、pauseしたまま残さない。
- A→B→Aなど再生済み動画への戻りは許可。
- 条件競合/優先順位/保留/ロック/STATE COMMIT/動画状態ログを強化。


v52変更点:
- preload video解放時に未完了のloadedmetadata/canplay/error待機とtimeoutを強制キャンセル
- preload videoの診断イベントを参照保持し、解放時にremoveEventListener
- interactive audio停止時にsrc解除+loadでデコーダ/バッファ参照を明示解放
- 条件判定・分岐ロジックは変更なし


[v52 diagnostic-only changes]
- No transition/playback behavior changes intended.
- Added detailed interactive-video logs around preload activation, fallback load, ready wait, play(), visibility, release, pool/DOM orphan counts, and event-loop gaps.


[v52 診断ログ追加]
再生・条件・解放ロジックは変更せず、遷移完了後の currentTime / paused / ended / readyState / networkState / visibility / rect / buffered / video frames を +250/+500/+1000/+2000/+5000ms で記録。requestVideoFrameCallback対応環境では最初の描画フレーム到達も IV POST FRAME として記録。
