Skip to content

Releases: arkivanov/Decompose

1.0.0-alpha-01-native-compose

05 Aug 12:21
Compare
Choose a tag to compare
Pre-release

This is the same release as 1.0.0-alpha-01, but with Compose for iOS support:

Versions and dependencies

Kotlin: 1.7.0
Essenty: 0.5.2
JetBrains Compose: 1.2.0-alpha01-dev753

0.8.0

16 Jul 08:09
Compare
Choose a tag to compare

The new Child Stack

The Router and all its surroundings are now deprecated. There is new concept introduced - Child Stack. It is located in a separate package and doesn't conflict with Router. The main purpose of introducing Child Stack is to bring more flexibility and compile time safety. And also to allow the room for another kinds of routing in the future.

Please refer to the updated docs and #134 for more information.

Migration tips

// Before

interface Root {
    val routerState: Value<RouterState<*, Child>>
}

class RootComponent(componentContext: ComponentContext): ComponentContext by componentContext {
    private val router = router<Config, Child>(..., childFactory = ::child)
    override val routerState = router.state

    private fun foo() {
        router.push()
        router.pop()
    }
}

@Composable
fun RootContent(component: Root) {
    val routerState by component.routerState.observeAsState()
    Children(routerState = routerState, ...) {
        // ...
    }
}
// After

interface Root {
    val childStack: Value<ChildStack<*, Child>>
}

class RootComponent(componentContext: ComponentContext): ComponentContext by componentContext {
    private val navigation = StackNavigation<Config>()
    private val stack = childStack(source = navigation, ..., childFactory = ::child)
    override val childStack = stack

    private fun foo() {
        navigation.push()
        navigation.pop()
    }
}

@Composable
fun RootContent(component: Root) {
    val stack by component.childStack.observeAsState()
    Children(stack = stack, ...) {
        // ...
    }
}

Breaking changes

There are no breaking changes in this release, it should be both binary and source compatible.

Versions and dependencies

Kotlin: 1.6.10
Essenty: 0.2.2

extensions-compose-jetpack

Jetpack Compose: 1.1.1
Jetpack Compose Compiler: 1.1.1

extensions-compose-jetbrains

JetBrains Compose: 1.1.0

0.8.0-native-compose-02

16 Jul 09:18
061f4e3
Compare
Choose a tag to compare
Pre-release

This is the same release as 0.8.0, but with Compose for iOS support:

Versions and dependencies

Kotlin: 1.7.0
Essenty: 0.4.2
JetBrains Compose: 1.2.0-alpha01-dev745

0.7.0-native-compose-02

14 Jul 19:52
Compare
Choose a tag to compare
Pre-release
  • Updated Kotlin to 1.7.0, Compose to 1.2.0-alpha01-dev741, Essenty to 0.4.2, AGP to 7.2.0, Gradle to 7.4.2 (#141)

Versions and dependencies

Kotlin: 1.7.0
Essenty: 0.4.2
JetBrains Compose: 1.2.0-alpha01-dev745

0.7.0-native-compose-01

26 Jun 22:29
Compare
Choose a tag to compare
Pre-release

This is the same release as 0.7.0, but with the following changes:

  • extensions-compose-jetbrains supports additional targets: iosX64, iosArm64, macosX64 and macosArm64 (iosSimulatorArm64 is not yet supported, because Compose doesn't support it)
  • extensions-compose-jetpack module is removed

Versions and dependencies

Kotlin: 1.6.21
Essenty: 0.2.2
JetBrains Compose: 1.2.0-alpha01-dev716

0.7.0

26 Jun 22:08
Compare
Choose a tag to compare
  • Added onComplete callback to Router.popWhile(...) function (#104 by @Tommyten)
  • Added onComplete callback to Router.push(...), Router. replaceCurrent(...) and Router. bringToFront(...) functions (#128)
  • Added ensureNeverFrozen to MutableValue (#116)
  • Interfaces DefaultWebHistoryController.Window and DefaultWebHistoryController.History are marked internal (#127)
  • Fixed DefaultWebHistoryController not working on Chrome for iOS (#127)

Versions and dependencies

Kotlin: 1.6.10
Essenty: 0.2.2

extensions-compose-jetpack

Jetpack Compose: 1.1.1
Jetpack Compose Compiler: 1.1.1

extensions-compose-jetbrains

JetBrains Compose: 1.1.0

0.6.0-native-compose-01

02 May 10:01
Compare
Choose a tag to compare
Pre-release
  • Updated Compose to 1.2.0-alpha01-dev675 (#86)
  • Updated Kotlin to 1.6.21 (#89)

Versions and dependencies

Kotlin: 1.6.21
Essenty: 0.2.2

extensions-compose-jetbrains

JetBrains Compose: 1.2.0-alpha01-dev675

0.6.0-native-compose

24 Apr 23:47
Compare
Choose a tag to compare
0.6.0-native-compose Pre-release
Pre-release

This is the same release as 0.6.0, but with the following changes:

  • extensions-compose-jetbrains supports additional targets: iosX64, iosArm64, macosX64 and macosArm64 (iosSimulatorArm64 is not yet supported, because Compose doesn't support it)
  • extensions-compose-jetpack module is removed

The sample was updated with Compose for iOS - sample/app-darwin-compose.

Versions and dependencies

Kotlin: 1.6.20
Essenty: 0.2.2

extensions-compose-jetbrains

JetBrains Compose: 0.0.0-on-rebase-12-apr-2022-dev668

0.6.0

08 Apr 22:06
134b33c
Compare
Choose a tag to compare

Changes

  • Updated Compose animations API (different animations for different children, combining animators) (#53, #67)
  • Added onComplete callback to Router.navigate and Router.pop functions (#66)
  • Disabled interactions while animating Compose children (#58)
  • Tidied deprecated code (#64)

Versions and dependencies

Kotlin: 1.6.10
Essenty: 0.2.2

extensions-compose-jetpack

Jetpack Compose: 1.1.1
Jetpack Compose Compiler: 1.1.1

extensions-compose-jetbrains

JetBrains Compose: 1.1.0

Breaking changes

The Compose animations API is significantly changed. The main idea is to allow different animations for different children. Also it is now possible to combine animators using the + operator. This is both source and binary incompatible change. Please refer to the updated documentation.

The Router.navigate function got a second argument - the onComplete callback. The old Router.navigate function with one argument is now an extension function, for convenience. The Router.pop extension function got the onComplete callback as well. It doesn't throw an exception anymore in case when the back stack is empty. Instead, the onComplete callback is called with a result. This is both source and binary incompatible change. Please refer to the updated documentation.

All deprecated code with Level.ERROR is removed. All deprecations with Level.WARNING are promoted to Level.ERROR.

0.5.2

11 Mar 21:21
e353a46
Compare
Choose a tag to compare
  • Updated JetBrains Compose to 1.1.0 (#48)
  • Updated Jetpack Compose to 1.1.1 (#49)