12 — Simple Mode

Branch: dev/simple-pro-modes (merged). Design notes: simple_ui_plan.md. Validation: simple_ui_validation.md.

Goal

Collapse the full Pro UI into a one-click Start All / Stop All experience without losing the underlying capability. The two modes share a single codebase and live behind a global mode toggle in the main window.

Simple Mode Panel

vocal10n.ui.widgets.simple_mode_panel.SimpleModePanel exposes:

  • Source language picker.
  • Target language picker.
  • TTS backend selector (GPT-SoVITS or Qwen3-TTS).
  • Audio output device selector.
  • “Save subtitles” toggle (binds to the output.* flags).
  • Start All and Stop All buttons.
  • Status pills showing STT / LLM / TTS / session state at a glance.
  • Compact metrics single-liner replacing Section A2.
  • Tabbed text panes for source / translation in place of the Pro A1 split.
  • Tooltips on every control (commit 6db6b27).

Section A is rebuilt in a Simple-specific layout when the mode is active (commit e96bcb9).

Staged Startup

Start All walks a fixed sequence with per-stage timeouts and progress states, so users see what is happening and failures are recoverable. The state machine is documented in simple_ui_plan.md and implemented in commits 0a9cc55, 5ca6555, 81cedf4, fdf978c.

stateDiagram-v2
    [*] --> Idle
    Idle --> LoadingSTT: Start All clicked
    LoadingSTT --> LoadingLLM: STT ready
    LoadingLLM --> WarmingTTS: LLM ready
    WarmingTTS --> Ready: TTS warm
    Ready --> Stopping: Stop All
    Stopping --> Idle

    LoadingSTT --> RollingBack: timeout / error
    LoadingLLM --> RollingBack: timeout / error
    WarmingTTS --> RollingBack: timeout / error
    RollingBack --> Idle: unload loaded modules

    note right of WarmingTTS
        Qwen3-TTS uses a longer
        warm-up budget (commit 81cedf4)
    end note

If any stage fails or times out, the panel rolls back the modules that were loaded and returns to Idle with an error pill. A busy lock prevents the user from re-clicking Start during the transition.

Stop with Keep-Models-Loaded

Stop All ends the session. By default it also unloads STT/LLM/TTS to free VRAM. A “keep models loaded” toggle (commit 5ca6555) leaves the models resident for fast restarts during back-to-back sessions.

Simple-Mode Defaults

Some defaults differ from Pro mode to keep the experience predictable:

  • TTS backend: when Qwen3-TTS is chosen, the panel forces tts_qwen3.voice_mode = clone with the configured reference audio (commit fdf978c).
  • STT and LLM are always enabled together; the manual-input shortcut paths from Pro mode are not exposed.
  • File outputs follow a single “Save subtitles” toggle that flips the source/target SRT/TXT pairs together.

Validation

simple_ui_validation.md is the manual QA checklist. The current matrix covers Start/Stop with each TTS backend, mid-run mode switches, missing model paths, and busy-lock behaviour during transitions.