Skip to content

Promote dev → staging: Map tab redesign (4c) - #912

Merged
patrickrb merged 3 commits into
stagingfrom
dev
Sep 26, 2026
Merged

patrickrb merged 3 commits into
stagingfrom
dev

Conversation

@patrickrb

Copy link
Copy Markdown
Owner

Promotes dev → staging with the Map tab redesign (PR #911).

What's in it

  • Real bordered basemap — country outlines (world_countries.json) draw in both the equirectangular and azimuthal projections, plus US state borders past a zoom threshold. Offline vector data, no tile/slippy-map dependency.
  • 4c layout — header (Map + "N decoded · M worked this session" + ⚙ gear) → layer-chip row (Decodes / PSK spots / Worked) → inset rounded map card. Chips partition which station markers draw.
  • Controls — top-left greyline info pill (band + "greyline in Xh Ym"), a 44dp + / − / Me stack (Me recenters on the operator grid); Projection + Gray line moved into the ⚙ menu.
  • Bolder station indicators — bigger dots, layered glow, raised SNR floor so weak decodes still read; operator is a bold amber "you are here" dot. Shapes (triangle CQ / diamond to-me / donut worked / dot) unchanged.
  • Auto-fit view to markers — frames the region that actually has stations instead of a mostly-empty world; a global spread stays at world view.
  • Station card restyled to 4c (avatar + callsign + distance · bearing · SNR + Details).

Diff

3 commits, 7 files, +858 / −149 — all under ui/map/ plus strings_compose.xml and the two test classes. No native, CAT, audio, or navigation changes.

Testing

Pure logic extracted to MapRedesign.kt / MapViewport.panToCenter and covered by MapRedesignTest; assembleDebug builds and the screen was verified live on a tablet emulator with demo data (borders, gear menu, greyline countdown, recenter).

🤖 Generated with Claude Code

patrickrb and others added 3 commits September 25, 2026 12:37
Implements the "4c" Map redesign on the existing offline vector map:

- Borders: draw country outlines (world_countries.json) in both the
  equirectangular and azimuthal projections, plus US state borders once
  zoomed past a threshold (showStateBorders). The data + loaders already
  shipped; they were just unused.
- Layout: header (title + "N decoded · M worked this session" + gear) over
  a layer-chip row (Decodes / PSK spots / Worked) over an inset rounded map
  card. Layer chips partition which markers draw.
- Controls: top-left greyline info pill (band + "greyline in Xh Ym"), a
  44dp +/-/Me stack where Me recenters on the operator grid, and Projection
  + Gray line moved into the gear menu.
- Station card restyled to 4c (avatar + callsign + distance/bearing/SNR +
  Details).

Pure logic extracted to MapRedesign.kt (layer visibility, greyline
countdown, formatting) and MapViewport.panToCenter, covered by
MapRedesignTest. Verified on a tablet emulator with demo data.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Addresses two legibility issues raised on the redesign:

- Indicators are now obvious dots: marker radius 3.5/5.5 -> 6/9, a layered
  glow halo instead of a single faint one, an SNR alpha floor raised from
  0.45 to 0.78 (weak decodes no longer wash out), and a bold amber operator
  "you are here" dot with a glow. Shapes (triangle CQ / diamond to-me /
  donut worked / dot) are kept.
- Auto-fit: on the standard projection the map now frames the region that
  actually has markers (stations + operator) instead of a mostly-empty
  world. fitEquirectView computes the zoom/pan; it re-frames when the marker
  spread changes and stops once the operator pans/zooms/recenters (a global
  spread stays at 1x, a regional cluster zooms in).

New pure logic (fitEquirectView + MapViewFit) and the raised SNR floor are
covered by tests; verified on a tablet emulator (regional inject zooms to
North America, global inject frames the world).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
feat(map): redesign Map tab (concept 4c) with a real bordered basemap
@codecov

codecov Bot commented Sep 26, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 11.69451% with 370 lines in your changes missing coverage. Please review.
✅ Project coverage is 41.50%. Comparing base (440d4f1) to head (c603d1c).
⚠️ Report is 24 commits behind head on staging.

Files with missing lines Patch % Lines
...main/kotlin/radio/ks3ckc/ft8af/ui/map/MapScreen.kt 1.07% 367 Missing ⚠️
...in/kotlin/radio/ks3ckc/ft8af/ui/map/MapRedesign.kt 93.18% 1 Missing and 2 partials ⚠️
Additional details and impacted files

Impacted file tree graph

@@              Coverage Diff              @@
##             staging     #912      +/-   ##
=============================================
- Coverage      41.73%   41.50%   -0.24%     
  Complexity       252      252              
=============================================
  Files            279      280       +1     
  Lines          33668    33973     +305     
  Branches        3958     4033      +75     
=============================================
+ Hits           14052    14100      +48     
- Misses         19329    19584     +255     
- Partials         287      289       +2     
Flag Coverage Δ
android 17.59% <11.69%> (-0.03%) ⬇️
desktop 63.95% <ø> (ø)
ios 97.71% <ø> (ø)
native 9.93% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
...in/kotlin/radio/ks3ckc/ft8af/ui/map/MapViewport.kt 100.00% <100.00%> (+3.84%) ⬆️
...in/kotlin/radio/ks3ckc/ft8af/ui/map/MarkerStyle.kt 100.00% <100.00%> (ø)
...in/kotlin/radio/ks3ckc/ft8af/ui/map/MapRedesign.kt 93.18% <93.18%> (ø)
...main/kotlin/radio/ks3ckc/ft8af/ui/map/MapScreen.kt 7.46% <1.07%> (-1.56%) ⬇️
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@patrickrb
patrickrb merged commit 3483025 into staging Sep 26, 2026
40 checks passed
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.

1 participant