概要
パーミッションリクエストが Webview UI に表示されず、セッション全体がハングするバグの修正と、UI の改善。
問題
- イベント型不一致: opencode サーバー (v1.2.20) は v2 SDK イベント (
permission.asked) を送信するが、コードは v1 イベント (permission.updated) のみ処理していたため、パーミッションリクエストがすべてドロップされていた
- UI アーキテクチャ:
PermissionView が MessageItem 内に埋め込まれており、子セッション(サブエージェント)からのパーミッションが表示されなかった
- UI デザイン: 黄色い警告ボックスが縦に積み上がるだけで、場所を取りすぎ、VS Code の他の UI との一貫性がなかった
対応内容
Phase 1: UI アーキテクチャ変更
PermissionQueue コンポーネントを作成し、InputArea の直上にキュー形式で表示
MessageItem からパーミッション表示を分離
permission.sessionID を使って子セッションのパーミッションも正しく応答
Phase 2: SDK v2 マイグレーション
@opencode-ai/sdk → @opencode-ai/sdk/v2 に全面移行
- イベント名、型、API メソッドシグネチャをすべて v2 に更新
Phase 3: UI デザイン改善
- TodoHeader / FileChangesHeader と統一されたバースタイルに刷新
- ShieldIcon + アクセントカラーのヘッダーバー
- 先頭1件を常に表示、複数件ある場合はクリックで展開
- ボタンを
sm サイズでコンパクトに
- 全8ロケール対応
関連
概要
パーミッションリクエストが Webview UI に表示されず、セッション全体がハングするバグの修正と、UI の改善。
問題
permission.asked) を送信するが、コードは v1 イベント (permission.updated) のみ処理していたため、パーミッションリクエストがすべてドロップされていたPermissionViewがMessageItem内に埋め込まれており、子セッション(サブエージェント)からのパーミッションが表示されなかった対応内容
Phase 1: UI アーキテクチャ変更
PermissionQueueコンポーネントを作成し、InputAreaの直上にキュー形式で表示MessageItemからパーミッション表示を分離permission.sessionIDを使って子セッションのパーミッションも正しく応答Phase 2: SDK v2 マイグレーション
@opencode-ai/sdk→@opencode-ai/sdk/v2に全面移行Phase 3: UI デザイン改善
smサイズでコンパクトに関連