Commit Graph
257 Commits
Author SHA1 Message Date
github-actions[bot] 75ab24da25 chore: update AUR packages to v1.42.0 [skip ci] 2026-08-22 16:56:23 +00:00
Rsclub2_2 8aadbb9ee0 AUR: fix PKGBUILD in Repo 2026-08-22 18:53:44 +02:00
Rsclub2_2 3b344482ba AUR: fix Packages not updating 2026-08-22 18:36:13 +02:00
Rsclub2_2 86ad2f7a43 Website: Version 1.42 released news 2026-08-22 18:29:52 +02:00
Rsclub2_2 29ce6b0a4d AUR: mark Workspace as safe for git. 2026-08-22 18:27:22 +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>
v1.42.0
2026-08-22 16:48:31 +02:00
Rsclub2_2 399e5f34b7 Updated KST4C Logo for Builds in Higher Resolution and added it as an
SVG for Source. Should also be done when building Package with the help
of AUR in all Version and every Linux dist.
2026-08-22 00:32:07 +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 720dd2560b manual: updated sniffer settings description + source: changed sniffing to callsignraw and avoid dupe entries 2026-08-16 03:40:54 +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 49c0c1eb37 corrected string formatting on qrgs bigger than 10 GHz in wintest parser 2026-08-16 01:19:33 +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
Rsclub2_2andClaude Opus 5 f014b4697b packaging: derive the jpackage module list from module-info.java instead of maintaining sixteen copies
The jdk.net incident was caused by duplication rather than by a single
oversight: the module list existed in module-info.java, in the jpackage Maven
plugin and in fourteen hardcoded --add-modules arguments across the workflows
and AUR PKGBUILDs. Only the path that CI does not use was kept up to date, so
every packaged build shipped a runtime image without jdk.net.

Add packaging/AddModules.java, a single file source program that reads the
requires clauses and prints the platform modules. It runs identically on the
Linux, macOS and Windows runners without a build step, and skips third party
requires such as jlayer, which is an automatic module and cannot be linked
into a runtime image at all, as well as test only requires and requires
static. All sixteen packaging call sites now resolve the list through it, so
they can no longer drift from the descriptor.

The jpackage Maven plugin takes its modules as individual XML elements and
cannot consume a generated value, so it remains a second copy. To keep it
honest the helper has a pom verification mode, bound to the validate phase
via exec-maven-plugin. Binding it to the build rather than to a workflow
trigger means it also fires on direct pushes to main, on tagged releases, in
both AUR PKGBUILDs and on local builds, none of which run the pull request
check.

The released AUR PKGBUILD builds from a tag tarball that may predate the
helper, and aur-publish.yml rewrites pkgver to the latest release, so it
falls back to the list carried in that tarball's own pom.xml.

Verified that the generated list produces a byte identical runtime image to
the previous hardcoded one, that removing a requires fails the build with a
precise diff, and that the pull request check and the push triggered nightly
AppImage job both succeed under act.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Generated-By: Claude Code (Claude Opus 5)
2026-08-15 01:05:45 +02:00
Rsclub2_2andClaude Opus 5 209034724f on4kst: add the jdk.net module to every packaging module list and stop connection setup from failing silently
The ON4KST connection manager introduced in f8c04e7 uses
jdk.net.ExtendedSocketOptions to configure kernel side TCP keepalives. The
new dependency was added to module-info.java and to the jpackage Maven
plugin, but the CI and AUR builds do not use that plugin: they call jpackage
directly with a hardcoded --add-modules list that still lacked jdk.net.
Because jdk.net is not pulled in transitively, every packaged runtime image
shipped without the class while development runs against the full JDK and
kept working.

The resulting NoClassDefFoundError is an Error, so neither the catch in
configureSocket nor the surrounding catch (Exception) in openConnection
handled it. Running on a ScheduledExecutorService, the throwable was stored
in the task future and never surfaced, leaving the state machine stuck in
CONNECTING with no reconnect attempt and no user visible failure.

