Commit Graph
75 Commits
Author SHA1 Message Date
Claude e5e6036188 Make the terrain profile cache multi operator safe
The cache stored a single owner identity in a meta table and dropped the whole
TerrainProfileCache table whenever the configured callsign or locator differed
from it. With several operator profiles that turns the cache into a permanent
miss: every switch between two operators with different locators would discard
every computed profile.

Entries are separated by owner identity through the primary key already, so the
wipe is replaced by an owner table that simply records which identities are in
use. A different owner now misses the cache instead of clearing everybody's.

The cache also moves out of the worked station database into its own global
terrainprofilecache.db. Terrain profiles are pure geometry derived from two
locators and a sample count; at a multi operator station both operators share
one location, so a per profile copy would only double the traffic against the
terrain service. No migration is needed, the new file refills itself, and the
old tables stay readable for older releases.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Hpa6bjie5qkeNG62y6FmXm
2026-09-07 22:22:45 +02:00
Claude 3b631e25f6 Document operator profiles
Adds a manual section in both languages covering where profile files live, the
choice between shared and own worked stations, managing profiles, the startup
selection and the --profile argument, switching while running, and the fact
that passwords stay in clear text so profiles are not an access boundary.

Records the architecture in PROJECT_CONTEXT: lazy registry, derived paths, why
an additional profile database is created empty, why the login callsign default
is empty, and the constraints of rebuilding the runtime for a switch.

Adds a v1.50 changelog entry in both languages including the upgrade notes: no
file is moved, and going back to an older release stays possible.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Hpa6bjie5qkeNG62y6FmXm
2026-09-07 22:22:45 +02:00
Rsclub2_2andClaude Opus 5 4ad1cf71dd Document that a sandboxed logging program needs its own network permission
A logging program started as a Flatpak, or through a Wine environment
such as Bottles, uses the network permissions of that sandbox. Without
shared=network its 127.0.0.1 is not the loopback KST4Contest listens on,
so the connection is refused although KST4Contest reports the port
correctly.

