Skip to content

Roadstr v0.4.25

Choose a tag to compare

@roadstrapp roadstrapp released this 21 Aug 06:37
· 56 commits to main since this release

Roadstr 0.4.25

Fixes from real driving: a crash, a swinging map, voice timing, and a GPS
receiver that let go too eagerly.

Fixed

GPS dropped on every background switch, even a glance at a notification

Leaving the app — for any reason, not just switching away — released the
location receiver the instant the app left the foreground, whether or not
navigation was running. Coming back always meant reacquiring from nothing,
even after three seconds spent reading a notification. The receiver now
survives up to 30 seconds of actually being backgrounded before it is let
go, and the pending shutdown is cancelled outright on return — so a quick
glance away costs nothing, while a phone genuinely left in a pocket still
stops updating.

A crash while panning the map during navigation

Investigating turned up something bigger than the specific crash: the app
had no global error handler at all. Flutter's own build/layout/paint
cycle already keeps a bad frame from taking the whole app down, but
anything outside it — a gesture callback, a stream listener, an unawaited
Future — did not have that protection, and an exception there killed the
entire process instead of just the one thing that went wrong. A global
handler now catches, logs and swallows those instead of letting them
propagate. It won't retroactively explain the one crash that was reported,
but it means the next unexpected exception, whatever it turns out to be,
ends as a log line instead of a closed app.

The map still swung on turns sharper than 90°

An earlier release fixed the equivalent problem at roundabouts — the
nearest piece of route geometry isn't always the one the car is actually
on. Sharp turns kept swinging anyway, for a second, independent reason: once
a large disagreement between the raw GPS bearing and the route's own
direction was confirmed by a second fix, the heading snapped straight to
the route's exact line instead of easing into it. The raw bearing through
the turn was already noisy, since it's measured across two fixes taken on
either side of the corner — so the snap landed a second discontinuity right
on top of the first, which is what read as the map swinging just after the
turn completed. The confirmed correction is now eased in at the same rate
ordinary route-following uses, removing that second jump.

Voice guidance timing, two separate bugs

  • The final warning arrived too late at speed. The point-of-action cue
    — the one spoken right at the turn — capped its lead distance at 120
    metres no matter how fast the vehicle was going. At 120 km/h that is 3.6
    seconds: enough time to hear "take the exit," not enough to act on it.
    The distance now keeps scaling past 100 km/h instead of flattening there,
    reaching 260 metres — about six seconds — by 160 km/h.
  • Instructions ran on in dense junctions. An advance warning for the
    next turn used to queue behind whatever maneuver announcement was already
    playing, rather than being dropped. In a run of closely spaced junctions
    that meant hearing about a turn that was already behind the car by the
    time its announcement finally played. A newer cue now simply replaces a
    stale queued one; the point-of-action repeat still always interrupts
    immediately, since arriving late at a junction is worse than talking over
    the warning it replaces.

The hazard-report button changed sides

It sat on the left of the screen before navigation started and jumped to
the right the moment a trip began — the only control on screen that moved.
It now stays on the right in both states. Parking and route planning stay
on the left and pre-trip-only, since re-planning or checking a saved spot
mid-drive isn't something either is meant to support.

Verifying this release

sha256sum -c SHA256SUMS.txt

All four APKs are signed with the official Roadstr release key, carry
versionCode 34, and contain zero Google classes.