Files
headquarter/openspec/changes/add-config-profiles/specs/user-config/spec.md
T
alex 073013bc61 feat: add heartbeat/ping to terminal WebSocket
- Backend: Send ping every 30s from WebSocket endpoint
- Frontend: Respond to pings with pongs, detect missed pings (60s timeout)
- Update type definitions to include 'resetting' status

Refs: persistent-terminal-sessions task 6.4
2026-05-24 12:45:50 +00:00

36 lines
1.7 KiB
Markdown

## ADDED Requirements
### Requirement: Config Profile Settings Editor
The system SHALL expose a settings interface for managing the authenticated user's config profiles.
#### Scenario: Browse config profiles in settings
- **GIVEN** an authenticated user
- **WHEN** they open settings
- **THEN** they can view their config profiles
- **AND** see each profile's name, compatibility scope, default status, and included profiles
#### Scenario: Edit profile content in settings
- **GIVEN** an authenticated user editing a config profile
- **WHEN** they update env vars, runtime hints, mounts, text files, or include order
- **THEN** the settings UI saves those changes through the config profile API
- **AND** validation errors are shown without losing the user's draft edits
#### Scenario: Configure profile defaults in settings
- **GIVEN** an authenticated user editing config profiles
- **WHEN** they mark a profile as the default for a global, project, tool, or project+tool context
- **THEN** subsequent launches for matching contexts preselect that profile according to default specificity
### Requirement: Launch Profile Selection UI
The system SHALL allow the authenticated user to select one compatible config profile or `None` when starting a session.
#### Scenario: Preselect default compatible profile
- **GIVEN** an authenticated user has a default compatible profile for a selected project and tool type
- **WHEN** they open the start session form
- **THEN** the form preselects that profile
- **AND** also offers `None` as a selectable option
#### Scenario: Select no profile
- **GIVEN** an authenticated user starts a session
- **WHEN** they choose `None` in the config profile selector
- **THEN** the start request records no selected config profile