Skip to content

feat(ui): collapse either sidebar from a header toggle #118

Description

@smileygames

目的

左右のサイドバーをそれぞれ畳めるようにする。会話面を広く使いたいとき、パネルを閉じられる。

観測

2026-08-27、Master が注釈付きのスクリーンショットで要望。

  • ヘッダ左端の Pullcept という文字は、押しても何も起きない。この位置に左サイドバーの開閉ボタンが欲しい(文字の代わりに置く)。
  • ヘッダ右側、端末 ボタンの並びに右サイドバーの開閉ボタンも欲しい。
  • アイコンの形は Claude Desktop のサイドバー開閉ボタン(縦線入りの角丸四角)を参照。

前提

2026-08-27 に maine698ab4)で確認。2026-08-28 に main4ea2554#120 マージ後)で再確認し、以下の記述はいずれもそのまま成立する。行番号は再確認時のもの。

  • index.html:12<header id="titlebar"><span class="title">Pullcept</span> から始まり、<span class="spacer">、文字サイズの <select><button id="toggle-diagnostics">端末</button> と並ぶ。
  • 開閉するパネルは <aside id="history" aria-label="トピック">(左)と <aside id="participants" aria-label="アカウント">(右)。どちらも #body の flex 行に置かれ、width: 16.5rem; flex: none を持つ。
  • アイコンボタンの前例が既にある。index.html:141#diagnostics-closearia-labeltitle を持つ形。
  • #toggle-diagnosticsaria-expanded を持つ。開閉状態を持つボタンの書き方はここに揃っている。

制約

  • Pullcept の文字は置き換える(Master 判断)。残して隣に足す形ではない。
  • 既存の開閉ボタン(#toggle-diagnostics / #diagnostics-close)の作法に合わせる。aria-expanded / aria-label / title
  • 畳んだ状態でも、その中で起きたことが失われないこと。右パネルを閉じている間にセッションが落ちても、開けば分かる状態であること。

決定

2026-08-27 に Master が判断。

  1. 開閉状態は永続する。 置き場は config.json。閉じたまま次の起動でも閉じている。
  2. 畳んだときは幅 0。 細い帯は残さず完全に消す。開くボタンはヘッダに常にあるため、道標としての帯も要らない。
  3. キーボードショートカットは Ctrl+B
  4. 左右のアイコンは同じ柄の鏡像。 それが作れない場合は左右とも同じアイコンで可(Master 明示のフォールバック)。別の絵にはしない。

決定3が開けたこと(実測付き)

2026-08-27 に maine698ab4)で確認、2026-08-28 に main4ea2554)で再確認。Ctrl+B は端末と衝突する。行番号は再確認時のもの。

  • src/main.ts:2577attachCustomKeyEventHandlerCtrl+V 以外すべてに true を返す。つまり端末はそれ以外のキーを自分で処理する。
  • したがって windowkeydown を足すと、端末にフォーカスがある間も発火する。preventDefault しなければサイドバーが開閉しつつシェルにも Ctrl+B が届く
  • Ctrl+B は端末側で意味を持つ(tmux の prefix、readline の backward-char)。
  • 前例は src/main.ts:3180 の文字サイズキー。window + preventDefault で、「入力中でも効くべきキーなので room ではなく window に置く」と理由が書かれている。ただしあの判断の根拠は webview 自身のズームを止めることであり、端末との取り合いではない。

AI 判断(Master はこれを一行で覆せる)

  1. 端末にフォーカスがある間、Ctrl+B は端末のものとする。 アプリは受け取らない。
    端末ペインはセッションのものである、という fix(session): a running session becomes unmanageable after the webview reloads #84 の設計を優先する。文字サイズキーの前例は webview のズームを止めるための判断であって、セッションからキーを取り上げる根拠にはならない。サイドバーは端末の外にフォーカスがあるときに開閉できれば足りる。
  2. Ctrl+B が開閉するのは左サイドバー。 Master が参照として挙げた Claude Desktop の割り当てに合わせる。右サイドバーには今回ショートカットを与えない。左右で非対称になるが、キーを一つ発明するよりは、要ると分かってから足すほうがよい。

未決

なし。実装に入れる。

関連

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancement新機能・改善要望ready本文が実装開始できる形まで収束している状態。ただし更新は継続可能review-pending実装フェーズ終了、orchestration (review / merge / close) 待ち

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions