mirror of
https://github.com/praktimarc/kst4contest.git
synced 2026-07-13 08:07:11 +02:00
Compare commits
5 Commits
250290a1eb
...
eaf611b203
| Author | SHA1 | Date | |
|---|---|---|---|
| eaf611b203 | |||
| e339b6fccf | |||
| bd9b42d4a5 | |||
| 275ce48769 | |||
|
d201997587
|
@@ -22,7 +22,7 @@ public class ApplicationConstants {
|
|||||||
*/
|
*/
|
||||||
public static final double APPLICATION_CURRENTVERSIONNUMBER = 1.42;
|
public static final double APPLICATION_CURRENTVERSIONNUMBER = 1.42;
|
||||||
|
|
||||||
public static final String VERSIONINFOURLFORUPDATES_KST4CONTEST = "https://do5amf.funkerportal.de/kst4ContestVersionInfo.xml";
|
public static final String VERSIONINFOURLFORUPDATES_KST4CONTEST = "https://kst4contest.hamradioonline.de/kst4ContestVersionInfo.xml";
|
||||||
public static final String VERSIONINFDOWNLOADEDLOCALFILE = "kst4ContestVersionInfo.xml";
|
public static final String VERSIONINFDOWNLOADEDLOCALFILE = "kst4ContestVersionInfo.xml";
|
||||||
|
|
||||||
public static final String STYLECSSFILE_DEFAULT_DAYLIGHT = "KST4ContestDefaultDay.css";
|
public static final String STYLECSSFILE_DEFAULT_DAYLIGHT = "KST4ContestDefaultDay.css";
|
||||||
|
|||||||
@@ -5970,9 +5970,19 @@ public class Kst4ContestApplication extends Application implements StatusUpdateL
|
|||||||
txt_myQTF.getStyleClass().add("text-input");
|
txt_myQTF.getStyleClass().add("text-input");
|
||||||
txt_myQTF.getStyleClass().add("text-input-MYQRG1");
|
txt_myQTF.getStyleClass().add("text-input-MYQRG1");
|
||||||
|
|
||||||
|
// Rotator sync on/off determines whether this field is bound (read-only, driven
|
||||||
|
// by PSTRotator) or free for manual entry, mirroring the MYQRG sync behaviour above.
|
||||||
|
if (chatcontroller.getChatPreferences().isStn_pstRotatorEnabled()) {
|
||||||
txt_myQTF.textProperty().bind(Bindings.createStringBinding(
|
txt_myQTF.textProperty().bind(Bindings.createStringBinding(
|
||||||
() -> Double.toString(chatcontroller.getChatPreferences().getActualQTF().get()),
|
() -> Double.toString(chatcontroller.getChatPreferences().getActualQTF().get()),
|
||||||
chatcontroller.getChatPreferences().getActualQTF()));
|
chatcontroller.getChatPreferences().getActualQTF()));
|
||||||
|
txt_myQTF.setTooltip(new Tooltip("This is your current QTF, read out at PSTRotator"));
|
||||||
|
txt_myQTF.setFocusTraversable(false);
|
||||||
|
} else {
|
||||||
|
txt_myQTF.setText(Double.toString(chatcontroller.getChatPreferences().getActualQTF().get()));
|
||||||
|
txt_myQTF.setTooltip(new Tooltip("Enter your antenna heading (QTF) by hand - no rotator sync active"));
|
||||||
|
txt_myQTF.setFocusTraversable(true);
|
||||||
|
}
|
||||||
|
|
||||||
txt_myQTF.focusedProperty().addListener(new ChangeListener<Boolean>() {
|
txt_myQTF.focusedProperty().addListener(new ChangeListener<Boolean>() {
|
||||||
@Override
|
@Override
|
||||||
@@ -5982,13 +5992,16 @@ public class Kst4ContestApplication extends Application implements StatusUpdateL
|
|||||||
// System.out.println("Textfield on focus");
|
// System.out.println("Textfield on focus");
|
||||||
// Do nothing until field loses focus, user will enter his frequency
|
// Do nothing until field loses focus, user will enter his frequency
|
||||||
} else {
|
} else {
|
||||||
|
if (txt_myQTF.textProperty().isBound()) {
|
||||||
|
return; // rotator sync active, field is driven by PSTRotator
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
System.out.println(
|
System.out.println(
|
||||||
"[Main.java, Info]: Set the MYQTF property by hand to: " + txt_myQTF.getText());
|
"[Main.java, Info]: Set the MYQTF property by hand to: " + txt_myQTF.getText());
|
||||||
chatcontroller.getChatPreferences().getActualQTF().set(Integer.parseInt(txt_myQTF.getText()));}
|
chatcontroller.getChatPreferences().getActualQTF().set(Double.parseDouble(txt_myQTF.getText()));}
|
||||||
catch (Exception exception) {
|
catch (Exception exception) {
|
||||||
System.out.println("bullshit entered in myqtf");
|
System.out.println("bullshit entered in myqtf");
|
||||||
txt_myQTF.setText("0");
|
txt_myQTF.setText("0.0");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5997,8 +6010,6 @@ public class Kst4ContestApplication extends Application implements StatusUpdateL
|
|||||||
txt_myQTF.setPrefSize(40, 0);
|
txt_myQTF.setPrefSize(40, 0);
|
||||||
// txt_ownqrg.setMinSize(40, 0);
|
// txt_ownqrg.setMinSize(40, 0);
|
||||||
txt_myQTF.setAlignment(Pos.BASELINE_RIGHT);
|
txt_myQTF.setAlignment(Pos.BASELINE_RIGHT);
|
||||||
txt_myQTF.setTooltip(new Tooltip("This is your current QTF, read out at PSTRotator"));
|
|
||||||
txt_myQTF.setFocusTraversable(false);
|
|
||||||
|
|
||||||
SplitPane mainWindowLeftSplitPane = new SplitPane();
|
SplitPane mainWindowLeftSplitPane = new SplitPane();
|
||||||
mainWindowLeftSplitPane.setOrientation(Orientation.HORIZONTAL);
|
mainWindowLeftSplitPane.setOrientation(Orientation.HORIZONTAL);
|
||||||
@@ -8637,9 +8648,21 @@ public class Kst4ContestApplication extends Application implements StatusUpdateL
|
|||||||
chkBx_station_pstRotatorEnabled.setTooltip(new Tooltip(
|
chkBx_station_pstRotatorEnabled.setTooltip(new Tooltip(
|
||||||
"If disabled: no PSTRotator connection is started and antenna direction is ignored in priority scoring."
|
"If disabled: no PSTRotator connection is started and antenna direction is ignored in priority scoring."
|
||||||
));
|
));
|
||||||
chkBx_station_pstRotatorEnabled.selectedProperty().addListener((obs, oldV, newV) ->
|
chkBx_station_pstRotatorEnabled.selectedProperty().addListener((obs, oldV, newV) -> {
|
||||||
chatcontroller.getChatPreferences().setStn_pstRotatorEnabled(newV)
|
chatcontroller.getChatPreferences().setStn_pstRotatorEnabled(newV);
|
||||||
);
|
if (newV) {
|
||||||
|
txt_myQTF.textProperty().bind(Bindings.createStringBinding(
|
||||||
|
() -> Double.toString(chatcontroller.getChatPreferences().getActualQTF().get()),
|
||||||
|
chatcontroller.getChatPreferences().getActualQTF()));
|
||||||
|
txt_myQTF.setTooltip(new Tooltip("This is your current QTF, read out at PSTRotator"));
|
||||||
|
txt_myQTF.setFocusTraversable(false);
|
||||||
|
} else {
|
||||||
|
txt_myQTF.textProperty().unbind();
|
||||||
|
txt_myQTF.setText(Double.toString(chatcontroller.getChatPreferences().getActualQTF().get()));
|
||||||
|
txt_myQTF.setTooltip(new Tooltip("Enter your antenna heading (QTF) by hand - no rotator sync active"));
|
||||||
|
txt_myQTF.setFocusTraversable(true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
grdPnlStation.add(lblCallSign, 0, 0);
|
grdPnlStation.add(lblCallSign, 0, 0);
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="About KST4Contest">
|
<meta name="twitter:title" content="About KST4Contest">
|
||||||
<meta name="twitter:description" content="About KST4Contest and its contest-oriented ON4KST workflow.">
|
<meta name="twitter:description" content="About KST4Contest and its contest-oriented ON4KST workflow.">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="Contact | KST4Contest">
|
<meta name="twitter:title" content="Contact | KST4Contest">
|
||||||
<meta name="twitter:description" content="Contact options for KST4Contest.">
|
<meta name="twitter:description" content="Contact options for KST4Contest.">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="Download KST4Contest">
|
<meta name="twitter:title" content="Download KST4Contest">
|
||||||
<meta name="twitter:description" content="Download KST4Contest releases for Windows, Linux and macOS.">
|
<meta name="twitter:description" content="Download KST4Contest releases for Windows, Linux and macOS.">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="KST4Contest FAQ">
|
<meta name="twitter:title" content="KST4Contest FAQ">
|
||||||
<meta name="twitter:description" content="Frequently asked questions about KST4Contest, ON4KST contest operation, AirScout integration and VHF/UHF/SHF contest workflow.">
|
<meta name="twitter:description" content="Frequently asked questions about KST4Contest, ON4KST contest operation, AirScout integration and VHF/UHF/SHF contest workflow.">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="AirScout Integration">
|
<meta name="twitter:title" content="AirScout Integration">
|
||||||
<meta name="twitter:description" content="AirScout information helps operators evaluate AP windows, aircraft scatter timing and candidate stations during VHF/UHF/SHF contests.">
|
<meta name="twitter:description" content="AirScout information helps operators evaluate AP windows, aircraft scatter timing and candidate stations during VHF/UHF/SHF contests.">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="Dual Chat Categories">
|
<meta name="twitter:title" content="Dual Chat Categories">
|
||||||
<meta name="twitter:description" content="Dual category support gives contest operators better overview when working across multiple ON4KST chat rooms.">
|
<meta name="twitter:description" content="Dual category support gives contest operators better overview when working across multiple ON4KST chat rooms.">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="DXCluster Server">
|
<meta name="twitter:title" content="DXCluster Server">
|
||||||
<meta name="twitter:description" content="KST4Contest includes DXCluster functionality to support situational awareness during contest operation.">
|
<meta name="twitter:description" content="KST4Contest includes DXCluster functionality to support situational awareness during contest operation.">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="KST4Contest Features">
|
<meta name="twitter:title" content="KST4Contest Features">
|
||||||
<meta name="twitter:description" content="Contest-optimized ON4KST features for VHF, UHF and SHF operation.">
|
<meta name="twitter:description" content="Contest-optimized ON4KST features for VHF, UHF and SHF operation.">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="Log Synchronization">
|
<meta name="twitter:title" content="Log Synchronization">
|
||||||
<meta name="twitter:description" content="Log synchronization helps KST4Contest understand worked stations, active bands and contest context.">
|
<meta name="twitter:description" content="Log synchronization helps KST4Contest understand worked stations, active bands and contest context.">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="Macros and Variables">
|
<meta name="twitter:title" content="Macros and Variables">
|
||||||
<meta name="twitter:description" content="Macros reduce repetitive typing and help operators respond quickly during active ON4KST contest sessions.">
|
<meta name="twitter:description" content="Macros reduce repetitive typing and help operators respond quickly during active ON4KST contest sessions.">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="Priority Score System">
|
<meta name="twitter:title" content="Priority Score System">
|
||||||
<meta name="twitter:description" content="KST4Contest ranks stations by activity, direction, sked context, band information, QRG hints and operator workflow signals.">
|
<meta name="twitter:description" content="KST4Contest ranks stations by activity, direction, sked context, band information, QRG hints and operator workflow signals.">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="Sked Reminder">
|
<meta name="twitter:title" content="Sked Reminder">
|
||||||
<meta name="twitter:description" content="KST4Contest keeps skeds in focus while the operator handles chat traffic, logging, bands and aircraft scatter timing.">
|
<meta name="twitter:description" content="KST4Contest keeps skeds in focus while the operator handles chat traffic, logging, bands and aircraft scatter timing.">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="Timeline View">
|
<meta name="twitter:title" content="Timeline View">
|
||||||
<meta name="twitter:description" content="The timeline view helps operators understand short propagation windows and candidate timing during active contest operation.">
|
<meta name="twitter:description" content="The timeline view helps operators understand short propagation windows and candidate timing during active contest operation.">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="KST4Contest – Contest-Optimized ON4KST Chat Client">
|
<meta name="twitter:title" content="KST4Contest – Contest-Optimized ON4KST Chat Client">
|
||||||
<meta name="twitter:description" content="KST4Contest is a modern ON4KST chat client built for VHF, UHF and SHF contest operation.">
|
<meta name="twitter:description" content="KST4Contest is a modern ON4KST chat client built for VHF, UHF and SHF contest operation.">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -0,0 +1,537 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<praktiKST>
|
||||||
|
<latestVersion>
|
||||||
|
<versionNumber>1.411</versionNumber>
|
||||||
|
<adminMessage></adminMessage>
|
||||||
|
<majorChanges>- Score of Top-Priority Candidates in the user section
|
||||||
|
- Broadcast Messages (To ALL Station in Contest) in seperate Window</majorChanges>
|
||||||
|
<latestVersionPathOnWebserver>https://github.com/praktimarc/kst4contest/releases/download/v1.41.1/praktiKST-v1.41.1-windows-x64.zip</latestVersionPathOnWebserver>
|
||||||
|
</latestVersion>
|
||||||
|
<needUpdateSinceLastVersion>
|
||||||
|
<filename>nothing</filename>
|
||||||
|
</needUpdateSinceLastVersion>
|
||||||
|
<roadmap>
|
||||||
|
<featurerequest>
|
||||||
|
<featureDescription>Cyclic update of own name in chat to actual QRG</featureDescription>
|
||||||
|
<requestDate>2024-02</requestDate>
|
||||||
|
<state>open</state>
|
||||||
|
</featurerequest>
|
||||||
|
<featurerequest>
|
||||||
|
<featureDescription>Acoustic warnings</featureDescription>
|
||||||
|
<requestDate>2023-12</requestDate>
|
||||||
|
<state>added</state>
|
||||||
|
</featurerequest>
|
||||||
|
<featurerequest>
|
||||||
|
<featureDescription>Airscout support</featureDescription>
|
||||||
|
<requestDate>2023-03</requestDate>
|
||||||
|
<state>added</state>
|
||||||
|
</featurerequest>
|
||||||
|
<featurerequest>
|
||||||
|
<featureDescription>cyclic beacon messages in public chat</featureDescription>
|
||||||
|
<requestDate>2023-03</requestDate>
|
||||||
|
<state>added</state>
|
||||||
|
</featurerequest>
|
||||||
|
</roadmap>
|
||||||
|
<bugsReported>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>
|
||||||
|
stations like ol7c-7 and ol7c-2 will not be marked as worked if only "ol7c"
|
||||||
|
is in the log. Need to interprete that. May ignore suffix starting with "-"</bugdescription>
|
||||||
|
<state>solved</state>
|
||||||
|
</bug>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>
|
||||||
|
worked callsigns table is updated only once after connected to chat
|
||||||
|
Should be available directly after program started.
|
||||||
|
But Reset works all time</bugdescription>
|
||||||
|
<state>open</state>
|
||||||
|
</bug>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>feature request: language-specific strings, maybe based to an xml file
|
||||||
|
</bugdescription>
|
||||||
|
<state>open</state>
|
||||||
|
</bug>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>feature request: Macros
|
||||||
|
</bugdescription>
|
||||||
|
<state>added</state>
|
||||||
|
</bug>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>feature request:
|
||||||
|
Automatic elimination of calls already connected from the log
|
||||||
|
</bugdescription>
|
||||||
|
<state>added</state>
|
||||||
|
</bug>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>feature request:
|
||||||
|
Limitation of users beyond a certain QRB
|
||||||
|
</bugdescription>
|
||||||
|
<state>added</state>
|
||||||
|
</bug>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>feature request:
|
||||||
|
User division for QTF perhaps settable based on the antenna lobe
|
||||||
|
</bugdescription>
|
||||||
|
<state>added</state>
|
||||||
|
</bug>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>feature request:
|
||||||
|
Notification of new incoming users</bugdescription>
|
||||||
|
<state>added</state>
|
||||||
|
</bug>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>feature request:
|
||||||
|
Evidence of a call which was written but not responded to.
|
||||||
|
</bugdescription>
|
||||||
|
<state>added</state>
|
||||||
|
</bug>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>feature request:
|
||||||
|
direction based reachable-warnings:
|
||||||
|
if the chatclient detects a realised qso between two stations which both must have
|
||||||
|
directed their beams to my station, there should be an instant warning to me for
|
||||||
|
working at least one of the stations at the detected qrg</bugdescription>
|
||||||
|
<state>open</state>
|
||||||
|
</bug>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>feature request:
|
||||||
|
implement ASShowpath message to airacout;
|
||||||
|
by doubleclicking a callsign in the chatmember list, the path and plane state should be
|
||||||
|
provided by airscout </bugdescription>
|
||||||
|
<state>open</state>
|
||||||
|
</bug>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>feature request:
|
||||||
|
make chatlines copyable to the clipboard...</bugdescription>
|
||||||
|
<state>open</state>
|
||||||
|
</bug>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>feature request:
|
||||||
|
adding an activity detection for sensing if another chatmembers alive-state</bugdescription>
|
||||||
|
<state>added</state>
|
||||||
|
</bug>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>On sql error close the connection to make a clean exit</bugdescription>
|
||||||
|
<state>open</state>
|
||||||
|
</bug>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>SETNAME /MYQRG in options menu doesnt work</bugdescription>
|
||||||
|
<state>solved</state>
|
||||||
|
</bug>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>Disconnect button does not work (DL5ZK)</bugdescription>
|
||||||
|
<state>solved</state>
|
||||||
|
</bug>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>Password-wrong error not displayed (DO5SA)</bugdescription>
|
||||||
|
<state>solved</state>
|
||||||
|
</bug>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>/CQ isnt written on own PMs</bugdescription>
|
||||||
|
<state>solved</state>
|
||||||
|
</bug>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>rightclick-textsnippets arent available in cq-table</bugdescription>
|
||||||
|
<state>solved</state>
|
||||||
|
</bug>
|
||||||
|
</bugsReported>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>1.411</changedVersionNumber>
|
||||||
|
<date>2026-07-08</date>
|
||||||
|
<description>Release v1.41.1</description>
|
||||||
|
<added></added>
|
||||||
|
<changed>Hotfix of Bug #56</changed>
|
||||||
|
<fixed></fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>1.41</changedVersionNumber>
|
||||||
|
<date>2026-07-01</date>
|
||||||
|
<description>Release v1.41.0</description>
|
||||||
|
<added>- Score of Top-Priority Candidates in the user section
|
||||||
|
- Broadcast Messages (To ALL Station in Contest) in seperate Window</added>
|
||||||
|
<changed>Migration to Github
|
||||||
|
- Band and Frequency Detection per Chatmember — KST4Contest identifies which bands or frequencies a station appears active or reachable on based on chat data. This information is integrated into the display and prioritization.
|
||||||
|
- Band Alert — If a logged station could be of interest on other locally active bands, KST14Contest can alert the user.
|
||||||
|
- Sked Reminder ALERT — New reminder function for planned Skeds to ensure that agreed contacts are not forgotten during contest operation.
|
||||||
|
- Skedfail Button — Failed Skeds can be marked; this allows the station to be handled differently in terms of score and workflow.
|
||||||
|
- Win-Test SKED Push via UDP — Skeds can be passed to Win-Test via a LOCKSKED/ADDSKED/UNLOCKSKED sequence. This feature is configurable in the preferences and disabled by default.
|
||||||
|
- Win-Test Broadcast Defaults and SKed Workflow — Improved broadcast addresses, frequency formats, mode selection, and notes including locator/azimuth.
|
||||||
|
- PSTRotator Interface — KST4Contest received an interface to PSTRoter to better integrate antenna direction and rotator workflow.
|
||||||
|
- QSO /-Callsign Sniffer — Callsigns or QSO-relevant information can be detected and utilized for further workflow.
|
||||||
|
- Chat History at Startup — Historical chat data can be loaded upon startup, allowing the client to quickly gain relevant context for scoring, activity, and station identification.
|
||||||
|
- Station Map / Map View — New map view with station markers, your own location, locator/Maidenhead reference, connection line, and antenna/beam representation.
|
||||||
|
- Local Leaflet /-TileProxy Backend — The map function utilizes embedded Leaflet resources and a local TileProxy approach, making the map more portable and independent.
|
||||||
|
- Maidenhead /-Grid Overlay — The map can display locator/grid information; recently added Grid-Square coloring.
|
||||||
|
- Path /-Terrain /-Horizon Profile — Map documentation describes a path profile with terrain, Fresnel, and horizon information for the selected link.
|
||||||
|
- Tropo /-AS Reachability Filters — New filters and sorting were added for Tropospheric reachability, AirScoop availability, large locator fields, and priority.
|
||||||
|
- Reachability Band Selector — Added a band selection for range/Troposphere calculations.
|
||||||
|
- 4-Char Locator Filter — Locator evaluations can be reduced to 4-character fields; this improves overview and performance.
|
||||||
|
- KST Testserver Support — A KST server test server was added into the Source.
|
||||||
|
@praktimarc and @Rsclub22</changed>
|
||||||
|
<fixed>- [BUG]
|
||||||
|
- [BUG] Programmstart kann ohne selektieren keine Nachrichten senden
|
||||||
|
- KST4Contest crashes after to many messages or to much RAM Usage
|
||||||
|
- Scaling Problem at 1280x800 screen resolution</fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>1.40</changedVersionNumber>
|
||||||
|
<date>2026-02-16</date>
|
||||||
|
<description>Much changes and fixes</description>
|
||||||
|
<added>
|
||||||
|
- win-test support (not deactivable yet, beta)
|
||||||
|
- QSO sniffer which filters changable callsigns lists messages to your pm window
|
||||||
|
- Chatmember Score system. Each chatmember gets a score depending to antenna direction, activity time,
|
||||||
|
activity msgcount, positive signals, active bands, active frequencies, his sked direction (degrees),
|
||||||
|
self handed rate, sked-made-rate and some others
|
||||||
|
- Chatmember Band and frequency recognition: now we list all active bands of each other chatmember
|
||||||
|
- Band alert for logged stations
|
||||||
|
- Sked reminder ALERT with automatic messages in 2+1 / 5+2+1 / 10+5+2+1 minutes
|
||||||
|
- PSTRotator interface
|
||||||
|
- AirPlane Timeline
|
||||||
|
- Skedfail button in furtherinfo panel
|
||||||
|
- Wintest logsynch interface can now be activated and deactivated in the preferences
|
||||||
|
- load chat history on startup
|
||||||
|
</added>
|
||||||
|
<changed>
|
||||||
|
- added save option: ServerDNS / Port
|
||||||
|
- added save option: activate/deactivate pstRotator interface
|
||||||
|
- added save option: activate/deactivate wintest interface
|
||||||
|
- added save option: callsign sniffer
|
||||||
|
- added save option: boolean GUI_darkModeActiveByDefault = false
|
||||||
|
- added AP notes at the internal DX cluster spots
|
||||||
|
- Generic Autoanswer fires maximum once in 45 seconds per rx callsign
|
||||||
|
</changed>
|
||||||
|
<fixed>
|
||||||
|
- Userlist sort automatically on new member signon
|
||||||
|
- Posonpill-messages now kills only exactly one Client instance (bugreport 9A2HM)
|
||||||
|
- Crash of wtkst by disconnection of kst4Contest
|
||||||
|
- wtKST crashes when kst4contest is running (many reporters)
|
||||||
|
- wintest: logged per band excludes pre worked band (bugreport SM6VTZ)
|
||||||
|
- PSTRotator SOCKET Close on DISCONNECT BUTTON works now
|
||||||
|
- AirScout Map had not been updated (bugreport SM0RJV)
|
||||||
|
- QTFDefault had been not saved correctly (bugreport SM0RJV)
|
||||||
|
- Show path in AS button worked only with fixed server Strings (bugreport 9A2HM)
|
||||||
|
- Version number had been displayed wrong
|
||||||
|
- suffixes like /p, -2, etc. problem now fixed everywhere
|
||||||
|
- Dark mode: passing for qrg fields fix
|
||||||
|
</fixed>
|
||||||
|
<removed>
|
||||||
|
- No more date display. Not needed. Saving space, only time is important
|
||||||
|
</removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>1.31</changedVersionNumber>
|
||||||
|
<date>2025-12-13</date>
|
||||||
|
<description>Much changes and a hotfix</description>
|
||||||
|
<added>
|
||||||
|
- win-test support (not deactivable yet, beta)
|
||||||
|
- pstRotator support (not deactivable yet, beta)
|
||||||
|
- airScout fix (calculations depends to cpu load now)
|
||||||
|
- QSO sniffer
|
||||||
|
</added>
|
||||||
|
<changed>
|
||||||
|
- DNS from www.on4kst.info to www.on4kst.org (hotfix, now configurable in preferences)
|
||||||
|
</changed>
|
||||||
|
<fixed>
|
||||||
|
- Endless loop in error case lets freeze the client
|
||||||
|
- PSTRotator SOCKET Close on DISCONNECT BUTTON
|
||||||
|
- Dark mode: passing for qrg fields fix
|
||||||
|
</fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>1.266</changedVersionNumber>
|
||||||
|
<date>2025-10-03</date>
|
||||||
|
<description>Airscout interface did not work with multi-signons</description>
|
||||||
|
<added>nothing</added>
|
||||||
|
<changed>nothing</changed>
|
||||||
|
<fixed>
|
||||||
|
Fixed by using raw callsign (without -2 suffix etc.) when communicating with AirScout.
|
||||||
|
Thank you very much for testing this, Kreso 9A2HM!
|
||||||
|
</fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>1.265</changedVersionNumber>
|
||||||
|
<date>2025-09-28</date>
|
||||||
|
<description>Direction buttons stay now colored, if activated</description>
|
||||||
|
<added>nothing</added>
|
||||||
|
<changed>nothing</changed>
|
||||||
|
<fixed>The buttons stay now colored, if activated</fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>1.264</changedVersionNumber>
|
||||||
|
<date>2025-08-02</date>
|
||||||
|
<description>Changed the callsign recognition pattern for Simplelogfile</description>
|
||||||
|
<added>nothing</added>
|
||||||
|
<changed>nothing</changed>
|
||||||
|
<fixed>
|
||||||
|
Callsigns like S53CC, S51A etc. are now correctly marked as worked in SimpleLogFile.txt.
|
||||||
|
(bugreport Boris, S53CC)
|
||||||
|
</fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>1.263</changedVersionNumber>
|
||||||
|
<date>2025-06-08</date>
|
||||||
|
<description>Airscout communication and Loginname</description>
|
||||||
|
<added>nothing</added>
|
||||||
|
<changed>
|
||||||
|
Only entries with QRB lower than max-QRB are sent to AirScout in 60s intervals (was 12s for all).
|
||||||
|
</changed>
|
||||||
|
<fixed>
|
||||||
|
- AS communication message count hugely reduced
|
||||||
|
- Name in chat is now saveable
|
||||||
|
- Fixed AS client name (was hard-wired to "KST")
|
||||||
|
73 / DO5AMF
|
||||||
|
</fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>1.262</changedVersionNumber>
|
||||||
|
<date>2025-05-21</date>
|
||||||
|
<description>Freezes caused by getting messages before user login should be fixed now</description>
|
||||||
|
<added>nothing</added>
|
||||||
|
<changed>nothing</changed>
|
||||||
|
<fixed>
|
||||||
|
ON4KST delivers messages of stations not yet logged in. That caused a freeze at the message
|
||||||
|
processing engine which is now fixed.
|
||||||
|
</fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>1.26</changedVersionNumber>
|
||||||
|
<date>2025-05</date>
|
||||||
|
<description>Login to multiple Channels via single signon / spend some colors</description>
|
||||||
|
<added>
|
||||||
|
1. UI: Dark mode. Switch in "Window -> use dark mode"
|
||||||
|
2. Usage of two Chatcategories at the same time
|
||||||
|
3. opposite station multi-callsign login-tagging
|
||||||
|
73 / DO5AMF
|
||||||
|
</added>
|
||||||
|
<changed>
|
||||||
|
- Coloring mechanic of the software. Modify colors via css by yourself...
|
||||||
|
</changed>
|
||||||
|
<fixed>
|
||||||
|
- Station tagging fixed completely
|
||||||
|
</fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>1.251</changedVersionNumber>
|
||||||
|
<date>2025-02</date>
|
||||||
|
<description>BUGFIX of 1.25, tnx Steve Clements!</description>
|
||||||
|
<added>
|
||||||
|
- Steve spotted a problem in udp broadcast spot info reading, its now fixed!
|
||||||
|
73 / DO5AMF
|
||||||
|
</added>
|
||||||
|
<changed></changed>
|
||||||
|
<fixed>- Station tagging</fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>1.25</changedVersionNumber>
|
||||||
|
<date>2025-02</date>
|
||||||
|
<description>Wishlist-time</description>
|
||||||
|
<added>
|
||||||
|
- New configuration Tab: Messagehandling (auto-answering, CQ qrg auto-answer)
|
||||||
|
- Coloured lines: new pm rows appear in red, fade rainbow-like to white over 30s (tnx Gianluca)
|
||||||
|
73 / DO5AMF
|
||||||
|
</added>
|
||||||
|
<changed></changed>
|
||||||
|
<fixed>
|
||||||
|
- Users with suffixes like "-2 and -70" are now correctly marked as worked
|
||||||
|
</fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>1.24</changedVersionNumber>
|
||||||
|
<date>2024-11</date>
|
||||||
|
<description>Wishlist-time</description>
|
||||||
|
<added>
|
||||||
|
- Button to show qrz.com profile of a selected station
|
||||||
|
- Button to show qrzcq.com profile of a selected station
|
||||||
|
</added>
|
||||||
|
<changed></changed>
|
||||||
|
<fixed></fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>1.23</changedVersionNumber>
|
||||||
|
<date>2024-10</date>
|
||||||
|
<description>DXCluster Server is now implemented</description>
|
||||||
|
<added>
|
||||||
|
- DXCluster Server (tnx OMAAO): KST4Contest now provides a DXCluster server to feed
|
||||||
|
your log client with station-reachable warnings.
|
||||||
|
</added>
|
||||||
|
<changed></changed>
|
||||||
|
<fixed></fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>1.22</changedVersionNumber>
|
||||||
|
<date>2024-05</date>
|
||||||
|
<description>Increase usability, fixed AS button</description>
|
||||||
|
<added>- Variables (tnx OMAAO): MYLOCATORSHORT, MYQRGSHORT, QRZNAME</added>
|
||||||
|
<changed>- Sendtext-field focus on callsign click</changed>
|
||||||
|
<fixed>
|
||||||
|
- Worked-station-filter (tnx Gianluca): filter is now live
|
||||||
|
- Chatters list sorting by QRB (tnx Alessandro): fixed to numeric sort
|
||||||
|
- Airscout showpath button now maximizes AS and shows the path
|
||||||
|
</fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>1.21</changedVersionNumber>
|
||||||
|
<date>2024-04</date>
|
||||||
|
<description>Increase usability</description>
|
||||||
|
<added></added>
|
||||||
|
<changed>
|
||||||
|
- Window sizes and divider positions are now stored and restored on next startup
|
||||||
|
- Filters section is now a flowpane for lower resolutions
|
||||||
|
</changed>
|
||||||
|
<fixed></fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>1.2</changedVersionNumber>
|
||||||
|
<date>2024-04</date>
|
||||||
|
<description>Increase usability</description>
|
||||||
|
<added>
|
||||||
|
- Selectable bands
|
||||||
|
- Unworkable tags for each callsign per band
|
||||||
|
- QTF-Arrow on the "show path in AS" button
|
||||||
|
</added>
|
||||||
|
<changed></changed>
|
||||||
|
<fixed></fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>1.1</changedVersionNumber>
|
||||||
|
<date>2024-03</date>
|
||||||
|
<description>Increased workflow</description>
|
||||||
|
<added>
|
||||||
|
- Reachable warning function
|
||||||
|
- Variables FIRSTAP and SECONDAP for predefined texts
|
||||||
|
- Marking new connected stations (bold) and away-state (brackets)
|
||||||
|
- Activity-timer since last message of a chatter
|
||||||
|
</added>
|
||||||
|
<changed>- QRB/QTF info in pm-window</changed>
|
||||||
|
<fixed>
|
||||||
|
- Behaviour of messagefilter-radiobutton corrected (tnx Gian)
|
||||||
|
- Error sending macros on selected stations in pm window (tnx Gian)
|
||||||
|
</fixed>
|
||||||
|
<removed>- boot sound</removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>1.0</changedVersionNumber>
|
||||||
|
<date>2024-02</date>
|
||||||
|
<description>First stable release</description>
|
||||||
|
<added>
|
||||||
|
- audio notification support
|
||||||
|
- update-available warning
|
||||||
|
- changelog displaying
|
||||||
|
- known-bugs displaying
|
||||||
|
- message filters for selected station
|
||||||
|
- stationlist-filters (show by qtf / textstring, hide by qrb, qtf, workedstate)
|
||||||
|
- 10 macros (textsnippets available by hitting strg+numberkey)
|
||||||
|
</added>
|
||||||
|
<changed></changed>
|
||||||
|
<fixed></fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>0.9</changedVersionNumber>
|
||||||
|
<date>2024-02</date>
|
||||||
|
<description>Now the chat is disconnectable without closing it</description>
|
||||||
|
<added></added>
|
||||||
|
<changed></changed>
|
||||||
|
<fixed>disconnect-button, Textsnippets in CQ Window, "/CQ" at click on own sendtexts,
|
||||||
|
setname "qrg" works now</fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>0.8</changedVersionNumber>
|
||||||
|
<date>2023-10</date>
|
||||||
|
<description>savesettings function and disconnect function added. MYCALL-Highlighting fixed</description>
|
||||||
|
<added>savesettings function, disconnect function</added>
|
||||||
|
<changed></changed>
|
||||||
|
<fixed>MYCALL-Highlighting</fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>0.7</changedVersionNumber>
|
||||||
|
<date>2023-07</date>
|
||||||
|
<description>Internal database for worked stations, shortcut and textsnippet editor</description>
|
||||||
|
<added>database, shortcut-editor, textsnipped-editor</added>
|
||||||
|
<changed></changed>
|
||||||
|
<fixed></fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>0.6</changedVersionNumber>
|
||||||
|
<date>2023-07</date>
|
||||||
|
<description>Added periodically sent beacon function</description>
|
||||||
|
<added>beacon to public channel</added>
|
||||||
|
<changed></changed>
|
||||||
|
<fixed></fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>0.5</changedVersionNumber>
|
||||||
|
<date>2023-02</date>
|
||||||
|
<description>Airscout interface, UDP interfaces for worked-station data and TRX info, shortcuts</description>
|
||||||
|
<added>Airscout-interface, packetreceiver for ucxlog, n1mm, qartest</added>
|
||||||
|
<changed></changed>
|
||||||
|
<fixed></fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>0.4</changedVersionNumber>
|
||||||
|
<date>2022-12</date>
|
||||||
|
<description>Worked info by logfile via universal pattern matching logfile interpreter</description>
|
||||||
|
<added>simple-logfile</added>
|
||||||
|
<changed></changed>
|
||||||
|
<fixed></fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>0.3</changedVersionNumber>
|
||||||
|
<date>2022-10</date>
|
||||||
|
<description>Added a GUI, chat was text based only</description>
|
||||||
|
<added>Graphical user interface</added>
|
||||||
|
<changed></changed>
|
||||||
|
<fixed></fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>0.2</changedVersionNumber>
|
||||||
|
<date>2022-10</date>
|
||||||
|
<description>Pattern matching system for frequency information, frequency collection per chatmember</description>
|
||||||
|
<added>frequency-extraction for every callsign</added>
|
||||||
|
<changed></changed>
|
||||||
|
<fixed></fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>0.15</changedVersionNumber>
|
||||||
|
<date>2022-09</date>
|
||||||
|
<description>Researched the Chatprotocol and developed the base communication with the chatserver</description>
|
||||||
|
<added></added>
|
||||||
|
<changed></changed>
|
||||||
|
<fixed></fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>0.1</changedVersionNumber>
|
||||||
|
<date>2022-09</date>
|
||||||
|
<description>Primary architecture of the chat, message bus system for handling the message queues</description>
|
||||||
|
<added></added>
|
||||||
|
<changed></changed>
|
||||||
|
<fixed></fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
</praktiKST>
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="Legal Notice | KST4Contest">
|
<meta name="twitter:title" content="Legal Notice | KST4Contest">
|
||||||
<meta name="twitter:description" content="Legal notice for the KST4Contest website.">
|
<meta name="twitter:description" content="Legal notice for the KST4Contest website.">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
||||||
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
||||||
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
||||||
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
||||||
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
||||||
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
||||||
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="KST4Contest Deutsches Handbuch">
|
<meta name="twitter:title" content="KST4Contest Deutsches Handbuch">
|
||||||
<meta name="twitter:description" content="Deutsches Benutzerhandbuch für KST4Contest.">
|
<meta name="twitter:description" content="Deutsches Benutzerhandbuch für KST4Contest.">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
||||||
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
||||||
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
||||||
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
||||||
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
||||||
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
||||||
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
||||||
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
||||||
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
||||||
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
||||||
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="KST4Contest English Manual">
|
<meta name="twitter:title" content="KST4Contest English Manual">
|
||||||
<meta name="twitter:description" content="English user manual for KST4Contest.">
|
<meta name="twitter:description" content="English user manual for KST4Contest.">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
||||||
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
||||||
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
||||||
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
<meta name="twitter:title" content="{{ manual.title }} | KST4Contest Manual">
|
||||||
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
<meta name="twitter:description" content="KST4Contest manual page: {{ manual.title }}">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="KST4Contest Manual">
|
<meta name="twitter:title" content="KST4Contest Manual">
|
||||||
<meta name="twitter:description" content="Online manual for KST4Contest, the contest-optimized ON4KST chat client.">
|
<meta name="twitter:description" content="Online manual for KST4Contest, the contest-optimized ON4KST chat client.">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="Hotfix Version 1.41.1">
|
<meta name="twitter:title" content="Hotfix Version 1.41.1">
|
||||||
<meta name="twitter:description" content="Contest-optimized ON4KST chat client for VHF, UHF and SHF ham radio contests.">
|
<meta name="twitter:description" content="Contest-optimized ON4KST chat client for VHF, UHF and SHF ham radio contests.">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="KST4Contest Website Launch">
|
<meta name="twitter:title" content="KST4Contest Website Launch">
|
||||||
<meta name="twitter:description" content="Contest-optimized ON4KST chat client for VHF, UHF and SHF ham radio contests.">
|
<meta name="twitter:description" content="Contest-optimized ON4KST chat client for VHF, UHF and SHF ham radio contests.">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="KST4Contest News">
|
<meta name="twitter:title" content="KST4Contest News">
|
||||||
<meta name="twitter:description" content="News, release updates and development notes for KST4Contest.">
|
<meta name="twitter:description" content="News, release updates and development notes for KST4Contest.">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="Privacy Policy | KST4Contest">
|
<meta name="twitter:title" content="Privacy Policy | KST4Contest">
|
||||||
<meta name="twitter:description" content="Privacy policy for the KST4Contest website.">
|
<meta name="twitter:description" content="Privacy policy for the KST4Contest website.">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="KST4Contest Roadmap">
|
<meta name="twitter:title" content="KST4Contest Roadmap">
|
||||||
<meta name="twitter:description" content="Planned enhancements for upcoming KST4Contest versions, generated from GitHub milestones and issues.">
|
<meta name="twitter:description" content="Planned enhancements for upcoming KST4Contest versions, generated from GitHub milestones and issues.">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
@@ -89,8 +89,8 @@
|
|||||||
<a href="https://github.com/praktimarc/kst4contest/issues/52">[FEATURE] center horizontal slider</a>
|
<a href="https://github.com/praktimarc/kst4contest/issues/52">[FEATURE] center horizontal slider</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li>
|
<li class="roadmap-done">
|
||||||
<a href="https://github.com/praktimarc/kst4contest/issues/49">[FEATURE] QTF degree, manual change</a>
|
<a href="https://github.com/praktimarc/kst4contest/issues/49">[FEATURE] QTF degree, manual change</a> ✓
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="roadmap-done">
|
<li class="roadmap-done">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<meta name="twitter:title" content="KST4Contest Screenshots">
|
<meta name="twitter:title" content="KST4Contest Screenshots">
|
||||||
<meta name="twitter:description" content="Screenshots of KST4Contest, the contest-optimized ON4KST chat client for VHF, UHF and SHF operators.">
|
<meta name="twitter:description" content="Screenshots of KST4Contest, the contest-optimized ON4KST chat client for VHF, UHF and SHF operators.">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/main.css?v=1783552468141">
|
<link rel="stylesheet" href="/assets/css/main.css?v=1783615687631">
|
||||||
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
<link rel="alternate" type="application/rss+xml" title="KST4Contest News" href="/feed.xml">
|
||||||
|
|
||||||
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
<meta property="og:image" content="https://kst4contest.hamradioonline.de/assets/social/kst4contest-og.png">
|
||||||
|
|||||||
+22
-22
@@ -10,90 +10,90 @@
|
|||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://kst4contest.hamradioonline.de/about/</loc>
|
<loc>https://kst4contest.hamradioonline.de/about/</loc>
|
||||||
<lastmod>2026-07-08</lastmod>
|
<lastmod>2026-07-09</lastmod>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://kst4contest.hamradioonline.de/contact/</loc>
|
<loc>https://kst4contest.hamradioonline.de/contact/</loc>
|
||||||
<lastmod>2026-07-08</lastmod>
|
<lastmod>2026-07-09</lastmod>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://kst4contest.hamradioonline.de/download/</loc>
|
<loc>https://kst4contest.hamradioonline.de/download/</loc>
|
||||||
<lastmod>2026-07-08</lastmod>
|
<lastmod>2026-07-09</lastmod>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://kst4contest.hamradioonline.de/faq/</loc>
|
<loc>https://kst4contest.hamradioonline.de/faq/</loc>
|
||||||
<lastmod>2026-07-08</lastmod>
|
<lastmod>2026-07-09</lastmod>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://kst4contest.hamradioonline.de/features/airscout/</loc>
|
<loc>https://kst4contest.hamradioonline.de/features/airscout/</loc>
|
||||||
<lastmod>2026-07-08</lastmod>
|
<lastmod>2026-07-09</lastmod>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://kst4contest.hamradioonline.de/features/dual-chat/</loc>
|
<loc>https://kst4contest.hamradioonline.de/features/dual-chat/</loc>
|
||||||
<lastmod>2026-07-08</lastmod>
|
<lastmod>2026-07-09</lastmod>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://kst4contest.hamradioonline.de/features/dx-cluster/</loc>
|
<loc>https://kst4contest.hamradioonline.de/features/dx-cluster/</loc>
|
||||||
<lastmod>2026-07-08</lastmod>
|
<lastmod>2026-07-09</lastmod>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://kst4contest.hamradioonline.de/features/</loc>
|
<loc>https://kst4contest.hamradioonline.de/features/</loc>
|
||||||
<lastmod>2026-07-08</lastmod>
|
<lastmod>2026-07-09</lastmod>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://kst4contest.hamradioonline.de/features/log-sync/</loc>
|
<loc>https://kst4contest.hamradioonline.de/features/log-sync/</loc>
|
||||||
<lastmod>2026-07-08</lastmod>
|
<lastmod>2026-07-09</lastmod>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://kst4contest.hamradioonline.de/features/macros/</loc>
|
<loc>https://kst4contest.hamradioonline.de/features/macros/</loc>
|
||||||
<lastmod>2026-07-08</lastmod>
|
<lastmod>2026-07-09</lastmod>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://kst4contest.hamradioonline.de/features/priority-score/</loc>
|
<loc>https://kst4contest.hamradioonline.de/features/priority-score/</loc>
|
||||||
<lastmod>2026-07-08</lastmod>
|
<lastmod>2026-07-09</lastmod>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://kst4contest.hamradioonline.de/features/sked-reminder/</loc>
|
<loc>https://kst4contest.hamradioonline.de/features/sked-reminder/</loc>
|
||||||
<lastmod>2026-07-08</lastmod>
|
<lastmod>2026-07-09</lastmod>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://kst4contest.hamradioonline.de/features/timeline/</loc>
|
<loc>https://kst4contest.hamradioonline.de/features/timeline/</loc>
|
||||||
<lastmod>2026-07-08</lastmod>
|
<lastmod>2026-07-09</lastmod>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://kst4contest.hamradioonline.de/</loc>
|
<loc>https://kst4contest.hamradioonline.de/</loc>
|
||||||
<lastmod>2026-07-08</lastmod>
|
<lastmod>2026-07-09</lastmod>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://kst4contest.hamradioonline.de/legal-notice/</loc>
|
<loc>https://kst4contest.hamradioonline.de/legal-notice/</loc>
|
||||||
<lastmod>2026-07-08</lastmod>
|
<lastmod>2026-07-09</lastmod>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://kst4contest.hamradioonline.de/manual/de/airscout-integration/</loc>
|
<loc>https://kst4contest.hamradioonline.de/manual/de/airscout-integration/</loc>
|
||||||
<lastmod>2026-07-08</lastmod>
|
<lastmod>2026-07-09</lastmod>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://kst4contest.hamradioonline.de/manual/de/</loc>
|
<loc>https://kst4contest.hamradioonline.de/manual/de/</loc>
|
||||||
<lastmod>2026-07-08</lastmod>
|
<lastmod>2026-07-09</lastmod>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://kst4contest.hamradioonline.de/manual/en/</loc>
|
<loc>https://kst4contest.hamradioonline.de/manual/en/</loc>
|
||||||
<lastmod>2026-07-08</lastmod>
|
<lastmod>2026-07-09</lastmod>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://kst4contest.hamradioonline.de/manual/</loc>
|
<loc>https://kst4contest.hamradioonline.de/manual/</loc>
|
||||||
<lastmod>2026-07-08</lastmod>
|
<lastmod>2026-07-09</lastmod>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://kst4contest.hamradioonline.de/privacy/</loc>
|
<loc>https://kst4contest.hamradioonline.de/privacy/</loc>
|
||||||
<lastmod>2026-07-08</lastmod>
|
<lastmod>2026-07-09</lastmod>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://kst4contest.hamradioonline.de/roadmap/</loc>
|
<loc>https://kst4contest.hamradioonline.de/roadmap/</loc>
|
||||||
<lastmod>2026-07-08</lastmod>
|
<lastmod>2026-07-09</lastmod>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://kst4contest.hamradioonline.de/screenshots/</loc>
|
<loc>https://kst4contest.hamradioonline.de/screenshots/</loc>
|
||||||
<lastmod>2026-07-08</lastmod>
|
<lastmod>2026-07-09</lastmod>
|
||||||
</url>
|
</url>
|
||||||
</urlset>
|
</urlset>
|
||||||
@@ -0,0 +1,382 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Historical changelog entries for releases not published as GitHub Releases.
|
||||||
|
The CI pipeline prepends new entries from GitHub Releases on top of these. -->
|
||||||
|
<history>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>1.41</changedVersionNumber>
|
||||||
|
<date>2026-07-01</date>
|
||||||
|
<description>Map view and path calculations</description>
|
||||||
|
<added>
|
||||||
|
Band and Frequency Detection per Chatmember, Band alert, Win-Test SKED Push via UDP,
|
||||||
|
Win-Test Broadcast Defaults and SKed Workflow, Chat History at Startup, Station Map / Map View
|
||||||
|
Local Leaflet /-TileProxy Backend, Maidenhead /-Grid Overlay, Path calculation, path profile,
|
||||||
|
Reachability filters, NAC filters (grid sqaure marking)
|
||||||
|
</added>
|
||||||
|
<changed>
|
||||||
|
button housing, it works now on smaller screens / plus: detecting maximum screen size
|
||||||
|
</changed>
|
||||||
|
<fixed>
|
||||||
|
9A2HM reported that 23cm qsos with N1MM are not marked correctly, ist fixed
|
||||||
|
</fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>1.40</changedVersionNumber>
|
||||||
|
<date>2026-02-16</date>
|
||||||
|
<description>Much changes and fixes</description>
|
||||||
|
<added>
|
||||||
|
- win-test support (not deactivable yet, beta)
|
||||||
|
- QSO sniffer which filters changable callsigns lists messages to your pm window
|
||||||
|
- Chatmember Score system. Each chatmember gets a score depending to antenna direction, activity time,
|
||||||
|
activity msgcount, positive signals, active bands, active frequencies, his sked direction (degrees),
|
||||||
|
self handed rate, sked-made-rate and some others
|
||||||
|
- Chatmember Band and frequency recognition: now we list all active bands of each other chatmember
|
||||||
|
- Band alert for logged stations
|
||||||
|
- Sked reminder ALERT with automatic messages in 2+1 / 5+2+1 / 10+5+2+1 minutes
|
||||||
|
- PSTRotator interface
|
||||||
|
- AirPlane Timeline
|
||||||
|
- Skedfail button in furtherinfo panel
|
||||||
|
- Wintest logsynch interface can now be activated and deactivated in the preferences
|
||||||
|
- load chat history on startup
|
||||||
|
</added>
|
||||||
|
<changed>
|
||||||
|
- added save option: ServerDNS / Port
|
||||||
|
- added save option: activate/deactivate pstRotator interface
|
||||||
|
- added save option: activate/deactivate wintest interface
|
||||||
|
- added save option: callsign sniffer
|
||||||
|
- added save option: boolean GUI_darkModeActiveByDefault = false
|
||||||
|
- added AP notes at the internal DX cluster spots
|
||||||
|
- Generic Autoanswer fires maximum once in 45 seconds per rx callsign
|
||||||
|
</changed>
|
||||||
|
<fixed>
|
||||||
|
- Userlist sort automatically on new member signon
|
||||||
|
- Posonpill-messages now kills only exactly one Client instance (bugreport 9A2HM)
|
||||||
|
- Crash of wtkst by disconnection of kst4Contest
|
||||||
|
- wtKST crashes when kst4contest is running (many reporters)
|
||||||
|
- wintest: logged per band excludes pre worked band (bugreport SM6VTZ)
|
||||||
|
- PSTRotator SOCKET Close on DISCONNECT BUTTON works now
|
||||||
|
- AirScout Map had not been updated (bugreport SM0RJV)
|
||||||
|
- QTFDefault had been not saved correctly (bugreport SM0RJV)
|
||||||
|
- Show path in AS button worked only with fixed server Strings (bugreport 9A2HM)
|
||||||
|
- Version number had been displayed wrong
|
||||||
|
- suffixes like /p, -2, etc. problem now fixed everywhere
|
||||||
|
- Dark mode: passing for qrg fields fix
|
||||||
|
</fixed>
|
||||||
|
<removed>
|
||||||
|
- No more date display. Not needed. Saving space, only time is important
|
||||||
|
</removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>1.31</changedVersionNumber>
|
||||||
|
<date>2025-12-13</date>
|
||||||
|
<description>Much changes and a hotfix</description>
|
||||||
|
<added>
|
||||||
|
- win-test support (not deactivable yet, beta)
|
||||||
|
- pstRotator support (not deactivable yet, beta)
|
||||||
|
- airScout fix (calculations depends to cpu load now)
|
||||||
|
- QSO sniffer
|
||||||
|
</added>
|
||||||
|
<changed>
|
||||||
|
- DNS from www.on4kst.info to www.on4kst.org (hotfix, now configurable in preferences)
|
||||||
|
</changed>
|
||||||
|
<fixed>
|
||||||
|
- Endless loop in error case lets freeze the client
|
||||||
|
- PSTRotator SOCKET Close on DISCONNECT BUTTON
|
||||||
|
- Dark mode: passing for qrg fields fix
|
||||||
|
</fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>1.266</changedVersionNumber>
|
||||||
|
<date>2025-10-03</date>
|
||||||
|
<description>Airscout interface did not work with multi-signons</description>
|
||||||
|
<added>nothing</added>
|
||||||
|
<changed>nothing</changed>
|
||||||
|
<fixed>
|
||||||
|
Fixed by using raw callsign (without -2 suffix etc.) when communicating with AirScout.
|
||||||
|
Thank you very much for testing this, Kreso 9A2HM!
|
||||||
|
</fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>1.265</changedVersionNumber>
|
||||||
|
<date>2025-09-28</date>
|
||||||
|
<description>Direction buttons stay now colored, if activated</description>
|
||||||
|
<added>nothing</added>
|
||||||
|
<changed>nothing</changed>
|
||||||
|
<fixed>The buttons stay now colored, if activated</fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>1.264</changedVersionNumber>
|
||||||
|
<date>2025-08-02</date>
|
||||||
|
<description>Changed the callsign recognition pattern for Simplelogfile</description>
|
||||||
|
<added>nothing</added>
|
||||||
|
<changed>nothing</changed>
|
||||||
|
<fixed>
|
||||||
|
Callsigns like S53CC, S51A etc. are now correctly marked as worked in SimpleLogFile.txt.
|
||||||
|
(bugreport Boris, S53CC)
|
||||||
|
</fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>1.263</changedVersionNumber>
|
||||||
|
<date>2025-06-08</date>
|
||||||
|
<description>Airscout communication and Loginname</description>
|
||||||
|
<added>nothing</added>
|
||||||
|
<changed>
|
||||||
|
Only entries with QRB lower than max-QRB are sent to AirScout in 60s intervals (was 12s for all).
|
||||||
|
</changed>
|
||||||
|
<fixed>
|
||||||
|
- AS communication message count hugely reduced
|
||||||
|
- Name in chat is now saveable
|
||||||
|
- Fixed AS client name (was hard-wired to "KST")
|
||||||
|
73 / DO5AMF
|
||||||
|
</fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>1.262</changedVersionNumber>
|
||||||
|
<date>2025-05-21</date>
|
||||||
|
<description>Freezes caused by getting messages before user login should be fixed now</description>
|
||||||
|
<added>nothing</added>
|
||||||
|
<changed>nothing</changed>
|
||||||
|
<fixed>
|
||||||
|
ON4KST delivers messages of stations not yet logged in. That caused a freeze at the message
|
||||||
|
processing engine which is now fixed.
|
||||||
|
</fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>1.26</changedVersionNumber>
|
||||||
|
<date>2025-05</date>
|
||||||
|
<description>Login to multiple Channels via single signon / spend some colors</description>
|
||||||
|
<added>
|
||||||
|
1. UI: Dark mode. Switch in "Window -> use dark mode"
|
||||||
|
2. Usage of two Chatcategories at the same time
|
||||||
|
3. opposite station multi-callsign login-tagging
|
||||||
|
73 / DO5AMF
|
||||||
|
</added>
|
||||||
|
<changed>
|
||||||
|
- Coloring mechanic of the software. Modify colors via css by yourself...
|
||||||
|
</changed>
|
||||||
|
<fixed>
|
||||||
|
- Station tagging fixed completely
|
||||||
|
</fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>1.251</changedVersionNumber>
|
||||||
|
<date>2025-02</date>
|
||||||
|
<description>BUGFIX of 1.25, tnx Steve Clements!</description>
|
||||||
|
<added>
|
||||||
|
- Steve spotted a problem in udp broadcast spot info reading, its now fixed!
|
||||||
|
73 / DO5AMF
|
||||||
|
</added>
|
||||||
|
<changed></changed>
|
||||||
|
<fixed>- Station tagging</fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>1.25</changedVersionNumber>
|
||||||
|
<date>2025-02</date>
|
||||||
|
<description>Wishlist-time</description>
|
||||||
|
<added>
|
||||||
|
- New configuration Tab: Messagehandling (auto-answering, CQ qrg auto-answer)
|
||||||
|
- Coloured lines: new pm rows appear in red, fade rainbow-like to white over 30s (tnx Gianluca)
|
||||||
|
73 / DO5AMF
|
||||||
|
</added>
|
||||||
|
<changed></changed>
|
||||||
|
<fixed>
|
||||||
|
- Users with suffixes like "-2 and -70" are now correctly marked as worked
|
||||||
|
</fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>1.24</changedVersionNumber>
|
||||||
|
<date>2024-11</date>
|
||||||
|
<description>Wishlist-time</description>
|
||||||
|
<added>
|
||||||
|
- Button to show qrz.com profile of a selected station
|
||||||
|
- Button to show qrzcq.com profile of a selected station
|
||||||
|
</added>
|
||||||
|
<changed></changed>
|
||||||
|
<fixed></fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>1.23</changedVersionNumber>
|
||||||
|
<date>2024-10</date>
|
||||||
|
<description>DXCluster Server is now implemented</description>
|
||||||
|
<added>
|
||||||
|
- DXCluster Server (tnx OMAAO): KST4Contest now provides a DXCluster server to feed
|
||||||
|
your log client with station-reachable warnings.
|
||||||
|
</added>
|
||||||
|
<changed></changed>
|
||||||
|
<fixed></fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>1.22</changedVersionNumber>
|
||||||
|
<date>2024-05</date>
|
||||||
|
<description>Increase usability, fixed AS button</description>
|
||||||
|
<added>- Variables (tnx OMAAO): MYLOCATORSHORT, MYQRGSHORT, QRZNAME</added>
|
||||||
|
<changed>- Sendtext-field focus on callsign click</changed>
|
||||||
|
<fixed>
|
||||||
|
- Worked-station-filter (tnx Gianluca): filter is now live
|
||||||
|
- Chatters list sorting by QRB (tnx Alessandro): fixed to numeric sort
|
||||||
|
- Airscout showpath button now maximizes AS and shows the path
|
||||||
|
</fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>1.21</changedVersionNumber>
|
||||||
|
<date>2024-04</date>
|
||||||
|
<description>Increase usability</description>
|
||||||
|
<added></added>
|
||||||
|
<changed>
|
||||||
|
- Window sizes and divider positions are now stored and restored on next startup
|
||||||
|
- Filters section is now a flowpane for lower resolutions
|
||||||
|
</changed>
|
||||||
|
<fixed></fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>1.2</changedVersionNumber>
|
||||||
|
<date>2024-04</date>
|
||||||
|
<description>Increase usability</description>
|
||||||
|
<added>
|
||||||
|
- Selectable bands
|
||||||
|
- Unworkable tags for each callsign per band
|
||||||
|
- QTF-Arrow on the "show path in AS" button
|
||||||
|
</added>
|
||||||
|
<changed></changed>
|
||||||
|
<fixed></fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>1.1</changedVersionNumber>
|
||||||
|
<date>2024-03</date>
|
||||||
|
<description>Increased workflow</description>
|
||||||
|
<added>
|
||||||
|
- Reachable warning function
|
||||||
|
- Variables FIRSTAP and SECONDAP for predefined texts
|
||||||
|
- Marking new connected stations (bold) and away-state (brackets)
|
||||||
|
- Activity-timer since last message of a chatter
|
||||||
|
</added>
|
||||||
|
<changed>- QRB/QTF info in pm-window</changed>
|
||||||
|
<fixed>
|
||||||
|
- Behaviour of messagefilter-radiobutton corrected (tnx Gian)
|
||||||
|
- Error sending macros on selected stations in pm window (tnx Gian)
|
||||||
|
</fixed>
|
||||||
|
<removed>- boot sound</removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>1.0</changedVersionNumber>
|
||||||
|
<date>2024-02</date>
|
||||||
|
<description>First stable release</description>
|
||||||
|
<added>
|
||||||
|
- audio notification support
|
||||||
|
- update-available warning
|
||||||
|
- changelog displaying
|
||||||
|
- known-bugs displaying
|
||||||
|
- message filters for selected station
|
||||||
|
- stationlist-filters (show by qtf / textstring, hide by qrb, qtf, workedstate)
|
||||||
|
- 10 macros (textsnippets available by hitting strg+numberkey)
|
||||||
|
</added>
|
||||||
|
<changed></changed>
|
||||||
|
<fixed></fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>0.9</changedVersionNumber>
|
||||||
|
<date>2024-02</date>
|
||||||
|
<description>Now the chat is disconnectable without closing it</description>
|
||||||
|
<added></added>
|
||||||
|
<changed></changed>
|
||||||
|
<fixed>disconnect-button, Textsnippets in CQ Window, "/CQ" at click on own sendtexts,
|
||||||
|
setname "qrg" works now</fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>0.8</changedVersionNumber>
|
||||||
|
<date>2023-10</date>
|
||||||
|
<description>savesettings function and disconnect function added. MYCALL-Highlighting fixed</description>
|
||||||
|
<added>savesettings function, disconnect function</added>
|
||||||
|
<changed></changed>
|
||||||
|
<fixed>MYCALL-Highlighting</fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>0.7</changedVersionNumber>
|
||||||
|
<date>2023-07</date>
|
||||||
|
<description>Internal database for worked stations, shortcut and textsnippet editor</description>
|
||||||
|
<added>database, shortcut-editor, textsnipped-editor</added>
|
||||||
|
<changed></changed>
|
||||||
|
<fixed></fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>0.6</changedVersionNumber>
|
||||||
|
<date>2023-07</date>
|
||||||
|
<description>Added periodically sent beacon function</description>
|
||||||
|
<added>beacon to public channel</added>
|
||||||
|
<changed></changed>
|
||||||
|
<fixed></fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>0.5</changedVersionNumber>
|
||||||
|
<date>2023-02</date>
|
||||||
|
<description>Airscout interface, UDP interfaces for worked-station data and TRX info, shortcuts</description>
|
||||||
|
<added>Airscout-interface, packetreceiver for ucxlog, n1mm, qartest</added>
|
||||||
|
<changed></changed>
|
||||||
|
<fixed></fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>0.4</changedVersionNumber>
|
||||||
|
<date>2022-12</date>
|
||||||
|
<description>Worked info by logfile via universal pattern matching logfile interpreter</description>
|
||||||
|
<added>simple-logfile</added>
|
||||||
|
<changed></changed>
|
||||||
|
<fixed></fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>0.3</changedVersionNumber>
|
||||||
|
<date>2022-10</date>
|
||||||
|
<description>Added a GUI, chat was text based only</description>
|
||||||
|
<added>Graphical user interface</added>
|
||||||
|
<changed></changed>
|
||||||
|
<fixed></fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>0.2</changedVersionNumber>
|
||||||
|
<date>2022-10</date>
|
||||||
|
<description>Pattern matching system for frequency information, frequency collection per chatmember</description>
|
||||||
|
<added>frequency-extraction for every callsign</added>
|
||||||
|
<changed></changed>
|
||||||
|
<fixed></fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>0.15</changedVersionNumber>
|
||||||
|
<date>2022-09</date>
|
||||||
|
<description>Researched the Chatprotocol and developed the base communication with the chatserver</description>
|
||||||
|
<added></added>
|
||||||
|
<changed></changed>
|
||||||
|
<fixed></fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
<changeLog>
|
||||||
|
<changedVersionNumber>0.1</changedVersionNumber>
|
||||||
|
<date>2022-09</date>
|
||||||
|
<description>Primary architecture of the chat, message bus system for handling the message queues</description>
|
||||||
|
<added></added>
|
||||||
|
<changed></changed>
|
||||||
|
<fixed></fixed>
|
||||||
|
<removed></removed>
|
||||||
|
</changeLog>
|
||||||
|
</history>
|
||||||
@@ -0,0 +1,131 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Static roadmap/bugsReported sections carried over from the previously
|
||||||
|
hand-maintained kst4ContestVersionInfo.xml on do5amf.funkerportal.de.
|
||||||
|
UpdateChecker.java does not parse these today; kept for parity/history. -->
|
||||||
|
<legacy>
|
||||||
|
<roadmap>
|
||||||
|
<featurerequest>
|
||||||
|
<featureDescription>Cyclic update of own name in chat to actual QRG</featureDescription>
|
||||||
|
<requestDate>2024-02</requestDate>
|
||||||
|
<state>open</state>
|
||||||
|
</featurerequest>
|
||||||
|
<featurerequest>
|
||||||
|
<featureDescription>Acoustic warnings</featureDescription>
|
||||||
|
<requestDate>2023-12</requestDate>
|
||||||
|
<state>added</state>
|
||||||
|
</featurerequest>
|
||||||
|
<featurerequest>
|
||||||
|
<featureDescription>Airscout support</featureDescription>
|
||||||
|
<requestDate>2023-03</requestDate>
|
||||||
|
<state>added</state>
|
||||||
|
</featurerequest>
|
||||||
|
<featurerequest>
|
||||||
|
<featureDescription>cyclic beacon messages in public chat</featureDescription>
|
||||||
|
<requestDate>2023-03</requestDate>
|
||||||
|
<state>added</state>
|
||||||
|
</featurerequest>
|
||||||
|
</roadmap>
|
||||||
|
<bugsReported>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>
|
||||||
|
stations like ol7c-7 and ol7c-2 will not be marked as worked if only "ol7c"
|
||||||
|
is in the log. Need to interprete that. May ignore suffix starting with "-"</bugdescription>
|
||||||
|
<state>solved</state>
|
||||||
|
</bug>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>
|
||||||
|
worked callsigns table is updated only once after connected to chat
|
||||||
|
Should be available directly after program started.
|
||||||
|
But Reset works all time</bugdescription>
|
||||||
|
<state>open</state>
|
||||||
|
</bug>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>feature request: language-specific strings, maybe based to an xml file
|
||||||
|
</bugdescription>
|
||||||
|
<state>open</state>
|
||||||
|
</bug>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>feature request: Macros
|
||||||
|
</bugdescription>
|
||||||
|
<state>added</state>
|
||||||
|
</bug>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>feature request:
|
||||||
|
Automatic elimination of calls already connected from the log
|
||||||
|
</bugdescription>
|
||||||
|
<state>added</state>
|
||||||
|
</bug>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>feature request:
|
||||||
|
Limitation of users beyond a certain QRB
|
||||||
|
</bugdescription>
|
||||||
|
<state>added</state>
|
||||||
|
</bug>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>feature request:
|
||||||
|
User division for QTF perhaps settable based on the antenna lobe
|
||||||
|
</bugdescription>
|
||||||
|
<state>added</state>
|
||||||
|
</bug>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>feature request:
|
||||||
|
Notification of new incoming users</bugdescription>
|
||||||
|
<state>added</state>
|
||||||
|
</bug>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>feature request:
|
||||||
|
Evidence of a call which was written but not responded to.
|
||||||
|
</bugdescription>
|
||||||
|
<state>added</state>
|
||||||
|
</bug>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>feature request:
|
||||||
|
direction based reachable-warnings:
|
||||||
|
if the chatclient detects a realised qso between two stations which both must have
|
||||||
|
directed their beams to my station, there should be an instant warning to me for
|
||||||
|
working at least one of the stations at the detected qrg</bugdescription>
|
||||||
|
<state>open</state>
|
||||||
|
</bug>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>feature request:
|
||||||
|
implement ASShowpath message to airacout;
|
||||||
|
by doubleclicking a callsign in the chatmember list, the path and plane state should be
|
||||||
|
provided by airscout </bugdescription>
|
||||||
|
<state>open</state>
|
||||||
|
</bug>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>feature request:
|
||||||
|
make chatlines copyable to the clipboard...</bugdescription>
|
||||||
|
<state>open</state>
|
||||||
|
</bug>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>feature request:
|
||||||
|
adding an activity detection for sensing if another chatmembers alive-state</bugdescription>
|
||||||
|
<state>added</state>
|
||||||
|
</bug>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>On sql error close the connection to make a clean exit</bugdescription>
|
||||||
|
<state>open</state>
|
||||||
|
</bug>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>SETNAME /MYQRG in options menu doesnt work</bugdescription>
|
||||||
|
<state>solved</state>
|
||||||
|
</bug>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>Disconnect button does not work (DL5ZK)</bugdescription>
|
||||||
|
<state>solved</state>
|
||||||
|
</bug>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>Password-wrong error not displayed (DO5SA)</bugdescription>
|
||||||
|
<state>solved</state>
|
||||||
|
</bug>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>/CQ isnt written on own PMs</bugdescription>
|
||||||
|
<state>solved</state>
|
||||||
|
</bug>
|
||||||
|
<bug>
|
||||||
|
<bugdescription>rightclick-textsnippets arent available in cq-table</bugdescription>
|
||||||
|
<state>solved</state>
|
||||||
|
</bug>
|
||||||
|
</bugsReported>
|
||||||
|
</legacy>
|
||||||
@@ -0,0 +1,183 @@
|
|||||||
|
const fs = require("fs");
|
||||||
|
const path = require("path");
|
||||||
|
|
||||||
|
const REPO = "praktimarc/kst4contest";
|
||||||
|
const API = `https://api.github.com/repos/${REPO}`;
|
||||||
|
const LABEL_MAP = { enhancement: "added", bug: "fixed" };
|
||||||
|
|
||||||
|
async function githubGet(urlPath) {
|
||||||
|
const headers = { Accept: "application/vnd.github+json" };
|
||||||
|
if (process.env.GITHUB_TOKEN) {
|
||||||
|
headers.Authorization = `Bearer ${process.env.GITHUB_TOKEN}`;
|
||||||
|
}
|
||||||
|
const res = await fetch(`${API}${urlPath}`, { headers });
|
||||||
|
if (!res.ok) {
|
||||||
|
throw new Error(`GitHub API ${urlPath} failed: ${res.status}`);
|
||||||
|
}
|
||||||
|
return res.json();
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateChecker.java parses <versionNumber> with Double.parseDouble() and
|
||||||
|
// compares it against ApplicationConstants.APPLICATION_CURRENTVERSIONNUMBER,
|
||||||
|
// which encodes patch releases by appending the patch digit(s) instead of a
|
||||||
|
// third dot (e.g. tag v1.41.1 -> app version 1.411, v1.41.0 -> 1.41). See
|
||||||
|
// commit 38ef50c ("...set to 1.41.1 for upcoming hotfix" -> 1.411).
|
||||||
|
function toAppVersionNumber(tag) {
|
||||||
|
const cleaned = tag.replace(/^v/, "");
|
||||||
|
const [major, minor, ...rest] = cleaned.split(".");
|
||||||
|
if (rest.length === 0) return cleaned;
|
||||||
|
const patch = rest.join("");
|
||||||
|
return /^0*$/.test(patch) ? `${major}.${minor}` : `${major}.${minor}${patch}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
function escapeXml(value) {
|
||||||
|
return String(value ?? "")
|
||||||
|
.replace(/&/g, "&")
|
||||||
|
.replace(/</g, "<")
|
||||||
|
.replace(/>/g, ">");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Strips GitHub's auto-generated release-notes markdown noise (headings,
|
||||||
|
// "Full Changelog" links, PR author attributions) down to plain text.
|
||||||
|
function cleanReleaseBody(body) {
|
||||||
|
const lines = [];
|
||||||
|
for (let line of (body || "").split("\n")) {
|
||||||
|
if (/^#{1,3}\s/.test(line)) continue;
|
||||||
|
if (line.trim().startsWith("**Full Changelog**")) continue;
|
||||||
|
line = line.replace(/\s+by @\S+ in https:\/\/\S+/, "");
|
||||||
|
line = line.replace(/^\* /, "- ");
|
||||||
|
if (line.trim()) lines.push(line);
|
||||||
|
}
|
||||||
|
return lines.join("\n").replace(/\n{3,}/g, "\n\n").trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Groups closed issues (excluding PRs) in the (since, until] window by
|
||||||
|
// label into "added" (enhancement) / "fixed" (bug) bullet lists.
|
||||||
|
async function getIssuesForRelease(since, until) {
|
||||||
|
const buckets = { added: [], fixed: [] };
|
||||||
|
let page = 1;
|
||||||
|
for (;;) {
|
||||||
|
const items = await githubGet(`/issues?state=closed&per_page=100&page=${page}`);
|
||||||
|
if (!items.length) break;
|
||||||
|
for (const issue of items) {
|
||||||
|
if (issue.pull_request) continue;
|
||||||
|
const closed = issue.closed_at || "";
|
||||||
|
if (!(closed > since && closed <= until)) continue;
|
||||||
|
const labels = issue.labels.map((l) => l.name);
|
||||||
|
const bucket = Object.keys(LABEL_MAP).find((l) => labels.includes(l));
|
||||||
|
if (bucket) buckets[LABEL_MAP[bucket]].push(`- ${issue.title}`);
|
||||||
|
}
|
||||||
|
if (items.length < 100) break;
|
||||||
|
page++;
|
||||||
|
}
|
||||||
|
return { added: buckets.added.join("\n"), fixed: buckets.fixed.join("\n") };
|
||||||
|
}
|
||||||
|
|
||||||
|
// version-history.xml holds hand-written <changeLog> entries for releases
|
||||||
|
// published before GitHub Releases existed; re-emitted verbatim here.
|
||||||
|
function loadHistoryEntries() {
|
||||||
|
const historyPath = path.join(__dirname, "version-history.xml");
|
||||||
|
const xml = fs.readFileSync(historyPath, "utf-8");
|
||||||
|
return [...xml.matchAll(/<changeLog>[\s\S]*?<\/changeLog>/g)].map((m) => m[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
function historyEntryVersion(entryXml) {
|
||||||
|
const m = entryXml.match(/<changedVersionNumber>([\s\S]*?)<\/changedVersionNumber>/);
|
||||||
|
return m ? m[1].trim() : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Static <roadmap>/<bugsReported> sections carried over from the previous
|
||||||
|
// hand-maintained XML on do5amf.funkerportal.de. UpdateChecker.java doesn't
|
||||||
|
// parse these, kept only so the migration doesn't drop existing content.
|
||||||
|
function loadLegacySections() {
|
||||||
|
const legacyPath = path.join(__dirname, "version-legacy-sections.xml");
|
||||||
|
const xml = fs.readFileSync(legacyPath, "utf-8");
|
||||||
|
const roadmap = xml.match(/<roadmap>[\s\S]*?<\/roadmap>/);
|
||||||
|
const bugsReported = xml.match(/<bugsReported>[\s\S]*?<\/bugsReported>/);
|
||||||
|
return [roadmap ? roadmap[0] : null, bugsReported ? bugsReported[0] : null].filter(Boolean);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Builds kst4ContestVersionInfo.xml (the update-checker feed read by
|
||||||
|
// UpdateChecker.java) from GitHub releases + closed issues, falling back to
|
||||||
|
// version-history.xml for releases that predate GitHub Releases.
|
||||||
|
module.exports = async function () {
|
||||||
|
const fallback = '<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n<praktiKST></praktiKST>';
|
||||||
|
|
||||||
|
try {
|
||||||
|
const historyEntries = loadHistoryEntries();
|
||||||
|
|
||||||
|
const rawReleases = await githubGet("/releases?per_page=100");
|
||||||
|
const releases = rawReleases
|
||||||
|
.map((r) => ({
|
||||||
|
tagName: r.tag_name,
|
||||||
|
publishedAt: r.published_at || "",
|
||||||
|
name: r.name || r.tag_name,
|
||||||
|
body: r.body || "",
|
||||||
|
isPrerelease: r.prerelease
|
||||||
|
}))
|
||||||
|
.sort((a, b) => (a.publishedAt < b.publishedAt ? 1 : -1));
|
||||||
|
|
||||||
|
const stableReleases = releases.filter((r) => !r.isPrerelease);
|
||||||
|
const stable = stableReleases[0];
|
||||||
|
const ghVersions = new Set(stableReleases.map((r) => toAppVersionNumber(r.tagName)));
|
||||||
|
|
||||||
|
const parts = [];
|
||||||
|
parts.push('<?xml version="1.0" encoding="UTF-8" standalone="no"?>');
|
||||||
|
parts.push("<praktiKST>");
|
||||||
|
|
||||||
|
const latestTag = stable ? stable.tagName : null;
|
||||||
|
const winFilename = latestTag ? `praktiKST-${latestTag}-windows-x64.zip` : "";
|
||||||
|
|
||||||
|
parts.push(" <latestVersion>");
|
||||||
|
if (stable) {
|
||||||
|
const latestIssues = await getIssuesForRelease("1970-01-01T00:00:00Z", stable.publishedAt);
|
||||||
|
parts.push(` <versionNumber>${escapeXml(toAppVersionNumber(latestTag))}</versionNumber>`);
|
||||||
|
parts.push(" <adminMessage></adminMessage>");
|
||||||
|
parts.push(` <majorChanges>${escapeXml(latestIssues.added.slice(0, 300))}</majorChanges>`);
|
||||||
|
parts.push(
|
||||||
|
` <latestVersionPathOnWebserver>https://github.com/${REPO}/releases/download/${latestTag}/${winFilename}</latestVersionPathOnWebserver>`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
parts.push(" </latestVersion>");
|
||||||
|
|
||||||
|
// UpdateChecker.parseUpdateXMLFile() never actually reads this field
|
||||||
|
// (setNeedUpdateResourcesSinceLastVersion is never called); the
|
||||||
|
// previous server always hardcoded "nothing" here, so we match that.
|
||||||
|
parts.push(" <needUpdateSinceLastVersion>");
|
||||||
|
parts.push(" <filename>nothing</filename>");
|
||||||
|
parts.push(" </needUpdateSinceLastVersion>");
|
||||||
|
|
||||||
|
for (const section of loadLegacySections()) {
|
||||||
|
parts.push(section);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let i = 0; i < stableReleases.length; i++) {
|
||||||
|
const rel = stableReleases[i];
|
||||||
|
const until = rel.publishedAt;
|
||||||
|
const since = stableReleases[i + 1] ? stableReleases[i + 1].publishedAt : "1970-01-01T00:00:00Z";
|
||||||
|
const issues = await getIssuesForRelease(since, until);
|
||||||
|
|
||||||
|
parts.push(" <changeLog>");
|
||||||
|
parts.push(` <changedVersionNumber>${escapeXml(toAppVersionNumber(rel.tagName))}</changedVersionNumber>`);
|
||||||
|
parts.push(` <date>${escapeXml(until.slice(0, 10))}</date>`);
|
||||||
|
parts.push(` <description>${escapeXml(rel.name)}</description>`);
|
||||||
|
parts.push(` <added>${escapeXml(issues.added)}</added>`);
|
||||||
|
parts.push(` <changed>${escapeXml(cleanReleaseBody(rel.body))}</changed>`);
|
||||||
|
parts.push(` <fixed>${escapeXml(issues.fixed)}</fixed>`);
|
||||||
|
parts.push(" <removed></removed>");
|
||||||
|
parts.push(" </changeLog>");
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const entry of historyEntries) {
|
||||||
|
const version = historyEntryVersion(entry);
|
||||||
|
if (version && ghVersions.has(version)) continue;
|
||||||
|
parts.push(entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
parts.push("</praktiKST>");
|
||||||
|
return parts.join("\n");
|
||||||
|
} catch (err) {
|
||||||
|
console.warn(`[versionInfo] Could not generate version info XML, using empty fallback: ${err.message}`);
|
||||||
|
return fallback;
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
permalink: /kst4ContestVersionInfo.xml
|
||||||
|
eleventyExcludeFromCollections: true
|
||||||
|
---
|
||||||
|
{{ versionInfo | safe }}
|
||||||
Reference in New Issue
Block a user