Skip to content

Releases: stadiamaps/ferrostar

0.39.0

08 Jul 03:40
Compare
Choose a tag to compare

Step Advance v2

The major feature for this release is a complete overhaul of the step advance logic. You now have a lot more flexibility, including the ability to compose step advance rules, and to track internal state.

This was a massive effort by @Archdoog, and will enable better handling of traffic light pauses, U-turns, and more. The full PR is here.

This includes several 🚨 breaking changes.

iOS and Android

iOS and Android users now have a set of convenience methods available to configure step advance. These are currently exposed as top-level functions (we're still exploring better options to make this more discoverable). You can find browse the documentation for these on docs.rs. All changes for iOS and Android users will be flagged via compilation errors, so there is no chance of unexpected behavior post-upgrade.

The demo apps for both have been updated with usage examples.

Web

Web users will have a few syntactic changes in how the step advance conditions are specified. Unfortunately, JavaScript does not have the same level of type safety as the mobile platforms, so you do need to carefully check your code or else you'll get an exception at runtime.

We've updated the example code to illustrate the most "complicated" step advance type, and you can check out the code here. The Rust documentation of the enum is currently still the best online reference.

Updates

  • Bump android_logger from 0.15.0 to 0.15.1 in /common by @dependabot in #627
  • Bump kotlinx-coroutines from 1.10.1 to 1.10.2 in /android by @dependabot in #623
  • iOS: Update DemoApp only to use Swift 6 by @bolsinga in #635
  • Updated dependencies including upgrade for kotlin.time by @Archdoog in #636
  • iOS: Update DemoApp CarPlay Support by @bolsinga in #638
  • Bump github.com/maplibre/swiftui-dsl from 0.12.0 to 0.14.0 by @dependabot in #626

Full Changelog: 0.38.0...0.39.0

0.38.0

05 Jul 06:00
Compare
Choose a tag to compare

iOS Demo App Enhancements

iOS Library Enhancements

Bug Fixes

  • Set the audio session mode to .voicePrompt by @ianthetechie in #613
  • enforced MainActor on DemoModel state & removed NavigationStack by @Archdoog in

Updates

GSoC

Full Changelog: 0.37.0...0.38.0

0.37.0

24 Jun 05:36
Compare
Choose a tag to compare

Audio ducking

We've enabled audio "ducking" in the default text-to-speech implementations for both iOS and Android. This will ensure that spoken instructions are clearly audible, and your music or other spoken word content either fades into the background or is temporarily stopped.

  • Duck audio from other apps when speaking voice instructions on iOS by @ianthetechie in #608
  • Duck audio from other apps when speaking voice instructions on Android by @ianthetechie in #610

GSoC 2025

Our Google Summer of Code contributor for 2025 is hard at work on enabling a "black box" recorder, which will be a powerful tool for developers working on polishing their apps and fixing bugs.

  • Define methods to record navigation sessions. by @Kandarp05 in #599
  • Change higher levels to use trait instead of concrete NavigationController by @Kandarp05 in #605

CarPlay support

We're busily working away on CarPlay support. The following PRs from @bolsinga probably won't show up in typical usage today, but stay tuned ;)

  • SpokenInstructionObserver does not need to be ObservableObject by @bolsinga in #597
  • Location is not used as ObservableObject by @bolsinga in #598
  • Associate VisualInstruction with CPManeuver by @bolsinga in #603
  • Associate Route with CPRouteChoice by @bolsinga in #604
  • update estimates via a TripProgress extension by @bolsinga in #606
  • encapsulate updating maneuver estimates via extension on CPNavigationSession by @bolsinga in #611

General maintenance

Full Changelog: 0.36.0...0.37.0

0.36.0

17 Jun 02:03
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: 0.35.1...0.36.0

0.35.1

10 Jun 05:28
Compare
Choose a tag to compare

Better pinning for cursed GitHub actions: softprops/action-gh-release#627

This should be identical to the last release (read the notes!) but fixes the release automation for iOS.

Full Changelog: 0.35.0...0.35.1

0.35.0

10 Jun 05:13
Compare
Choose a tag to compare

The main feature of this release is upgrading to MapLibre 11 for Android. We had a number of breaking changes in the early releases, but our testing indicates that as of version 11.9 the issues are now resolved. Please let us know if you have any issues during the upgrade!

Enhancements

  • Possibly Breaking: Upgrade to Maplibre 11.9 by @Archdoog in #589
  • Create CPManeuver via an extension on VisualInstruction. by @bolsinga in #566

