Skip to content

Fix contest panel keyboard accessibility#1037

Merged
accius merged 9 commits into
accius:Stagingfrom
JoshuaLutgendorff:fix-contest-panel-accessibility
May 31, 2026
Merged

Fix contest panel keyboard accessibility#1037
accius merged 9 commits into
accius:Stagingfrom
JoshuaLutgendorff:fix-contest-panel-accessibility

Conversation

@JoshuaLutgendorff
Copy link
Copy Markdown
Contributor

What does this PR do?

Fixes keyboard accessibility in ContestPanel by 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

  • Bug fix
  • New feature
  • Performance improvement
  • Refactor / code cleanup
  • Documentation
  • Translation
  • Map layer plugin

How to test

  1. Run npm run build.
  2. Run npm run test:run.
  3. Start the app with npm run dev, tab to the WA7BNM link toggle, and confirm it is focusable and toggles on/off with the keyboard.

Checklist

  • App loads without console errors
  • Tested in Dark, Light, and Retro themes
  • Responsive at different screen sizes (desktop + mobile)
  • If touching server.js: caches have TTLs and size caps (we serve 2,000+ concurrent users)
  • If adding an API route: includes caching and error handling
  • If adding a panel: wired into Modern, Classic, and Dockable layouts
  • No hardcoded colors — uses CSS variables (var(--accent-cyan), etc.)
  • No .bak, .old, console.log debug lines, or test scripts included

Screenshots (if visual change)

Screenshot 2026-05-30 160142

accius and others added 9 commits May 6, 2026 23:38
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>
…uth detection"

This reverts commit e95faf6. The proxy fix was cherry-picked to main
prematurely. It will be validated on Staging first and reach main on the
normal release schedule. The fix remains intact on Staging (e7826d9).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@JoshuaLutgendorff
Copy link
Copy Markdown
Contributor Author

Screenshot 2026-05-30 161011 Screenshot 2026-05-30 161035

@JoshuaLutgendorff
Copy link
Copy Markdown
Contributor Author

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.

@accius accius changed the base branch from main to Staging May 31, 2026 13:39
@accius
Copy link
Copy Markdown
Owner

accius commented May 31, 2026

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.

@accius accius merged commit c181364 into accius:Staging May 31, 2026
5 checks passed
@JoshuaLutgendorff
Copy link
Copy Markdown
Contributor Author

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.

accius added a commit that referenced this pull request Jun 2, 2026
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.
@accius accius mentioned this pull request Jun 2, 2026
4 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Accessibility] ContestPanel link toggle should be a real button

2 participants