# Win Dictation — Changelog

## v3.0 — Architecture & UI Rebuild (current)

### Single-surface UI

- Replaced 9 separate child windows with one immediate-mode painted surface
- Eliminated inter-window hairline seams at the root
- Widget data model with hover/press animation blending
- Per-monitor DPI scaling (V2)
- Dark mode design tokens
- Dark scrollbar on the transcript edit control

### Progress system

- Self-calibrating linear estimator: `proc = a + b·audio`, fitted per model with decayed online least-squares
- Persisted per-model timing history in `win-dictation.ini`
- Strictly monotonic countdown (never counts up)
- Smooth percent that eases, never snaps (except final 100%)
- Motion from frame 1 (predicts before whisper reports)

### Push-to-talk batch mode

- Removed streaming/VAD/ring-buffer architecture
- Record `→` stop `→` single `whisper_full` call
- 500ms silence auto-end timer
- Physical-core threading (matches the i5 target)

### Files

- Added `src/timing.h` — timing model + progress estimator + persistence
- Rewrote `src/main.cpp` — single-surface paint, widget model, animation clock, DPI
- Rewrote `README.md`, `src/README.md`, `src/CHANGES.md`

---

## v2.0 — Previous architecture (deprecated)

Used streaming with ring buffer, VAD, owner-draw child windows. Described in earlier versions of the docs.
