# The Mill Release Notes

## v1.4.1 (2026-07-18)

### Open source and About

- The Mill is now open source under the MIT License. The license ships at the repository root and the Linux package metadata matches.
- A new About button in the masthead opens a dialog showing the version and build date, creator credit ("Created and published by Chris WX7V"), copyright, license, the Courier Prime font credit, and these release notes.
- Binaries now carry their build date, shown in the About dialog and returned by the version API.

### Drill results strip

- The drill success panel now uses the contest-style results strip: one row per set, newest first (last 5 shown, so the panel never grows the window), with sent and copied side by side, wrong or missing characters in red, and an OK/X verdict per row. OK means a perfect copy; the session accuracy trend stays in the stats line. Contest results share the same 5-row cap.
- Repeats of the same group in the repeat-until-100% flow appear as separate rows, so you can watch your copy converge.

### Layout

- The status bar was reorganized: session status and the TX lamp on the left, the version centered, Exit in the corner. The TX lamp moved down from the masthead to sit beside the status it reinforces.

### Fixes

- Dialogs (About, the clear-log confirm) now open centered in the window; a CSS reset had been overriding the browser's native dialog centering, pinning them to the top-left corner.

### Accessibility

- Drill result rows are announced to screen readers one row at a time with spoken "sent" and "copied" labels, instead of re-reading the whole panel after every item.

## v1.4.0 (2026-07-13)

### Contest mode (new)

The Mill now has a second practice mode alongside the drills, switched with the masthead Mode button, simulating a contest run where stations answer your CQ:

- Three contests, each drilling a different copying skill: ARRL Field Day (class and section), CQ WPX (RST and serial number), ARRL DX (RST and state or province).
- A run opens on the air: "QRL?", then "CQ DE (your call) K". Callers answer with individual tone and speed variations around your settings, and every contest transmission is sent at character speed (no Farnsworth stretch).
- Each QSO is copied in two phases: the callsign, then the exchange, with Enter submitting each. A busted copy gets the caller re-sending, like a real correction, and your entry stays in the line so you can fix just the missed characters. Corrections and silence share a budget of three repeats per element; after that, your next entry is accepted and scored as sent. A typed "?" or the Replay button requests a repeat.
- A correctly copied call is acknowledged with "R" ahead of the exchange, and appears immediately in the results strip while you copy the rest.
- Results show per-field verdicts in aligned columns with busted fields highlighted, newest QSO first.
- Contest session accuracy is the clean-QSO rate (every field copied perfectly), shown with a "clean" suffix in the session log so it is never confused with drill character accuracy.
- Your callsign and selected contest persist in settings, and the app now reopens in whichever mode (drill or contest) you last used.

### Settings and UI

- The Sound & speed panel is a single row: Tone, Character WPM, Effective WPM, with a hint explaining that reducing Effective WPM increases spacing. The volume slider was removed; use your system volume (a previously stored volume level still applies).
- Effective WPM is now clamped to character speed, so the UI and the session history always show the timing that actually played. Stored speeds also self-heal into the valid 5-60 range at load, so a hand-edited config file can no longer start a silent, stuck session.
- The Exit button moved to the bottom-right corner of the status bar. Clear log stays beside the session log it clears.
- The setup panels share a consistent layout (title, controls, hint line) and stay aligned with each other.

### Fixes

- Session-defining controls (mode, speeds, sets, duration) now lock while a session runs; changing them mid-run previously altered later items and recorded the wrong configuration in history (issue #12).
- Debian packaging: untagged development builds no longer produce package versions that outrank tagged releases and block upgrades (issue #13).

### Accessibility

Contest phase prompts ("Copy the call", per-contest exchange prompts), mode announcements, and QSO results are announced through polite live regions for screen readers, and the Farnsworth hint is programmatically attached to the Effective WPM field.
