commits
Speed brightness was absolute (0-90 mph scale), making most trains
look similarly dim since they cluster in the 30-80 mph range. Now
velocity is normalized relative to the fastest active train:
factor = velocity / max_velocity_across_all_active_trains
So the fastest train on the map is always brightest, stopped trains
are always dimmest, and everything in between spreads across the
full brightness range. Makes speed differences visually obvious.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Route data re-fetched at 0.0005° tolerance (~50m) — 29k points,
lines stay continuous even at tight zoom
- State boundaries re-simplified at 0.002° for more detail
- Station zoom thresholds made more aggressive: level 5 at 30° width
(was 20°), level 6 at 15° (was 10°)
- Roads visible at all zoom levels (removed 30° gate)
- Minimum zoom limit: viewport can't go below 3.5° width (~250 miles)
to prevent zooming into emptiness
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
City labels were getting overwritten by braille-rendered map features
(station markers, route lines, train circles). Fixed with two changes:
1. Greedy collision detection: compute approximate bounding boxes for
each label in geo-coordinate space, sorted by population priority.
Skip labels that overlap any previously placed label, train marker,
or station marker. Uses AABB intersection testing.
2. Render city labels as the topmost layer (layer 12) so text characters
aren't overwritten by braille dots drawn in later layers.
Labels are placed offset-right of the city coordinate with collision-
aware spacing. Dense areas (like the NEC corridor) will show only the
highest-population cities that fit without overlap.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
City labels were nearly invisible at RGB(70,70,85) — blending into
the braille dots. Bumped to RGB(130,125,115) (warm off-white) and
added a slight right/up offset so they don't sit directly on top of
map geometry.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
New geodata layers from Natural Earth:
- Lakes (96KB) — Great Lakes, major reservoirs
- Urban areas (95KB) — metro area outlines
- Land polygons (225KB) — enhanced coastline detail
- Roads/highways (753KB) — major interstates, shown when zoomed
11-layer rendering stack with toggleable visibility:
1. Coastlines 2. Land 3. Lakes 4. Urban areas
5. Rivers 6. State boundaries 7. Roads (zoom-only)
8. City labels 9. Amtrak routes 10. Stations 11. Trains
Press 'l' to open layer panel, number keys toggle each layer.
65 tests passing.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Rivers from Natural Earth 50m rendered as subtle blue lines
- 142 cities with population-based progressive disclosure:
>2M at wide zoom, >30K when zoomed in tight
- Swap markers: stations are now small · dots, trains are ○ circles
(◉ when selected) — trains stand out, stations recede
- 7-layer rendering order: coastlines, rivers, state boundaries,
city labels, Amtrak routes, stations, trains
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Replace directional carets with clean • dot markers
- Speed maps to color intensity (stopped=muted, fast=vivid) instead
of distracting pulse animation
- Station markers: · -> ○ in brighter color, show station codes
when zoomed in (viewport < 25 degrees)
- Selected station uses ◉ in cyan
- Re-simplified route data at 0.002° tolerance (was 0.008°) — lines
now stay continuous when zoomed in
- Re-simplified state boundaries at 0.005° tolerance (was 0.02°)
- Show heading text in station departure board instead of carets
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Shrink sidebar from 30% to 18% for better map aspect ratio
- Replace cluttered train number labels with directional carets
(▲▶▼◀ etc.) — only show label on selected train as tooltip
- Speed-based animation: trains pulse at rates proportional to
velocity (stopped=dim, slow=8-tick, medium=4-tick, fast=2-tick)
- Add 561 Amtrak stations to the map with zoom-level filtering
- Station mode (s key): departure-board view showing trains
arriving/departing the selected station
- Fetch and decrypt station data from Amtrak's station API
53 tests passing, zero clippy warnings.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Terminal-based dashboard that decrypts and displays live Amtrak train
positions on a braille-rendered zoomable map with state boundaries and
route lines. Includes search/filter, jump-to-train, and per-station
delay status.
41 tests covering crypto, model parsing, viewport math, search, and
UI rendering via TestBackend.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Speed brightness was absolute (0-90 mph scale), making most trains
look similarly dim since they cluster in the 30-80 mph range. Now
velocity is normalized relative to the fastest active train:
factor = velocity / max_velocity_across_all_active_trains
So the fastest train on the map is always brightest, stopped trains
are always dimmest, and everything in between spreads across the
full brightness range. Makes speed differences visually obvious.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Route data re-fetched at 0.0005° tolerance (~50m) — 29k points,
lines stay continuous even at tight zoom
- State boundaries re-simplified at 0.002° for more detail
- Station zoom thresholds made more aggressive: level 5 at 30° width
(was 20°), level 6 at 15° (was 10°)
- Roads visible at all zoom levels (removed 30° gate)
- Minimum zoom limit: viewport can't go below 3.5° width (~250 miles)
to prevent zooming into emptiness
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
City labels were getting overwritten by braille-rendered map features
(station markers, route lines, train circles). Fixed with two changes:
1. Greedy collision detection: compute approximate bounding boxes for
each label in geo-coordinate space, sorted by population priority.
Skip labels that overlap any previously placed label, train marker,
or station marker. Uses AABB intersection testing.
2. Render city labels as the topmost layer (layer 12) so text characters
aren't overwritten by braille dots drawn in later layers.
Labels are placed offset-right of the city coordinate with collision-
aware spacing. Dense areas (like the NEC corridor) will show only the
highest-population cities that fit without overlap.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
New geodata layers from Natural Earth:
- Lakes (96KB) — Great Lakes, major reservoirs
- Urban areas (95KB) — metro area outlines
- Land polygons (225KB) — enhanced coastline detail
- Roads/highways (753KB) — major interstates, shown when zoomed
11-layer rendering stack with toggleable visibility:
1. Coastlines 2. Land 3. Lakes 4. Urban areas
5. Rivers 6. State boundaries 7. Roads (zoom-only)
8. City labels 9. Amtrak routes 10. Stations 11. Trains
Press 'l' to open layer panel, number keys toggle each layer.
65 tests passing.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Rivers from Natural Earth 50m rendered as subtle blue lines
- 142 cities with population-based progressive disclosure:
>2M at wide zoom, >30K when zoomed in tight
- Swap markers: stations are now small · dots, trains are ○ circles
(◉ when selected) — trains stand out, stations recede
- 7-layer rendering order: coastlines, rivers, state boundaries,
city labels, Amtrak routes, stations, trains
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Replace directional carets with clean • dot markers
- Speed maps to color intensity (stopped=muted, fast=vivid) instead
of distracting pulse animation
- Station markers: · -> ○ in brighter color, show station codes
when zoomed in (viewport < 25 degrees)
- Selected station uses ◉ in cyan
- Re-simplified route data at 0.002° tolerance (was 0.008°) — lines
now stay continuous when zoomed in
- Re-simplified state boundaries at 0.005° tolerance (was 0.02°)
- Show heading text in station departure board instead of carets
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Shrink sidebar from 30% to 18% for better map aspect ratio
- Replace cluttered train number labels with directional carets
(▲▶▼◀ etc.) — only show label on selected train as tooltip
- Speed-based animation: trains pulse at rates proportional to
velocity (stopped=dim, slow=8-tick, medium=4-tick, fast=2-tick)
- Add 561 Amtrak stations to the map with zoom-level filtering
- Station mode (s key): departure-board view showing trains
arriving/departing the selected station
- Fetch and decrypt station data from Amtrak's station API
53 tests passing, zero clippy warnings.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Terminal-based dashboard that decrypts and displays live Amtrak train
positions on a braille-rendered zoomable map with state boundaries and
route lines. Includes search/filter, jump-to-train, and per-station
delay status.
41 tests covering crypto, model parsing, viewport math, search, and
UI rendering via TestBackend.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>