Releases: arkivanov/MVIKotlin
3.1.0
- New extensions for observing
Store
state changes (#68) - Added tvos target (#72)
- Do not throw if
Store
is already initialized (#73) - Fixed time travel dialogs on Windows (#70)
New Store.states extensions
There are new coroutine extensions to observe Store
state changes - Store.stateFlow: StateFlow
.
Also, Reaktive extension Store.state
now returns BehaviorObservable
, which is a subtype of Observable
and allows reading the current state.
See the update docs for more information.
Initializing an already initialized Store
Now Store.init
function doesn't throw an error when it's called multiple times, and just does nothing.
Versions and dependencies
Kotlin: 1.7.10
Essenty: 0.9.0
3.0.2
3.0.1
3.0.0
⚠️ This release is published without compatibility metadata variant - the IDE may flag MVIKotlin as unresolved if you are using Kotlin1.6.20
or above. This is fixed in v3.0.1.
What's new since v3.0.0-beta02
- Reordered DSL generics (#36)
- Replaced
getMainThreadId
stack trace with error message (#37) - Updated Kotlin to
1.7.1
, Gradle to7.4.2
, AGP to7.2.0
, Essenty to0.4.2
, coroutines to1.6.3
(#44, #46) - Added settings dialog to IDEA Time Travel Plugin (#41)
- The Time Travel desktop client app is now built on CI, artifacts are attached to releases (for Windows and Linux only, please build from sources for macOS) (62b76fc)
Release highlights since v2.0.4
- Experimental Store DSL - see the docs
- Used Essenty library, removed
Lifecycle
frommvikotlin
module, deprecatedkeepers
module - Late
Store
initialization (and ability to instantiate from background thread) - see the docs - Added Apple silicon targets
- Added Time Travel client app for desktop, removed the native one for macOS, improved the Time Travel protocol
- Added experimental Chrome DevTools extension for time travelling - see the docs
- Introduced
CoroutineExecutor
andCoroutineBootstrapper
, deprecatedSuspendExecutor
andSuspendBootstrapper
- Removed previously deprecated
InstanceKeeper
andStateKeeper
from themvikotlin
module, removed previously deprecatedmvikotlin-extensions-androidx
module - Allow duplicate store names in
TimeTravelController
.TimeTravelStoreFactory
now doesn't need the fallbackStoreFactory
- Renamed
Result
toMessage
inStore
- Renamed
handleIntent
andhandleAction
methods toexecuteIntent
andexecuteAction
respectively inExecutor
interface - Deprecated Android
TimeTravelView
- Refactored all samples
- Some bug fixes and improvements
3.0.0-beta02
3.0.0-beta01
- Added experimental Chrome DevTools extension for time travelling (#22, #24)
- Renamed the
isAutoInit
argument of theStoreFactory.create
methods toautoInit
(#26) - Deprecated Android
TimeTravelView
(#23) - Fixed a crash where a
Store
is created on a non-main thread with theTimeTravelStoreFactory
being used (#25)
Breaking changes
Deprecated Android TimeTravelView
The Android TimeTravelView is now deprecated. The existing time travel clients (the IntelliJ IDEA plugin and the standalone desktop client) cover all the use cases, and even more. If you really need to use the TimeTravelView
, please consider copy-pasting the code to your projects.
Renamed isAutoInit argument
The isAutoInit
argument of the StoreFactory.create
methods was renamed to autoInit
. If you don't supply it explicitly, then the source compatibility should not be broken.
3.0.0-alpha03
- Renamed
handleIntent
andhandleAction
methods toexecuteIntent
andexecuteAction
respectively inExecutor
interface (#12) - Renamed
Result
toMessage
inStore
(#15) - Updated Kotlin to 1.6.10 and coroutines to 1.6.0 (#16)
Breaking changes
This release address necessary API changes towards the upcoming 3.0.0
release.
Executor interface
In the Executor
interface the following methods were renamed:
handleIntent
->executeIntent
handleAction
->executeAction
This brakes binary compatibility, but should not break source compatibility unless you have custom Executor
interface implementations (like SuspendExecutor
).
Result is renamed to Message
Now the Executor
dispatches Messages
, and not Results
. The Reducer
now also process Messages
instead of Results
. You can read about the rationale in the corresponding issue: #6. This change also breaks the binary compatibility, the source compatibility should not be broken in most of the cases. Checkout the documentation for more information and updated samples.