Skip to content

Releases: stadiamaps/ferrostar

0.48.1

10 Mar 06:22

Choose a tag to compare

This release does not contain any significant changes; it is only necessary to fix the Android release CI.

Full Changelog: 0.48.0...0.48.1

0.48.0

10 Mar 03:41

Choose a tag to compare

Upgrade guide

This release is technically a breaking change in the public API per semver, but all existing Swift and Kotlin code should continue to compile. Refer to the updated guide for a explanation of the feature and sample code demonstrating usage.

The other notable change is that we have upgraded the Android dependencies. If you're building Ferrostar from source, you'll neet to use AGP 9. We've also started building with a more modern JDK and Kotlin version. These changes probably do not affect most users adding the package from Maven Central unless you're using a fairly old set of dependencies. This release also upgrades the Jetpack Compose BOM.

Enhancements

Dependency updates

New Contributors

Full Changelog: 0.47.2...0.48.0

0.47.2

25 Feb 06:36

Choose a tag to compare

This release adds a repository.url key in package.json to satisfy npm's pedantic trusted publishing setup.

This dos not contain any code changes from the previous release.

Full Changelog: 0.47.1...0.47.2

0.47.1

25 Feb 06:15

Choose a tag to compare

Fix for our release CI due to external automation breakage. This release contains no functionality changes.

Full Changelog: 0.47.0...0.47.1

0.47.0

24 Feb 13:52

Choose a tag to compare

Enhancements

  • feat: roundabout exit number, required for android auto by @Archdoog in #804

Dependency updates

  • Bump tar from 7.5.3 to 7.5.6 in /react-native in the npm_and_yarn group across 1 directory by @dependabot[bot] in #790
  • feat: swiftformat 0.59.1 by @Archdoog in #800
  • Bump insta from 1.43.2 to 1.46.2 in /common by @dependabot[bot] in #798
  • Bump bytes from 1.10.1 to 1.11.1 in /common in the cargo group across 1 directory by @dependabot[bot] in #801
  • Bump serde_json from 1.0.148 to 1.0.149 in /common by @dependabot[bot] in #794
  • Bump github.com/pointfreeco/swift-snapshot-testing from 1.18.7 to 1.18.9 by @dependabot[bot] in #795
  • Bump uuid from 1.18.1 to 1.20.0 in /common by @dependabot[bot] in #797
  • Bump tar from 7.5.6 to 7.5.7 in /react-native in the npm_and_yarn group across 1 directory by @dependabot[bot] in #792
  • Bump uniffi from 0.30.0 to 0.31.0 in /common by @dependabot[bot] in #796
  • Bump tar from 7.5.7 to 7.5.9 in /react-native in the npm_and_yarn group across 1 directory by @dependabot[bot] in #803

Full Changelog: 0.46.1...0.47.0

0.46.1

20 Jan 03:27

Choose a tag to compare

Upgrade guide

This release's primary change is upgrading the MapLibre SwiftUI DSL to the latest version. The previous release should have upgraded the dependency, since the default behavior of SPM is to install the latest version of a package that can be used given the version requirements. Until the SwiftUI DSL reaches 1.0, our policy is to track the latest release, and recent clean-up of some APIs there led to breakage in Ferrostar for some users.

This release should not contain result in breaking changes, unless you were relying on low-level access to the MapLibre map view and you were using an older version of the MapLibre SwiftUI DSL.

PRs merged

Bug fixes

Dependency upgrades

  • Bump serde_json from 1.0.145 to 1.0.148 in /common by @dependabot[bot] in #762
  • Bump github.com/maplibre/swiftui-dsl from 0.18.0 to 0.19.0 by @dependabot[bot] in #764
  • Bump node-forge from 1.3.1 to 1.3.3 in /react-native in the npm_and_yarn group across 1 directory by @dependabot[bot] in #757
  • Bump androidx.compose.ui:ui-test-junit4 from 1.8.3 to 1.10.0 in /android by @dependabot[bot] in #758
  • Bump wasm-bindgen-test from 0.3.55 to 0.3.56 in /common by @dependabot[bot] in #759
  • Bump log from 0.4.28 to 0.4.29 in /common by @dependabot[bot] in #760
  • Bump serde_with from 3.15.1 to 3.16.1 in /common by @dependabot[bot] in #761
  • Bump undici from 6.22.0 to 6.23.0 in /react-native in the npm_and_yarn group across 1 directory by @dependabot[bot] in #770
  • Bump tar from 7.5.2 to 7.5.3 in /react-native in the npm_and_yarn group across 1 directory by @dependabot[bot] in #771
  • Update MapLibreSwiftUI DSL to 0.21.1 by @ianthetechie in #788

