Audit what a profile saves, and close the two gaps it found

Every setting was checked by setting all of them to something other than
their default, saving, loading, and comparing: all 54 survived, ranges kept
every field of their own, and the default settings file behaved the same as
a named profile. Those checks are now tests rather than a one-off, along
with a check that no setting is saved but never read, and that a profile
written by an older version still loads.

Two gaps were real.

The plain display could only be asked for per invocation. It was a
hand-written flag rather than an entry in the settings table, so unlike
`quiet` -- which does the same sort of thing -- it could not be saved,
leaving anyone who runs over ssh to pass --plain every time. It is a
setting now, which gives it a menu entry and --no-plain for free.

Gain displayed as "28.5 dB" but refused to parse "28.5 dB" back, because it
was the one numeric setting that called float() instead of the unit-aware
parser every other one uses. The menu shows a value as the example of how
to type it, so what it shows has to be something it accepts.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
The Dust Council 2026-08-21 23:26:27 -07:00
parent 2aa8739f25
commit b69d0b7a26
4 changed files with 142 additions and 4 deletions

View file

@ -126,6 +126,7 @@ class ScanConfig:
max_cycles: int = 0 # 0 = run forever
max_runtime_seconds: float = 0.0 # 0 = no limit
quiet: bool = False
plain: bool = False # line per hit instead of the live display
log_file: str = "scan_log.jsonl"
# ------------------------------------------------------------------