v2.56.0
概要
リファクタリングロードマップに沿った品質基盤・セキュリティ境界・音声/ストリーミング基盤の大規模整理です。
主に docs/refactoring-roadmap.md の作業単位1〜6で整理されている内容をまとめています。
改善
- APIルートのアクセス制御を
src/lib/accessPolicy/に集約し、全46ルートのポリシー宣言、SecretPair共通化、Cloudflare WAFルール生成、デプロイ文脈テストを追加しました。 - ストリーミング応答処理を
speechPipeline配下の状態機械ベースに再構成し、文分割、感情/モーションタグ、コードブロック、停止/割り込み、SpeakQueue投入を分離しました。 - audioモードをブラウザ直接OpenAI呼び出しからサーバー中継
/api/ai/audioに移行し、サーバー側キーとdemo modeで扱える構成にしました。 - Realtime APIを短命client secret発行ルート
/api/ai/realtime-client-secretに移行しました。 - settingsストアにバージョン付きマイグレーション基盤を導入し、既存ユーザーのlocalStorage移行を世代別テストで固定しました。
- character / voice / settings shell の設定画面を分割し、既存UIの見た目を保ったまま保守しやすい構成に整理しました。
- TTS共通フェッチヘルパー、CharacterRenderer共通インターフェース、loggerユーティリティを追加し、重複実装と
console.*呼び出しを整理しました。 - AIプロバイダー接合部を含むプロダクションコードの
anyを削減し、SDK型・レスポンス型に寄せました。
バグ修正
- Cartesia / ElevenLabs APIルートのエラーパスでレスポンスが未送信になり、クライアントがタイムアウトまで待つ問題を修正しました。
- 未翻訳エラーコード8件を日本語化し、本番ホットパスに残っていたデバッグログを削除しました。
- Azure OpenAI TTSのendpoint / deploymentName検証を強化しました。
- streaming周りで見つかった停止後発話再開、未完文へのコード混入、コード後テキスト欠落、タグ持ち越し、チャンク跨ぎのバッククォート表示、speakMessageHandler無限ループなどの実バグを修正しました。
- audioモードのOpenAIモデルIDを現行の
gpt-audio系へ更新しました。 - Realtime API WebSocket GA接続とidle finalization guardの追修正を含めました。
テスト
- TTS APIルート、クライアント側TTS合成、外部制御API
v1/*、PNGTuber純粋関数、hooks、Mastra workflow、accessPolicy、settings migration、speechPipeline、audio/realtime APIなどにテストを追加・拡充しました。 - NodeランタイムAPIで
new Responseを返すアンチパターン、未登録RoutePolicy、.env.exampleとNEXT_PUBLIC_*参照のドリフト、WAF生成結果などを静的テストで検出できるようにしました。 - PR #566 の必須チェックと関連CIがすべてpassしていることを確認済みです。
ドキュメント・翻訳
docs/refactoring-roadmap.mdに全体ロードマップと完了状況を整理しました。docs/access-policy-design.md、docs/settings-migration-design.md、docs/streaming-pipeline-design.md、docs/audio-mode-auth-design.mdを追加しました。- 翻訳更新はプロジェクトルールに沿って
locales/ja/translation.jsonのみです。