Background
The ATU pre-tune sweep landed in #2630 has an Auto mode that runs the sweep unattended — no per-point confirmation, each band's centers fired sequentially with the radio transmitting at tune power. Current safeguards:
| Safeguard |
What it does |
| Operator Responsibility disclaimer |
Shown in full on every dialog open |
| MEM-required gate |
Pre-tune menu item grayed unless `memoriesEnabled() == true` |
| Always-visible Abort button |
Sends `atu bypass` + restores slice freq |
| 30 s per-point timeout |
Forces abort if ATU never returns a terminal status |
| 3-consecutive-fail-bypass hard stop |
Catches sustained "no good match" runs |
| TX interlock |
Inherited from radio firmware — out-of-band tunes refused |
This combination is the explicit risk acceptance: the user opts in via the mode selector and the disclaimer, and the operator-responsibility framing is regulatory-correct. Not a defect, but worth a deliberate review to decide whether the current safeguards are sufficient or whether additional ones should ship.
Candidate enhancements to consider
These are optional ideas, not commitments:
-
Max-fail-per-band early exit. Currently the 3-fail-bypass cap aborts the entire sweep. An alternative is to abort the current band and try the next one. Useful for users who have one bad antenna but want the sweep to finish on other bands.
-
Per-band confirmation in Auto mode. Show a "Starting 40m sweep — 8 points, ~2 minutes" confirmation before each new band. Compromise between Step-confirm-each-point and full-auto.
-
Pre-flight band-edge dry run. Before transmitting on a new band, send `slice tune` to each center freq without `atu start` to confirm the radio accepts the freq. Catches XVTR-config or band-plan-mismatch issues without keying.
-
Max-points soft cap. Show a warning if total points across all selected bands exceeds, say, 100. Helps prevent accidental "select all bands on a R1 plan = 129 points = ~32 minutes of TX" surprises.
-
Power-level guardrail. Refuse to enter Auto mode if tune power is unusually high (>20W). Forces the operator to think about exciter level before unattended TX.
-
PTT-line dead-man. Require a physical PTT-line continuity check before Auto mode starts, so a missing/broken footswitch aborts before any TX.
-
Audible cue / desktop notification on terminal events. Beep on fail-bypass cap or per-point timeout so the operator notices even when not looking at the dialog.
-
License-class filtering. The operator selects their license class from a dropdown (US: Technician / General / Extra; UK: Foundation / Intermediate / Full; etc.), and the sweep skips frequencies they aren't licensed to transmit on. The bandplan JSON files already encode license-class info per segment (e.g. "license": "E,G" in arrl-us.json for Extra/General-only sub-bands). The dialog would intersect each candidate center frequency with the segment list, look up the segment's license field, and skip any center whose segment doesn't include the operator's class. License class can be persisted alongside callsign in AppSettings so the operator sets it once.
Implementation sketch:
- New combobox in the dialog (visible only when the active band plan has license markings).
- Inside
computeCenters (or a new wrapper), drop centers whose enclosing segment doesn't authorize the selected class.
- For the US Tech case this means skipping nearly all HF phone segments — useful real-world filter, not an academic edge case.
- Plans that don't carry license markings (or operators outside named-class regions) fall through to the current behavior.
This is the most user-impactful item in this list: it prevents a Tech-class operator from accidentally keying into General/Extra-only sub-bands during an unattended sweep. The existing TX interlock might catch it at the radio, but client-side filtering is the safer floor.
Scope
Each enhancement is independent and could be its own PR. This issue exists to track the design conversation; no commitment to implement any specific item.
Context
Surfaced during review of #2630. Auto mode is a noted-and-accepted design choice; this issue tracks whether the current safety surface is the right one or whether the bar should be raised.
73, Jeremy KK7GWY & Claude (AI dev partner)
Background
The ATU pre-tune sweep landed in #2630 has an Auto mode that runs the sweep unattended — no per-point confirmation, each band's centers fired sequentially with the radio transmitting at tune power. Current safeguards:
This combination is the explicit risk acceptance: the user opts in via the mode selector and the disclaimer, and the operator-responsibility framing is regulatory-correct. Not a defect, but worth a deliberate review to decide whether the current safeguards are sufficient or whether additional ones should ship.
Candidate enhancements to consider
These are optional ideas, not commitments:
Max-fail-per-band early exit. Currently the 3-fail-bypass cap aborts the entire sweep. An alternative is to abort the current band and try the next one. Useful for users who have one bad antenna but want the sweep to finish on other bands.
Per-band confirmation in Auto mode. Show a "Starting 40m sweep — 8 points, ~2 minutes" confirmation before each new band. Compromise between Step-confirm-each-point and full-auto.
Pre-flight band-edge dry run. Before transmitting on a new band, send `slice tune` to each center freq without `atu start` to confirm the radio accepts the freq. Catches XVTR-config or band-plan-mismatch issues without keying.
Max-points soft cap. Show a warning if total points across all selected bands exceeds, say, 100. Helps prevent accidental "select all bands on a R1 plan = 129 points = ~32 minutes of TX" surprises.
Power-level guardrail. Refuse to enter Auto mode if tune power is unusually high (>20W). Forces the operator to think about exciter level before unattended TX.
PTT-line dead-man. Require a physical PTT-line continuity check before Auto mode starts, so a missing/broken footswitch aborts before any TX.
Audible cue / desktop notification on terminal events. Beep on fail-bypass cap or per-point timeout so the operator notices even when not looking at the dialog.
License-class filtering. The operator selects their license class from a dropdown (US: Technician / General / Extra; UK: Foundation / Intermediate / Full; etc.), and the sweep skips frequencies they aren't licensed to transmit on. The bandplan JSON files already encode license-class info per segment (e.g.
"license": "E,G"inarrl-us.jsonfor Extra/General-only sub-bands). The dialog would intersect each candidate center frequency with the segment list, look up the segment'slicensefield, and skip any center whose segment doesn't include the operator's class. License class can be persisted alongside callsign in AppSettings so the operator sets it once.Implementation sketch:
computeCenters(or a new wrapper), drop centers whose enclosing segment doesn't authorize the selected class.This is the most user-impactful item in this list: it prevents a Tech-class operator from accidentally keying into General/Extra-only sub-bands during an unattended sweep. The existing TX interlock might catch it at the radio, but client-side filtering is the safer floor.
Scope
Each enhancement is independent and could be its own PR. This issue exists to track the design conversation; no commitment to implement any specific item.
Context
Surfaced during review of #2630. Auto mode is a noted-and-accepted design choice; this issue tracks whether the current safety surface is the right one or whether the bar should be raised.
73, Jeremy KK7GWY & Claude (AI dev partner)