You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Flow B — Verify existing: on an existing channel, a "Check ukrepeater.net" button queries by callsign, shows a diff of remote vs local, and lets the user confirm/apply updates.
Both flows stay in this ticket, delivered in phases (below).
Data source
ETCC/RSGB beta API — https://api-beta.rsgb.online — is the single data source for this feature (no CSV-bundle path).
Responds with Access-Control-Allow-Origin: *, so it is callable directly from the browser SPA — no proxy/server required.
Treat as beta / unstable: degrade gracefully on failure, cache responses, attribute the source in the UI, and keep the "not authoritative for emergency operations" disclaimer.
tx/rx are repeater-side and inverted vs the radio. Repeater tx (output) = our channel RX frequency; repeater rx (input) = our channel TX frequency.
Mode + colour code live in modeCodes:A=analogue, D=D-STAR, F=Fusion, P=P25, N=NXDN, X=node/packet, and M:<cc> = DMR with colour code <cc>. Timeslot is not in the listing (it is per-talkgroup), so the user fills that in.
Field mapping (import boundary only)
This is an import-boundary concern: mapping lives in a new import source/adapter; the internal Channel model stays vendor/radio-neutral (no profile constants, no caps).
ukrepeater field
internal Channel
tx
rxFrequency
rx
txFrequency
ctcss
rxTone / txTone
txbw
bandwidthKHz
modeCodes
mode (+ colourCode from M:<cc>)
locator
location (via src/lib/maidenheadGrid.ts)
repeater (callsign)
callsign / name
town, keeperCallsign, status, ngr, dbwErp
display / vendorExtras
Architecture
Add a network-backed "remote repeater directory" source — a sibling to the existing file import adapters (src/lib/import/), not a CSV file adapter. Design it generically so other directories (e.g. RepeaterBook) can plug in later, in keeping with the format-agnostic import principle. Snapshot a copy into the codeplug at add-time; live library references are only relevant once #30 lands.
Scope / phasing
Search + add to current codeplug (analogue + DMR).
Verify/refresh existing channel (diff + confirm) — Flow B.
Likely multi-commit work: branch from origin/main, atomic conventional commits per logical change (do not batch into one end-of-plan commit), open a PR linking Closes #92. Pair with the docs/features / progress-tracking skills for the build log.
Problem / outcome
Let operators pull authoritative UK repeater details from ukrepeater.net instead of hand-typing them, in two flows:
Both flows stay in this ticket, delivered in phases (below).
Data source
ETCC/RSGB beta API —
https://api-beta.rsgb.online— is the single data source for this feature (no CSV-bundle path)./callsign/{call},/locator/{4-or-6-char},/band/{band},/keeper/{call},/aprs/{call},/all/systems.{ "data": [ … ] }.Access-Control-Allow-Origin: *, so it is callable directly from the browser SPA — no proxy/server required.Sample record (
GB7DC):{ "type":"DM","status":"OPERATIONAL","keeperCallsign":"G7NPW","town":"DERBY", "modeCodes":["A","D","M:1","F","P","N"], "tx":439350000,"rx":430350000,"ctcss":71.9,"txbw":12.5, "band":"70CM","locator":"IO92","dbwErp":14, "extraDetails":{"ngr":"SK3837","antennaHeight":0,"polarisation":""} }Two mapping gotchas
tx/rxare repeater-side and inverted vs the radio. Repeatertx(output) = our channel RX frequency; repeaterrx(input) = our channel TX frequency.modeCodes:A=analogue,D=D-STAR,F=Fusion,P=P25,N=NXDN,X=node/packet, andM:<cc>= DMR with colour code<cc>. Timeslot is not in the listing (it is per-talkgroup), so the user fills that in.Field mapping (import boundary only)
This is an import-boundary concern: mapping lives in a new import source/adapter; the internal
Channelmodel stays vendor/radio-neutral (no profile constants, no caps).ChanneltxrxFrequencyrxtxFrequencyctcssrxTone/txTonetxbwbandwidthKHzmodeCodesmode(+colourCodefromM:<cc>)locatorlocation(viasrc/lib/maidenheadGrid.ts)repeater(callsign)callsign/nametown,keeperCallsign,status,ngr,dbwErpvendorExtrasArchitecture
Add a network-backed "remote repeater directory" source — a sibling to the existing file import adapters (
src/lib/import/), not a CSV file adapter. Design it generically so other directories (e.g. RepeaterBook) can plug in later, in keeping with the format-agnostic import principle. Snapshot a copy into the codeplug at add-time; live library references are only relevant once #30 lands.Scope / phasing
Open questions
OPERATIONALvsNOT OPERATIONAL) — include all, or default to operational?vendorExtrasvs discard.Relates to
Workflow note
Likely multi-commit work: branch from
origin/main, atomic conventional commits per logical change (do not batch into one end-of-plan commit), open a PR linkingCloses #92. Pair with thedocs/features/ progress-tracking skills for the build log.