-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Labels
enhancementNew feature or requestNew feature or request
Description
🌟 Summary
プラグイン起動時のtoast通知を改善し、モード適用状況をユーザーに確実に伝える。
🤔 Motivation
現在、opencode起動時にプラグインはswitcher.jsonの設定をopencode.json/oh-my-opencode.jsonに反映するが、以下の問題がある:
問題1: drift有り時のtoastが表示されない
applyCurrentModeIfNeeded()にtoast表示コードは存在するが、プラグイン初期化時点でUIが未初期化のため、実際にはtoastが表示されない可能性が高い(manager.ts:267-271 のTODOコメント参照)。
configファイルの書き換えは行われるが「再起動が必要」という通知が出ないため、ユーザーは「設定したはずなのに反映されていない」と混乱する。
問題2: drift無し時に現在モードの通知がない
drift検出されない(=設定が一致している)場合、何の通知もなく起動する。ユーザーは現在どのモードで動作しているか把握できない。
💡 Proposal
1. drift有り時: warning toastを確実に表示
setTimeoutで遅延実行し、UI初期化を待ってからtoastを表示する。
// 例: 遅延実行でUI初期化を待つ
setTimeout(() => {
this.client.tui.showToast({
body: {
title: 'Mode Applied',
message: `Applied "${this.config.currentMode}" mode. Restart opencode to take effect.`,
variant: 'warning',
duration: 5000,
},
}).catch(() => {});
}, 3000); // UI初期化を待つ注意: このtoastはshowToastOnStartup設定に関わらず常に表示する(重要な警告のため)。
2. drift無し時: info toastで現在モードを表示
// 例: 現在モードの通知
this.client.tui.showToast({
body: {
title: 'Agent Mode',
message: `Current mode: "${this.config.currentMode}"`,
variant: 'info',
duration: 3000,
},
});既存のshowToastOnStartup設定フラグで表示/非表示を制御する。
対応するケース一覧
| ケース | 条件 | toast | 設定で無効化 |
|---|---|---|---|
| drift有り | config書き換え実行 | warning「再起動が必要」 | 不可(常に表示) |
| drift無し | 設定一致 | info「現在モード」 | showToastOnStartupで制御可 |
drift検出のカバー範囲(既存)
- モード名の変更(economy → performance)
- プリセット定義内のmodel値変更(同じモード名でmodel更新)
- opencode.jsonの手動編集によるズレ
🎯 Use Cases
-
ユーザーがopencode起動後、モデルが反映されていないことに気づく
→ drift有り時のwarning toastで「再起動が必要」と通知される -
ユーザーが現在どのモードか確認したい
→ 起動時のinfo toastで現在モードが表示される -
toastが煩わしい場合
→showToastOnStartup: falseでinfo toastを無効化できる(warning toastは常に表示)
📌 Additional Context
- 関連コード:
src/modes/manager.tsのapplyCurrentModeIfNeeded()メソッド - 既存TODO:
manager.ts:267-271 - メッセージ言語: 英語(既存の他のtoastメッセージと統一)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request