fix(watchlist): read the cluster's slot index, and cap the card width

The first version asked the alerts' worked-index — keyed by RAW mode (FT8) —
with a CLASS name (DIGI). Nothing ever matched, and a DXpedition worked on five
bands showed every slot as Needed.

The verdict now reads the cluster's own WorkedCallSlotKeys set, built in the
cached status maps (now unconditionally — it used to exist only when a display
option wanted it). Same index, same mode normalisation as the grid, so the
watchlist can never contradict the cluster about the same spot. The contest
today-set is normalised through the same function.

And the cards column is capped at a reading width instead of stretching
callsign-to-badge lines across the whole window.
This commit is contained in:
2026-08-29 00:33:52 +02:00
parent f6b70184a7
commit 29d79fb5d1
3 changed files with 38 additions and 16 deletions
+4 -3
View File
@@ -19803,9 +19803,10 @@ func (a *App) clusterStatusMaps() *clusterStatusCache {
// "Already worked only on the same slot" option (Settings → DX Cluster): the
// WORKED-call flag then needs the SAME band and mode (digital-grouped through
// the same normMode when that option is on) rather than the call anywhere.
if sameSlot || slotHighlight {
c.workedCallSlots, _ = a.qso.WorkedCallSlotKeys(a.ctx, c.normMode)
}
// Built UNCONDITIONALLY since the watchlist arrived: its per-slot verdict
// needs this set whatever the cluster's own display options say, and the
// scan already runs at cache-rebuild cadence, not per batch.
c.workedCallSlots, _ = a.qso.WorkedCallSlotKeys(a.ctx, c.normMode)
// Orthogonal dimensions: worked US counties (for the ULS callsign→county
// lookup) and worked POTA parks.
c.workedCounties, _ = a.qso.WorkedCountyKeys(a.ctx, award.USCountyKey)