-
Notifications
You must be signed in to change notification settings - Fork 0
Description
概要
docs/product.md の FR-09(カスタムGUI)を実装する。
現状の src/ui/window.rs は FR-05 検証用のヘルパーUI(単一画面)で、基準UIとして定義されている2画面構成(メイン画面 / 設定画面)および設定反映イベント契約(OpenSettings / SaveSettings / DiscardSettings)が未実装。
目的
- FR-09: プラグイン独自GUIウィンドウを、基準UI(
docs/image/*/screen.png)準拠で提供する - メイン画面と設定画面を同一UI状態で切り替え可能にする
- 設定保存後にメイン画面ヘッダー(API状態・既定モデル表示)へ同期反映する
タスク分解
-
1. 画面遷移とUI状態基盤を追加
-
ui::stateにprovider_status/settings_tab/settings_dirtyを追加 -
メイン画面 <-> 設定画面の遷移状態(
OpenSettings,CloseSettings)を実装 -
設定編集用のドラフト状態と、保存済み状態の差分管理を実装
-
2. メイン画面レイアウトを基準UIへ再構成
-
Header(ロゴ、
api_status_badge、settings_button)を実装 -
Prompt/Mode/Model、Input Tracks、Generated Patterns、Params、Piano Roll、Footer のエリア分割を実装
-
既存の Generate フロー(
on_generate_clicked)を新レイアウトへ移植 -
未実装機能エリアはプレースホルダー/無効化状態を明示して段階導入可能にする
-
3. 設定画面(API / Model Settings)を実装
-
Sidebar(
API Keys/MIDI Settings/General)のタブ切替を実装 -
Provider Configuration(Anthropic/OpenAI/Custom)の入力UIを実装
-
Model Preferences(default model / context window)UIを実装
-
Footer(
Cancel,Save & Close)とsettings_dirty連動を実装 -
4. 設定反映と永続化を実装
-
SaveSettings成功時にメイン画面ヘッダーの API状態とモデル表示を同期 -
設定値(APIキー本体以外)の保存/復元を実装(
settings_store相当) -
DiscardSettingsでドラフト破棄してメイン画面へ戻る挙動を実装 -
5. CLAP GUI連携をFR-09観点で整備
-
plugin::clap_adapter::gui_extensionのサイズ定義とヘルパー実ウィンドウサイズを整合 -
show/hide/destroy のライフサイクルでヘルパープロセスが安定することを確認
-
ホスト起動時に独自GUIが一貫して表示される手順を確認(主要ホスト1種以上)
-
6. テスト整備
-
Unit:
settings_tab切替 /settings_dirty遷移 / 保存・破棄の状態遷移テストを追加 -
Integration/UI:
Save & Close後のヘッダー同期(API状態・モデル)を検証 -
Integration/UI:
Cancelで未保存変更が破棄されることを検証 -
既存
cargo fmt/cargo clippy --all-targets --all-features/cargo testを通す -
7. ドキュメント更新
-
docs/software-architecture.mdのUI責務記述を実装状態に同期 -
docs/software-detailed-design.mdの 4.7 UIコンポーネント設計とイベント契約を実装差分に同期 -
必要に応じて FR-09 の進捗チェックリストを追記
受け入れ条件
- メイン画面と設定画面を
settings_buttonから遷移できる - 設定画面で
API Keys/MIDI Settings/Generalの切替ができる -
Save & Closeで設定が反映され、ヘッダーAPI状態とモデル表示が更新される -
Cancelで未保存変更が破棄される - CLAPホストから Sonant 独自GUIウィンドウが表示される
-
cargo fmt/cargo clippy --all-targets --all-features/cargo testが通る
参照
docs/product.md(FR-09、10. GUI構成)docs/software-architecture.md(4.5 UI基準画面と責務分割)docs/software-detailed-design.md(4.7 UIコンポーネント設計 / 4.7.3 UIイベント契約)src/ui/window.rs(現行FR-05中心UI)src/plugin/clap_adapter/gui_extension.rs(CLAP GUI起動・表示制御)