diff --git a/app.go b/app.go index ec3c0d4..e1e6957 100644 --- a/app.go +++ b/app.go @@ -2721,6 +2721,15 @@ func (a *App) applySolar(q *qso.QSO) { if a.solar == nil { return } + // Today's space weather belongs on today's QSO. The ADIF monitor and the UDP + // path both feed contacts that are normally seconds old, but neither promises + // it: a logger re-broadcasting its backlog, or an operator typing in last + // month's contact by hand, would otherwise be given this morning's SFI as if + // it had been measured at the time. A wrong number is worse than none — it + // cannot be told from a real reading afterwards. + if !q.QSODate.IsZero() && time.Since(q.QSODate) > 24*time.Hour { + return + } d := a.solar.Get() if !d.OK { return @@ -11823,6 +11832,16 @@ func (a *App) LogUDPLoggedADIF(adifText string) (int64, error) { a.refineDistrictZones(&q) // W6 → CQ3/ITU6 for zone-split countries a.applyQSLDefaults(&q) + // ── Space weather and path length ── + // Also "same as the manual path", and they were missed when that comment was + // written. A QSO auto-logged from WSJT-X went in with no SFI, no A, no K and + // no distance, so an operator running digital — which is most of the traffic + // on most stations — had those fields empty across the whole log while a + // hand-logged contact carried them. Both are stamped only where the record + // left them empty, so an ADIF that supplied its own still wins. + a.applySolar(&q) + fillDistance(&q) + // ── Dedup (serialised) ── // Match by call + band + mode within a ±2-minute window: a QSO logged // manually in OpsLog and re-broadcast by Log4OM over UDP often differs by diff --git a/changelog.json b/changelog.json index c8903d7..ef9ca92 100644 --- a/changelog.json +++ b/changelog.json @@ -2,8 +2,12 @@ { "version": "0.24.7", "date": "", - "en": [], - "fr": [] + "en": [ + "QSOs logged from WSJT-X now carry the space weather and the distance, like hand-logged ones. The UDP path stamped the station profile, the DXCC and the QSL defaults but not SFI, A, K or distance — so an operator running digital had those fields empty across the whole log. Space weather is only stamped on a contact less than a day old: a logger re-broadcasting its backlog would otherwise be handed this morning readings for last month contacts." + ], + "fr": [ + "Les QSO enregistrés depuis WSJT-X portent désormais la météo spatiale et la distance, comme ceux saisis à la main. Le chemin UDP posait le profil station, le DXCC et les défauts QSL mais ni SFI, ni A, ni K, ni distance — un opérateur en numérique avait donc ces champs vides sur tout son log. La météo spatiale n est posée que sur un contact de moins d un jour : sinon un logiciel qui rediffuse son historique se verrait attribuer les relevés de ce matin sur des contacts du mois dernier." + ] }, { "version": "0.24.6",