Releases: slackhq/circuit
0.21.1
0.21.0
- New: Add WASM targets.
- New: Add
FakeNavigator
functions to check for the lack of pop/resetRoot events. - New: Add
FakeNavigator
constructor param to add additional screens to the backstack. - New: Add support for static UIs. In some cases, a UI may not need a presenter to compute or manage its state. Examples of this include UIs that are stateless or can derive their state from a single static input or an input [Screen]'s properties. In these cases, make your screen implement the
StaticScreen
interface. When aStaticScreen
is used, Circuit will internally allow the UI to run on its own and won't connect it to a presenter if no presenter is provided. - New: Add
RecordLifecycle
andLocalRecordLifecycle
composition local, allowing UIs and presenters to observe when they are 'active'. Currently, a record is considered 'active' when it is the top record on the back stack. - New: Add a
rememberRetainedSaveable
variant that participates in bothRetainedStateRegistry
andSaveableStateRegistry
restoration, allowing layered state persistence.- The logic is the following upon
rememberRetainedSaveable
entering composition:- consume from both
RetainedStateRegistry
andSaveableStateRegistry
, if available - if the retained value is available, use that
- otherwise, if the saveable restored value is available, use that
- otherwise, re-initialize the value
- consume from both
- There is also an overload of
rememberRetained
that explicitly requires aSaver
parameter.
- The logic is the following upon
- Behaviour Change: Presenters are now 'paused' when inactive and replay their last emitted
CircuitUiState
when they are not active. Presenters can opt-out of this behavior by implementingNonPausablePresenter
. - Behaviour Change:
NavigatorImpl.goTo
no longer navigates if theScreen
is equal toNavigator.peek()
. - Behaviour Change:
Presenter.present
is now annotated with@ComposableTarget("presenter")
. This helps prevent use of Compose UI in the presentation logic as the compiler will emit a warning if you do. Note this does not appear in the IDE, so it's recommended to useallWarningsAsErrors
to fail the build on this event. - Behaviour Change: Guard against
Navigator.goTo()
calls to the same current screen. - Change:
Navigator.goTo
now returns a Bool indicating navigation success. - Change: Move iOS
GestureNavigationDecoration
impl tocommonMain
and rename toCupertinoGestureNavigationDecoration
. - Change: Target jvmTarget
1.8
in core libraries. - Fix: Fix saveable state being restored when using reset root navigation events.
- Deprecation:
FakeNavigator.assertIsEmpty
andexpectNoEvents
(use the specific event type methods instead) - Mark
Presenter.Factory
as@Stable
. - Mark
Ui.Factory
as@Stable
. - Mark
CircuitContext
as@Stable
. - Mark
EventListener
as@Stable
. - Mark
EventListener.Factory
as@Stable
. - [samples] Improve interop sample significantly.
- Update Kotlin to
1.9.24
. - Update KSP to
1.9.24-2.0.20
. - Update compose-compiler to
1.5.14
. - Update KotlinPoet to
1.17.0
. - Update androidx.lifecycle to
2.8.0
. - Update Molecule to
1.4.3
. - Update androidx.annotation to
1.8.0
. - Update kotlinx.coroutines to
1.8.1
. - Update Compose Multiplatform to
1.6.2
. - Update Compose UI to
1.6.7
. - Update Compose Runtime to
1.6.7
. - Update Compose Animation to
1.6.7
. - Update Compose Material to
1.6.7
. - Update androidx.core to
1.13.1
. - Update androidx.activity to
1.9.0
. - Update dagger to
2.51.1
. - Update uuid to
0.8.4
.
Special thanks to @chrisbanes, @alexvanyo, @eboudrant, @edenman, and @JustinBis for contributing to this release!
What's Changed
- Update retrofit to v2.10.0 by @slack-oss-bot in #1293
- Update agp to v8.3.1 by @slack-oss-bot in #1292
- Update dependency com.benasher44:uuid to v0.8.4 by @slack-oss-bot in #1294
- Update dependency androidx.compose:compose-bom to v2024.03.00 by @slack-oss-bot in #1302
- Update dependency androidx.compose.foundation:foundation to v1.6.4 by @slack-oss-bot in #1301
- Update compose.ui to v1.6.4 by @slack-oss-bot in #1298
- Update dependency androidx.compose.animation:animation to v1.6.4 by @slack-oss-bot in #1299
- Update compose.runtime to v1.6.4 by @slack-oss-bot in #1297
- Update compose.material to v1.6.4 by @slack-oss-bot in #1296
- Update dependency mkdocs-material to v9.5.15 by @slack-oss-bot in #1303
- Update dependency gradle to v8.7 by @slack-oss-bot in #1304
- Update dependency androidx.compose.compiler:compiler to v1.5.11 by @slack-oss-bot in #1300
- Add WASM support by @ZacSweers in #1245
- Update dependency io.gitlab.arturbosch.detekt to v1.23.6 by @slack-oss-bot in #1306
- Update dependency me.saket.telephoto:zoomable-image-coil to v0.9.0 by @slack-oss-bot in #1308
- Revamp interop sample by @ZacSweers in #1193
- Update kct to v0.4.1 by @slack-oss-bot in #1307
- Update dependency com.github.ajalt.clikt:clikt to v4.3.0 by @slack-oss-bot in #1310
- Update molecule to v1.4.2 by @slack-oss-bot in #1309
- Update retrofit to v2.11.0 by @slack-oss-bot in #1311
- Update dependency org.robolectric:robolectric to v4.12 by @slack-oss-bot in #1314
- Update dagger to v2.51.1 by @slack-oss-bot in #1313
- Update dependency mkdocs-material to v9.5.17 by @slack-oss-bot in #1315
- Update dependency org.robolectric:robolectric to v4.12.1 by @slack-oss-bot in #1316
- Update compose.material to v1.6.5 by @slack-oss-bot in #1318
- Update compose.runtime to v1.6.5 by @slack-oss-bot in #1319
- Update compose.ui to v1.6.5 by @slack-oss-bot in #1320
- Update dependency androidx.compose.foundation:foundation to v1.6.5 by @slack-oss-bot in #1322
- Update dependency androidx.compose.animation:animation to v1.6.5 by @slack-oss-bot in #1321
- Update dependency androidx.datastore:datastore-preferences to v1.1.0-rc01 by @slack-oss-bot in #1323
- Update dependency androidx.compose:compose-bom to v2024.04.00 by @slack-oss-bot in #1324
- Update dependency fastlane to v2.220.0 by @slack-oss-bot in #1325
- Remember keys in rememberSaveableBackStack by @JustinBis in #1326
- Update ksp to v1.9.23-1.0.20 by @slack-oss-bot in #1327
- Update actionsdesk/lfs-warning action to v3.3 by @slack-oss-bot in #1328
- Update sqldelight to v2.0.2 by @slack-oss-bot in #1329
- Update ktor to v2.3.10 by @slack-oss-bot in #1332
- Update agp to v8.3.2 by @slack-oss-bot in #1333
- Update compose.jb to v1.6.2 by @slack-oss-bot in #1335
- Update roborazzi to v1.12.0 by @slack-oss-bot in #1336
- Update gradle/wrapper-validation-action action to v3 by @slack-oss-bot in #1337
- Navigator - Guard against a goTo to the current screen by @stagg in #1331
- Update dependency me.saket.telephoto:zoomable-image-coil to v0.10.0 by @slack-oss-bot in #1339
- Update dependency co.touchlab.skie to v0.6.3 by @slack-oss-bot in #1338
- Update dependency mkdocs-material to v9.5.18 by @slack-oss-bot in #1340
- Update dependency co.touchlab.skie to v0.6.4 by @slack-oss-bot in #1341
- Update benchmark to v1.2.4 by @slack-oss-bot in #1343
- Update compose.material to v1.6.6 by @slack-oss-bot in #1344
- Update compose.runtime to v1.6.6 by @slack-oss-bot in #1345
- Update dependency androidx.compose.animation:animation to v1.6.6 by @slack-oss-bot in #1347
- Update dependency androidx.compose.compiler:compiler to v1.5.12 by @slack-oss-bot in #1348
- Update dependency androidx.compose.foundation:foundation to v1.6.6 by @slack-oss-bot in #1349
- Update dependency androidx.compose:compose-bom to v2024.04.01 by @slack-oss-bot in #1350
- Update dependency androidx.datastore:datastore-preferences to v1.1.0 by @slack-oss-bot in #1351
- Update dependency com.willowtreeapps.assertk:assertk to v0.28.1 by @slack-oss-bot in https://github.com/slackhq/circuit/pu...
0.20.0
- New: Enable
RememberObserver
to work withrememberRetained
. - New: Add
Navigator.popRoot()
. extension (#1274) - Behavior change: Add a key to
CircuitContent
to keepUi
andPresenter
consistent. We already did this for presenters, this just makes it consistent for both. - [circuitx-android] Implement
ToastEffect
. - Fix: Fix
rememberImpressionNavigator()
not delegatingPopResult
. - Fix: Navigator - Pass
PopResult
toonRootPop()
. - Fix: Check
canRetainCheck
when savingRetainedStateRegistry
. - Enhancement: Improve error messaging when using assisted inject.
- Force
com.google.guava:listenablefuture
to1.0
to avoid conflicts with Guava. - Update compose-compiler to
1.5.10.1
. - Update coroutines to
1.8.0
. - Update to Compose Multiplatform
1.6.1
. - Update Android compose dependencies to
1.6.3
. - Update molecule to
1.4.1
. - Update dagger to
2.51
. - Update turbine to
1.1.0
. - Update uuid to
0.8.3
. - Update kotlin to
1.9.23
. - Update KSP to
1.9.23-1.0.19
.
Special thanks to @chrisbanes, @aschulz90, and @alexvanyo for contributing to this release!
What's Changed
- Add maxConcurrentDevices property by @ZacSweers in #1206
- Update lint to 8.4 alphas by @ZacSweers in #1207
- Update plugin emulatorWtf to v0.16.2 by @slack-oss-bot in #1211
- Update kotlinx.coroutines to v1.8.0 by @slack-oss-bot in #1212
- Enable RememberObserver to work with rememberRetained by @chrisbanes in #1210
- Update dependency com.google.truth:truth to v1.4.1 by @slack-oss-bot in #1213
- Update dependency org.jetbrains.compose.compiler:compiler to v1.5.8.1 by @slack-oss-bot in #1214
- Update roborazzi to v1.10.0 by @slack-oss-bot in #1216
- Update dependency me.saket.telephoto:zoomable-image-coil to v0.8.0 by @slack-oss-bot in #1215
- Update roborazzi to v1.10.1 by @slack-oss-bot in #1218
- Update dependency mkdocs-material to v9.5.10 by @slack-oss-bot in #1217
- Link post on EventListener by @ZacSweers in #1221
- Implement ToastEffect by @ZacSweers in #1223
- Update dependency future to v1 by @slack-oss-bot in #1232
- Update dependency androidx.test.uiautomator:uiautomator to v2.3.0 by @slack-oss-bot in #1231
- Update dependency androidx.compose:compose-bom to v2024.02.01 by @slack-oss-bot in #1230
- Update dependency androidx.compose.foundation:foundation to v1.6.2 by @slack-oss-bot in #1229
- Update dependency androidx.compose.compiler:compiler to v1.5.10 by @slack-oss-bot in #1228
- Update compose.ui to v1.6.2 by @slack-oss-bot in #1226
- Update dependency androidx.compose.animation:animation to v1.6.2 by @slack-oss-bot in #1227
- Update compose.runtime to v1.6.2 by @slack-oss-bot in #1225
- Update compose.material to v1.6.2 by @slack-oss-bot in #1224
- Update coil to v2.6.0 by @slack-oss-bot in #1234
- Update dependency mkdocs-material to v9.5.11 by @slack-oss-bot in #1233
- Update to CM 1.6 by @ZacSweers in #1209
- Update dagger to v2.51 by @slack-oss-bot in #1235
- Update molecule to v1.4.0 by @slack-oss-bot in #1238
- Update dependency dev.chrisbanes.material3:material3-window-size-class-multiplatform to v0.5.0 by @slack-oss-bot in #1237
- Update dependency com.jakewharton.mosaic to v0.11.0 by @slack-oss-bot in #1236
- Update molecule to v1.4.1 by @slack-oss-bot in #1240
- Fix rememberImpressionNavigator() not delegating PopResult by @aschulz90 in #1244
- Update coil3 to v3.0.0-alpha05 by @slack-oss-bot in #1241
- Update coil3 to v3.0.0-alpha06 by @slack-oss-bot in #1248
- Update dependency app.cash.paparazzi to v1.3.3 by @slack-oss-bot in #1255
- Update dependency python-dateutil to v2.9.0.post0 by @slack-oss-bot in #1251
- Update dependency com.google.truth:truth to v1.4.2 by @slack-oss-bot in #1249
- Update dependency mkdocs-material to v9.5.12 by @slack-oss-bot in #1242
- Update agp to v8.3.0 by @slack-oss-bot in #1250
- Add a
key
to CircuitContent to keep UI and Presenter consistent by @stagg in #1254 - Improve error messaging when using assisted inject by @ZacSweers in #1246
- Navigator - Pass
PopResult
toonRootPop
by @stagg in #1256 - Update dependency pymdown-extensions to v10.7.1 by @slack-oss-bot in #1258
- Update dependency org.jetbrains.dokka to v1.9.20 by @slack-oss-bot in #1257
- Update ktor to v2.3.9 by @slack-oss-bot in #1259
- Update dependency mkdocs-material to v9.5.13 by @slack-oss-bot in #1261
- Update dependency androidx.datastore:datastore-preferences to v1.1.0-beta02 by @slack-oss-bot in #1269
- Update dependency androidx.browser:browser to v1.8.0 by @slack-oss-bot in #1271
- Update dependency androidx.compose:compose-bom to v2024.02.02 by @slack-oss-bot in #1268
- Update compose.material to v1.6.3 by @slack-oss-bot in #1262
- Update dependency androidx.compose.animation:animation to v1.6.3 by @slack-oss-bot in #1265
- Update compose.ui to v1.6.3 by @slack-oss-bot in #1264
- Update dependency androidx.compose.foundation:foundation to v1.6.3 by @slack-oss-bot in #1266
- Update compose.runtime to v1.6.3 by @slack-oss-bot in #1263
- Update dependency androidx.compose.material3:material3 to v1.2.1 by @slack-oss-bot in #1267
- Update dependency app.cash.turbine:turbine to v1.1.0 by @slack-oss-bot in #1273
- Navigator popRoot extension by @stagg in #1274
- Update dependency co.touchlab.skie to v0.6.2 by @slack-oss-bot in #1277
- Check canRetainCheck when saving RetainedStateRegistry by @chrisbanes in #1276
- Update kotlin and KSP to v1.9.23 by @slack-oss-bot in #1270
- Update dependency org.jetbrains.compose.compiler:compiler to v1.5.10 by @slack-oss-bot in #1275
- Make RememberObservers in nested registries work by @chrisbanes in #1281
- Navigator - Change popRoot to keep the top screen as the root screen by @stagg in #1283
- Update dependency org.jetbrains.compose.compiler:compiler to v1.5.10.1 by @slack-oss-bot in #1278
- Update okio to v3.9.0 by @slack-oss-bot in #1280
- Update dependency com.vanniktech.maven.publish to v0.28.0 by @slack-oss-bot in #1279
- Update compose.jb to v1.6.1 by @slack-oss-bot in #1284
- Update dependency Markdown to v3.6 by @slack-oss-bot in #1286
- Update dependency com.benasher44:uuid to v0.8.3 by @slack-oss-bot in #1287
- Update dependency mkdocs-material to v9.5.14 by @slack-oss-bot in #1290
- Update roborazzi to v1.11.0 by @slack-oss-bot in #1291
- Use alternate guava workaround to avoid listenablefuture:9999.0 version dependency by @alexvanyo in #1289
New Contributors
- @aschulz90 made their first contribution in #1244
Full Changelog: 0.19.1...0.20.0
0.19.1
This is a small bug fix release focused SaveableBackStack
consistency and FakeNavigator
API improvements.
- Fix
FakeNavigator.awaitNextScreen()
not suspending. - Fix
FakeNavigator.resetRoot()
not returning the actual popped screens. - Make
Navigator.peekBackStack()
andNavigator.resetRoot()
returnImmutableList
. - Make
BackStack.popUntil()
return theImmutableList
of the popped records. - Support
FakeNavigator.peekBackStack()
return theImmutableList
of the popped records. - Strongly pop events and resetRoot events in
FakeNavigator
. This should offer much more information about the events. - Use a real
BackStack
instance inFakeNavigator
+ allow for specifying a user-provided instance. - Require an initial root screen to construct
FakeNavigator
unless using a customBackStack
.- Note this slightly changes semantics, as now the root screen will not be recorded as the first
goTo
event.
- Note this slightly changes semantics, as now the root screen will not be recorded as the first
- Require an initial root screen (or list of screens) for
rememberSaveableBackStack()
. - Expose a top-level non-composable
Navigator()
factory function.
What's Changed
- Update dependency mkdocs-material to v9.5.9 by @slack-oss-bot in #1194
- Update okio to v3.8.0 by @slack-oss-bot in #1195
- Update dependency com.slack.eithernet:eithernet to v1.8.1 by @slack-oss-bot in #1198
- Significantly improve FakeNavigator + small API updates around it and Navigator by @ZacSweers in #1196
- Update baseline profiles by @slack-oss-bot in #1205
Full Changelog: 0.19.0...0.19.1
0.19.0
What's Changed
Navigation with results
This release introduces support for inter-screen navigation results. This is useful for scenarios where you want to pass data back to the previous screen after a navigation event, such as when a user selects an item from a list and you want to pass the selected item back to the previous screen.
var photoUrl by remember { mutableStateOf<String?>(null) }
val takePhotoNavigator = rememberAnsweringNavigator<TakePhotoScreen.Result>(navigator) { result ->
photoUrl = result.url
}
// Elsewhere
takePhotoNavigator.goTo(TakePhotoScreen)
// In TakePhotoScreen.kt
data object TakePhotoScreen : Screen {
@Parcelize
data class Result(val url: String) : PopResult
}
class TakePhotoPresenter {
@Composable fun present(): State {
// ...
navigator.pop(result = TakePhotoScreen.Result(newFilters))
}
}
See the new section in the navigation docs for more details, as well as updates to the Overlays docs that help explain when to use an Overlay
vs navigating to a Screen
with a result.
Support for multiple back stacks
This release introduces support for saving/restoring navigation state on root resets (aka multi back stack). This is useful for scenarios where you want to reset the back stack to a new root but still want to retain the previous back stack's state, such as an app UI that has a persistent bottom navigation bar with different back stacks for each tab.
This works by adding two new optional saveState
and restoreState
parameters to Navigator.resetRoot()
.
navigator.resetRoot(HomeNavTab1, saveState = true, restoreState = true)
// User navigates to a details screen
navigator.push(EntityDetails(id = foo))
// Later, user clicks on a bottom navigation item
navigator.resetRoot(HomeNavTab2, saveState = true, restoreState = true)
// Later, user switches back to the first navigation item
navigator.resetRoot(HomeNavTab1, saveState = true, restoreState = true)
// The existing back stack is restored, and EntityDetails(id = foo) will be top of
// the back stack
There are times when saving and restoring the back stack may not be appropriate, so use this feature only when it makes sense. A common example where it probably does not make sense is launching screens which define a UX flow which has a defined completion, such as onboarding.
New Tutorial!
On top of Circuit's existing docs, we've added a new tutorial to help you get started with Circuit. It's a step-by-step guide that walks you through building a simple inbox app using Circuit, intended to serve as a sort of small code lab that one could do in 1-2 hours. Check it out here.
Overlay Improvements
- New: Promote
AlertDialogOverlay
,BasicAlertDialogOverlay
, andBasicDialogOverlay
tocircuitx-overlay
. - New: Add
OverlayEffect
tocircuit-overlay
. This offers a simple composable effect to show an overlay and await a result.OverlayEffect(state) { host -> val result = host.show(AlertDialogOverlay(...)) // Do something with the result }
- Add
OverlayState
andLocalOverlayState
tocircuit-overlay
. This allows you to check the current overlay state (UNAVAILABLE
,HIDDEN
, orSHOWING
). - Mark
OverlayHost
as@ReadOnlyOverlayApi
to indicate that it's not intended for direct implementation by consumers. - Mark
Overlay
as@Stable
.
Misc
- Make
NavEvent.screen
public. - Change
Navigator.popUntil
to be exclusive. - Add
Navigator.peek()
to peek the top screen of the back stack. - Add
Navigator.peekBackStack()
to peek the top screen of the back stack. - Align spelling of back stack parameters across all APIs to
backStack
. - Refreshed iOS Counter sample using SPM and SKIE.
- Convert STAR sample to KMP. Starting with Android and Desktop.
- Fix baseline profiles packaging. Due to a bug in the baseline profile plugin, we were not packaging the baseline profiles in the artifacts. This is now fixed.
- Mark
BackStack.Record
as@Stable
. - Fix an infinite loop in the
onRootPop
of the AndroidrememberCircuitNavigator
. - Update the default decoration to better match the android 34 transitions.
- Update androidx.lifecycle to
2.7.0
. - Update to compose multiplatform to
1.5.12
. - Update to compose to
1.6.1
. - Update to compose-bom to
2024.02.00
. - Update compose-compiler to
1.5.9
. - Update AtomicFu to
0.23.2
. - Update Anvil to
2.4.9
. - Update KotlinPoet to
1.16.0
. - Compile against KSP
1.9.22-1.0.17
.
Special thanks to @milis92, @ChrisBanes, and @vulpeszerda for contributing to this release!
New Contributors
- @milis92 made their first contribution in #1116
- @vulpeszerda made their first contribution in #1160
Full Changelog: 0.18.2...0.19.0
0.18.2
- Fix: Fix lifetime of
Record
s'ViewModelStores
. This fully fixes #1065. - Update Molecule to
1.3.2
. - Update Jetbrains' compose-compiler to
1.5.7.1
.
Special thanks to @dandc87 for contributing to this release!
What's Changed
- Fall back to emulator runners on CI for external PRs by @ZacSweers in #1093
- Update dependency org.jetbrains.compose.compiler:compiler to v1.5.7 by @slack-oss-bot in #1084
- Introduce compose-lints by @ZacSweers in #1094
- Update dependency app.cash.molecule:molecule-runtime to v1.3.2 by @slack-oss-bot in #1095
- Update leakcanary to v2.13 by @slack-oss-bot in #1096
- Update agp to v8.2.1 by @slack-oss-bot in #1098
- Fix lifetime of Records' ViewModelStores by @dandc87 in #1097
Full Changelog: 0.18.1...0.18.2
0.18.1
Happy new year!
- Fix: Fix popped Record's
ProvidedValues
lifetime. See #1065 for more details. - Fix: Fix
GestureNavDecoration
dropping saveable/retained state on back gestures. See #1089 for more details.
Special thanks to @chrisbanes and @dandc87 for contributing to this release!
What's Changed
- Update dependency pymdown-extensions to v10.7 by @slack-oss-bot in #1087
- Fix popped Record's ProvidedValues lifetime by @dandc87 in #1086
- Merge copies of TestCountPresenter / Ui / Content to new shared module by @chrisbanes in #1088
- Fix GestureNavDecoration dropping saveable/retained state on back gestures by @chrisbanes in #1089
New Contributors
Full Changelog: 0.18.0...0.18.1
0.18.0
- New: Support animating an overlay out after returning a result with
AnimatedOverlay
. - Fix: Fix dropping back stack retained state on Android Activity rotations.
- Enhancement: Add ability to customize
ModalBottomSheet
appearance inBottomSheetOverlay
. - Update Kotlin to
1.9.22
. - Update KSP to
1.9.22-1.0.16
. - Update Dagger to
2.50
. - Update kotlinx-collections-immutable to
0.3.7
. - Update AndroidX Activity to
1.8.2
.
Special thanks to @chrisbanes, @chriswiesner, and @bryanstern for contributing to this release!
What's Changed
- Update dependency mkdocs-material to v9.5.0 by @slack-oss-bot in #1047
- Update dependency androidx.compose.compiler:compiler to v1.5.6 by @slack-oss-bot in #1045
- Update dependency mkdocs-material to v9.5.1 by @slack-oss-bot in #1049
- Update dependency mkdocs-material to v9.5.2 by @slack-oss-bot in #1050
- Update dependency com.autonomousapps.dependency-analysis to v1.28.0 by @slack-oss-bot in #1051
- Update androidx.activity to v1.8.2 by @slack-oss-bot in #1052
- Update dependency androidx.activity:activity-compose to v1.8.2 by @slack-oss-bot in #1053
- Update roborazzi to v1.7.0 by @slack-oss-bot in #1057
- Update dependency org.jetbrains.kotlinx:kotlinx-collections-immutable to v0.3.7 by @slack-oss-bot in #1060
- Update dependency androidx.annotation:annotation to v1.7.1 by @slack-oss-bot in #1054
- Update dependency androidx.test.uiautomator:uiautomator to v2.3.0-beta01 by @slack-oss-bot in #1055
- Update dependency com.squareup.okio:okio to v3.7.0 by @slack-oss-bot in #1061
- Update ksp to v1.9.21-1.0.16 by @slack-oss-bot in #1056
- Update actions/upload-artifact action to v4 by @slack-oss-bot in #1058
- Update okhttp monorepo to v5.0.0-alpha.12 by @slack-oss-bot in #1062
- Fix dropping back stack retained state on Android Activity rotations by @chrisbanes in #1063
- Update dependency androidx.compose.compiler:compiler to v1.5.7 by @slack-oss-bot in #1067
- Update dagger to v2.50 by @slack-oss-bot in #1068
- Update dependency com.google.truth:truth to v1.2.0 by @slack-oss-bot in #1069
- Add ability to customize ModalBottomSheet appearance in BottomSheetOverlay by @chriswiesner in #1059
- Update dependency com.vanniktech.maven.publish to v0.26.0 by @slack-oss-bot in #1070
- Migrate NavigableCircuitRetainedStateTest to Robolectric by @chrisbanes in #1071
- Run CI on macOS to cover iOS targets too by @ZacSweers in #1073
- Integrate emulator.wtf for instrumentation tests by @ZacSweers in #1072
- Tweak BackStackRecordLocalProvider to get it building on iOS again by @chrisbanes in #1076
- Update kotlin monorepo to v1.9.22 by @slack-oss-bot in #1078
- Support animating an overlay out after returning a result by @bryanstern in #1066
- Update dependency mkdocs-material to v9.5.3 by @slack-oss-bot in #1079
- Update dependency org.jline:jline to v3.25.0 by @slack-oss-bot in #1080
- Update dependency pymdown-extensions to v10.6 by @slack-oss-bot in #1083
- Update ksp to v1.9.22-1.0.16 by @slack-oss-bot in #1081
- Update dependency org.jsoup:jsoup to v1.17.2 by @slack-oss-bot in #1085
New Contributors
- @chriswiesner made their first contribution in #1059
Full Changelog: 0.17.1...0.18.0
0.17.1
- Enhancement: Commonize
SaveableStateRegistryBackStackRecordLocalProvider
to be supported across all currently supported platforms. - Fix: Fix
LocalBackStackRecordLocalProviders
always returning a new composition local. - Update
androidx.compose.compiler:compiler
to1.5.5
- Update KotlinPoet to
1.15.3
- Update Dagger to
2.49
Special thanks to @alexvanyo for contributing to this release.
What's Changed
- Update dependency tornado to v6.4 by @slack-oss-bot in #1026
- Update dependency androidx.datastore:datastore-preferences to v1.1.0-alpha07 by @slack-oss-bot in #1028
- Update dependency androidx.compose.compiler:compiler to v1.5.5 by @slack-oss-bot in #1027
- Update actions/setup-java action to v4 by @slack-oss-bot in #1030
- Update kotlinpoet to v1.15.2 by @slack-oss-bot in #1033
- Update dependency gradle to v8.5 by @slack-oss-bot in #1029
- Update agp to v8.2.0 by @slack-oss-bot in #1034
- Commonize SaveableStateRegistryBackStackRecordLocalProvider by @alexvanyo in #1037
- Update dagger to v2.49 by @slack-oss-bot in #1040
- Update benchmark to v1.2.2 by @slack-oss-bot in #1038
- Update sqldelight to v2.0.1 by @slack-oss-bot in #1039
- Update dependency termcolor to v2.4.0 by @slack-oss-bot in #1041
- Update dependency com.autonomousapps.dependency-analysis to v1.27.0 by @slack-oss-bot in #1042
- Update kotlinpoet to v1.15.3 by @slack-oss-bot in #1043
Full Changelog: 0.17.0...0.17.1
0.17.0
New: circuitx-effects artifact
The circuitx-effects artifact provides some effects for use with logging/analytics. These effects
are typically used in Circuit presenters for tracking impressions
and will run only once until
forgotten based on the current circuit-retained strategy.
dependencies {
implementation("com.slack.circuit:circuitx-effects:<version>")
}
Docs: https://slackhq.github.io/circuit/circuitx/#effects
New: Add codegen mode to support both Anvil and Hilt
Circuit's code gen artifact now supports generating for Hilt projects. See the docs for usage instructions: https://slackhq.github.io/circuit/code-gen/
Misc
- Decompose various
CircuitContent
internals likerememberPresenter()
,rememberUi
, etc for reuse. - Make
CircuitContent()
overload that accepts a pre-constructed presenter/ui parameters public to allow for more control over content. - [samples] Update README to include the interop sample.
- [samples] Various bugfixes to samples.
- [docs] Link sources in kdocs.
- [docs] Nest CircuitX artifacts in kdocs ToC.
- Update uuid to
0.8.2
. - Update KotlinPoet to
1.15.1
. - Update to Compose Multiplatform
1.5.11
. - Update to Kotlin
1.9.21
. - Update to KSP
1.9.21-1.0.15
. - Update to compose-compiler (multiplatform)
1.5.4
. - Update to Molecule
1.3.1
.
Special thanks to @jamiesanson, @frett, and @bryanstern for contributing to this release!
What's Changed
- Update dependency com.benasher44:uuid to v0.8.2 by @slack-oss-bot in #990
- Update dependency pymdown-extensions to v10.4 by @slack-oss-bot in #991
- Update dependency com.jakewharton.mosaic to v0.10.0 by @slack-oss-bot in #992
- Update androidx.activity to v1.8.1 by @slack-oss-bot in #994
- Update benchmark to v1.2.1 by @slack-oss-bot in #995
- Update dependency androidx.activity:activity-compose to v1.8.1 by @slack-oss-bot in #996
- Update dependency com.autonomousapps.dependency-analysis to v1.26.0 by @slack-oss-bot in #998
- Update dependency androidx.browser:browser to v1.7.0 by @slack-oss-bot in #997
- Update agp to v8.1.4 by @slack-oss-bot in #999
- Interop sample updates by @stagg in #1000
- Update dependency mkdocs-material to v9.4.9 by @slack-oss-bot in #1001
- Update dependency me.saket.telephoto:zoomable-image-coil to v0.7.1 by @slack-oss-bot in #1002
- Update dependency Pygments to v2.17.1 by @slack-oss-bot in #1003
- Update dependency mkdocs-material to v9.4.10 by @slack-oss-bot in #1005
- Link sources in kdocs by @ZacSweers in #1007
- Update dependency Pygments to v2.17.2 by @slack-oss-bot in #1009
- Update dependency mkdocs-material-extensions to v1.3.1 by @slack-oss-bot in #1010
- Update kotlinpoet to v1.15.1 by @slack-oss-bot in #1004
- Add codegen mode to support both Anvil and Hilt by @jamiesanson in #963
- Update dependency mkdocs-material to v9.4.11 by @slack-oss-bot in #1011
- Update dependency mkdocs-material to v9.4.12 by @slack-oss-bot in #1014
- Update compose.jb to v1.5.11 by @slack-oss-bot in #1013
- Update kotlin monorepo to v1.9.21 by @slack-oss-bot in #1012
- Update dependency org.jetbrains.compose.compiler:compiler to v1.5.4 by @slack-oss-bot in #1015
- Better name handling for nested projects in dokka by @ZacSweers in #1016
- Update dependency app.cash.molecule:molecule-runtime to v1.3.1 by @slack-oss-bot in #1017
- Update dependency pymdown-extensions to v10.5 by @slack-oss-bot in #1018
- Update dependency mkdocs-material to v9.4.14 by @slack-oss-bot in #1020
- Update dependency org.jsoup:jsoup to v1.17.1 by @slack-oss-bot in #1021
- Update dependency io.gitlab.arturbosch.detekt to v1.23.4 by @slack-oss-bot in #1019
- CircuitX - ImpressionEffect by @stagg in #1008
- Update dependency dev.zacsweers.moshix to v0.25.1 by @slack-oss-bot in #1022
- Update ksp to v1.9.21-1.0.15 by @slack-oss-bot in #1023
- Update CONTRIBUTING to add kdoctor installation requirement. by @waylon-brown in #1025
- Decompose out multiple circuit internals for reuse + publicize CircuitContent by @ZacSweers in #1024
New Contributors
- @jamiesanson made their first contribution in #963
- @waylon-brown made their first contribution in #1025
Full Changelog: 0.16.1...0.17.0