Adds the check and the override command to the DX Cluster troubleshooting
section in both language versions, and notes that the published
KST4Contest Flatpak manifest already carries --share=network.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HT8R7zTMoQnmJj6dGbaqqf
2026-09-07 22:21:47 +02:00
Rsclub2_2 634b88238d WT-Logsync when KST4C is not actively receiving WT Packets,
so that we can later mark QSOs as marked, even though we never received
the packet.
2026-09-04 13:42:50 +02:00
Marc Froehlich 7ee50267ec Document v1.43 and fix release metadata 2026-09-03 23:42:17 +02:00
Marc Froehlich 53555cbe69 Add optional station map clustering toggle (solves #79) and added documentation 2026-09-03 01:26:19 +02:00
Marc Froehlich 9eb0550106 Persist table layouts just after changing the real used sizes and show truncated cell tooltips in the whole applications tables 2026-09-02 23:45:19 +02:00
Marc Froehlich 51aa04bfb5 Fix DX Cluster spot formatting - emit fixed 75-character DXSpider-compatible lines - align callsign, comment, and UTC fields - support frequencies up to 24 GHz - reject overlong callsigns instead of truncating them - add protocol tests and update documentation Fixes #86 2026-09-02 20:03:55 +02:00
Marc Froehlich 6b0d699a98 Fix compact QRG parsing and initial worked-state restore - parse digit-only full frequencies across supported bands - restore persisted Worked state before publishing initial user lists - add regression tests and update documentation Fixes #85 2026-09-02 19:17:52 +02:00
Marc Froehlich 6b29ffe3ba refactored the ugly switch case statement in logged-band-recognition 2026-08-31 00:15:26 +02:00
Marc Froehlich 08b109106e manual: corrected behaviour description of simplelogfile, Airscout, MYQTF, corrected some typos 2026-08-29 10:07:24 +02:00
Marc Froehlich 21b2d9970a manual: decribed SimpleLogFile-parser 2026-08-29 00:02:57 +02:00
Marc Froehlich d475c6b2c4 manual: wording corrected for the settings at different places 2026-08-28 22:22:35 +02:00
Marc Froehlich 211be6081d manual: described dual chat 2026-08-28 22:08:31 +02:00
Marc Froehlich b550d79b4b manual: described pm catching better... 2026-08-28 01:14:46 +02:00
Marc Froehlich 352cdcceb2 manual: described pm catching 2026-08-28 01:02:49 +02:00
Marc Froehlich 4a8e08a331 website: described filters better now 2026-08-28 00:14:31 +02:00
Marc Froehlich d91b119112 website: added map to the features and described g1ybb workflow 2026-08-27 23:50:27 +02:00
Marc Froehlich 345c4adfc3 website: added direction opportunities to the features and added neccessary picture 2026-08-27 23:27:00 +02:00
Marc Froehlich 3193e4ac73 manual and code: configfile path corrected 2026-08-27 00:23:09 +02:00
Marc Froehlich 3ec6cab46a manual and code: fixed colour handling of the messages and better descripted it in the manual 2026-08-27 00:02:02 +02:00
Marc Froehlich b280f1b0db manual: overhaul features, config, dxcluster server 2026-08-26 22:57:49 +02:00
Marc Froehlich 7fe33613e9 manual: overhaul cluster-server and feature list 2026-08-26 22:43:16 +02:00
Marc Froehlich 9378bf2afd manual: overhaul en-home and changelog de and en 2026-08-26 22:19:27 +02:00
Marc Froehlich 047891e109 manual: overhaul user interface de and en 2026-08-26 01:05:13 +02:00
Marc Froehlich 4f88101ab7 manual: overhaul en-variables and macros 2026-08-26 00:56:33 +02:00
Marc Froehlich 5955ba4ecf manual: added contest workflow and variables 2026-08-26 00:39:24 +02:00
Marc Froehlich 8c6ce6b402 manual: updated user interface documentation 2026-08-25 00:52:47 +02:00
Rsclub2_2 4d8b8aa12e v1.42 Docs updated 2026-08-22 18:24:55 +02:00
Rsclub2_2andClaude Opus 5 af30c17a0d Macos signing (#80)
* Sign and notarize macOS builds

jpackage cannot produce a distributable macOS bundle on its own. It ad-hoc
signs the embedded runtime and then re-runs codesign on the same files without
--force, which codesign rejects; and "--type dmg --app-image" re-signs the app
it is handed, replacing a Developer ID signature with an ad-hoc one. So the
build now creates an unsigned app-image, signs it from the inside out, and
wraps it with hdiutil.

Apple's notary service also unpacks JARs and checks the native libraries
inside them, which sqlite-jdbc ships for both architectures. Those are signed
before the bundle is sealed, since rewriting a JAR afterwards would invalidate
the seal. A preflight check verifies Apple's two criteria locally, so a missed
binary costs seconds rather than a round trip to the notary service.

Two long-standing defects surfaced while testing and are fixed here: the
bundle identifier defaulted to the main class's package name (kst4contest.view
instead of de.x08.KST4Contest), and every release reported version 1.0 in
Finder because --app-version was never passed. Neither affects existing users:
the app keeps its settings in ~/.praktiKST, independent of the bundle ID.

Both workflows call the same script the local Mac uses, so the two cannot
drift apart. Signing needs a keychain that can answer a UI prompt, which a
runner cannot, so ci-import-cert.sh creates a throwaway keychain whose
password is generated per job and discarded with it. Notarization goes through
an App Store Connect API key and needs no keychain at all.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* Sign bundle contents serially

Signing the app image's Mach-O files with "xargs -P 8" passed locally but
failed on a runner: codesign reported "replacing existing signature" and then
"No such file or directory" for that same path. The two libjli.dylib copies are
separate inodes, so this is not hard links being signed twice -- concurrent
codesign runs over one bundle are simply not reliable. Serially costs about a
minute, since each call waits on Apple's timestamp server.

Also stop the matrix from cancelling the other architecture on a failure; that
throws away half the diagnostic information from a failed run.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* Document macOS signing from 1.42

The installation guides described the right-click workaround as the normal
first launch. That stays, but as the path for 1.41.1 and older; from 1.42 a
double-click works. Both guides also show how to verify a download with spctl,
so the claim is checkable rather than something to take on faith.

The per-channel download notes distinguish where the channels actually stand:
Nightly is built from main and is signed as of now, while Stable still points
at 1.41.1, so those notes name the version instead of claiming it outright.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-08-22 16:48:31 +02:00
Rsclub2_2 2bc7554a52 Manual Fixup & Screenshots 2026-08-21 14:17:11 +02:00
Rsclub2_2 77b7a4729f Excuse me, wir 2026 2026-08-18 17:04:42 +02:00
Rsclub2_2 56b2fae0a3 Fix Nightly Build... 2026-08-18 17:00:13 +02:00
Marc Froehlich cc991418e8 manual: updated map documentation 2026-08-17 01:19:04 +02:00
Marc Froehlich 399f7235ef manual: updated sniffer description + website 2026-08-17 00:18:18 +02:00
Marc Froehlich 8fa5360752 manual: updated pstrotator settings descriptin. Source: implemented plausibility checks for pstrotator port range and changed ui blocking problem on the spid workaround 2026-08-16 03:05:46 +02:00
Marc Froehlich 422e6cf4b7 manual: updated beacon settings descriptin. Source: implemented plausibility checks for beacon texts 2026-08-16 02:34:40 +02:00
Marc Froehlich f77e0bd8f9 manual: updated Shortcut and Snippet settings description 2026-08-16 02:08:10 +02:00
Marc Froehlich 641c9bdbc3 manual: updated AirScout settings description 2026-08-16 01:41:17 +02:00
Marc Froehlich 265115c9cc manual: updated synch settings description 2026-08-16 01:26:05 +02:00
Marc Froehlich 88cb55520d corrected string formatting on qrgs bigger than 10 GHz in wintest parser 2026-08-16 01:12:23 +02:00
Marc Froehlich a4475e6d12 manual update: configuration, AS, functions 2026-08-13 22:49:19 +02:00
Marc Froehlich 6966edbfff manual update: map 2026-08-12 01:39:40 +02:00
Marc Froehlich 8c3ff5f07c added favicon and finished the audit of the manual 2026-08-10 02:04:54 +02:00
Marc Froehlich 926bb9daee added manual (settings) and favicon for the website 2026-08-10 01:16:34 +02:00
Marc Froehlich 2828e7ef80 fix: make AirScout and map propagation band-aware by resolving realistic per-station QRGs to canonical AirScout bands, using one shared watchlist, honoring the operator-selected band for Calc selected and map path analysis, and replacing the obsolete 430 MHz fallback with 432 MHz (fixes #67) and parts of #74 2026-08-08 01:53:04 +02:00
Marc Froehlich b0cc5ee9ba updated en-manuals for skeds, user interface and features 2026-08-07 23:59:59 +02:00
Marc Froehlich 1de9673d12 uploaded 2 manual pictures for sked and timeline 2026-08-07 23:34:57 +02:00
Marc Froehlich c119f28b30 Uploaded sked, timeline, priority candidates and wintest connection manuals 2026-08-07 23:13:40 +02:00
Marc Froehlich 8bd5d8877d Add persistent map analysis toggle and improve compact layout for smaller screens. Solves (#69) 2026-08-06 01:52:59 +02:00