Change Log¶
Unreleased - TBD¶
Update dependencies¶
0.5.0 - Aug 17, 2024¶
Update dependencies¶
- KotlinX Coroutines
1.9.0-RC.2. - AndroidX Lifecycle
2.8.4. - AndroidX Compose Activity
1.9.1. - AndroidX Annotation
1.8.2.
Added¶
- StackValidationMode: Introduced a new sealed interface
StackValidationModeto handle different stack validation modes in the navigation stack. This interface includes three implementations:Strict: Ensures the stack is always in a valid state and throws an exception if it transitions to an invalid state.Lenient: Ensures the stack is always in a valid state but takes no action if it transitions to an invalid state.Warning: Ensures the stack is always in a valid state and logs a warning if it transitions to an invalid state.
- NavHost: Added a new parameter
stackValidationMode: StackValidationModeto theNavHostcomposable. Default value isStackValidationMode.Lenient.NavHost( startRoute = LoginScreenRoute, destinations = AllDestinations, navEventNavigator = navigator, destinationChangedCallback = { currentRoute = it }, stackValidationMode = StackValidationMode.Warning.Debug, // <--- Set the stack validation mode )
Fixed¶
Lifecycle*Effectcompletion is now idempotent (i.e., if theonStopOrDisposewas called because of the Lifecycle being stopped, it won’t be called a second time upon disposal unless the Lifecycle goes back up toSTARTEDagain).
0.4.0 - Jul 22, 2024¶
Update dependencies¶
- Kotlin
2.0.0🎉. - JetBrains Compose Multiplatform
1.6.11🎉. - KMP ViewModel
0.8.0🎉. - KotlinX Coroutines
1.9.0-RC. - AndroidX Lifecycle
2.8.3. - AndroidX Compose Activity
1.9.0. - AndroidX Annotation
1.8.0. - Benasher44 UUID
0.8.4.
0.3.0 - Mar 13, 2024¶
- Fix an issue where a wrong host
LifecycleOwnercan be used (#62). - Rework internal implementation and refactor code (#62).
- Handle
startRoutechanges properly (#62).
0.2.2 - Mar 9, 2024¶
Fixed¶
NavHost: handle the hostLifecycleOwnerproperly to avoid memory leaks (#61).
0.2.1 - Mar 8, 2024¶
Fixed¶
- Fix an issue where
SaveableStateHolderwould not be properly cleared when the destination is removed from the back stack after configuration changes on Android (#59).
0.2.0 - Mar 7, 2024¶
Update dependencies¶
Added¶
- New: Add support for Kotlin/Wasm (
wasmJstarget) 🎉. - New: Add
LenientLifecycleRegistry, aLifecycleRegistrywithout the state checking, and hasmoveTomethod to move to a specific state. This is a flexible version ofLifecycleRegistry. - New: Add
rememberWindowLifecycleOwner()for Desktop (JVM) platform. - New: Add
SavedStateSupport.ProvideCompositionLocalsandSavedStateSupport.ClearOnDisposefor non-Android platforms.
Fixed¶
- Fixed: an issue where
LocalLifecycleOwnerprovided the wrongLifecycleOwnerto the content ofNavHostcomposable.
Sample¶
- New:
Add Solivagant Wasm Sample.
You can open the web application by running
the
./gradlew :samples:solivagant-wasm-sample:wasmJsBrowserDevelopmentRunGradle task.
0.1.1 - Feb 25, 2024¶
Fixed¶
- Add workaround for issue JetBrains/compose-multiplatform #3147 - Kotlin/Native can’t use T::class in inline function of @Composable for iOS.
Example, docs and tests¶
-
Add Compose Multiplatform Todo solivagant Sample: A KMP template of the Todo App using Compose multiplatform for Android, Desktop, iOS and Web. Share everything including data, domain, presentation, and UI.
0.1.0 - Feb 19, 2024¶
Update dependencies¶
Added¶
- New: Add optional
transitionAnimationsparameter toNavHost@Composable functions. Animations can be overridden withNavHostDefaults.transitionAnimationsor disabled withNavHostTransitionAnimations.noAnimations. Default animations are the same as default animations in AndroidX’sNavHost.
Changed¶
-
Breaking: Add a
Modifierparameter tocontentofNavDestination:@InternalNavigationApi public sealed interface ContentDestination<T : BaseRoute> : NavDestination { // other members... public val content: @Composable (route: T, modifier: Modifier) -> Unit }This change effects
ScreenDestinationandOverlayDestinationas well. Themodifierparameter should be passed to thecontentofNavDestination(a.k.a the root@Composableof the destination), for example:@Immutable @Parcelize data class DetailScreenRoute(val id: String) : NavRoute @JvmField val DetailScreenDestination = ScreenDestination<DetailScreenRoute> { route, modifier -> DetailScreen(modifier = modifier, route = route) } @Composable internal fun DetailScreen(modifier: Modifier, route: DetailScreenRoute) { Scaffold( modifier = modifier, // <--- Pass the modifier to the root @Composable topBar = { /* ... */ }, ) { //* ... */ } }
0.0.1 - Feb 7, 2024¶
- Initial release of
solivagant🔆. Compose Multiplatform Navigation - 🌸 Pragmatic, type safety navigation for Compose Multiplatform. Based on Freeletics Khonshu Navigation. ♥️ ViewModel, SavedStateHandle, Lifecycle, Multi-Backstacks, and more…