Skip to content

feat(tabs): per-session independent Terminal instances#77

Merged
liplus-lin-lay merged 1 commit into
mainfrom
feat/76-per-session-terminal
Apr 13, 2026
Merged

feat(tabs): per-session independent Terminal instances#77
liplus-lin-lay merged 1 commit into
mainfrom
feat/76-per-session-terminal

Conversation

@liplus-lin-lay

Copy link
Copy Markdown
Member

Refs #76

セッションごとに独立した Terminal + PTY インスタンスを持つアーキテクチャに変更。
セッション切り替え時に PTY を kill せず、コンテナの show/hide で切り替えることで、各セッションのプロセスが生存し続ける。

  • SessionState インターフェース追加(terminal, fitAddon, containerEl, ptyId, unlisten をセッション単位で保持)
  • TabState から単一 terminal/ptyId を削除し、sessions: Map<string, SessionState> + activeSessionId + terminalAreaEl に置換
  • createSessionTerminal / destroySessionTerminal / switchSessionTerminal ヘルパー追加
  • sessions.tsonSessionCreate / onSessionDelete コールバック追加
  • CSS: .terminal-area 親コンテナを追加、セッション単位の .terminal-container はその子要素
  • closeTab は全セッションの PTY kill + Terminal dispose を実行
  • 永続化から復元されたセッションはオンデマンドでターミナルを生成

セッションごとに独立した Terminal + FitAddon + PTY を持つアーキテクチャに変更。
セッション切り替え時に PTY を kill/restart せず、コンテナの show/hide で切り替え。
各セッションのプロセスが独立して生存し続ける。

- SessionState interface: terminal, fitAddon, containerEl, ptyId, unlisten per session
- TabState: sessions Map + activeSessionId + terminalAreaEl (replaces single terminal)
- createSessionTerminal / destroySessionTerminal / switchSessionTerminal helpers
- sessions.ts: onSessionCreate / onSessionDelete callbacks
- CSS: .terminal-area parent container for per-session .terminal-container divs
- closeTab: kills ALL session PTYs and disposes ALL terminals
- Restored sessions from persistence get terminals created on-demand

Refs #76

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@liplus-lin-lay liplus-lin-lay linked an issue Apr 13, 2026 that may be closed by this pull request
@liplus-lin-lay liplus-lin-lay merged commit 299b31c into main Apr 13, 2026
2 checks passed
This was referenced Apr 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feature: per-session independent Terminal instances

1 participant