A cleaner planner, smarter cinematic, no more circle-back routing
A big rebuild of how the route planner decides what to show and what to enable. Side-trip selections work the way you'd expect now. The cinematic starts from your actual start point. And the iPhone zoom bar fits in landscape.
Side trips behave correctly now
If you selected the Florida Keys + the Miami side trip, the trip used to route through Miami twice — once on the way down the spine, once on the spur — producing a visible circle-back on the map and a wrong distance total. Fixed. The Miami spur is now a side trip off the Okeechobee waterway, where it always belonged geographically.
More broadly: side-trip availability, mutual exclusivity between routes, and the cascade rules for what each loop offers all moved from front-end code to a backend route-planner service. The user-visible result is that route selections behave more predictably — you can't accidentally pick mutually-exclusive routes, you can't accidentally end up with an empty mutex group, and side trips that aren't reachable from your selected spine are clearly blocked with an explanation.
Cinematic starts where you start
If your trip's Loop Start is mid-segment — say, you're starting in Stuart, Florida, partway down the Atlantic ICW — the cinematic animation now begins at Stuart, not at the top of the ICW segment.
Same for trips that start mid-spur or at coordinates you picked on the map. The animation walks the actual path you'll cruise, from where you'll cruise it.
Trip Waypoints in one modal
Setting your Loop Start and Current Location used to involve two different pickers in two different places. They're now one modal with three tabs: search a facility by name, pick on the map, or use your phone's location.
Asymmetric rules: Loop Start has to be on or near a route you've enabled (we don't want to start your trip in a parking lot). Current Location is more forgiving — within 25 miles of any enabled polyline is fine — because real boats stop in side coves we haven't mapped.
Map colors match the route picker
Each route option now has a color, and that color is what you see on the map. Toggling a route on or off updates the map in place. Side-trip colors win over spine colors at junctions so you can see at a glance what's selected.
Mobile zoom bar fits iPhone 17
The mobile zoom bar at the bottom of the planner was overflowing on iPhone 17 in landscape. We swapped the "Charts" text label for a Layers icon, swapped "+ New" text for a map-pin-plus icon, and dropped the direction toggle on mobile entirely (still on desktop). Remaining buttons are 15% bigger for fat-finger forgiveness.
Image uploads on feedback work again
If you submitted feedback with a screenshot between mid-April and last week, the image was silently dropping into a 403. That's restored — uploads now work across both the facility "Report a problem" path and the floating "?" feedback panel. We also added a warning banner in the admin notification when any image attempt failed, so we can spot it next time.