[feat](trx-frontend-http): wire HF APRS toggle button and bookmark decoder

- Add "Enable HF APRS" toggle button to the HF APRS tab (same style as
  FT8/WSPR); button is disabled during TX like other decoder toggles
- app.js: sync button text/colour from SSE state updates
- hf-aprs.js: connect button click to /toggle_hf_aprs_decode
- bookmarks.js: add "HF APRS" checkbox to Add/Edit Bookmark decoder
  section; bmReadDecoders/bmWriteDecoders handle "hf-aprs" key; bmApply
  toggles the decoder to match bookmark preference on recall

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Stan Grams <sjg@haxx.space>
This commit is contained in:
2026-03-08 20:43:55 +01:00
parent ac586418fc
commit 26fbd37b6d
4 changed files with 20 additions and 0 deletions
@@ -150,6 +150,7 @@ function bmReadDecoders() {
const decoders = [];
if (document.getElementById("bm-dec-ft8").checked) decoders.push("ft8");
if (document.getElementById("bm-dec-wspr").checked) decoders.push("wspr");
if (document.getElementById("bm-dec-hf-aprs").checked) decoders.push("hf-aprs");
return decoders;
}
@@ -158,6 +159,7 @@ function bmWriteDecoders(decoders) {
const list = decoders || [];
document.getElementById("bm-dec-ft8").checked = list.includes("ft8");
document.getElementById("bm-dec-wspr").checked = list.includes("wspr");
document.getElementById("bm-dec-hf-aprs").checked = list.includes("hf-aprs");
}
function bmOpenForm(bm) {
@@ -306,6 +308,10 @@ async function bmApply(bm) {
if (wantWspr !== !!st.wspr_decode_enabled) {
await postPath("/toggle_wspr_decode");
}
const wantHfAprs = bm.decoders.includes("hf-aprs");
if (wantHfAprs !== !!st.hf_aprs_decode_enabled) {
await postPath("/toggle_hf_aprs_decode");
}
}
}
} catch (err) {
@@ -327,6 +327,10 @@ function addHfAprsPacket(pkt) {
renderHfAprsHistory();
}
document.getElementById("hf-aprs-decode-toggle-btn")?.addEventListener("click", async () => {
try { await postPath("/toggle_hf_aprs_decode"); } catch (e) { console.error("HF APRS toggle failed", e); }
});
document.getElementById("hf-aprs-clear-btn")?.addEventListener("click", async () => {
try {
await postPath("/clear_hf_aprs_decode");