53 lines
3.1 KiB
Markdown
53 lines
3.1 KiB
Markdown
# TUI: 新しい Pod を spawn する UI の設計
|
||
|
||
## 背景
|
||
|
||
Insomnia は複数 Pod を同時に走らせられるアーキテクチャを想定しているが、TUI は**現在単一 Pod のみを表示**する前提で作られている。Pod を増やすには TUI を起動し直すしかなく、作業文脈の並列性がユーザーに見えていない。
|
||
|
||
TUI から新しい Pod を生やす操作と、複数 Pod を扱う UI モデルを設計する。実装の前に**使い方の合意**が必要なため、本チケットは**設計フェーズの成果物**を完了条件に含む。
|
||
|
||
## 要件
|
||
|
||
### 成果物(設計フェーズ)
|
||
|
||
- **ユースケース記述**: どういう場面で Pod を増やしたくなるか、複数 Pod 間で何をするか、現行 Pod をどう区別・切替するか
|
||
- **UI モデル**: タブ / 分割ペイン / リスト + 単一表示 のどれにするか、根拠つきで
|
||
- **状態遷移図**: Pod の spawn / active / background / shutdown のライフサイクル
|
||
- **spawn 時の入力**: manifest をどう指定するか(ファイル選択 / テンプレート / 新規編集)
|
||
- **既存チケットとの整合**: `tui-pod-shutdown.md` の shutdown 操作が「単一 Pod を閉じる」意味にちゃんとなるか、`tui-notification-channel.md` の通知が「どの Pod の通知か」を表現できるか
|
||
- 上記を `docs/tui-pod-spawn.md` 等にまとめる
|
||
|
||
### 実装フェーズ(設計合意後)
|
||
|
||
- spawn UI のエントリポイントを TUI に実装
|
||
- 複数 Pod を扱うための内部データモデル(Pod リスト、アクティブ Pod 管理)
|
||
- Pod 間の切替操作
|
||
- 各 Pod の shutdown 操作との統合
|
||
|
||
## 設計で決めること
|
||
|
||
- **並列実行の扱い**: 全 Pod を常に走らせるか、フォーカスしている Pod のみ走らせて他は suspend か
|
||
- **リソース共有**: scope 排他制御(`tickets/scope-exclusion.md`)との関係。同一パスを同時 write できない制約を UI でどう表現するか
|
||
- **shutdown との関係**: 「この Pod を閉じる」と「TUI を閉じる」を区別するキーバインド
|
||
- **通知の帰属**: 通知チャネル(`tickets/tui-notification-channel.md`)が Pod 別に表示されるべきか、TUI 全体で集約するか
|
||
|
||
## 完了条件
|
||
|
||
### 設計フェーズ
|
||
|
||
- `docs/tui-pod-spawn.md`(または同等の設計ドキュメント)がレビュー可能な形で存在する
|
||
- 上記の「設計で決めること」すべてに結論が出ている
|
||
- 他の TUI チケット(通知・shutdown)との整合が確認できている
|
||
|
||
### 実装フェーズ
|
||
|
||
- TUI から新しい Pod を spawn できる
|
||
- 複数 Pod が spawn された状態で、ユーザーがそれらを切り替えられる
|
||
- 各 Pod は独立して実行・通知・shutdown できる
|
||
|
||
## 範囲外
|
||
|
||
- Pod 間のメッセージパッシングや依存関係(Pod A の出力を Pod B の入力に繋ぐ等)
|
||
- Pod の保存済みテンプレートからの呼び出し UI(設計に含めるかは検討)
|
||
- 分散実行・リモート Pod(ローカル TUI の中での複数 Pod のみ扱う)
|