Skip to content

[Feature] Settings & Preferences - App-Wide Configuration and User Preferences #76

@vzeman

Description

@vzeman

Summary

Implement a comprehensive settings system covering general preferences, generation defaults, performance tuning, notifications, and advanced developer options. A well-designed settings system reduces friction and allows power users to tune behavior to their workflow.

Requirements

API Keys

The Settings screen must include a dedicated API Keys tab or section where users configure credentials for all external AI services. Without valid API keys, generation features are disabled.

Anthropic (Claude)

  • API key input field (masked, show/hide toggle)
  • Link to https://console.anthropic.com to get a key
  • Validate key on save (make a lightweight test call)
  • Connection status indicator: Connected / Invalid key / Not set
  • Used for: Storytelling Agent, prompt enhancement, quality analysis, caption translation

Replicate

  • API key input field (masked, show/hide toggle)
  • Link to https://replicate.com/account/api-tokens to get a key
  • Validate key on save
  • Connection status indicator
  • Used for: AI video generation, text-to-image generation

ElevenLabs

  • API key input field (masked, show/hide toggle)
  • Link to https://elevenlabs.io to get a key
  • Validate key on save
  • Connection status indicator
  • Used for: Voice narration generation, voice cloning

Storage

  • API keys must be stored securely using the platform keychain:
    • macOS: Keychain Access
    • iOS: iOS Keychain
    • Other: Encrypted local storage (AES-256)
  • Keys are never stored in plain text or included in exported project files
  • "Clear all API keys" button with confirmation dialog

UX Notes

  • On first launch, if no API keys are set, show a setup banner/wizard guiding user to the Settings -> API Keys screen
  • Each generation feature should show a clear error if the relevant API key is missing (not just fail silently)
  • Test connection button per service

General

  • Theme: Light, Dark, System
  • Language (i18n support structure)
  • Default project save location
  • Auto-save interval

Generation Defaults

  • Default video model
  • Default image model
  • Default voice
  • Default resolution
  • Default FPS
  • Default quality preset

Performance

  • Max concurrent generations (1-5)
  • Cache size limit
  • Temp file cleanup policy

Notifications

  • Generation complete notification
  • Error notifications
  • Sound on complete

Privacy

  • Analytics opt-in/out
  • Crash reporting

Advanced

  • Custom FFmpeg path
  • Custom Replicate base URL (for proxies)
  • Debug logging level
  • Developer mode (show raw API responses)

Acceptance Criteria

  • Theme switcher applies Light/Dark/System correctly
  • Generation defaults apply to all new scenes
  • Concurrent generation limit is enforced in the generation queue
  • Notifications fire correctly on generation completion and errors
  • Developer mode exposes raw API response panels

Related

Part of the ai-video-editor Flutter application. Settings used throughout the app, especially by #65 (Video Generation) and #61 (Project Management).

Metadata

Metadata

Assignees

No one assigned

    Labels

    ai-video-editorAI Video Editor Flutter appfeatureNew feature implementationflutterFlutter/Dart implementationphase-1Phase 1: Core Infrastructure

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions