## 要件
### 現行の仕様
#### Main dialog
- `Search commands` の `Auto preview` が有効の場合
- 選択項目を変更するとプレビュー表示される
- `Search commands` の `Auto preview` が無効の場合
- 選択項目を変更してもプレビュー表示されない
- ダイアログコマンドの `preview` のキーを押すとプレビューが表示される
- その後に選択項目を変更しても、変更後の項目ではプレビューされない
- もちろん `preview` のキーを押せば再度プレビューされる
### 変更後の仕様
#### Main dialog
- `Search commands` の `Auto preview` が有効の場合
- 選択項目を変更するとプレビュー表示される
- `toggle auto preview` を押すと 『`Search commands` の `Auto preview` が無効の場合』と同様の動きに切り替わる
- `Search commands` の `Auto preview` が無効の場合
- 選択項目を変更してもプレビュー表示されない
- ダイアログコマンドの `preview` のキーを押すとプレビューが表示される
- その後に選択項目を変更しても、変更後の項目ではプレビューされない
- もちろん `preview` のキーを押せば再度プレビューされる
- `toggle auto preview` を押すと 『`Search commands` の `Auto preview` が有効の場合』と同様の動きに切り替わり、即座に現在の選択項目をプレビューする
`toggle auto preview` は Header Search や InFile Search の `toggle auto preview` と同様の動きをする。
### 注意点
直近コミットで以下2つの対応がされている。
- feat(main/backlink/grep): Don't store previewed items in history
- fix: Wrong file flashes before opening target when preview is enabled
途中でプレビューの有効/無効を切り替えることにより、上記で対応した『履歴の整合性』や『ファイル決定時のチラツキ』が発生しないよう注意してほしい。
## 対応内容
> [!left-bubble] ![[chappy.webp]] **[[チャッピー]]**
> やりとりした内容を簡潔にまとめてみたよ。
### 目的
- Main dialog の auto preview を実行中にトグル可能にし、Header/InFile と同様の挙動に揃える
- auto preview が有効なときだけ、ダイアログ上に状態マークを表示する(既存UIと競合しない位置)
### 変更内容(挙動)
- Main dialog で `toggle auto preview` を追加
- 有効時: 選択変更で自動プレビュー
- 無効時: 自動プレビューなし(`preview` キーでのみ表示)
- トグルON時: 即座に現在選択をプレビュー
- トグルOFF時: 以後は自動プレビューしない
- コマンドプレフィックスで SearchCommand が切り替わった場合は、その `autoPreview` 値に追従
- 既存の履歴整合性・チラツキ対策に影響しないよう、プレビュー実行や履歴復元のロジック自体は維持
### 変更内容(UI)
- auto preview の状態マークは Search command ステータス行の末尾に表示
- 入力欄直後への配置は改行で左下に落ちるため採用せず
- 既存の右上ステータス行に統合し、レイアウト崩れを回避
### 実装ポイント
- Main dialog の自動プレビュー状態を `autoPreviewEnabled` として保持
- デバウンスの有効/無効、トグル時の即時プレビューに使用
- アイコンは `searchCommandEl` 生成後に差し込み、再描画時も復元
### 変更ファイル
- `src/ui/AnotherQuickSwitcherModal.ts`
- `src/settings.ts`
- `styles.css`