fix(cluster): strip the skimmer suffix before resolving the spotter's continent

RBN spotters report as "VU2OY-#" and cluster nodes as "DL1ABC-2". That string
went straight into the DXCC prefix matcher, which saw an unknown callsign and
gave up, so every spot came back with an empty continent.

The filter then matched nothing at all - and worse, silently: unresolved spots
are deliberately never dropped, because the status arrives a moment after the
row and filtering meanwhile makes the list flicker. So selecting AS left the
Europeans and the Americans exactly where they were, with nothing to say why.

A real callsign never contains a hyphen, so cutting at the first one is safe.
This commit is contained in:
2026-08-10 19:06:52 +02:00
parent c95a1137fc
commit d6ed9f03eb
2 changed files with 14 additions and 3 deletions
+10 -1
View File
@@ -16633,7 +16633,16 @@ func (a *App) ClusterSpotStatuses(spots []SpotQuery) []SpotStatus {
// The spotter's continent, and whether the DX uploads to LoTW. Both are // The spotter's continent, and whether the DX uploads to LoTW. Both are
// in-memory lookups on tables already loaded, so they add nothing per spot. // in-memory lookups on tables already loaded, so they add nothing per spot.
if a.dxcc != nil && q.Spotter != "" { if a.dxcc != nil && q.Spotter != "" {
if m, ok := a.dxcc.Lookup(q.Spotter); ok { // Strip the skimmer suffix first. RBN spotters report as "VU2OY-#" and
// a cluster node as "DL1ABC-2"; the prefix matcher sees an unknown
// callsign and gives up, so EVERY spot came back with no continent and
// the filter silently matched nothing. A real callsign never contains a
// hyphen, so cutting at the first one is safe.
sp := q.Spotter
if i := strings.IndexByte(sp, '-'); i > 0 {
sp = sp[:i]
}
if m, ok := a.dxcc.Lookup(sp); ok {
out[i].SpotterContinent = m.Continent out[i].SpotterContinent = m.Continent
} }
} }
+4 -2
View File
@@ -3,10 +3,12 @@
"version": "0.24.4", "version": "0.24.4",
"date": "", "date": "",
"en": [ "en": [
"DX cluster: an L badge next to a callsign marks a station that uploads to LoTW, with a matching LoTW users only filter, and a Spotter continent filter narrows the list by where the spot came FROM — a JA report on 20 m tells a European little about their own path. The filter panel has been tidied along one rule: a switch is a behaviour you turn on or off, chips pick any number from a set. Nothing appears in both shapes any more, the Lock buttons sit in the heading of the section they lock, every section can be cleared the same way, and the whole panel is finally translated." "DX cluster: an L badge next to a callsign marks a station that uploads to LoTW, with a matching LoTW users only filter, and a Spotter continent filter narrows the list by where the spot came FROM — a JA report on 20 m tells a European little about their own path. The filter panel has been tidied along one rule: a switch is a behaviour you turn on or off, chips pick any number from a set. Nothing appears in both shapes any more, the Lock buttons sit in the heading of the section they lock, every section can be cleared the same way, and the whole panel is finally translated.",
"DX cluster: the Spotter continent filter now actually matches. RBN skimmers report as VU2OY-# and cluster nodes as DL1ABC-2, and the suffix was passed straight to the prefix lookup, so every spot came back with no continent and the filter silently selected nothing."
], ],
"fr": [ "fr": [
"Cluster DX : un badge L à côté de l indicatif signale une station qui utilise LoTW, avec le filtre Utilisateurs LoTW seulement qui va avec, et un filtre Continent du spotter restreint selon l origine du spot — un report JA sur 20 m dit peu de chose à un Européen sur son propre chemin. Le panneau de filtres a été remis d aplomb selon une seule règle : un interrupteur est un comportement qu on active ou non, les pastilles choisissent dans un ensemble. Plus rien n existe sous les deux formes, les boutons de verrouillage sont dans le titre de la section qu ils verrouillent, chaque section s efface de la même façon, et le panneau est enfin traduit." "Cluster DX : un badge L à côté de l indicatif signale une station qui utilise LoTW, avec le filtre Utilisateurs LoTW seulement qui va avec, et un filtre Continent du spotter restreint selon l origine du spot — un report JA sur 20 m dit peu de chose à un Européen sur son propre chemin. Le panneau de filtres a été remis d aplomb selon une seule règle : un interrupteur est un comportement qu on active ou non, les pastilles choisissent dans un ensemble. Plus rien n existe sous les deux formes, les boutons de verrouillage sont dans le titre de la section qu ils verrouillent, chaque section s efface de la même façon, et le panneau est enfin traduit.",
"Cluster DX : le filtre Continent du spotter fonctionne enfin. Les skimmers RBN s annoncent en VU2OY-# et les nœuds cluster en DL1ABC-2, et ce suffixe partait tel quel dans la recherche de préfixe — tous les spots revenaient sans continent et le filtre ne sélectionnait rien."
] ]
}, },
{ {