From 75ee5344a4186130cb4c211dccb88487672f570e Mon Sep 17 00:00:00 2001 From: Gregory Salaun Date: Tue, 16 Jun 2026 20:00:15 +0200 Subject: [PATCH] chore: release v0.11 --- frontend/src/version.ts | 6 +++--- internal/dxcc/dxcc.go | 30 ++++++++++++++++-------------- telemetry.go | 8 ++++---- 3 files changed, 23 insertions(+), 21 deletions(-) diff --git a/frontend/src/version.ts b/frontend/src/version.ts index 4929a39..0e3ba0d 100644 --- a/frontend/src/version.ts +++ b/frontend/src/version.ts @@ -1,6 +1,6 @@ -// Single source of truth for the app version shown in the UI (header + About). +// Single source of truth for the app version shown in the UI (header + About). // Bump this on a release (the release script updates it alongside telemetry.go). -export const APP_VERSION = '0.1'; +export const APP_VERSION = '0.11'; -// Author / credits, shown in Help → About. +// Author / credits, shown in Help → About. export const APP_AUTHOR = 'F4BPO'; diff --git a/internal/dxcc/dxcc.go b/internal/dxcc/dxcc.go index 49641b5..f00c46c 100644 --- a/internal/dxcc/dxcc.go +++ b/internal/dxcc/dxcc.go @@ -278,36 +278,38 @@ func stripAnnotation(s string, open, close rune, cb func(string)) string { // suffixModifiers are non-DXCC-relevant callsign suffixes we strip before // matching. /P /M /QRP /A and single-digit area changes (/5 …) all keep the -// operator's home DXCC. NOTE: "MM" and "AM" are NOT here — a TRAILING /MM or -// /AM (maritime/aeronautical mobile) means "no DXCC entity", while a LEADING -// "MM" is the Scotland operating prefix; both are handled in normalizeCallsign. +// operator's home DXCC. A TRAILING /MM or /AM (maritime/aeronautical mobile) is +// handled in normalizeCallsign (stripped, home entity kept) so a LEADING "MM" +// (the Scotland prefix) isn't mistaken for it. var suffixModifiers = map[string]bool{ "P": true, "M": true, "QRP": true, "A": true, "PM": true, "LH": true, } -// normalizeCallsign uppercases, trims, and resolves the "active" call when -// the operator uses slashes (DL/F4NIE → DL; F4NIE/P → F4NIE). Returns "" for -// maritime/aeronautical mobile (.../MM, .../AM), which count for no DXCC. +// normalizeCallsign uppercases, trims, and resolves the "active" call when the +// operator uses slashes (DL/F4NIE → DL; F4NIE/P → F4NIE). A trailing /MM or /AM +// (maritime/aeronautical mobile) is stripped so the home entity still resolves +// (YB1SCY/AM → YB1SCY → Indonesia) — strict DXCC says no entity, but the log +// should still show the operator's country. func normalizeCallsign(s string) string { s = strings.ToUpper(strings.TrimSpace(s)) if !strings.ContainsRune(s, '/') { return s } parts := strings.Split(s, "/") - // A trailing /MM or /AM is maritime/aeronautical mobile → no DXCC entity. - // (A leading "MM" is the Scotland prefix and must NOT trigger this.) - for i, p := range parts { - if i > 0 && (p == "MM" || p == "AM") { - return "" - } - } keep := parts[:0] var areaDigit byte // a single-digit "/N" re-homes the call to call area N - for _, p := range parts { + for i, p := range parts { if p == "" { continue } + // A TRAILING /MM (maritime) or /AM (aeronautical) mobile is stripped and + // the operator's home entity is kept, so the contact still resolves to a + // country in the log (e.g. YB1SCY/AM → Indonesia). A LEADING "MM" is the + // Scotland operating prefix (MM/F4NIE) and must NOT be stripped. + if i > 0 && (p == "MM" || p == "AM") { + continue + } if suffixModifiers[p] { continue } diff --git a/telemetry.go b/telemetry.go index 100acda..53dbe6b 100644 --- a/telemetry.go +++ b/telemetry.go @@ -1,4 +1,4 @@ -package main +package main import ( "bytes" @@ -13,15 +13,15 @@ import ( "hamlog/internal/applog" ) -// Anonymous usage telemetry — a once-a-day "app_opened" heartbeat to PostHog so +// Anonymous usage telemetry — a once-a-day "app_opened" heartbeat to PostHog so // the OpsLog author can see how many people actively use it. Privacy by design: // only a random install ID + app version + OS are sent (no callsign, no QSO // data, no IP beyond what any HTTP request reveals). Users can disable it in -// Preferences → General. See [[user-analytics-posthog]] notes in MEMORY. +// Preferences → General. See [[user-analytics-posthog]] notes in MEMORY. const ( // appVersion is stamped on every heartbeat (and could feed the About box). - appVersion = "0.1" + appVersion = "0.11" // posthogHost is the PostHog ingestion endpoint. EU cloud by default; change // to https://us.i.posthog.com for a US project.