Skip to content

Releases: arkivanov/MVIKotlin

3.1.0

20 Jan 18:40
63ad7c7
Compare
Choose a tag to compare
  • 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

18 Aug 23:02
Compare
Choose a tag to compare
  • Fixed InaccessibleObjectException in Time Travel client apps (JDK 17+) (#59)

3.0.1

18 Jul 14:28
62fceaa
Compare
Choose a tag to compare

3.0.0

13 Jul 21:35
Compare
Choose a tag to compare

⚠️ This release is published without compatibility metadata variant - the IDE may flag MVIKotlin as unresolved if you are using Kotlin 1.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 to 7.4.2, AGP to 7.2.0, Essenty to 0.4.2, coroutines to 1.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 from mvikotlin module, deprecated keepers 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 and CoroutineBootstrapper, deprecated SuspendExecutor and SuspendBootstrapper
  • Removed previously deprecated InstanceKeeper and StateKeeper from the mvikotlin module, removed previously deprecated mvikotlin-extensions-androidx module
  • Allow duplicate store names in TimeTravelController. TimeTravelStoreFactory now doesn't need the fallback StoreFactory
  • Renamed Result to Message in Store
  • Renamed handleIntent and handleAction methods to executeIntent and executeAction respectively in Executor interface
  • Deprecated Android TimeTravelView
  • Refactored all samples
  • Some bug fixes and improvements

3.0.0-beta02

30 Apr 21:51
Compare
Choose a tag to compare
  • Added experimental Store DSL (#30) - check out the updated docs
  • Removed ExperimentalCoroutinesApi annotations, because the used coroutines API is no longer experimental (#28)
  • Refactored all samples (#29)
  • Updated docs (#31, #32)

3.0.0-beta01

10 Feb 10:40
Compare
Choose a tag to compare
  • Added experimental Chrome DevTools extension for time travelling (#22, #24)
  • Renamed the isAutoInit argument of the StoreFactory.create methods to autoInit (#26)
  • Deprecated Android TimeTravelView (#23)
  • Fixed a crash where a Store is created on a non-main thread with the TimeTravelStoreFactory 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

27 Dec 23:59
3076579
Compare
Choose a tag to compare
  • Renamed handleIntent and handleAction methods to executeIntent and executeAction respectively in Executor interface (#12)
  • Renamed Result to Message in Store (#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.

3.0.0-alpha02

19 Dec 22:19
119cd06
Compare
Choose a tag to compare