Fixes

Updates

  • Implement ESLint in web by @Kandarp05 in #553
  • Remove unused properties from FerrostarCarPlayAdapter by @bolsinga in #554
  • Use CPMapSession.trip instead of holding another reference by @bolsinga in #555
  • Remove unused properties from CarPlayNavigationView by @bolsinga in #558
  • iOS Demo: Update MapLibre GL Native by @bolsinga in #560
  • FerrostarCore is non-Optional in the environment by @bolsinga in #559
  • Add FerrostarCore state to CarPlayNavigationView by @bolsinga in #561
  • Simplify CarPlaySceneDelegate by @bolsinga in #563
  • Remove IdleTemplate reference from Adapter by @bolsinga in #567
  • Do not need to reference UIVC in CP delegate by @bolsinga in #565
  • run latest swiftformat by @bolsinga in #571
  • FerrostarCarPlayAdapter sets up in its initializer by @bolsinga in #568
  • Use UISceneSession.userInfo to store FerrostarCarPlayManager by @bolsinga in #564
  • FerrostarCarPlayManager now has non-Optional FerrostarCarPlayAdapter by @bolsinga in #574
  • FerrostarCarPlayManager is not used as CPMapTemplateDelegate by @bolsinga in #572
  • FerrostarCarPlayManager no longer conforms to CPTemplateApplicationSceneDelegate by @bolsinga in #573
  • Refactor Adapter parts into Manager by @bolsinga in #575
  • Bump github.com/pointfreeco/swift-snapshot-testing from 1.18.3 to 1.18.4 by @dependabot in #584
  • Bump rstest from 0.24.0 to 0.25.0 in /common by @dependabot in #580
  • Bump @babel/runtime from 7.27.1 to 7.27.3 in /react-native in the npm_and_yarn group across 1 directory by @dependabot in #588
  • Bump uuid from 1.16.0 to 1.17.0 in /common by @dependabot in #577
  • Bump android_logger from 0.14.1 to 0.15.0 in /common by @dependabot in #579
  • Improve error handling in iOS Demo App. by @bolsinga in #576
  • Bump agp from 8.9.2 to 8.10.1 in /android by @dependabot in #582

Full Changelog: 0.34.1...0.35.0

0.34.1

13 May 02:38
Compare
Choose a tag to compare

What's Changed

  • Adds missing init for Speech on convenience inits by @Archdoog in #549
  • Use let for more SwiftUI view properties by @bolsinga in #550

Full Changelog: 0.34.0...0.34.1

0.34.0

12 May 04:04
Compare
Choose a tag to compare

Enhancements

  • [iOS] DemoApp: Clean up and simplification by @bolsinga in #543
  • [iOS] AppEnvironment is a global variable. by @bolsinga in #546
  • [Web] Make the geolocate control optional (so you can bring your own) by @tedi4t in #548
  • [iOS + Android] Show the user's precise location when off the route or outside an active navigation session by @Archdoog in #547

The changes to location display are notable because they are breaking changes for Android users. This used to be configurable to some extent via a setting, but this did not actually work as well as it should.

The changes in this release make things "just work" for most vehicular navigation use cases in a way that they did not before, switching smartly between a snapped location and the user's actual location. If you would like this to be configurable, please leave a comment on issue #209.

NOTE: Behavior is unchanged for the web, which uses MapLibre's location control and does not currently snap the user anyways.

In case you are implementing your own UI layer, the core models actually have NEW properties. We added a userLocation property to the TripState enum to reflect the user's current location without any snapping. This is available in all enum variants. It is however still a breaking change, since TripState::Idle and TripState::Complete previously did not contain any associated values.

Fixes

  • [iOS] Canceling navigation now informs the CarPlay template by @bolsinga in #540
  • [iOS] FerrorstarCore always creates and owns the SpokenInstructionObserver by @bolsinga in #541

Full Changelog: 0.33.0...0.34.0

0.33.0

02 May 06:40
Compare
Choose a tag to compare

Enhancements

Fixes

Updates

Full Changelog: 0.32.1...0.33.0

0.32.1

29 Apr 04:27
Compare
Choose a tag to compare

Fixes

  • Improve the display of the trip progress bar on narrow phone screens (web) by @tedi4t in #521

Enhancements

  • Use MapActivity to identify CarPlay MapViews for debugging by @bolsinga in #520

Updates

Full Changelog: 0.32.0...0.32.1