Full Changelog: 0.46.0...0.46.1

0.46.0

19 Dec 06:11

Choose a tag to compare

Upgrade guide

Breaking changes

[Core] Route deviation now uses TripState internally

If you're simply using the Ferrostar SDK in your app, this change should not affect you.

We've made another round of improvements the logical framework for deciding when the user is off the route. This change concerns the data structures used, and do not affect most users of the Ferrostar SDK (e.g. if you're just consuming the public releases in your app). If you are deep in the Rust code though, this may cause some compiler errors.

This change gives the route deviation logic even more context, so we can all make better decisions. No information was removed; it just might be under a different key path.

Other breaking changes

We have a pair of breaking changes related to automatic rerouting "cooldown" behavior.

  • Fixed a typo (recaluclation -> recalculation) in the public Swift API.
  • The public property minimumTimeBeforeRecalculation has changed from a Long to a kotlin.time.Duration. This was always ambiguous, and now that Kotlin has had a stable cross-platform, cross-language Duration API, it was time to adopt that!

Both of these other changes may not necessarily break your project; you'll only notice (with a compile error) if you had explicitly set either of these properties.

Non-breaking highlights

  • @radityagumay identified & fixed a bug in Android affecting the route recalculation cooldown
  • The community continues improving on step advance logic, with some new changes landing this release from @devnull133
  • Costing options on Android can now accept more collection types (this was mistakenly not implemented previously; thanks to @bjtrounson for noticing this!)

PRs merged

Enhancements

  • [Core] Converted route deviation to trip state pattern by @Archdoog in #724
  • [Core] Fix/improve DistanceEntryAndSnappedExitCondition with multi-step geometry accumulation by @devnull133 in #737
  • [Android] Serialize more collection types by @ianthetechie in #749

Bug fixes

Dependency upgrades

  • [React Native] Bump the npm_and_yarn group across 3 directories with 1 update by @dependabot[bot] in #738
  • Bump js-yaml from 3.14.1 to 3.14.2 in /react-native in the npm_and_yarn group across 1 directory by @dependabot[bot] in #742

New Contributors

Full Changelog: 0.45.0...0.46.0

0.45.0

04 Nov 05:13

Choose a tag to compare

Upgrade guide

Breaking changes

Route providers

This release introduces a number of changes to the public convenience APIs for working with route providers. These changes were made to support the addition of GraphHopper, and to future-proof things when we inevitably add more backends.

Most visibly, the FerrostarCore convenience initializer arguments have changed. These used to have one variant per route provider (only Valhalla in this case, as made specific by the arguments), which would have caused an proliferation of essentially identical convenience constructors. We have unified this by introducing a WellKnownRouteProvider enum, which can be evolved with fewer breaking changes going forward. This also makes things more discoverable and autocomplete-friendly.

