Releases: stadiamaps/ferrostar
0.48.1
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
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
- Add support for Valhalla waypoint U-turn restrictions by @ianthetechie in #814
Dependency updates
- Bump serde_with from 3.16.1 to 3.17.0 in /common by @dependabot[bot] in #809
- Bump thiserror from 2.0.17 to 2.0.18 in /common by @dependabot[bot] in #811
- chore: remove std feature gates from thiserror derives (fixes #747) by @Praful0306 in #806
- [Android] Chunk of dependency upgrades by @ianthetechie in #802
- Remove deprecated Kotlin Android plugin (android.builtInKotlin=false) by @ianthetechie in #815
- Upgrade MapLibre SwiftUI DSL to 0.23.0 by @ianthetechie in #817
New Contributors
- @Praful0306 made their first contribution in #806
Full Changelog: 0.47.2...0.48.0
0.47.2
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
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
Enhancements
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
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
- Fix typos flagged by the December release by @ianthetechie in #766
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
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
minimumTimeBeforeRecalculationhas changed from aLongto akotlin.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
DistanceEntryAndSnappedExitConditionwith multi-step geometry accumulation by @devnull133 in #737 - [Android] Serialize more collection types by @ianthetechie in #749
Bug fixes
- [Android] fix: Allow course propagation with unknown bearing accuracy by @ianthetechie in #745
- [iOS] Fix "recaluclation" typo in FerrostarCore by @ianthetechie in #750
- [Bug] : Fix isMinimumTimeBeforeRecalcExceeded by @radityagumay in #755
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
- @radityagumay made their first contribution in #755
Full Changelog: 0.45.0...0.46.0
0.45.0
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
- [Core] Add support for GraphHopper by @karussell in #514
- [Core] Feat/common/step advance trip state by @Archdoog in #723
Bug Fixes
- [iOS] Fix device orientation-based dynamic layout by @ianthetechie in #736
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
- @karussell made their first contribution in #514
Full Changelog: 0.44.0...0.45.0
0.44.0
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
StepAdvanceConditiontrait definition has changed. If you implemented a condition on your own, you'll need to add the route deviation parameter to yourshould_advance_stepmethod. DistanceFromStepConditionhas a new required parameter that determines whether to advance when the user has deviated from the route.
Other breaking changes
- [iOS]
FerrostarWidgetProvider'supdatemethod now takes an additional parameter for the current spoken instruction.
Non-breaking highlights
WaypointAdvanceModehas a new enum variant and improved documentation.DistanceEntryAndSnappedExitis a new built-in step advance condition. See #722 for details and discussion.Waypointcan now accept arbitraryproperties. 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
DistanceEntryAndSnappedExitConditionby @devnull133 in #722 - [Core] Add arbitrary extended waypoint properties by @ianthetechie in #721
Bug fixes
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
- @devnull133 made their first contribution in #722
Full Changelog: 0.43.0...0.44.0
0.43.0
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
- @alvar-bolt made their first contribution in #697
Full Changelog: 0.42.0...0.43.0