Skip to content

v2.56.0

Choose a tag to compare

@tegnike tegnike released this 08 Jul 08:22
f3ea5cd

概要

リファクタリングロードマップに沿った品質基盤・セキュリティ境界・音声/ストリーミング基盤の大規模整理です。

主に 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.exampleNEXT_PUBLIC_* 参照のドリフト、WAF生成結果などを静的テストで検出できるようにしました。
  • PR #566 の必須チェックと関連CIがすべてpassしていることを確認済みです。

ドキュメント・翻訳

  • docs/refactoring-roadmap.md に全体ロードマップと完了状況を整理しました。
  • docs/access-policy-design.mddocs/settings-migration-design.mddocs/streaming-pipeline-design.mddocs/audio-mode-auth-design.md を追加しました。
  • 翻訳更新はプロジェクトルールに沿って locales/ja/translation.json のみです。