Files
headquarter/openspec/changes/archive/2026-06-14-completed-specs-archive/user-config/spec.md
T
Developer c8db6ce933 fix: disable native touch panning on mobile terminal and archive specs
- Change mobile terminal CSS to use touch-action: none and
  overscroll-behavior: none so the custom touch handler owns swipes
- Archive completed/partial OpenSpec specs to
  openspec/changes/archive/2026-06-14-completed-specs-archive/
- Regenerate project maps

Quality gates: npm run typecheck, npm run lint (apps/web)
2026-06-14 18:07:01 +00:00

1.7 KiB

User Configuration Specification

Purpose

Store and manage user preferences and settings.

Requirements

Requirement: Key-Value Storage

The system SHALL store user configuration as JSONB key-value pairs.

Scenario: Store preferences

  • GIVEN an authenticated user
  • WHEN they update their settings
  • THEN the configuration is stored in the UserConfig model

Requirement: Supported Config Keys

The system SHALL support specific configuration keys.

Scenario: Supported keys

  • GIVEN the configuration system
  • THEN these keys SHALL be supported:
    • default_editor: Preferred code editor
    • theme: UI theme preference
    • git_user_name: Git commit author name
    • git_user_email: Git commit author email

Requirement: Config Retrieval

The system SHALL return user configuration.

Scenario: Get config

  • GIVEN an authenticated user
  • WHEN they access settings
  • THEN their current configuration is returned

Requirement: Config Updates

The system SHALL support partial configuration updates.

Scenario: Update single key

  • GIVEN an authenticated user with existing config
  • WHEN they update just the theme
  • THEN only that key is modified
  • AND other keys remain unchanged

Requirement: Frontend Integration

The system SHALL apply configuration in the frontend.

Scenario: Apply theme

  • GIVEN a user with theme preference set
  • WHEN they load the application
  • THEN the selected theme is applied

Dependencies

  • Database models: UserConfig, User
  • auth-oauth (authenticated users)

Quality Gates

  • pytest must pass
  • mypy . must pass
  • ruff check . must pass
  • npm run typecheck must pass
  • npm run lint must pass