Skip to content

Latest commit

 

History

History
207 lines (147 loc) · 8.05 KB

CHANGELOG.md

File metadata and controls

207 lines (147 loc) · 8.05 KB

Change Log

Update dependencies

0.5.0 - Aug 17, 2024

Update dependencies

Added

  • StackValidationMode: Introduced a new sealed interface StackValidationMode to 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: StackValidationMode to the NavHost composable. Default value is StackValidationMode.Lenient.

    NavHost(
      startRoute = LoginScreenRoute,
      destinations = AllDestinations,
      navEventNavigator = navigator,
      destinationChangedCallback = { currentRoute = it },
      stackValidationMode = StackValidationMode.Warning.Debug, // <--- Set the stack validation mode
    )

Fixed

  • Lifecycle*Effect completion is now idempotent (i.e., if the onStopOrDispose was called because of the Lifecycle being stopped, it won’t be called a second time upon disposal unless the Lifecycle goes back up to STARTED again).

0.4.0 - Jul 22, 2024

Update dependencies

0.3.0 - Mar 13, 2024

  • Fix an issue where a wrong host LifecycleOwner can be used (#62).
  • Rework internal implementation and refactor code (#62).
  • Handle startRoute changes properly (#62).

0.2.2 - Mar 9, 2024

Fixed

  • NavHost: handle the host LifecycleOwner properly to avoid memory leaks (#61).

0.2.1 - Mar 8, 2024

Fixed

  • Fix an issue where SaveableStateHolder would 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 (wasmJs target) 🎉.
  • New: Add LenientLifecycleRegistry, a LifecycleRegistry without the state checking, and has moveTo method to move to a specific state. This is a flexible version of LifecycleRegistry.
  • New: Add rememberWindowLifecycleOwner() for Desktop (JVM) platform.
  • New: Add SavedStateSupport.ProvideCompositionLocals and SavedStateSupport.ClearOnDispose for non-Android platforms.

Fixed

  • Fixed: an issue where LocalLifecycleOwner provided the wrong LifecycleOwner to the content of NavHost composable.

Sample

  • New: Add Solivagant Wasm Sample. You can open the web application by running the ./gradlew :samples:solivagant-wasm-sample:wasmJsBrowserDevelopmentRun Gradle task.

0.1.1 - Feb 25, 2024

Fixed

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 transitionAnimations parameter to NavHost @Composable functions. Animations can be overridden with NavHostDefaults.transitionAnimations or disabled with NavHostTransitionAnimations.noAnimations. Default animations are the same as default animations in AndroidX's NavHost.

Changed

  • Breaking: Add a Modifier parameter to content of NavDestination:

    @InternalNavigationApi
    public sealed interface ContentDestination<T : BaseRoute> : NavDestination {
      // other members...
      public val content: @Composable (route: T, modifier: Modifier) -> Unit
    }

    This change effects ScreenDestination and OverlayDestination as well. The modifier parameter should be passed to the content of NavDestination (a.k.a the root @Composable of 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