Here is an example diff in Kotlin.

      FerrostarCore(
-          valhallaEndpointURL = URL("https://api.stadiamaps.com/route/v1?api_key=YOUR-API-KEY"),
-          profile = "bicycle",
+          wellKnownRouteProvider = WellKnownRouteProvider.Valhalla("https://api.stadiamaps.com/route/v1?api_key=YOUR-API-KEY", "bicycle")

Refer to the demo apps for examples if you're struggling with your platform.

Similarly, the convenience function RouteAdapter::new_valhalla_http (mostly exposed as a camelCase initializer to platform SDKs) has been replaced with RouteAdapter::from_well_known_route_provider.

[Core] More Step Advance Changes

If you're simply using the Ferrostar SDK in your app, this change should not affect you.

We've made another round of improvements on step advance conditions. This is another trait modification, and is only relevant if you're implementing these on your own. This version replaces a few of the method arguments with the full TripState, giving you more flexibility.

Other breaking changes

  • The MSRV is now 1.88. This should not affect most users, but if you compile Ferrostar from source, you will need to make sure you're reasonably up to date.

Non-breaking highlights

  • Ferrostar now has support for GraphHopper as a routing backend!

PRs merged

Enhancements

Bug Fixes

Dependency Upgrades

  • Bump tar from 7.5.1 to 7.5.2 in /react-native in the npm_and_yarn group across 1 directory by @dependabot[bot] in #729
  • Bump kotlin from 2.2.0 to 2.2.21 in /android by @dependabot[bot] in #732
  • Upgrade geo and vite; bump MSRV to 1.88 by @ianthetechie in #726

New Contributors

Full Changelog: 0.44.0...0.45.0

0.44.0

28 Oct 04:03

Choose a tag to compare

Upgrade guide

Breaking changes

[Core] Step Advance

This release introduces a number of changes to the step advance system. This may require some changes to your code, depending on which APIs you used to configure step advance.

  • The StepAdvanceCondition trait definition has changed. If you implemented a condition on your own, you'll need to add the route deviation parameter to your should_advance_step method.
  • DistanceFromStepCondition has a new required parameter that determines whether to advance when the user has deviated from the route.

Other breaking changes

  • [iOS] FerrostarWidgetProvider's update method now takes an additional parameter for the current spoken instruction.

Non-breaking highlights

  • WaypointAdvanceMode has a new enum variant and improved documentation.
  • DistanceEntryAndSnappedExit is a new built-in step advance condition. See #722 for details and discussion.
  • Waypoint can now accept arbitrary properties. This enables you to leverage all properties supported by the routing engine. Valhalla-based routers (incl. Stadia Maps) provide a ton of flexibility, and you can access this in a type-safe manner! The Valhalla route provider documentation has more details and some example code: https://stadiamaps.github.io/ferrostar/route-providers.html#valhalla.
  • We added a new step advance condition: DistanceEntryAndSnappedExitCondition. See the discussion on #722 for details.

PRs merged

Enhancements

  • [Core] Add route deviation to step advance conditions for short circuit tooling by @Archdoog in #714
  • [iOS] Improvements to Dynamic Island in the iOS demo app by @Archdoog in #711
  • [Core] Separate waypoint advance and step advance behaviors from each other by @Archdoog in #716
  • [Core] "Speed run" step advance until we can't advance anymore by @ianthetechie in #715
  • [React Native] React Native Expo example by @bjtrounson in #718
  • [Core] Add DistanceEntryAndSnappedExitCondition by @devnull133 in #722
  • [Core] Add arbitrary extended waypoint properties by @ianthetechie in #721

Bug fixes

  • [iOS, Android] Fix deviation before arrive on demo app by @Archdoog in #712

Dependency Upgrades

  • [Android] Bump androidx.test.espresso:espresso-core from 3.6.1 to 3.7.0 in /android by @dependabot[bot] in #702
  • [Android] Bump androidx-lifecycle from 2.9.2 to 2.9.4 in /android by @dependabot[bot] in #703
  • [Core] Bump serde_json from 1.0.142 to 1.0.145 in /common by @dependabot[bot] in #704
  • [Core] Bump uuid from 1.17.0 to 1.18.1 in /common by @dependabot[bot] in #706
  • [iOS] Bump github.com/pointfreeco/swift-snapshot-testing from 1.18.6 to 1.18.7 by @dependabot[bot] in #708
  • [Core] Bump proptest from 1.7.0 to 1.8.0 in /common by @dependabot[bot] in #707
  • [Core] Bump log from 0.4.27 to 0.4.28 in /common by @dependabot[bot] in #709

New Contributors

Full Changelog: 0.43.0...0.44.0

0.43.0

30 Sep 05:11

Choose a tag to compare

What's Changed

  • Added dynamic island to guide summary by @Archdoog in #696
  • Allow for optional accuracy in Speed by @alvar-bolt in #697
  • Added NavigationSession and observers architecture (this enables observing navigation events from either platform layer code or Rust!) by @Archdoog in #698
  • Improved CarPlayNavigationView by @Archdoog in #699
  • Add navigation "caching" (ability to snapshot and resume; useful for handling things like CarPlay disconnects or Android killing your Activity and restarting later) by @Archdoog in #700

New Contributors

Full Changelog: 0.42.0...0.43.0