diff --git a/CHANGELOG.md b/CHANGELOG.md index d0a9f7c..c1c0684 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,52 +10,50 @@ during the 0.4.0 release, so earlier detail lives in the git history and in the change ledgers under [`docs/test/test-strategy.md`](docs/test/test-strategy.md) and [`docs/requirements/system-requirements.md`](docs/requirements/system-requirements.md). -## [Unreleased] - -### Fixed - -- **Switching DATA sub-mode (and rate) no longer lags.** Tapping DATA A / AFSK A - / FSK D / PSK D, or a data rate, waited for the radio to echo before the - button lit - the same read-back fight the sliders had. The button now - responds at once and reconciles with the radio. +## [0.8.0] — 2026-07-25 ### Added -- **DTMF keypad for FM.** A **DTMF** button on the FM panel opens a keypad - (0-9, A-D, *, #) that sends tones to the radio - for repeater and link - control that is otherwise out of reach over a remote link. +- **A locked VFO refuses tuning.** When you lock a VFO at the radio, the app + shows a **LOCK** badge on it and stops its own digit taps, panadapter clicks + and wheel scrolls from moving it — the badge flashes on a refused gesture, so + it is never a silent no-op. The other VFO still tunes. -### Added +- **DATA rate selector.** In AFSK-A and FSK-D you can pick 45 or 75 baud, and + in PSK-D BPSK31 or BPSK63, from buttons beside the DATA sub-mode strip. The + labels follow the sub-mode; the control is hidden in DATA-A, which has no + rate. -- **Transverter band setup.** The BAND screen now has a setup form for the - transverter bands (XV1-12): pick a band and set its mode, IF band, lower - edge, offset and mW power. Fields load from the radio when you pick a band, - and each is sent to that band. (The mW power scale while operating on a - transverter band is a separate, later addition.) +- **Your antenna names show.** If you have named an antenna on the K4 (`ACN`), + the TX-antenna control shows that name (e.g. `DIPOLE`) instead of `ANT 1`. -### Added - -- **On-screen macro buttons.** A new **Fn -> MACROS** tab runs the same macros - as the K-Pod F1-F8 switches, so you get one-tap CAT macros with or without a +- **On-screen macro buttons.** A new **Fn → MACROS** tab runs the same macros + as the K-Pod F1–F8 switches, so you get one-tap CAT macros with or without a K-Pod. Assign them under Settings; a macro that transmits is arm-gated just like the physical switch. -### Added +- **DTMF keypad for FM.** A **DTMF** button on the FM panel opens a keypad + (`0`–`9`, `A`–`D`, `*`, `#`) sending tones to the radio — for repeater and + link control that is otherwise out of reach over a remote link. -- **DATA rate selector.** In AFSK-A and FSK-D you can now pick 45 or 75 baud, - and in PSK-D BPSK31 or BPSK63, from buttons beside the DATA sub-mode strip. - The labels follow the sub-mode, and the control is hidden in DATA-A where - there is no rate. -- **Your antenna names now show.** If you have named an antenna on the K4 - (ACN), the TX-antenna control shows that name (e.g. `DIPOLE`) instead of - `ANT 1`. +- **Transverter band setup.** The BAND screen has a two-column layout with a + setup form for the transverter bands (XV1–12): pick a band and set its mode, + IF band, lower edge, offset and mW power. Fields load from the radio when you + pick a band, and each is sent to that band. ### Fixed - **TX TEST now flashes, so you can't mistake it for a real transmit.** In test - mode the radio keys but puts out no power; the transmit indicator used to show - the same steady red `● TX` as a live transmit. It now reads a flashing amber - **TEST**, distinct from the red that means RF is actually leaving the antenna. + mode the radio keys but puts out no power; the transmit indicator used to + show the same steady red `● TX` as a live transmit. It now reads a flashing + amber **TEST**, distinct from the red that means RF is leaving the antenna. + +- **Switching DATA sub-mode (and rate) no longer lags.** Tapping DATA A / AFSK A + / FSK D / PSK D, or a data rate, waited for the radio to echo before the + button lit — the same read-back fight the sliders had in 0.7.0. The button + now responds at once and reconciles with the radio. + +[0.8.0]: https://github.com/dc0sk/K4remote/releases/tag/v0.8.0 ## [0.7.0] — 2026-07-25 diff --git a/Cargo.lock b/Cargo.lock index 4b09a94..0492af4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2141,7 +2141,7 @@ dependencies = [ [[package]] name = "k4-audio" -version = "0.7.0" +version = "0.8.0" dependencies = [ "cpal", "opus", @@ -2149,7 +2149,7 @@ dependencies = [ [[package]] name = "k4-config" -version = "0.7.0" +version = "0.8.0" dependencies = [ "argon2", "chacha20poly1305", @@ -2164,25 +2164,25 @@ dependencies = [ [[package]] name = "k4-diag" -version = "0.7.0" +version = "0.8.0" [[package]] name = "k4-kpod" -version = "0.7.0" +version = "0.8.0" dependencies = [ "hidapi", ] [[package]] name = "k4-protocol" -version = "0.7.0" +version = "0.8.0" dependencies = [ "sha2", ] [[package]] name = "k4-session" -version = "0.7.0" +version = "0.8.0" dependencies = [ "k4-protocol", "k4-stream", @@ -2191,18 +2191,18 @@ dependencies = [ [[package]] name = "k4-sim" -version = "0.7.0" +version = "0.8.0" dependencies = [ "k4-protocol", ] [[package]] name = "k4-stream" -version = "0.7.0" +version = "0.8.0" [[package]] name = "k4-transport" -version = "0.7.0" +version = "0.8.0" dependencies = [ "k4-protocol", "k4-sim", @@ -2212,7 +2212,7 @@ dependencies = [ [[package]] name = "k4remote" -version = "0.7.0" +version = "0.8.0" dependencies = [ "iced", "k4-audio", @@ -5536,7 +5536,7 @@ checksum = "3ae8337f8a065cfc972643663ea4279e04e7256de865aa66fe25cec5fb912d3f" [[package]] name = "xtask" -version = "0.7.0" +version = "0.8.0" [[package]] name = "yazi" diff --git a/Cargo.toml b/Cargo.toml index 65f6fc4..57b9288 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,7 +20,7 @@ members = [ [workspace.package] edition = "2021" -version = "0.7.0" +version = "0.8.0" authors = ["Simon Keimer (DC0SK)"] rust-version = "1.90" license = "GPL-3.0-or-later" diff --git a/README.md b/README.md index 71aff99..f2b1a56 100644 --- a/README.md +++ b/README.md @@ -9,8 +9,8 @@ stakeholder needs down to individual tests, enforced by a build gate. ![K4 Remote main window](docs/screenshots/main.png) -> **Status:** v0.7.0 — feature-complete; hardware bring-up in progress. -> 314 hardware-free tests pass · clippy/fmt clean · traceability gate green · CI green on Linux/macOS/Windows. +> **Status:** v0.8.0 — feature-complete; hardware bring-up in progress. +> 326 hardware-free tests pass · clippy/fmt clean · traceability gate green · CI green on Linux/macOS/Windows. > VFO tuning, RIT/XIT, split, band, panadapter click-to-QSY, and the K-Pod (incl. F1–F8 tap/hold macros) > are validated against a real K4; audio / PTT / waterfall rendering / serial bring-up is ongoing. > 0.4.0 closed **four transmit-safety faults** found on a live K4 — most seriously, the transmitter @@ -26,6 +26,13 @@ stakeholder needs down to individual tests, enforced by a build gate. > radio — plus **ATU and TUNE control**, an About-box **update check**, and **switchable control > tooltips**. > +> **New in 0.8.0:** a **locked VFO** now refuses the app's own tuning (with a LOCK badge), +> a **DATA rate** selector (45/75 baud, PSK31/63), your **antenna names** (`ACN`) on the TX +> antenna control, an **on-screen MACROS** tab reusing the K-Pod macro table, a **DTMF keypad** +> for FM repeater/link control, and **transverter band setup** on the BAND screen. Plus, from +> operating a live K4: **TX TEST** flashes distinctly from a real transmit, and switching DATA +> sub-mode no longer lags. +> > **New in 0.7.0:** **frequency memories**, an **AF recorder** driving the radio's own 90-second > receive buffer, and a **TX TEST** indicator. Plus, from operating a live K4: sliders that no > longer fight the radio's read-back (and an APF button that responds at once), a **lowercase diff --git a/docs/test/test-strategy.md b/docs/test/test-strategy.md index 1105764..8039ce0 100644 --- a/docs/test/test-strategy.md +++ b/docs/test/test-strategy.md @@ -1,7 +1,7 @@ --- title: "Test Strategy & Traceability" status: Draft -version: "3.12" +version: "4.0" updated: 2026-07-22 authors: - Simon Keimer (DC0SK) @@ -433,3 +433,4 @@ FR-SES-MULTI, FR-DIAG-02, etc. — get `TC` IDs when promoted to `Approved`.)* | 2026-07-25 | 3.10 | DC0SK | **FR-MACRO-01 — on-screen macro buttons**, reusing the K-Pod macro table on a new Fn → MACROS tab. Deliberate reuse: the 16-slot label+CAT table is already in config and not feature-gated, so the buttons work without a K-Pod, and because a press goes through the same `Session::send` seam the physical switch uses, the arm gate and the refusal flash (FR-TX-SAFE-06) — and the lower-case gate (FR-TX-SAFE-03) for hand-typed macros — all apply for free. Verified: the label/assignment logic (`macro_label`) by test, and the MACROS tab on screen in `--demo`, showing the 12 seeded Elecraft sample macros wrapping to a second row at eight. **A backlog finding recorded rather than built:** FR-MTR-05's power/SWR readout is already shipped (FR-MTR-03 draws `nnn W` + SWR on the TX meter), and its V/I half depends on `SI`, whose format D12 leaves 'for a future revision' — so like FR-VFO-STEP-01 it is partly already-met and partly not-yet-buildable. 322 tests. | | 2026-07-25 | 3.11 | DC0SK | **FR-XVTR-01 — transverter band setup**, the last substantial backlog item. Six `XV*` encoders + per-field read-back parser + a setup form on the BAND screen. Complex and niche but fully documented, so buildable without hardware-guessing (unlike the audio-character and message items, still hardware-blocked). Design point: `XVN` is **stateful** (selects the band the rest target), so each field send is prefixed with `XVN` and the form reloads on band-select keyed on the `XVN` the radio confirms — a stale value can never land in a field. The form clipped the fixed-height config slot at first; compacted to three rows and the BAND screen wrapped in a scrollable. R5 caught three encoders passed as bare `.map()` references with no paren-call site — switched to closures so the capability is genuinely reachable, not just defined. Deferred, and recorded: the mW power scale on XVTR bands (an operating-display concern needing current-band state, separate from setup). Verified: all six encoders and the read-back parse by test; the form on screen in `--demo`. 325 tests. | | 2026-07-25 | 3.12 | DC0SK | **Transverter setup moved to a second column** after DC0SK found the single stacked column grew a vertical scrollbar in the config slot — an ergonomics problem (scrolling a setup form is worse than the space it saves). The BAND screen is now two columns: HF/6 m band selection left, transverter select + setup form right, with the form's four numeric fields laid two-per-row (`Lower`/`IF`, `Offset`/`Power`) now that the half-width column gives horizontal room. No scrollbar; everything fits the fixed-height slot. Verified on screen in `--demo`. | +| 2026-07-25 | 4.0 | DC0SK | Release **v0.8.0**. Minor: six backlog features and two operating fixes since 0.7.0, nearly all validated on DC0SK's live K4. Added: VFO lock read-back + tuning refusal, DATA rate select, `ACN` antenna names, on-screen macros (Fn → MACROS, reusing the K-Pod table), a DTMF keypad, and transverter band setup (two-column BAND screen). Fixed: TX TEST now flashes distinct from a real transmit (finishing FR-TX-TUNE-01's flashing indication), and DATA sub-mode/rate switching lag — the same read-back fight the sliders had, fixed with the standing optimistic-override pattern. **What is left is now honestly the hard part:** the audio-character (`MX`/`BL`/`FX`/`AL`) and message (`DARM`) items are blocked on two hardware questions only the operator can answer — whether radio-side audio settings reach the remote stream, and whose microphone `DARM` records. Version bumped in Cargo.toml (workspace), lockfile, README, user manual. 326 tests. | diff --git a/docs/user-manual.md b/docs/user-manual.md index e536c92..60a30d1 100644 --- a/docs/user-manual.md +++ b/docs/user-manual.md @@ -1,7 +1,7 @@ --- title: "K4 Remote — User Manual" status: Draft -version: "0.7.0" +version: "0.8.0" updated: 2026-07-22 updated: 2026-07-21 authors: