Skip to content

Staging#30

Merged
MichaelWheeley merged 45 commits intoMichaelWheeley:feature/thai-language-devfrom
accius:Staging
Mar 27, 2026
Merged

Staging#30
MichaelWheeley merged 45 commits intoMichaelWheeley:feature/thai-language-devfrom
accius:Staging

Conversation

@MichaelWheeley
Copy link
Copy Markdown
Owner

What does this PR do?

Type of change

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

How to test

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)

accius and others added 30 commits March 23, 2026 14:29
weird map issues with edge
fix: PluginLayer error boundary and map safety checks
fix: replace OSM/OpenTopoMap tiles blocked by usage policy
fix: azimuthal tile globe misaligned on Retina/HiDPI displays
bump version to 26.1.3, add recent fixes to WhatsNew
perf: cache NOAA solar data for propagation heatmap
fix: use DXpedition entity coordinates for active DXpedition spots
fix: built-in propagation model was severely underestimating MUF
fix: ITURHFProp service IS alive — was being killed by tight timeouts
fix: DXpedition spots randomly appearing at wrong locations
fix: NaN coordinates crash — Invalid LatLng object: (NaN, NaN)
…ch does)

- Don't supply an empty string when a field does not exist.
- rig-bridge/aprs-tnc: forward received packets directly to the local
  OHC server's /api/aprs/local (fire-and-forget, configurable via
  aprs.localForward and aprs.ohcUrl). Disable when using cloud-relay
  to avoid duplicate injection on the cloud server.
- rig-bridge/config: add localForward and ohcUrl defaults to aprs
  section; bump CONFIG_VERSION to 7.
- server/aprs: expose `source` field on every station in the
  GET /api/aprs/stations response; apply RF-wins dedup so internet
  updates don't strip the `local-tnc` tag from stations heard over RF;
  fix /api/aprs/local to key by ssid (consistent with APRS-IS path);
  add GET /api/aprs/tnc-status proxy endpoint.
- useAPRS: add sourceFilter ('all'|'internet'|'rf') state that feeds
  into filteredStations; poll /api/aprs/tnc-status every 10s; expose
  tncConnected and hasRFStations.
- APRSPanel: add Source selector row (All / Internet / Local RF) with
  TNC live indicator dot; show green "RF" badge on locally-heard stations.
- WorldMap: render local-tnc stations in green (#4ade80) to distinguish
  them from internet stations (cyan) and watched stations (amber); add
  RF label in popup.
- themes.css: add --color-aprs-rf variable across all four themes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Three bugs when APRS_ENABLED is not set in .env:

1. Station cleanup interval skipped entirely, so RF packets injected via
   /api/aprs/local would pile up in memory and never be evicted.
   Fix: remove the APRS_ENABLED guard — cleanup always runs.

2. GET /api/aprs/stations returned enabled:false even when local TNC
   stations were present. The panel then showed "APRS Not Enabled" and
   blocked all data.
   Fix: add tncActive flag (true when any local-tnc station is cached);
   useAPRS sets aprsEnabled=true when either enabled or tncActive is true.

3. APRSPanel "disabled" message only mentioned APRS_ENABLED=true, making
   the rig-bridge TNC path invisible to users.
   Fix: updated message explains both paths (APRS-IS and local RF).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
ceotjoe and others added 15 commits March 26, 2026 23:56
APRSPanel was entirely missing react-i18next wiring. This commit adds
useTranslation and replaces every hardcoded English string with a t()
call, covering both the strings that pre-existed and the new ones added
in the local RF integration:

New keys (aprsPanel.*) added to en.json:
- disabled.{title,internetBefore,internetAfter,rfBefore,rfAfter,
  filterBefore,filterAfter}
- source.{label,all,internet,rf,tncConnected,noRfData}
- groups.{title,description,newGroupPlaceholder,createButton,
  callsignPlaceholder,selectGroup,addButton,deleteButton,noCallsigns}
- groupTab.{all,watchlist}
- groupsButton, groupsButtonTitle, mapOn, mapOff
- loading, noStations, noStationsFiltered, quickSearch, rfBadgeTitle

Other locale files will fall back to en.json until translators fill them in.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds the 33 aprsPanel.* keys introduced in the previous commit to every
non-English locale file: ca, de, es, fr, it, ja, ka, ko, ms, nl, pt, ru,
sl, th, zh.

Translated strings cover the full panel: disabled-state instructions
(both APRS-IS and local RF paths), source selector (All / Internet /
Local RF), watchlist group manager, map toggle, station list states,
and the RF badge tooltip.

Technical terms kept in English across all locales: APRS, APRS-IS, TNC,
RF, EmComm, rig-bridge, .env. Locale-appropriate terms used for UI
chrome (e.g. EIN/AUS in de, ВКЛ/ВЫКЛ in ru, 開/關 in zh).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Flesh out the Spot panel and Worldmap Spot popups
[refactor / language] add missing keys, minor thai update
feat: APRS local RF integration — display TNC data alongside APRS-IS
@MichaelWheeley MichaelWheeley merged commit c255966 into MichaelWheeley:feature/thai-language-dev Mar 27, 2026
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.

5 participants