chore: release v0.11

This commit is contained in:
2026-06-16 20:00:15 +02:00
parent 957182611d
commit 75ee5344a4
3 changed files with 23 additions and 21 deletions
+3 -3
View File
@@ -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';
+16 -14
View File
@@ -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
}
+4 -4
View File
@@ -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.