From 59aade8004a87295e09ce3232968d71f8e805ccc Mon Sep 17 00:00:00 2001 From: Marc Froehlich Date: Tue, 7 Jul 2026 00:01:59 +0200 Subject: [PATCH] Move features to Markdown content model --- website/.eleventy.js | 5 ++ website/_site/download/index.html | 70 ++++++++++++----- website/src/_data/features.js | 90 ---------------------- website/src/_layouts/feature.njk | 39 ++++++++++ website/src/feature-pages/feature-page.njk | 55 ------------- website/src/features/airscout.md | 27 +++++++ website/src/features/dual-chat.md | 25 ++++++ website/src/features/dx-cluster.md | 23 ++++++ website/src/features/features.json | 4 + website/src/features/index.njk | 12 +-- website/src/features/log-sync.md | 25 ++++++ website/src/features/macros.md | 23 ++++++ website/src/features/priority-score.md | 29 +++++++ website/src/features/sked-reminder.md | 26 +++++++ website/src/features/timeline.md | 25 ++++++ website/src/index.njk | 16 ++-- 16 files changed, 316 insertions(+), 178 deletions(-) delete mode 100644 website/src/_data/features.js create mode 100644 website/src/_layouts/feature.njk delete mode 100644 website/src/feature-pages/feature-page.njk create mode 100644 website/src/features/airscout.md create mode 100644 website/src/features/dual-chat.md create mode 100644 website/src/features/dx-cluster.md create mode 100644 website/src/features/features.json create mode 100644 website/src/features/log-sync.md create mode 100644 website/src/features/macros.md create mode 100644 website/src/features/priority-score.md create mode 100644 website/src/features/sked-reminder.md create mode 100644 website/src/features/timeline.md diff --git a/website/.eleventy.js b/website/.eleventy.js index 81ca6b0..a0d1e3d 100644 --- a/website/.eleventy.js +++ b/website/.eleventy.js @@ -27,6 +27,11 @@ function rewriteManualLinks(content, lang) { } module.exports = function (eleventyConfig) { + + eleventyConfig.addFilter("whereTag", function(collection, tag) { + return collection.filter(item => item.data.tags && item.data.tags.includes(tag)); + }); + eleventyConfig.addPassthroughCopy({ "src/assets": "assets" }); const md = markdownIt({ diff --git a/website/_site/download/index.html b/website/_site/download/index.html index fe9a5bc..150da2c 100644 --- a/website/_site/download/index.html +++ b/website/_site/download/index.html @@ -74,40 +74,72 @@
๐ŸชŸ

Recommended

Windows

-

ZIP

- Open download โ†’ - - -
-
๐ŸŽ
- -

macOS

-

DMG

- Open download โ†’ +

ZIP x64

+ Open download โ†’
๐Ÿง
- +

Recommended

Linux

-

AppImage / DEB / RPM / Arch

- Open download โ†’ +

AppImage x86_64

+ Open download โ†’
๐Ÿ“ฆ
-

Flatpak

-

flatpakref

- Open download โ†’ +

Debian / Ubuntu

+

DEB amd64

+ Open download โ†’ +
+ +
+
๐Ÿ“ฆ
+ +

Fedora

+

RPM x86_64

+ Open download โ†’ +
+ +
+
๐Ÿ“ฆ
+ +

Arch Linux

+

pkg.tar.zst

+ Open download โ†’ +
+ +
+
๐ŸŽ
+ +

macOS Apple Silicon

+

DMG arm64

+ Open download โ†’ +
+ +
+
๐ŸŽ
+ +

macOS Intel

+

DMG x86_64

+ Open download โ†’
๐Ÿ“˜
-

Manual

-

PDF EN/DE

- Open download โ†’ +

Manual English

+

PDF

+ Open download โ†’ +
+ +
+
๐Ÿ“˜
+ +

Manual German

+

PDF

+ Open download โ†’
diff --git a/website/src/_data/features.js b/website/src/_data/features.js deleted file mode 100644 index fdfc902..0000000 --- a/website/src/_data/features.js +++ /dev/null @@ -1,90 +0,0 @@ -module.exports = [ - { - slug: "priority-score", - title: "Priority Score System", - icon: "๐ŸŽฏ", - category: "Contest Workflow", - since: "1.40", - summary: "Find the most promising stations faster using contest-aware candidate scoring.", - description: "KST4Contest ranks stations by activity, direction, sked context, band information, QRG hints and operator workflow signals.", - tags: ["ON4KST", "VHF", "UHF", "SHF", "contest", "priority candidates"], - related: ["timeline", "airscout", "sked-reminder"] - }, - { - slug: "airscout", - title: "AirScout Integration", - icon: "โœˆ๏ธ", - category: "Aircraft Scatter", - since: "1.26", - summary: "Use aircraft scatter awareness directly inside your ON4KST contest workflow.", - description: "AirScout information helps operators evaluate AP windows, aircraft scatter timing and candidate stations during VHF/UHF/SHF contests.", - tags: ["AirScout", "airplane scatter", "aircraft scatter", "VHF contest"], - related: ["timeline", "priority-score", "sked-reminder"] - }, - { - slug: "timeline", - title: "Timeline View", - icon: "โฑ๏ธ", - category: "Contest Awareness", - since: "1.40", - summary: "See upcoming AP windows and candidate timing in a compact contest timeline.", - description: "The timeline view helps operators understand short propagation windows and candidate timing during active contest operation.", - tags: ["timeline", "AP windows", "airplane scatter"], - related: ["airscout", "priority-score"] - }, - { - slug: "sked-reminder", - title: "Sked Reminder", - icon: "๐Ÿ””", - category: "Sked Management", - since: "1.40", - summary: "Keep scheduled contacts visible and avoid missing time-critical skeds.", - description: "KST4Contest keeps skeds in focus while the operator handles chat traffic, logging, bands and aircraft scatter timing.", - tags: ["sked", "ON4KST", "contest reminder"], - related: ["priority-score", "airscout", "timeline"] - }, - { - slug: "log-sync", - title: "Log Synchronization", - icon: "๐Ÿ”„", - category: "Logger Integration", - since: "1.31", - summary: "Connect ON4KST chat workflow with Win-Test, UCXLog and contest logging state.", - description: "Log synchronization helps KST4Contest understand worked stations, active bands and contest context.", - tags: ["Win-Test", "UCXLog", "contest logger"], - related: ["priority-score", "dual-chat"] - }, - { - slug: "dual-chat", - title: "Dual Chat Categories", - icon: "๐Ÿ’ฌ", - category: "ON4KST Chat", - since: "1.26", - summary: "Operate in two ON4KST categories at once, for example VHF/UHF and microwave.", - description: "Dual category support gives contest operators better overview when working across multiple ON4KST chat rooms.", - tags: ["ON4KST", "dual chat", "microwave contest"], - related: ["priority-score", "log-sync"] - }, - { - slug: "dx-cluster", - title: "DXCluster Server", - icon: "๐Ÿ“ก", - category: "Radio Workflow", - since: "1.23", - summary: "Use DXCluster information as part of the wider contest operating workflow.", - description: "KST4Contest includes DXCluster functionality to support situational awareness during contest operation.", - tags: ["DXCluster", "ham radio", "contest"], - related: ["log-sync", "priority-score"] - }, - { - slug: "macros", - title: "Macros and Variables", - icon: "โšก", - category: "Operator Speed", - since: "1.0", - summary: "Send recurring contest messages faster with configurable macros and variables.", - description: "Macros reduce repetitive typing and help operators respond quickly during active ON4KST contest sessions.", - tags: ["macros", "ON4KST", "operator workflow"], - related: ["sked-reminder", "dual-chat"] - } -]; \ No newline at end of file diff --git a/website/src/_layouts/feature.njk b/website/src/_layouts/feature.njk new file mode 100644 index 0000000..d66ec02 --- /dev/null +++ b/website/src/_layouts/feature.njk @@ -0,0 +1,39 @@ +--- +layout: base.njk +--- + +
+

{{ category }} ยท since {{ since }}

+

{{ title }}

+

{{ summary }}

+
+ +
+
+
{{ icon }}
+ + {{ content | safe }} + + {% if tagsList %} +

Keywords

+
+ {% for tag in tagsList %} + {{ tag }} + {% endfor %} +
+ {% endif %} + + {% if related %} +

Related features

+
+ {% for slug in related %} + {% for item in collections.features %} + {% if item.fileSlug == slug %} + {{ item.data.title }} + {% endif %} + {% endfor %} + {% endfor %} +
+ {% endif %} +
+
\ No newline at end of file diff --git a/website/src/feature-pages/feature-page.njk b/website/src/feature-pages/feature-page.njk deleted file mode 100644 index 0bbb652..0000000 --- a/website/src/feature-pages/feature-page.njk +++ /dev/null @@ -1,55 +0,0 @@ ---- -pagination: - data: features - size: 1 - alias: feature -permalink: "/features/{{ feature.slug }}/" -layout: base.njk -title: "{{ feature.title }} | KST4Contest" -description: "{{ feature.summary }}" ---- - -
-

{{ feature.category }} ยท since {{ feature.since }}

-

{{ feature.title }}

-

{{ feature.summary }}

-
- -
-
-
{{ feature.icon }}
- -

Why it matters

-

{{ feature.description }}

- -

Built for contest operation

-

- This feature supports real VHF, UHF and SHF contest workflows where timing, - awareness and fast decisions matter. It is part of the broader KST4Contest - approach: ON4KST chat should not just be displayed, it should actively support - contest operation. -

- - {% if feature.tags %} -

Keywords

-
- {% for tag in feature.tags %} - {{ tag }} - {% endfor %} -
- {% endif %} - - {% if feature.related %} -

Related features

-
- {% for slug in feature.related %} - {% for related in features %} - {% if related.slug == slug %} - {{ related.title }} - {% endif %} - {% endfor %} - {% endfor %} -
- {% endif %} -
-
\ No newline at end of file diff --git a/website/src/features/airscout.md b/website/src/features/airscout.md new file mode 100644 index 0000000..a46130d --- /dev/null +++ b/website/src/features/airscout.md @@ -0,0 +1,27 @@ +--- +title: AirScout Integration +icon: โœˆ๏ธ +category: Aircraft Scatter +since: "1.26" +summary: Use aircraft scatter awareness directly inside your ON4KST contest workflow. +description: AirScout information helps operators evaluate AP windows, aircraft scatter timing and candidate stations during VHF/UHF/SHF contests. +tagsList: + - AirScout + - airplane scatter + - aircraft scatter + - VHF contest +related: + - timeline + - priority-score + - sked-reminder +--- + +## Airplane scatter in the operator workflow + +Aircraft reflections can create short but valuable contact opportunities. + +KST4Contest helps combine ON4KST chat activity with AirScout-based propagation awareness. + +## From candidate to sked decision + +AirScout information can support the decision whether a candidate station should be called immediately, scheduled later or monitored for a better window. \ No newline at end of file diff --git a/website/src/features/dual-chat.md b/website/src/features/dual-chat.md new file mode 100644 index 0000000..3f4df1b --- /dev/null +++ b/website/src/features/dual-chat.md @@ -0,0 +1,25 @@ +--- +title: Dual Chat Categories +icon: ๐Ÿ’ฌ +category: ON4KST Chat +since: "1.26" +summary: Operate in two ON4KST categories at once, for example VHF/UHF and microwave. +description: Dual category support gives contest operators better overview when working across multiple ON4KST chat rooms. +tagsList: + - ON4KST + - dual chat + - microwave contest +related: + - priority-score + - log-sync +--- + +## Two categories, one workflow + +KST4Contest can operate with two ON4KST chat categories at once. + +This is useful when contest activity spans VHF/UHF and microwave operation. + +## Less window switching + +The operator can keep more information visible without constantly changing tools. \ No newline at end of file diff --git a/website/src/features/dx-cluster.md b/website/src/features/dx-cluster.md new file mode 100644 index 0000000..11d8986 --- /dev/null +++ b/website/src/features/dx-cluster.md @@ -0,0 +1,23 @@ +--- +title: DXCluster Server +icon: ๐Ÿ“ก +category: Radio Workflow +since: "1.23" +summary: Use DXCluster information as part of the wider contest operating workflow. +description: KST4Contest includes DXCluster functionality to support situational awareness during contest operation. +tagsList: + - DXCluster + - ham radio + - contest +related: + - log-sync + - priority-score +--- + +## More situational awareness + +DXCluster information can support contest operators by adding another source of activity information. + +## Integrated workflow + +The goal is not to open another isolated tool, but to connect activity information with the wider KST4Contest workflow. \ No newline at end of file diff --git a/website/src/features/features.json b/website/src/features/features.json new file mode 100644 index 0000000..e628f17 --- /dev/null +++ b/website/src/features/features.json @@ -0,0 +1,4 @@ +{ + "layout": "feature.njk", + "tags": "features" +} \ No newline at end of file diff --git a/website/src/features/index.njk b/website/src/features/index.njk index 0729f1c..b9ab451 100644 --- a/website/src/features/index.njk +++ b/website/src/features/index.njk @@ -15,13 +15,13 @@ description: Contest-optimized ON4KST features for VHF, UHF and SHF operation.
- {% for feature in features %} + {% for feature in collections.features %} {% endfor %}
diff --git a/website/src/features/log-sync.md b/website/src/features/log-sync.md new file mode 100644 index 0000000..795f0b0 --- /dev/null +++ b/website/src/features/log-sync.md @@ -0,0 +1,25 @@ +--- +title: Log Synchronization +icon: ๐Ÿ”„ +category: Logger Integration +since: "1.31" +summary: Connect ON4KST chat workflow with Win-Test, UCXLog and contest logging state. +description: Log synchronization helps KST4Contest understand worked stations, active bands and contest context. +tagsList: + - Win-Test + - UCXLog + - contest logger +related: + - priority-score + - dual-chat +--- + +## Connect chat and logging + +Contest operation is faster when chat information and log state are connected. + +KST4Contest can use logger information to improve workflow awareness. + +## Worked and band awareness + +Log synchronization helps the client understand which stations and bands are relevant. \ No newline at end of file diff --git a/website/src/features/macros.md b/website/src/features/macros.md new file mode 100644 index 0000000..376bc01 --- /dev/null +++ b/website/src/features/macros.md @@ -0,0 +1,23 @@ +--- +title: Macros and Variables +icon: โšก +category: Operator Speed +since: "1.0" +summary: Send recurring contest messages faster with configurable macros and variables. +description: Macros reduce repetitive typing and help operators respond quickly during active ON4KST contest sessions. +tagsList: + - macros + - ON4KST + - operator workflow +related: + - sked-reminder + - dual-chat +--- + +## Faster messages + +Macros reduce repetitive typing during active contest operation. + +## More consistent operation + +Variables help keep messages structured and reduce manual errors. \ No newline at end of file diff --git a/website/src/features/priority-score.md b/website/src/features/priority-score.md new file mode 100644 index 0000000..c3e130b --- /dev/null +++ b/website/src/features/priority-score.md @@ -0,0 +1,29 @@ +--- +title: Priority Score System +icon: ๐ŸŽฏ +category: Contest Workflow +since: "1.40" +summary: Find the most promising stations faster using contest-aware candidate scoring. +description: KST4Contest ranks stations by activity, direction, sked context, band information, QRG hints and operator workflow signals. +tagsList: + - ON4KST + - VHF + - UHF + - SHF + - contest + - priority candidates +related: + - timeline + - airscout + - sked-reminder +--- + +## Why it matters + +During active VHF, UHF and microwave contests, relevant stations can disappear quickly in busy ON4KST chat traffic. + +The Priority Score System helps operators focus on stations that are more likely to be useful during contest operation. + +## Built for contest decisions + +KST4Contest is not just a chat viewer. It evaluates contest-relevant context and helps turn chat activity into better operating decisions. \ No newline at end of file diff --git a/website/src/features/sked-reminder.md b/website/src/features/sked-reminder.md new file mode 100644 index 0000000..111753f --- /dev/null +++ b/website/src/features/sked-reminder.md @@ -0,0 +1,26 @@ +--- +title: Sked Reminder +icon: ๐Ÿ”” +category: Sked Management +since: "1.40" +summary: Keep scheduled contacts visible and avoid missing time-critical skeds. +description: KST4Contest keeps skeds in focus while the operator handles chat traffic, logging, bands and aircraft scatter timing. +tagsList: + - sked + - ON4KST + - contest reminder +related: + - priority-score + - airscout + - timeline +--- + +## Never lose important skeds + +During active contests, it is easy to miss a planned contact while handling chat traffic, logging and band changes. + +Sked Reminder keeps scheduled contacts visible. + +## Built for real contest pressure + +The workflow supports time-critical operation where missing a few minutes can mean missing a QSO. \ No newline at end of file diff --git a/website/src/features/timeline.md b/website/src/features/timeline.md new file mode 100644 index 0000000..d7281a0 --- /dev/null +++ b/website/src/features/timeline.md @@ -0,0 +1,25 @@ +--- +title: Timeline View +icon: โฑ๏ธ +category: Contest Awareness +since: "1.40" +summary: See upcoming AP windows and candidate timing in a compact contest timeline. +description: The timeline view helps operators understand short propagation windows and candidate timing during active contest operation. +tagsList: + - timeline + - AP windows + - airplane scatter +related: + - airscout + - priority-score +--- + +## Timing matters + +Many VHF/UHF/SHF opportunities are short-lived. + +The Timeline View helps operators see upcoming timing windows instead of keeping everything in mind manually. + +## Designed for fast awareness + +The timeline supports quick decisions during busy contest operation. \ No newline at end of file diff --git a/website/src/index.njk b/website/src/index.njk index 5cb9be6..3789669 100644 --- a/website/src/index.njk +++ b/website/src/index.njk @@ -29,8 +29,8 @@ description: KST4Contest is a modern ON4KST chat client built for VHF, UHF and S
{% for feature in features | slice(0, 6) %}
- {{ feature.icon }} {{ feature.title }} - {{ feature.summary }} + {{ feature.data.icon }} {{ feature.data.title }} + {{ feature.data.summary }}
{% endfor %}
@@ -45,13 +45,13 @@ description: KST4Contest is a modern ON4KST chat client built for VHF, UHF and S
- {% for feature in features %} + {% for feature in collections.features %} {% endfor %}