Skip to content

Releases: chRyNaN/navigation

Release 0.10.0 (12)

28 Jul 19:06
f48e6db
Compare
Choose a tag to compare

Warning


This release contains breaking API changes.

What's Changed

  • Fixed Back Navigation Issues + Misc Updates by @chRyNaN in #12
  • Changed the Navigation API
  • Added binary compatibility plugin
  • Updated Compose Multiplatform to version 1.5.0-beta01
  • Updated Kotlinx Coroutines to version 1.7.3
  • Added more native targets for the navigation-core module

API Changes

Fixing the back navigation issues introduced a new back operation. This change required renaming the goBack function and introducing another "goBack" function but for context changes. As these are essentially stack operations, I decided to rename the functions along the lines with expected stack functions, and change the forward navigation function names as well. The following chart breaks down the changes:

Old Name New Name
goTo push(destination)
changeContext push(context)
goBack popDestination
goBack popContext

There still exists goTo and changeContext functions, but those are deprecated. This is done to ease the transition to the new API.

Also, the Kotlin Binary Compatibility Plugin was added so that it is known when future breaking changes occur and makes it easier to limit any breaking changes. This will be helpful as this API becomes more stable and reaches a 1.0.0 release.

Full Changelog: 0.9.0...0.10.0

Release 0.9.0

12 Jul 17:33
Compare
Choose a tag to compare

Warning: This release contains Breaking API Changes.

What's Changed

  • Updated Compose Multiplatform dependency to version 1.4.1
  • Removed kotlinx.datetime dependency and replaced Instant usage in NavigationEvent with elapsed system milliseconds
  • Expose the kotlinx.serialization and com.chrynan.parcelable libraries as transitive dependencies
  • Fixed incorrect usage of default Parcelable object instead of parcelable parameter in rememberSavableNavigator functions
  • Fixed NavigationEvent serializer by manually implementing the serializers using a delegate to a snapshot wrapper class
  • Created DestinationAndContext wrapper class and updated the NavigationContainer composable function to use that class, removing all other NavigationContainer functions

Breaking Changes

Before there were two NavigationContainer composable functions: one that had a content closure parameter that received a single NavigationDestination value, and one that had a content closure parameter that received both NavigationDestination and NavigationContext values. This caused confusion and required explicitly declaring the parameters in the closure so that the type system knew which function was being used.

Now, there is only a single NavigationContainer composable function that has a content closure parameter which takes a single DestinationAndContext type:

NavigationContainer(navigator) { (destination, context) ->
}

As seen in the above example, even though there is only one DestinationAndContext type, we can make use of destructuring declarations to explicitly define the values as different variables.

Merged PRs

Fixed Issues

Full Changelog: 0.8.0...0.9.0

Release 0.8.0

23 May 21:55
Compare
Choose a tag to compare

Note: This release has breaking API changes.

What's Changed

  • Simplified navigation API
  • Minimum Android version lowered to 21
  • Updated Kotlin to version 1.8.20
  • Updated Compose Multiplatform to version 1.4.0
  • Updated other dependencies
  • Added iOS target for the navigation-compose module
  • Added thorough tests
  • Made Navigator serializable so that it can be saved between configuration changes and transferred between different components
  • Renamed NavContainer to NavigationContainer
  • Added more detailed documentation to the README file

New Contributors

  • @codlab made their first contribution in #1

Full Changelog: 0.6.0...0.8.0

Release 0.7.0 (9)

27 Feb 19:00
Compare
Choose a tag to compare
  • Resolved issue #2
  • Updated dependencies
  • Migrated to using the refreshVersions library

Full Changelog: 0.6.0...0.7.0

Release 0.6.0 (8)

08 Oct 15:06
Compare
Choose a tag to compare
  • Updated Kotlin to version 1.7.10 and compose-jb to version 1.2.0-beta02
  • Added iOS and JS support to the navigation-compose module
  • Added NavContainer with Modifier parameter to the common source set of the navigation-compose module

Full Changelog: 0.5.0...0.6.0

Release 0.5.0 (7)

20 Aug 17:41
Compare
Choose a tag to compare
  • New API for creating a Navigator and rendering the current content.
val navigator = rememberNavigator("Greeting")

NavContainer(navigator) { _, destination ->
    when (destination) {
        "Greeting" -> Text("Hello")
        "Farewell" -> Text("Good-bye")
        else -> Text("Unexpected Key: $key")
    }
}

navigator.goTo("Farewell")
  • Updated Kotlin to version 1.7.0
  • Updated compose-jb to version 1.2.0-alpha01-dev755
  • Updated other dependencies
  • Added ViewModel class and removed Saver

Full Changelog: 0.4.0...0.5.0

Release 0.4.0 (6)

04 Mar 03:47
Compare
Choose a tag to compare
  • Moved ExperimentalNavigationApi annotation to the navigation-core module
  • Updated NavigationEventHandler and NavigationEventNavigator to not have an upper bounds on NavigationIntent
  • Updated NavigationEvents generic type to not have an upper bound on NavigationIntent
  • Updated NavigationHandler onNavigate parameter name
  • Created StackNavigator interface and removed ComposeStackNavigator
  • Renamed NavStackDuplicateContentStrategy to StackDuplicateContentStrategy
  • Created StackNavigationHandler
  • Made NavigationEvent constructors internal
  • Added support for Compose Saver for key properties
  • Created NavigationContext interface
  • Converted ComposeScopeNavigator to ComposeContextNavigator
  • Added support for iOS Simulator Arm64 to the navigation-core module
  • Updated Kotlin to 1.6.10

Full Changelog: 0.3.0...0.4.0

Release 0.3.0 (5)

01 Jan 18:22
Compare
Choose a tag to compare
Release 0.3.0 (5)

Release 0.2.2 (4)

19 Dec 19:11
Compare
Choose a tag to compare
Release 0.2.2 (4)

Release 0.2.0 (2)

19 Dec 17:07
Compare
Choose a tag to compare
Release 0.2.0 (2)