Add jdk.net to all 16 module lists, covering nightly artifacts, tagged
releases and both AUR PKGBUILDs, so releases are affected as well as
nightlies. Additionally catch LinkageError in configureSocket so a runtime
image without jdk.net degrades to application level heartbeats, and catch
Throwable in openConnection so an Error can no longer be swallowed by the
scheduler.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-15 00:32:45 +02:00
praktimarc f8c04e72e1 on4kst: replace the legacy connection handling with a session-scoped supervisor using bounded connect, login and synchronisation timeouts, heartbeat and stale-link detection, controlled reconnect backoff and session-safe reader/writer queues; validate outgoing protocol context and malformed inbound user frames, enforce one locator per TCP session, publish complete user lists atomically and ignore repeated UE markers, prevent failed initial connections from entering a busy loop, add a compact high-visibility LINK state indicator, and remove false unhandled-frame reports. Solves #71 (#75)
Session-based ON4KST connection lifecycle: Each socket, reader, writer, message bus and queue now belongs to an explicitly identified connection session. Delayed threads from an obsolete connection can therefore no longer process data or close its replacement. ONLINE is reported only after the login has been accepted and all requested user lists have been received. Connection setup, login and synchronisation use bounded timeouts, while heartbeats, missing inbound traffic, EOF and read or write failures trigger controlled reconnect attempts with backoff where appropriate.

Validated ON4KST protocol commands: Outgoing frames are built centrally and checked for valid categories, locators and prohibited frame delimiters. Because ON4KST maintains one locator per TCP session, the main locator is used for both chat categories and a conflicting secondary configuration is logged instead of sending contradictory commands to the server.
2026-08-14 01:10:22 +02:00
Marc Froehlich a4475e6d12 manual update: configuration, AS, functions beta-v1.42.0-rc03 2026-08-13 22:49:19 +02:00
Marc Froehlich e3b2ea725a manual links updates 2026-08-13 00:56:22 +02:00
Marc Froehlich 6966edbfff manual update: map 2026-08-12 01:39:40 +02:00
Marc Froehlich 42d4b72dd6 website: prevent incomplete version-info deployments and regenerate validated update feeds after releases 2026-08-12 01:11:34 +02:00
Marc Froehlich 15f585c938 frequency-recognition: explicit frequencdies out of the name field will be copied to the qrg field and trigger the used band spot of a station to fit for this qrg. Airscout will then use this band explicitely for the calculation 2026-08-12 00:23:17 +02:00
Marc Froehlich 663f724c98 mapview: saved some space by moving some topics to the head bar 2026-08-11 23:38:47 +02:00
Marc Froehlich 9cccdb73e9 website - updated priority score md file beta-v1.42.0-rc02 2026-08-10 03:13:18 +02:00
Marc Froehlich 401f271d56 fixed prio score penalty on sked fail 2026-08-10 03:06:06 +02:00
Marc Froehlich 00aefdacd5 website - updated macros md file 2026-08-10 02:53:03 +02:00
Marc Froehlich ea4fc9c008 website - updated dxcluster md file 2026-08-10 02:44:04 +02:00
Marc Froehlich caaeebd00c Added 6+4m and 10G and up frequency detection patterns 2026-08-10 02:42:29 +02:00
Marc Froehlich 852f76b05a fixed DXCluster Server where a spot will not be sent if no AP is between the station and me 2026-08-10 02:26:37 +02:00
Marc Froehlich d6c1ffbb34 website features and airscout information updated 2026-08-10 02:22:08 +02:00
Marc Froehlich cfbb978aee updated manual link and nav structure at the website 2026-08-10 02:08:11 +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 b00e4c1e3d fixed worked-flag in the qso-of-the-other-table beta-v1.42-rc01 2026-08-07 23:43:04 +02:00
Marc Froehlich b3ca684f04 updated website for sked and timeline features 2026-08-07 23:38:13 +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 6a7f07c62e fix(wintest): replace unreliable band-limited AUTO sked mode detection with explicit SSB/CW selection and show exact KST callsigns in the timeline and fixed (#50 ensured Filter-Reset) 2026-08-07 22:56:24 +02:00
Marc Froehlich 4f574ebec6 fix(wintest): add band-aware sked QRG resolution, preserve portable callsigns, strip KST suffixes and correct ADDSKED timestamps 2026-08-07 22:43:17 +02:00
Marc Froehlich 7ce31e110b fix(wintest): add band-aware sked QRG resolution, preserve portable callsigns, strip KST suffixes and correct ADDSKED timestamps 2026-08-07 22:28:51 +02:00
Marc Froehlich 92804a622a Corrected typo error in MessagebusmanagementThread. Solves (#48) 2026-08-07 22:08:19 +02:00