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
Maidenhead locator conversion is embedded in channel CRUD (#11): display on detail, input on edit. Operators also need ad-hoc conversion — checking a locator, picking a point on a map, or looking up an address/postcode — without creating or editing a channel.
Conversion logic already exists in src/lib/maidenhead.ts and is documented in docs/features/maidenhead.md (channel-field scope). There is no standalone tool page.
Intended outcome
Add a Tools section with a Maidenhead converter page for two-way conversion between coordinates and Maidenhead locators.
Navigation
Add a Tools link at the bottom of the sidebar, near Settings.
Tools links to a tools index (or directly to the converter if it is the only child for now).
Maidenhead converter route provides the standalone tool.
Converter features
Core (required):
Locator → coordinates: accept 4/6/8/10-character Maidenhead input; show lat/lon (centre of finest specified square) using locatorToCoords
Coordinates → locator: accept lat/lon; show locator at selectable precision (default 6 chars) using coordsToLocator
Validation errors for invalid locator input (same rules as channel edit form)
Live update as inputs change
Enhancements (in scope for this issue):
Pick on map — click/drag to set coordinates; locator display updates
Address / postcode lookup — geocode to coordinates then show locator (provider TBD; browser-side only, no server secrets in repo)
Suggested routes
/tools — Tools index
/tools/maidenhead — Maidenhead converter
Affected
src/App.tsx — sidebar nav + routes
New route(s) under src/routes/tools/
Reuse src/lib/maidenhead.ts — do not fork conversion math
Map component reuse from CodeplugMap or a slim map picker variant
Update docs/features/maidenhead.md to note the standalone tool (channel integration vs ad-hoc tool)
Notes / dependencies
ReuseslocatorToCoords / coordsToCoords from existing lib.
Complementsfeat: CRUD channels #11 (channel edit/detail maidenhead fields) — not a replacement.
Address/postcode lookup was explicitly deferred in docs/features/maidenhead.md "Known gaps"; this issue brings it into scope for the standalone tool.
Privacy: any API keys (e.g. geocoding) stay in browser localStorage, never committed.
Out of scope
Persisting converter results into a codeplug channel (user copies values manually or uses channel edit).
Batch conversion of many locators.
Workflow note
Branch from origin/main, atomic conventional commits, PR linking Closes #.
Problem
Maidenhead locator conversion is embedded in channel CRUD (#11): display on detail, input on edit. Operators also need ad-hoc conversion — checking a locator, picking a point on a map, or looking up an address/postcode — without creating or editing a channel.
Conversion logic already exists in
src/lib/maidenhead.tsand is documented indocs/features/maidenhead.md(channel-field scope). There is no standalone tool page.Intended outcome
Add a Tools section with a Maidenhead converter page for two-way conversion between coordinates and Maidenhead locators.
Navigation
Converter features
Core (required):
locatorToCoordscoordsToLocatorEnhancements (in scope for this issue):
Suggested routes
/tools— Tools index/tools/maidenhead— Maidenhead converterAffected
src/App.tsx— sidebar nav + routessrc/routes/tools/src/lib/maidenhead.ts— do not fork conversion mathCodeplugMapor a slim map picker variantdocs/features/maidenhead.mdto note the standalone tool (channel integration vs ad-hoc tool)Notes / dependencies
locatorToCoords/coordsToCoordsfrom existing lib.docs/features/maidenhead.md"Known gaps"; this issue brings it into scope for the standalone tool.localStorage, never committed.Out of scope
Workflow note
Branch from
origin/main, atomic conventional commits, PR linkingCloses #.