Releases: badoo/MVIKotlin
3.0.0-alpha02
- Removed
isAutoInitByDefaultproperty fromStoreFactory(#298) - Added Apple silicon targets (#302)
- Allow duplicate store names in
TimeTravelController.TimeTravelStoreFactorynow doesn't needfallbackStoreFactory. (#299) - Setup Kotlin hierarchical project structure (HMPP) (#278 by @sellmair)
- Updated Kotlin to
1.5.30, coroutines to1.5.2and other dependencies (#282) - Fix wrong
adbpath selection in Time Travel plugin and client app (#281 by @ema987) - Add toolbar button tooltips in the Time Travel client app (#287 by @plusmobileapps)
- Time Travel documentation updates (#297 by @plusmobileapps)
3.0.0-alpha01
Storescan now be instantiated on a background thread (#217, #258, #263)- Used Essenty library, removed
Lifecyclefrommvikotlinmodule, deprecatedkeepersmodule - Removed previously deprecated
InstanceKeeperandStateKeeperfrom themvikotlinmodule, removed previously deprecatedmvikotlin-extensions-androidxmodule (#256) - Introduced
CoroutineExecutorandCoroutineBootstrapper, deprecatedSuspendExecutorandSuspendBootstrapper(#265) - Converted
CoroutineBootstrapperandCoroutineExecutorto non-suspend, exposedCoroutineScope(#268) - Added Time Travel client app for desktop, removed one for macOS, improved time travel protocol (#251, #269)
(#259) - Clean-up
enum StoreEventType(#270) - Updated documentation (#260, #262, #271)
Breaking changes
Please familiarise yourself with the updated documentation.
Essenty library
Lifecycle, StateKeeper, InstanceKeeper and related things were extracted to the Essenty library, and so MVIKotlin now depends on Essenty. Lifecycle was removed from mvikotlin module, the keepers module is now deprecated. This change makes MVIKotlin and Decompose compatible. It also allows developers to use Essenty library without any extra dependencies.
Coroutines interop
SuspendExecutor and SuspendBootstrapper were renamed to CoroutineExecutor and CoroutineBootstrapper respectively, via deprecation. CoroutineBootstrapper and CoroutineExecutor are now non-suspend, but exposing CoroutineScope. This enables synchronous processing of Intents and Actions by default, with explicit async tasks via the provided CoroutineScope.
Time travel
Introduced the new time travel client application for desktop, using Compose for Desktop. Removed the native version for macOS. The time travel protocol was significantly improved, it is now more optimal. Please make sure you updated the IDEA Plugin, if you are using it.
2.0.4
2.0.3
2.0.2
2.0.1
2.0.0
- Updated Kotlin to 1.4.10 (#162 by @bachlis)
- Fixed "ReferenceError: observer$ObjectLiteral is not defined" crash (#146 by @maxtox3)
- Changed order of
Lifecycle.Stateenum entries (#153) - Introduced
InstanceKeeperin thekeepersmodule, oldInstanceKeeperis deprecated (#156) - Introduced
StateKeeperin thekeepersmodule, oldStateKeeperis deprecated (#157) - Introduced AndroidX
Lifecycleextensions in themvikotlinmodule, oldLifecycleextensions are deprecated (#158) - Removed dependency on
com.badoo.reaktive:utils(#160) - Removed
vars fromLogginStoreFactory(#161)
Release notes
The mvikotlin-extensions-androidx module is now deprecated. New InstanceKeeper and StateKeeper API is available in the separate keepers module. AndroidX Lifecycle extensions are available directly in the mvikotlin module.
MVIKotlin does not depend on com.badoo.reaktive:utils anymore. So its Bintray repository definition can be removed, unless Reaktive is used in the project.
2.0.0-rc3
- Update Kotlin to 1.4.0 (#138)
- Make
BaseMviView.dispatch(Event)method publicc (#126) - Check for cancellation in coroutines binder (#128)
- Disable Main thread assert if the Main thread is unknown (#136)
- Remove
Lifecycle.Callbacksmethod bodies, introduceDefaultLifecycleCallbacksinterface (#139) - Fix
LifecycleRegistrycallback order when shutting down (#143)
2.0.0-rc2
- Refactored logging functionality (#97)
- Refactored
StateKeeperAPI - Added
InstanceKeeperAPI - Fixed file choosers not showing in IDEA time travel plugin (#102, #103, #105, #107)
Breaking changes
The StateKeeper API is refactored, here are some most important changes:
- removed the
StateKeeperContainerinterface and all its implementations; StateKeeper.state: Tproperty is replaced withStateKeeper.getState(): Tmethod;StateKeeper.register(...)method is replaced withStateKeeper.setSupplier(...)method;StateKeeperProvider.get(...): StateKeepermethod got additional argumentclazz: KClass;- removed
StateKeeperProvider.retainInstance(...)andStateKeeperProvider.retainStore(...)extension methods.
A new InstanceKeeper API is introduced for objects retention.
Both StateKeeper and InstanceKeeper APIs are annotated as experimental.
The androidx-lifecycle-interop module is renamed to mvikotlin-extensions-androidx and now contains all extensions for AndroidX. Its package is changed to com.arkivanov.mvikotlin.extensions.androidx.*.
Please refer to the updated documentation for more information.
2.0.0-rc1
- Support macOS target (#87)
- Added
StateKeeperProvider.retainStore(...)extension functions (#68) - MacOS time travel client app for iOS and macOS debugging (#89)
- Time travel export/import in IDEA plugin (#93)
- Sample JS app (#58 by @maxtox3)
- Time travel UI for sample JS app (#74 by @maxtox3)
- Unit and integration tests for sample shared code (#70)