Repository navigation
Releases: HamRadioOnline/kst4contest
Release list
Beta beta-v1.50.0-rc01
Release candidate 1.50.0 (rc01)
First release candidate for 1.50. Please test in real contest conditions and report problems as GitHub issues.
Changes since beta-001
- New user interface: JavaFX replaced by Compose Multiplatform. Interface in German and English, colours adjustable.
- SO2R: two radios in one instance. Radio 2 is assigned by RadioNr (N1MM, DXLog, UCXLog) or by its Win-Test station name and writes SECONDQRG; optional second PSTRotator with "Turn ant2" and a QTF2 field. Off by default (#46).
- Settings take effect with Apply/Close or Save, also during a session; closing with pending changes asks first. Login fields are locked while connected (#134, #128).
- Minimum QRB filter; the station map follows the station filters (#21).
- Path analysis: own ground height ASL and the highest point of the remote locator square (#133).
- Windows open on the main window's screen; optional: keep window positions across restarts; windows are cut down to small screens (#59).
- Main window title shows the connection line again; turn-antenna button back, PSTRotator azimuth with one decimal.
- UCXLog/DXLog listener: no truncated packets, UTF-8, keeps running after bad packets (#115).
- Windows MSI installer next to the portable ZIP (stable releases only) (#61); beta DEB/RPM packages upgrade cleanly to the stable package (#113).
- Fixes: AP column sorts numerically (#87); no automatic DX cluster spots for worked stations (#91).
- Under the hood: many more tests (network loopback, UI screen tests, path-analysis reference cases), coverage and static-analysis reports.
Changes since the last stable release 1.44.0
- New user interface (Compose Multiplatform), German and English, adjustable colours.
- Operator profiles: several operators on one computer with their own settings, layout and optionally their own worked database; profile choice at startup and switching while running.
- SO2R with two radios and a second rotator.
- Settings take effect with Apply; minimum QRB filter; station map follows the filters.
- Path analysis with own ground height and the highest point of the remote square.
- Window placement on the main window's screen, optional across restarts.
- Windows MSI installer; Linux beta packages upgrade to stable.
- Plus all fixes listed above.
What's Changed
Commits on main
- Add Supporters/Sponsor section to README
- build(deps): bump actions/setup-node from 4 to 7
- build(deps): bump actions/upload-artifact from 6 to 7
- build(deps): bump actions/download-artifact
- Build AUR source packages against their own Gradle home, not offline
- build(deps): bump the minor-and-patch group across 1 directory with 5 updates
- build(deps): bump junit from 5.10.1 to 6.1.3
- build(deps): bump org.jetbrains:annotations from 24.0.1 to 26.1.0
- build(deps): bump actions/setup-java from 4.1.0 to 6.0.1
- build(deps): bump actions/upload-artifact from 4 to 6
- build(deps): bump actions/download-artifact from 4.1.3 to 8.0.1
- build(deps): bump actions/checkout from 4 to 7
- build(deps): bump Andrew-Chen-Wang/github-wiki-action from 4 to 5
- chore: add Dependabot configuration for Gradle and GitHub Actions
- Optimize station map refresh performance
- Update diagnostics and analytics context
- Add replayable ON4KST session logging
- Align private metrics with GoAccess request panel
- Fix private analytics aggregation
- Changes at the stats analytics
- Changed link monitoring as described by on4kst, Alain
- Added screenshot where thhey belongs to at the project hp
- refactoring project website landing page
- Documentation on user counter and analytics to the kst4contest page
- Corrections on user counter and analytics to the kst4contest page
- Added user counter and analytics to the kst4contest page
- Document that a sandboxed logging program needs its own network permission
Merged PRs
- Next major release/version1.50 by @Rsclub22 in #89
- Test suite cleanup, JaCoCo coverage report and tests before packaging (#62) by @Rsclub22 in #112
- Windows MSI installer next to the portable ZIP (#61) by @Rsclub22 in #111
- Give beta DEB and RPM packages a pre-release number (#113) by @Rsclub22 in #116
- Write SpotBugs reports and publish static analysis on pull requests (#110) by @Rsclub22 in #114
- Remove Thread.sleep timing coupling from the tests (#109) by @Rsclub22 in #118
- Reference cases for the path-analysis mathematics (#108) by @Rsclub22 in #117
- build(deps): bump actions/download-artifact from 8.0.1 to 8.0.2 in the minor-and-patch group by @dependabot[bot] in #119
- build(deps): bump actions/upload-artifact from 6 to 7 by @dependabot[bot] in #120
- build(deps): bump actions/setup-node from 4 to 7 by @dependabot[bot] in #121
- Fix UDP listener defects (#115) by @Rsclub22 in #122
- Loopback tests for the network threads (#106) by @Rsclub22 in #124
- Compose screen tests with runComposeUiTest (#107) by @Rsclub22 in #125
- Make MessageBusManagementThread testable, first slice (#105) by @Rsclub22 in #123
- Restore the turn-antenna button and send the PSTRotator azimuth with one decimal by @Rsclub22 in #126
- Keep tests out of the user profile; small socket fixes by @Rsclub22 in #127
- Settings tabs no longer commit on open; lock login fields while connected by @Rsclub22 in #128
- Translate the remaining hard-coded interface texts by @Rsclub22 in #129
- Retry stapler when Apple's ticket service drops the connection by @Rsclub22 in #131
- Use the annotated tag message in the release notes by @Rsclub22 in #130
- Settings take effect with Apply/Close or Save by @Rsclub22 in #134
- Minimum QRB filter; the station map follows the station filters (#21) by @Rsclub22 in #132
- Path analysis: own ground height ASL and highest point of the remote locator square by @Rsclub22 in #133
- Restore the connection line in the main window title by @Rsclub22 in #136
- Open secondary windows on the main window's screen (#59) by @Rsclub22 in #135
- SO2R: two radios in one instance (#46) by @Rsclub22 in #137
- Changelog 1.50: new interface, German and English, adjustable colours by @Rsclub22 in #138
- One chat-frame flow for live and history messages (#105) by @Rsclub22 in #139
Full Changelog: v1.44.0...beta-v1.50.0-rc01
Beta beta-v1.50.0-beta-001
What's Changed
Commits on main
- List direct commits on main in the release notes
- Use the macOS system menu bar in all windows
- Show a drag-to-install layout in the macOS DMG
- Use one base font size and a per-profile startup design
- Add the in-app update concept for 1.50
- Code Version 1.50
- Fail cleanly when the registry path has no directory
- Make the terrain profile cache multi operator safe
- Document operator profiles
- Manage operator profiles from the settings window
- Switch the operator profile while the application is running
- Release the background resources a discarded runtime owns
- Select the operator profile at startup
- Introduce the operator profile model and its registry
- Allow preferences and chat controller to be bound to a file set
- Make DBController work on one database file per instance
- Align private metrics with GoAccess request panel
- Fix private analytics aggregation
- Changes at the stats analytics
- Changed link monitoring as described by on4kst, Alain
- Added screenshot where thhey belongs to at the project hp
- refactoring project website landing page
- Documentation on user counter and analytics to the kst4contest page
- Corrections on user counter and analytics to the kst4contest page
- Added user counter and analytics to the kst4contest page
- Document that a sandboxed logging program needs its own network permission
Full Changelog: v1.44.0...beta-v1.50.0-beta-001
Release v1.44.0
What's Changed
- Serialize Flatpak repo publishes to prevent non-fast-forward push failures by @Rsclub22 with @Copilot in #88
Full Changelog: v1.43.1...v1.44.0
Release v1.43.1
Full Changelog: v1.43.0...v1.43.1
Release v1.43.0
Full Changelog: v1.42.0...v1.43.0
Release v1.42.0
Version 1.42
Band context everywhere, a robust ON4KST link and signed macOS packages
v1.42 brings several previously separate calculations together: band information, Worked status, NOT-QRV marks, callsign suffixes and frequencies are now used consistently by the user list, the station map, the priority calculation and the external interfaces.
New Features
- Visible ON4KST connection state — a compact
LINKindicator shows the real state of the chat link: green = authenticated and synchronised, yellow = connecting or synchronising, red = lost connection, error or reconnect backoff. - Shared band-opportunity calculation — a central
BandOpportunityResolverevaluates recent QRGs, band designators in station names, active callsign variants, Worked information and NOT-QRV marks. User list, New bands, band-upgrade hint, Priority Score, station map and automatic band selection now share one basis. - Extended band status display — the band columns now distinguish
X(worked on this band),a(offered, unworked band of a completely new callsign),B+(offered, unworked band of a callsign already worked elsewhere) ando(locator square already worked on this band). Codes combine, e.g.aoorB+o; the additionala/oindicators can be hidden separately. - 50 and 70 MHz support — in station settings, Worked/NOT-QRV handling, user list, filters, internal database, UCXLog processing and the Win-Test listener. Existing databases are migrated automatically.
- Global message tabs — public messages, ON4KST DX cluster messages and directed messages between other stations can be shown directly in the main window; the separate monitor window remains available and uses the same message stores.
- Manual QTF input — the antenna direction can be changed inside KST4Contest when PSTRotator is not in use.
- Filter reset — a dedicated button that reliably clears all active user-list filter predicates.
- Map clustering — nearby stations are grouped at lower zoom levels; the selected station and relevant direction opportunities stay individually visible.
- Hideable path analysis — the terrain profile section of the station map can be hidden completely; the state survives a restart.
- DXLog full-log import — the UCXLog-compatible UDP listener now also processes
contactreplace, so a complete log broadcast from DXLog.net can be imported.
Improvements
- Session-based ON4KST connection lifecycle — socket, reader, writer, message bus and queues belong to one identified session, so threads of an obsolete connection can no longer touch its replacement.
ONLINEis reported only after an accepted login and complete user lists. Connect, login and synchronisation use bounded timeouts; heartbeat, missing traffic, EOF and I/O failures trigger controlled reconnects with backoff. - Validated ON4KST protocol commands — outgoing frames are built centrally and checked for valid categories, locators and forbidden delimiters. Since ON4KST keeps one locator per TCP session, the main locator is used for both chat categories and a conflicting secondary configuration is logged instead of sent.
- More precise QRG recognition — bare three-digit numbers count as QRGs only with a frequency context, so signal reports, band designators and unrelated numbers produce far fewer false frequencies. Relative QRGs first use a station-specific band context no older than 30 minutes; the global fallback band is now a dropdown of supported bands and applies to the whole QRG parser, not just DX cluster spots. Frequencies are displayed with at least three decimals, including above 10 GHz.
- Band-aware AirScout and path calculations — a realistic frequency is derived per station and mapped to canonical AirScout bands; AirScout, Calc selected and the map path analysis share one
PropagationFrequencyResolver, and an explicitly selected reachability band is honoured. The obsolete 430 MHz fallback is now 432 MHz. - Separate callsign variants with shared base-callsign data — active members are distinguished by full callsign incl. suffix and chat category, while Worked flags, NOT-QRV information and Priority Scores are still evaluated across variants of the same base callsign.
- Corrected Priority Score eligibility — stations without a common available band, or with an overriding NOT-QRV mark, no longer appear as priority candidates; an open band at a station already worked elsewhere can earn a separate Priority Boost. The penalty on a failed sked was fixed.
- Sked workflow — the band is chosen from the locally enabled bands,
SSB/CWis selected explicitly instead of being guessed from the band, the QRG must match the selected band, KST suffixes are stripped for the logging target while portable components are preserved,ADDSKEDtimestamps are correct, a failed handover keeps the internal sked, and timeline plus reminders address the exact visible KST callsign. - Reworked beacon and automatic replies — one shared timer for both chat categories with separate switches and texts, minimum interval of two minutes, 120-character limit, plausibility checks and beacon state restored from the configuration at startup.
- Central variable resolution — beacons, shortcuts, snippets and other generated texts go through one shared resolver.
- UI polish — truncated messages show a tooltip, recognised URLs open in the system browser, the filter bar stays compact and only wraps when space is genuinely insufficient (centre divider can move further right), the map view moved topics into the head bar, and PSTRotator port ranges are plausibility-checked without blocking the UI.
- Callsign sniffer — sniffing now works on the raw callsign and avoids duplicate entries.
- Improved version comparison — versions are compared semantically, so patch and Nightly versions are no longer misclassified.
Bug Fixes
- Reliable initial user list — invalid or incomplete
UA0records are rejected individually instead of blocking following members; valid entries are staged per category and published as one complete snapshot. - User list disappearing after login — repeated
UEend markers are detected and ignored, so a populated user list cannot be replaced by an empty snapshot. - Failed initial connection and lost sockets — an unavailable server no longer causes an endless or busy-wait loop; the UI stays responsive, and closed or silent sockets are detected reliably.
- Message-bus diagnostics — correctly processed frames are no longer reported as
Critical, detected unhandled Chatmessage. - Long-running station-selection failure — chat members are decoupled from the JavaFX view, so selection models no longer break after hours of runtime (#51).
- No phantom chat members from UM3 — historical server messages no longer create entries for stations that are not logged in.
- Messages to callsigns with suffixes — several active variants of one base callsign no longer overwrite each other (#73).
- DX cluster locators — reporting and reported station no longer share the same locator (#48); spots are also sent when no AP lies between the station and the operator.
- Worked state in "QSO of the other" — the Worked columns use the correct transmitting and receiving station again.
- Missing SECONDAP data — an absent second aircraft-scatter opportunity no longer triggers an invalid text selection and JavaFX exception.
- Historical callsigns — selecting or highlighting a callsign that left the user list no longer throws.
- Filter reset — all predicates are actually removed and the button state matches the effective filter state (#50).
Documentation and Packaging
- German and English manuals were systematically checked against the source, extended and re-screenshotted — they now describe how information is derived and where the limits of a result lie.
- Signed and notarized macOS packages — the Apple Silicon and Intel DMGs are signed with an Apple Developer ID and notarized, with the ticket stapled. First launch works by double-click, offline included, for Nightly, Beta and Stable alike. Windows packages remain unsigned.
- Correct bundle identifier and version on macOS — the app identifies as
de.x08.KST4Contestand carries its real version instead of1.0. Existing settings are unaffected (data lives in~/.praktiKST/). - AUR provides
kst4contest-bin,kst4contestandkst4contest-git; the download page separates Stable, Beta and Nightly and only offers packages of the matching channel; Nightly builds come frommainautomatically. - The jpackage module list is derived from
module-info.javainstead of sixteen copies, andjdk.netis part of every packaging module list. - New KST4Contest logo in higher resolution, plus an SVG source.
Known limitations
- Terrain data comes from Open-Meteo (Copernicus GLO-90) with at most 100 elevation samples per path.
- The atmospheric K factor is fixed at
4/3, and 10 m antenna height above ground is assumed for the remote station. - AirScout aircraft-scatter information and the map terrain analysis remain separate assessments.
- More detailed configuration of station height, frequency and K factor is tracked in #74.
Merged Pull Requests
- Add selected-band activity indicator for stations in map and details by @Rsclub22 with @Copilot in #53
- implement #49 by @Rsclub22 in #58
- Bugfix/51 selectionmodel fix by @praktimarc in #60
- on4kst: session-scoped connection supervisor by @praktimarc in #75
- on4kst: add jdk.net to every packaging module list by @Rsclub22 in #76
- Macos signing by @Rsclub22 in https://github.co...
Beta beta-v1.42.0-rc03
Beta beta-v1.42.0-rc02
Beta beta-v1.42-rc01
What's Changed
- Add selected-band activity indicator for stations in map and details by @Rsclub22 with @Copilot in #53
- implement #49 by @Rsclub22 in #58
- Bugfix/51 selectionmodel fix by @praktimarc in #60
New Contributors
Full Changelog: v1.41.1...beta-v1.42-rc01