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