Fix contest panel keyboard accessibility#1037
Conversation
Release v26.3.1 — Staging → main
Hotfix: guard PropagationPanel against empty/invalid timeZone (RangeError on first load)
…g_line787 [Hotfix main] bug fix spelling of console.debug
Release v26.3.2 — pre-Hamvention drop (MeshCom + VOACAP hotfix)
whatsnew(26.3.2): correct MeshCom contributor attribution
Cuts Staging into main for the v26.3.3 release.
…ction
The socket idle timeout (60s) was the shortest of all failure timers, so
any 60s gap between spots — normal on quiet bands overnight — tore down a
healthy connection. Keepalive (120s) was too slow to prevent it and the
180s activity watchdog (the graceful node-failover) never got to run.
- socket timeout 60s -> 300s, as a last-resort TCP backstop; the 180s
activity watchdog now owns failover as designed
- keepalive 120s -> 60s so the connection stays warm
- destroy the socket in the 'timeout' handler — Node does not auto-close
on timeout, leaving a zombie socket that kept feeding data and
spuriously reset the failover counter after [RECONNECT]
- mark authenticated on first spot; the DXSpider prompt has no trailing
newline so prompt-based detection never matched, and sh/dx output lines
("...de Helmut<DF4IY>") false-matched the prompt regex
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Screenshots show the WA7BNM link toggle enabled/disabled in the Contest Panel. When enabled, contest names can be opened, show the clickable styling, and turn blue on mouse hover. When disabled, contest names no longer act as links. The visible focus outline on the 🔗 button is expected and confirms the control is keyboard-focusable. |
|
quick note, this PR was targeting our main production branch and all PRs should target Staging. I have updated the target branch and am looking at the diff now. will follow up with notes if there are any. |
|
Sorry about that — I recreated the branch and the history got messier than intended. Thanks for cleaning it up. I’ll make sure future PRs are branched from Staging and that the final diff only includes the intended changes. |
Four people have been carrying the day-to-day with Chris this cycle — calling them out as core maintainers in both the WhatsNew banner and a new Core Maintainers block above the existing contributors pill list in Settings → Community. - Jörg Holzapfel (DO1HOZ / @ceotjoe) — rig-bridge, Cloud Relay, MeshCom - Alan Hargreaves (@alanhargreaves) — server reliability, local install - Laura Batalha (@lbatalha) — API design, Docker / GHCR infrastructure - Michael R Wheeley (@MichaelWheeley) — satellites, geo utils, i18n Also adds JoshuaLutgendorff (first-time contributor PR #1037) to the contributors pill list and removes ceotjoe + alanhargreaves from it since they're now in the maintainers block above.


What does this PR do?
Fixes keyboard accessibility in
ContestPanelby replacing clickable<span>elements with real<button>controls for the WA7BNM link toggle and contest names.The WA7BNM toggle now exposes button semantics, an accessible label, and
aria-pressed. Contest names now render as keyboard-accessible buttons with accessible labels when contest rows are available.Closes #1030
Type of change
How to test
npm run build.npm run test:run.npm run dev, tab to the WA7BNM link toggle, and confirm it is focusable and toggles on/off with the keyboard.Checklist
server.js: caches have TTLs and size caps (we serve 2,000+ concurrent users)var(--accent-cyan), etc.).bak,.old,console.logdebug lines, or test scripts includedScreenshots (if visual change)