refactor: consolidate loading/error states and extract instance actions hook
Frontend: - Create reusable DataStates components (LoadingState, ErrorState, EmptyState) - Refactor 12 pages to use shared state components instead of inline JSX - Extract useInstanceActions hook to eliminate session action duplication - Update dashboard and sessions pages to use shared hook OpenSpec: - Archive completed mobile-app-usability change (44/44 tasks) - Archive completed add-config-profiles change (15/15 tasks) Quality: TypeScript check passes, production build succeeds
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
## 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
|
||||
Reference in New Issue
Block a user