535fda7cce
feat(rover): default Maidenhead grid overlay to on
2026-04-26 09:27:33 -05:00
7f77939fa4
feat(rover): add Maidenhead grid-square overlay (toggle in layers control)
2026-04-26 09:26:59 -05:00
af2ab3c969
fix(rover): bound Overpass with hard 8s deadline + 6h ETS cache by bbox
...
Prod logs showed road_proximity took 186 s on a single Calculate.
Req's receive_timeout only catches TCP idle, not slow streaming, so a
trickling Overpass response could not be cancelled. Wrap the call in a
Task.yield/shutdown deadline and cache successful results by 0.05°-rounded
bbox so adjacent Calculates skip Overpass entirely.
2026-04-26 09:25:08 -05:00
FluxCD
6a79458ea9
chore: update prop image to git.mcintire.me/graham/prop:main-1777212762-7d80bab [skip ci]
2026-04-26 14:16:11 +00:00
7d80babb18
feat(rover): snap top candidates to SRTM hilltops + add hillshade overlay
2026-04-26 09:12:24 -05:00
FluxCD
3c877b8b8e
chore: update prop image to git.mcintire.me/graham/prop:main-1777212183-2f35005 [skip ci]
2026-04-26 14:10:09 +00:00
2f3500515a
feat(rover): overlay LOS line + label profile rover→station endpoints
2026-04-26 09:02:07 -05:00
FluxCD
ea502ee9e7
chore: update prop image to git.mcintire.me/graham/prop:main-1777158633-0d2cfb6 [skip ci]
2026-04-25 23:18:38 +00:00
0d2cfb68f1
feat(rover): show aim heading + path lines for each fixed station
...
- Detail panel now reads as an aiming card: "Aim 220° (SW) · clearance +12 ft"
with the precise bearing in degrees, plus rover/obstacle elev on a second line
- Elevation profile labels swapped from min/max-of-profile to start (rover) and
end (station) elevations, since their positions in the chart now match
- Map draws a dashed indigo polyline from the candidate to each selected
station when a candidate is opened; cleared when the panel closes
2026-04-25 18:10:15 -05:00
4bfcff4e32
perf(rover): tighten Overpass timeout and log per-step compute timing
...
Calculate occasionally hung in production for ~30s. Adds per-phase
timing logs to Compute.run so the slow step is visible in pod logs,
and trims the Overpass road-proximity request to a 10s server-side
timeout / 12s receive timeout (no Req retries) so a slow road API
fails soft to no road penalty instead of stalling Calculate.
2026-04-25 18:05:46 -05:00
10cbd8dd48
fix(remote_ip): log IPv6 in canonical hex via :inet.ntoa
...
IPv6 segments were being printed in decimal (e.g. 10772:1985:1024:45::1
for 2a14:7c1:400:2d::1), which made request_id logs unreadable.
2026-04-25 18:05:46 -05:00
FluxCD
5c178ef4b7
chore: update prop image to git.mcintire.me/graham/prop:main-1777157172-eac817c [skip ci]
2026-04-25 22:56:35 +00:00
eac817cd57
feat(rover): prefer broad hilltops near roads as ideal candidates
...
- Local prominence: each cell's elevation vs. its 8-neighbor ring
(~1.3 km radius) feeds a small additive bonus so broad hilltops
rank above isolated SRTM voxels
- Road proximity: one Overpass call per Calculate fetches drivable
ways inside the bbox; cells beyond ~0.5 km of any road get a
light dB penalty, gated off in tests
2026-04-25 17:45:48 -05:00
4611926b8d
feat(rover): per-station detail panel with elevation profile + 'Ideal locations' label
2026-04-25 17:41:48 -05:00
FluxCD
819bf2e27d
chore: update prop image to git.mcintire.me/graham/prop:main-1777156652-6462acf [skip ci]
2026-04-25 22:40:28 +00:00
6462acffc6
feat(rover): default 50mi max distance and frame map to that radius
2026-04-25 17:37:17 -05:00
083c393bc8
fix(rover): clip heatmap to drive-radius circle on render
2026-04-25 17:35:44 -05:00
FluxCD
c1eabb788f
chore: update prop image to git.mcintire.me/graham/prop:main-1777156190-40cbb40 [skip ci]
2026-04-25 22:33:25 +00:00
40cbb40cb1
feat(rover): score per-station terrain clearance from SRTM path samples
...
For each (rover cell, fixed station) pair, sample SRTM along the
great-circle path and add a per-link dB bonus proportional to the
rover's elevation above the highest intermediate terrain. Rover spots
on hilltops with clear sight to multiple stations now rise to the top.
Also vendor Leaflet's layers control PNGs and copy them under
priv/static/assets/css/images/ on build so /rover stops 404'ing on
layers-2x.png.
2026-04-25 17:29:29 -05:00
FluxCD
f02a5b90e7
chore: update prop image to git.mcintire.me/graham/prop:main-1777155788-9178751 [skip ci]
2026-04-25 22:26:22 +00:00
9178751bac
fix(rover): push stations_updated to map hook on add/edit/toggle/delete
2026-04-25 17:22:51 -05:00
915cd1f5a0
feat(rover): replace max-drive-time slider with max-distance in miles
2026-04-25 17:21:57 -05:00
FluxCD
9b81e776ca
chore: update prop image to git.mcintire.me/graham/prop:main-1777155369-a9a3d22 [skip ci]
2026-04-25 22:18:19 +00:00
a9a3d22ae6
feat(rover): drop highlight marker on selected candidate
2026-04-25 17:15:53 -05:00
5631444abd
feat(rover): auto-resolve grid from callsign on add; inline-edit grid per row; mi/ft units
2026-04-25 17:14:32 -05:00
FluxCD
ea95ae3596
chore: update prop image to git.mcintire.me/graham/prop:main-1777154970-cbc20d0 [skip ci]
2026-04-25 22:12:14 +00:00
cbc20d03bf
feat(rover): remove cell click popup; map clicks are no-ops
2026-04-25 17:09:13 -05:00
9bfd345e8d
feat(accounts): derive 10-char home_grid from explicit lat/lon
2026-04-25 17:04:45 -05:00
9796f06ba2
feat(accounts): auto-prefill home QTH from QRZ on register + backfill on boot
2026-04-25 17:03:01 -05:00
b1fe077863
fix(path): single grid decode + zero-downtime rust-worker rollouts
2026-04-25 16:57:00 -05:00
FluxCD
055be81442
chore: update prop image to git.mcintire.me/graham/prop:main-1777153931-771299c [skip ci]
2026-04-25 21:54:10 +00:00
771299c951
feat(accounts): add Home QTH section to user settings page
2026-04-25 16:51:54 -05:00
784caa7699
feat(rover): drive-radius circle resizes live as max-drive-time slider drags
2026-04-25 16:42:49 -05:00
e2dfc05939
fix(rover): keep cells without elevation; surface diagnostic warnings as flash
2026-04-25 16:41:31 -05:00
9ebb134a03
feat(rover): home accepts grid/callsign/address; station markers labeled; imperial scale
2026-04-25 16:40:03 -05:00
FluxCD
4108a98e5d
chore: update prop image to git.mcintire.me/graham/prop:main-1777153008-c5d6633 [skip ci]
2026-04-25 21:38:59 +00:00
c5d6633beb
feat(rover): URL station persistence + 10-digit grids on calculated values
2026-04-25 16:36:34 -05:00
150762d21d
feat(rover): render fixed stations as small dots, not triangle+label divIcons
2026-04-25 16:32:55 -05:00
6f25993998
fix(rover): wire delete X button to actually remove station rows
2026-04-25 16:32:10 -05:00
10fcc764f6
feat(rover): live slider labels via RoverSlider hook for forecast hour + drive time
2026-04-25 16:30:38 -05:00
db1539086b
feat(rover): drop Min Elev Gain section, link 'Sign in to save' to log-in
2026-04-25 16:28:32 -05:00
c13a5f53be
feat(rover): full-bleed layout matching /map and /weather; remove Mode selector
2026-04-25 16:26:33 -05:00
7c506a6453
feat(rover): redesigned LiveView with right-docked sidebar, Calculate flow, smoothed contours
2026-04-25 16:26:33 -05:00
448d3636a1
feat(rover): Oban worker enriches station elevation post-insert
2026-04-25 16:26:33 -05:00
2e462b0697
feat(rover): end-to-end Calculate pipeline
2026-04-25 16:26:33 -05:00
d80ca24e2e
feat(rover): bulk elevation lookup wrapper
2026-04-25 16:26:33 -05:00
25d07c0d42
feat(rover): pure scoring math (link margin, aggregator, drive time)
2026-04-25 16:26:33 -05:00
18f04a4345
feat(rover): user-scoped FixedStation context with ownership guard
2026-04-25 16:26:33 -05:00
21d3adfd2b
feat(rover): FixedStation schema with grid-derived lat/lon
2026-04-25 16:26:33 -05:00
FluxCD
b6fdfdf639
chore: update prop image to git.mcintire.me/graham/prop:main-1777151041-ce9319d [skip ci]
2026-04-25 21:13:54 +00:00