Staging#30
Merged
MichaelWheeley merged 45 commits intoMichaelWheeley:feature/thai-language-devfrom Mar 27, 2026
Merged
Conversation
Weekly Merge to Main
hot fix issues
version bump
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)
…A, WWFF and WWBOTA spots
…e in the fetched spots
…w line in the Panel
…ch does) - Don't supply an empty string when a field does not exist.
…et a 'false' inserted.
- 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>
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>
|| '' is redundant.
Fix contest QSO DX target updates
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this PR do?
Type of change
How to test
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)