8c1948d226
Move the following completed changes from openspec/changes/ to openspec/changes/archive/2026-06-12-completed-changes-archive/: - multi-session-terminal-ux - reorganize-long-files - working-copies - workspace-first-ui Update parent and archive .pi-map*.md indexes to reflect the move and remove the transient active-changes-archive grouping. openspec/changes/ now contains only the archive/ directory.
2.0 KiB
2.0 KiB
Why
Currently, each tool instance (e.g., pi-agent, code-server) supports exactly one terminal session. Users who want to run multiple concurrent tasks (e.g., a long-running build in one pane, an editor in another, and a shell for quick commands) must open multiple tool instances or use tmux/screen inside a single session. This is inefficient and confusing.
Additionally, the web terminal lacks basic usability features found in modern terminal emulators: fullscreen mode, detachable panes, session tabs, and keyboard shortcuts for common actions.
What Changes
- Backend: Allow multiple
TerminalSessionobjects perToolInstance, each with a uniquesession_id - Backend: Update
TerminalManagerto track and route multiple sessions per instance - Backend: Update terminal WebSocket protocol to include
session_idin connection URL or message - Frontend: Add session tabs/management UI (create new session, switch between sessions, close sessions)
- Frontend: Add fullscreen mode for the terminal
- Frontend: Add keyboard shortcuts for session management (Ctrl+Shift+N new session, etc.)
- Frontend: Session list panel showing active sessions per instance
Capabilities
New Capabilities
multi-session-terminal: Multiple independent terminal sessions per tool instanceterminal-fullscreen: Fullscreen terminal modeterminal-session-management: Create, switch, rename, and close terminal sessions
Modified Capabilities
tool-terminal: Extend WebSocket protocol and UI to support multiple sessions per instanceterminal-session-lifecycle: Session creation, naming, and cleanup for multi-session model
Impact
- Backend:
TerminalManager,TerminalSession,api/terminal.py, database schema (session tracking) - Frontend:
TerminalComponent,terminal.tsx, newTerminalSessionTabs,TerminalSessionManager - Protocol: WebSocket message format changes (add session_id field)
- Database: New or extended table to track terminal sessions per instance