ab79080f0b
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
1.6 KiB
1.6 KiB
MODIFIED Requirements
Requirement: Tool config supports runtime fields
The system SHALL keep tool config runtime fields available for tool configuration, while reusable launch setup for user-owned files, mounts, and env var bundles SHALL be handled by config profiles.
Scenario: Create config with runtime fields
- WHEN user creates a tool config with start_command="npm start", port=3000, working_directory="/app"
- THEN the config is saved with all fields populated
Scenario: Environment variables as JSON
- WHEN user sets environment_variables to {"NODE_ENV": "production", "API_KEY": "secret"}
- THEN the system stores and returns the config with the JSON object preserved
- AND reusable per-launch environment bundles are managed through config profiles
Scenario: Volumes as JSON
- WHEN user sets volumes to [{"host": "/data", "container": "/app/data", "mode": "rw"}]
- THEN the system stores and returns the config with the JSON array preserved
- AND user-owned mounted file trees are managed through config profiles
REMOVED Requirements
Requirement: Active config folders auto-mount during launch
The system SHALL NOT automatically mount all active config folders when starting tool instances.
Scenario: Start instance after config profiles replace folders
- GIVEN a user has legacy active config folders
- WHEN they start a tool instance without selecting a config profile
- THEN those folders are not automatically mounted
- AND only selected config profile output is applied for user-owned launch files and mounts