feat(chase-new): drop the frequency column, the beacons and the bands you don't have

Three cuts, all of them removing things nobody could act on.

The frequency column is gone. Clicking the row tunes the rig to it, so the
number was there to be read and never used. It is still carried on the spot —
the click is what needs it — and it is in the row's tooltip. The country takes
the space.

Modes are limited to FT8, FT4, FT2, PSK31 and RTTY. WSPR is the one worth
spelling out: it is a beacon, nobody answers a WSPR transmission, so a "new
entity on WSPR" is a path report and not a station to work — and on a quiet
band it would have been most of the list.

Bands are limited to the operator's own list. PSK Reporter carries every band
its receivers listen on, and a 13 cm decode is not an opportunity for a station
with no 13 cm.

Both tests run before the status lookup and both read a cached map: they throw
away most of the feed, so nothing downstream pays for it. The band list is
re-read when the lists are saved, so ticking a band in Settings applies to the
next decode rather than the next restart — which would have looked like the
filter not working.
This commit is contained in:
2026-08-14 15:41:37 +02:00
parent 9b1faada38
commit 94cba2592e
5 changed files with 121 additions and 8 deletions
+38
View File
@@ -71,3 +71,41 @@ func TestChaseNewStoreIsBounded(t *testing.T) {
t.Errorf("kept %d rows, want the %d cap", got, chaseNewMax)
}
}
// The panel is for stations an operator can call. WSPR is a beacon — nobody
// answers one — and on a quiet band it would be most of the list.
func TestChaseModesExcludeBeaconsAndOddities(t *testing.T) {
for _, m := range []string{"FT8", "FT4", "FT2", "PSK31", "RTTY"} {
if !chaseModes[m] {
t.Errorf("%s should be listed", m)
}
}
for _, m := range []string{"WSPR", "JT65", "JT9", "FST4W", "Q65", "JS8", "MSK144", "OLIVIA", ""} {
if chaseModes[m] {
t.Errorf("%s should not be listed", m)
}
}
}
// A decode on a band the operator does not have is not an opportunity, it is a
// row in the way — PSK Reporter carries microwave segments nobody in the region
// is equipped for.
func TestChaseBandAllowed(t *testing.T) {
a := &App{}
// Nothing loaded yet: show rather than swallow, or the panel would look
// broken for the first seconds after it is switched on.
if !a.chaseBandAllowed("13cm") {
t.Error("with no band list loaded, nothing should be filtered")
}
a.chaseBands = map[string]bool{"20m": true, "40m": true, "6m": true}
for _, b := range []string{"20m", "40m", "6m", " 20M "} {
if !a.chaseBandAllowed(b) {
t.Errorf("%q is in the operator's list and was dropped", b)
}
}
for _, b := range []string{"13cm", "23cm", "2m", "630m", ""} {
if a.chaseBandAllowed(b) {
t.Errorf("%q is not in the operator's list and was kept", b)
}
}
}