chore: archive 15 completed OpenSpec changes
Move the following audited-and-implemented changes into openspec/changes/archive/2026-06-12-completed-changes-archive/: - backend-frontend-refactoring - config-profile-git-mounts - config-profile-includes-ui - config-profile-multi-repo-mounts - container-monitoring-notifications - git-mount-url-validation - home-path-expansion - mobile-terminal-ux - mount-specificity-ordering - notification-center - persistent-terminal-sessions - session-list-overhaul - ssh-key-mounting - terminal-fullscreen-unified-header - tool-session-progress-and-updates Also regenerated .pi-map*.md files for openspec/changes so the remaining active changes (multi-session-terminal-ux, reorganize-long-files, working-copies, workspace-first-ui) reflect the new layout.
This commit is contained in:
+20
@@ -0,0 +1,20 @@
|
||||
# archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs (index)
|
||||
dir: archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs
|
||||
|
||||
## role
|
||||
Contains archived specification documents for a persistent terminal sessions feature that was completed on June 12, 2026.
|
||||
## parent
|
||||
index: archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/.pi-map.index.md
|
||||
map: archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/.pi-map.md
|
||||
## children
|
||||
- archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal
|
||||
index: archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal/.pi-map.index.md
|
||||
map: archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal/.pi-map.md
|
||||
## files
|
||||
## links
|
||||
index: archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/.pi-map.index.md
|
||||
map: archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/.pi-map.md
|
||||
## workflows
|
||||
-
|
||||
## dirty
|
||||
-
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
# archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs
|
||||
dir: archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs
|
||||
|
||||
index: archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/.pi-map.index.md
|
||||
|
||||
## role
|
||||
Contains archived specification documents for a persistent terminal sessions feature that was completed on June 12, 2026.
|
||||
## files
|
||||
## arch
|
||||
Document-based specification storage with date-versioned archival structure for historical feature documentation.
|
||||
## tags
|
||||
-
|
||||
## symbols
|
||||
-
|
||||
## workflows
|
||||
-
|
||||
## dirty
|
||||
-
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
# archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal (index)
|
||||
dir: archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal
|
||||
|
||||
## role
|
||||
Defines requirements for persistent WebSocket terminal sessions with reconnection, output buffering, reset, and idle timeout capabilities
|
||||
## parent
|
||||
index: archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/.pi-map.index.md
|
||||
map: archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/.pi-map.md
|
||||
## children
|
||||
-
|
||||
## files
|
||||
- spec.md
|
||||
## links
|
||||
index: archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal/.pi-map.index.md
|
||||
map: archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal/.pi-map.md
|
||||
## workflows
|
||||
-
|
||||
## dirty
|
||||
-
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
# archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal
|
||||
dir: archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal
|
||||
|
||||
index: archive/2026-06-12-completed-changes-archive/persistent-terminal-sessions/specs/persistent-terminal/.pi-map.index.md
|
||||
|
||||
## role
|
||||
Defines requirements for persistent WebSocket terminal sessions with reconnection, output buffering, reset, and idle timeout capabilities
|
||||
## files
|
||||
- spec.md | Defines requirements for persistent WebSocket terminal sessions with reconnection, output buffering, reset, and idle timeout capabilities
|
||||
## arch
|
||||
Specification-driven requirements document using markdown-based technical specification pattern with functional requirement enumeration
|
||||
## tags
|
||||
spec, defines, requirements, persistent, websocket, terminal, sessions, reconnection
|
||||
## symbols
|
||||
-
|
||||
## workflows
|
||||
-
|
||||
## dirty
|
||||
-
|
||||
+70
@@ -0,0 +1,70 @@
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: Terminal sessions persist across reconnections
|
||||
The system SHALL maintain a terminal session for a tool instance even when the WebSocket connection is closed. When a new WebSocket connection is established for the same instance, the system SHALL reattach to the existing terminal session instead of creating a new one.
|
||||
|
||||
#### Scenario: Reconnect to existing session
|
||||
- **WHEN** a user disconnects from a terminal session
|
||||
- **THEN** the underlying docker exec process continues running
|
||||
- **AND** when the user reconnects to the same instance
|
||||
- **THEN** they are attached to the same shell process
|
||||
|
||||
#### Scenario: New connection creates session
|
||||
- **WHEN** a user connects to an instance with no existing terminal session
|
||||
- **THEN** a new terminal session is created
|
||||
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: Terminal session output buffer
|
||||
The system SHALL maintain a circular buffer of recent terminal output (minimum 10KB) for each persistent session. When a WebSocket reconnects, the system SHALL replay the buffered output to bring the client up to date.
|
||||
|
||||
#### Scenario: Output replay on reconnect
|
||||
- **WHEN** a user reconnects to an existing terminal session
|
||||
- **THEN** the recent output buffer is sent to the WebSocket
|
||||
- **AND** the user sees the terminal state as it was before disconnect
|
||||
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: Terminal session reset
|
||||
The system SHALL support resetting a terminal session. When a reset is requested, the system SHALL kill the existing docker exec process, clean up the session, and create a new one.
|
||||
|
||||
#### Scenario: Reset terminal session
|
||||
- **WHEN** a user sends a reset command via WebSocket
|
||||
- **THEN** the existing terminal session is terminated
|
||||
- **AND** a new terminal session is created
|
||||
- **AND** the user is connected to the fresh session
|
||||
|
||||
#### Scenario: Reset from API
|
||||
- **WHEN** a user sends a POST request to reset a terminal session
|
||||
- **THEN** the existing terminal session is terminated
|
||||
- **AND** a new terminal session is created
|
||||
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: Terminal session idle timeout
|
||||
The system SHALL automatically clean up terminal sessions that have had no active WebSocket connections for 30 minutes. This prevents resource leaks from abandoned sessions.
|
||||
|
||||
#### Scenario: Idle session cleanup
|
||||
- **WHEN** a terminal session has no WebSocket connections for 30 minutes
|
||||
- **THEN** the session is terminated and cleaned up
|
||||
|
||||
#### Scenario: Active session not cleaned up
|
||||
- **WHEN** a terminal session has an active WebSocket connection
|
||||
- **THEN** it is not cleaned up regardless of duration
|
||||
|
||||
## MODIFIED Requirements
|
||||
|
||||
### Requirement: Terminal session creation
|
||||
The system SHALL create a terminal session when a WebSocket connects to a tool instance. The session SHALL be associated with the instance and SHALL persist until explicitly reset, the instance stops, or an idle timeout occurs.
|
||||
|
||||
#### Scenario: Create persistent session
|
||||
- **WHEN** a user connects to a running instance via WebSocket
|
||||
- **THEN** if no session exists for that instance, a new session is created
|
||||
- **AND** if a session already exists, the WebSocket is attached to it
|
||||
- **AND** recent output is replayed
|
||||
|
||||
## REMOVED Requirements
|
||||
|
||||
### Requirement: Terminal session cleanup on disconnect
|
||||
**Reason**: Sessions now persist across disconnections
|
||||
**Migration**: Sessions are cleaned up on idle timeout or explicit reset instead
|
||||
Reference in New Issue
Block a user