Skip to content

feat(keymap): 現在のセルと同じ場所で起動フォームを隣に開きたい #1867

Description

@shuntagami

まず、この素晴らしいツールを作り、公開してくださってありがとうございます。複数の作業をブラウザ上で見渡し、通知や状態表示まで一か所で扱えることが、日々の開発でとても役立っています。
日常的に使う中で、新しいセルを始めるときだけ、左上の + を押して作業ディレクトリと起動内容を選ぶ操作に少し手間を感じています。
現在開いているセルと同じディレクトリを設定した起動フォームを、キーボードショートカットで隣に開けると嬉しいです。

やりたい操作

  1. 作業中のセルを開いている状態でショートカットを押す。
  2. そのセルの隣に、既存の「新しいセルで何を始めるか選ぶフォーム」が開く。
  3. 作業ディレクトリは元のセルと同じ場所があらかじめ入力されている。
  4. 起動するものは固定せず、既存フォームから選ぶ。
    • Claude / Codexなどの組み込みエージェント
    • custom agent
    • 通常のShell
    • 設定済みの起動コマンドや、過去の会話の再開
  5. 同じディレクトリですでにエージェントが動いている場合は、既存フォームと同じように、別のworktreeを作るためのタスク名を入力できる。

新しい種類の起動画面を増やすのではなく、左上の + から使っている既存フォームを、現在のセルを起点にして隣へ開けるようにしたいという要望です。

現在あるショートカットとの違い

  • terminal-new は左上の + と同じ起動フォームを末尾に追加しますが、現在のセルのディレクトリは引き継ぎません。
  • terminal-new-adjacent は現在のセルと同じディレクトリにShellを即起動しますが、起動内容を選ぶフォームは開きません。

Shellだけが必要なときは既存の terminal-new-adjacent が便利なので、その動作は変更しません。一方、Claude / Codexを起動したいときにShell内からコマンドを実行すると、MulmoTerminalはそれをエージェントのセルとして認識しません。その場合、次の機能が使えません。

  • 処理が終わったときや、質問への回答を待っているときの通知
  • 処理中・完了・入力待ちを示すセルの色
  • 入力待ちや完了したセルを見つけやすくする並び替え
  • MulmoTerminalからの会話の再開
  • 同じworktreeでエージェントを二重に起動しないための制御

新しいショートカットから既存フォームを開き、そこでClaude / Codexを選べば、これらの機能を保ったまま起動できます。エージェントが不要なら、同じフォームからShellなどを選べます。

設計

  1. opt-inのkeymap actionとして terminal-new-form-adjacent を追加する。現在のセルを必要とするため、既存の terminal-new-adjacent と同じくセルの拡大中だけ動作させる。
  2. 現在セルの作業ディレクトリを入れた空の起動フォームを、現在セルの隣に追加して拡大表示する。何かを自動起動したり、コマンド文字列からClaude/Codexを推測したりしない。
  3. 起動フォームは左上の + から開くものと同じ CellLaunchForm を使い、Agent Picker、Shell、custom agent、設定済みlaunchers、モデル選択、会話の再開、worktree作成をすべてそのまま利用する。
  4. Agent Pickerの初期選択は既存フォームと同じClaudeとし、元のセルからは引き継がない。起動前に必ず他のエージェントやShellへ変更できる。
  5. フォームを開いた直後は、元のcwdが入った作業ディレクトリ欄へフォーカスする。変更が不要ならEnterで、現在選ばれている起動内容を開始できる。
  6. 同じworktreeですでにエージェントが動いている場合は、既存フォームの制御をそのまま使う。エージェントの二重起動は拒否し、理由とworktreeのタスク名欄を表示する。Shellを選んだ場合は既存仕様どおり同じディレクトリで起動できる。
  7. 追加途中の空フォームは同時に1つだけとする。フォーム内の閉じるボタン、ツールバーの +、または同じショートカットの再入力でキャンセルできるようにする。隣接フォームも末尾フォームと同じく、ページ移動やリロードで未起動なら破棄する。
  8. 既存の terminal-new-adjacent は「同じcwdでShellを即起動する」アクションとして変更せず残す。

変更箇所とテスト

  • common/keymap.ts: actionの追加とvalidation
  • src/composables/gridShortcut.ts: 拡大中だけ使えるアクションとして扱う
  • src/components/gridTabs.ts: 隣接する未起動フォームを1つだけ管理し、キャンセル・ページ移動・リロード時の扱いを既存フォームと揃える
  • src/components/GridView.vue: 現在セルのcwdを引き継いで隣にフォームを置き、表示・フォーカスする
  • src/components/TerminalCell.vue / src/components/CellLaunchForm.vue: 既存フォームを再利用し、作業ディレクトリ欄へフォーカスする
  • src/components/keymapLabels.ts: Settingsに表示する説明を追加
  • 関連specs: 非拡大時は無効、cwdの引き継ぎ、隣接位置、起動対象を固定しないこと、フォームが1つだけであること、3通りのキャンセル、worktree制約を迂回しないことを確認
  • 英日ガイドと server/skills/mulmoterminal-keys/SKILL.md: 新アクションと既存 terminal-new-adjacent との違いを説明

関連

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions