# 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`.

```mermaid
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.
