Lyrics Card Generator v3.8.1 リリースノート
リリース日:2026-06-30
v3.8.1 は保守性向上のためのリファクタリングリリースです。機能削減版でも UI の作り直し版でもありません。今回の更新では、メインエディターを単一の巨大コンポーネントから、デフォルト値、ステップ組み立て、業務アクション、AI 翻訳、設定、テーマトークンへと責務分割しつつ、既存の導線、見た目、書き出し結果を維持することに集中しています。
なぜこのリファクタリングが必要だったか
LyricEditor.tsxはこれまで、ページレイアウト、デフォルト状態、業務アクション、AI 翻訳、設定、ステップ組み立て、テーマ派生を一つのファイルで抱えており、保守コストが高くなりすぎていました。- これだけのロジックが一つのコンポーネントに積み重なると、型修正、回帰対応、Web とデスクトップの差分調査が難しくなります。
分割結果
LyricEditor.tsxは現在、主に hooks、settings steps、プレビューのレイアウトを組み合わせる役割となり、ページ全体のオーケストレーション層になりました。components/editor/editor-defaults.tsはdefaultState、DEFAULT_LYRICS、DEFAULT_TRANSLATION、DEFAULT_INSTRUMENTAL_TEXTを保持します。components/editor/useEditorSteps.tsxは明示的な入力を受け取ってステップの JSX を組み立てます。components/editor/hooks/useEditorActions.tsは内容のクリア、スタイル変更、サンプル読み込み、最終書き出しといった業務アクションを担当します。components/editor/hooks/useEditorAiTranslation.tsは AI パネルの開閉、ストリーミング状態、エラー、キャンセル、翻訳リクエストを担当します。components/editor/hooks/useEditorPreferences.tsはアプリ設定、初回起動時の言語選択、設定保存、デスクトップのウィンドウ材質同期を担当します。components/editor/hooks/useEditorThemeTokens.tsはアクセント色、背景色、UI テキストトークンの派生を担当します。components/editor/utils/normalizeAIErrorMessage.tsとcomponents/editor/utils/sizeSnapshot.tsは、追加の業務結合や循環依存を持たない純粋なユーティリティになりました。
AI provider helper と実行時境界
- Web 側は引き続き
app/api/ai/translate/route.tsで/api/ai/translateを処理します。 - デスクトップ側は引き続き Electron IPC と
safeStorageで API キー処理と翻訳リクエストを扱います。 - 今回整理したのは
getChatCompletionsUrl、DeepSeek の thinking 判定、リクエストボディ構築、provider エラー正規化といった純粋な request / response ロジックだけです。 - Electron 専用コードを Next route へ移したり、ブラウザー専用ロジックを Electron main へ入れたりはしていません。
機能完全性、バージョン同期、リスク抑制
- 曲リンク解析、ローカル音声解析、歌詞取得、AI 翻訳、カバー配色抽出、テーマ、デスクトップ Acrylic、書き出し、サンプル、多言語、フォント、レイアウト設定など既存の入口はすべて維持されています。
- 作業は一括書き換えではなく、小さな抽出、責務移管、回帰確認を積み重ねる形で進めており、製品の位置付けやユーザーに見える挙動は変えていません。
- バージョンメタデータ、README のダウンロードファイル名、多言語リリースノートの入口は
3.8.1に同期済みです。
検証
- npm run typecheck
- npm run core:test
- npm run build
- npm run desktop:build