Releases: copper-leaf/ballast
Releases · copper-leaf/ballast
4.2.1
- Increased Kotlin version to 1.9.23
- Increased Compose version to 1.6.1
- Updated other libraries to latest versions:
- Kotlinx.Coroutines -> 1.8.1
- Kotlinx.Serialization -> 1.6.3
- Ktor -> 2.3.11
- Added experimental WASM target, fixing Issue #54. Please note the
following limitations:
- Only
wasmJs
is supported.wasmWasi
target is not currently supported due to lack of support from kotlinx.coroutines :ballast-debugger-client
does not supportwasmJs
, because stable builds of Ktor Client don't supportwasmJs
yet.:ballast-firebase-analytics
and:ballast-firebase-crashlytics
do not support any targets other than Android, thus these modules are not available onwasmJs
. However, the more generic version of those modules,:ballast-analytics
and:ballast-crash-reporting
are supported onwasmJs
.- All other Ballast modules do support
wasmJs
targets, including:ballast-navigation
. BrowserHashNavigationInterceptor
andBrowserHistoryNavigationInterceptor
are also ported to thewasmJs
target, but a shared sourceset betweenjs
andwasmJs
is not available. it must be configured separately in each target.
- Only
:ballast-navigation
no longer depends on thektor-http
library. It was previously using this library for parsing URIs, but because that library includes a lot of extra stuff related to HTTP that wasn't needed in Ballast Navigation, it increased binary size considerably. URI parsing is now handled by eygraber/uri-kmp. This fixes Issue #35.- [ballast-schedules]: Slight improvement for using Android WorkManager with BallastScheduler. A new method has been
added,
SchedulerCallback.configureWorkRequest()
, which allows you to configure theOneTimeWorkRequest.Builder
. This can be used to apply constraints, mark the job as expedited, etc.
4.2.0
- Increased Kotlin version to 1.9.23
- Increased Compose version to 1.6.1
- Updated other libraries to latest versions:
- Kotlinx.Coroutines -> 1.8.1
- Kotlinx.Serialization -> 1.6.3
- Ktor -> 2.3.11
- Added experimental WASM target, fixing Issue #54. Please note the
following limitations:
- Only
wasmJs
is supported.wasmWasi
target is not currently supported due to lack of support from kotlinx.coroutines :ballast-debugger-client
does not supportwasmJs
, because stable builds of Ktor Client don't supportwasmJs
yet.:ballast-firebase-analytics
and:ballast-firebase-crashlytics
do not support any targets other than Android, thus these modules are not available onwasmJs
. However, the more generic version of those modules,:ballast-analytics
and:ballast-crash-reporting
are supported onwasmJs
.- All other Ballast modules do support
wasmJs
targets, including:ballast-navigation
.
- Only
:ballast-navigation
no longer depends on thektor-http
library. It was previously using this library for parsing URIs, but because that library includes a lot of extra stuff related to HTTP that wasn't needed in Ballast Navigation, it increased binary size considerably. URI parsing is now handled by eygraber/uri-kmp. This fixes Issue #35.- [ballast-schedules]: Slight improvement for using Android WorkManager with BallastScheduler. A new method has been
added,
SchedulerCallback.configureWorkRequest()
, which allows you to configure theOneTimeWorkRequest.Builder
. This can be used to apply constraints, mark the job as expedited, etc.
4.1.0
- Updates to Kotlin 1.9.22
- Adds custom
toString()
implementations for many classes ballast-navigation
: Adds override ofRoutingTable.fromEnum
which acceptsEnumEntries<T>
ballast-navigation
: Adds override ofBallastViewModelConfiguration.Builder.withRouter
which accepts a deepLink URL- Adds
ballast-schedules
module, for sending Inputs at regularly-scheduled intervals.
4.0.0
- Updates to Kotlin 1.9.10
- The Debugger IntelliJ plugin now has functionality to send States and Inputs to connected ViewModels as JSON, which gets parsed and handled on the device.
- Several API improvements, including some breaking changes. See v4 Migration Guide for full list of changes and instructions for updating your project.
3.0.2
- Fixes regression where
awaitViewModelStart()
never calls a terminal Flow operator and doesn't actually suspend.
3.0.1
- Fixes regression in BallastSavedStateInterceptor
3.0.0
- Updates to Kotlin 1.8.20
- Drops support for deprecated KMPP targets:
- JS Legacy
- iosArm32
- Several API improvements, including some breaking changes. See v3 Migration Guide for full list of changes and instructions for updating your project.
2.3.0
- Adds new experimental
ballast-navigation
module for handling URL-based routing - Breaks examples into their own projects, to focus on Ballast itself instead of bogging it down with the overhead of
multiplatform architecture.
- examples/android uses Ballast purely within the older MVC-style Views, showing how the MVI pattern is not limited to Compose or declarative UI toolkits
- examples/desktop uses Ballast in a Compose Desktop application with Material UI. Most of what's in here could be directly translated into Android Compose with Material UI
- examples/web uses Ballast in a Compose/Web (DOM) application. In particular, it uses the hash-based Router interceptor, and is what is embedded into the documentation site
2.2.0
- Adds new experimental
ballast-sync
module for synchronizing ViewModel states. Out-of-the-box only in-memory synchronization is supported, but it is possible to write your own network adapter. - Adds new experimental
ballast-undo
module for adding State-based undo/redo functionality to any ViewModel. - Fixed an issue where exceptions thrown by an Interceptor would crash the entire ViewModel without logging the
exception. Now, those exceptions are caught and sent to the
BallastLogger
as aBallastNotification.UnhandledError
.
2.1.0
- Restores the Debugger UI in the Ballast Intellij Plugin
- Removed deprecated
AndroidViewModel.attachEventHandler()
version that should have been removed in 2.0.0, adds newAndroidViewModel.runOnLifecycle()
to combine attaching an eventHandler and observing states with 1 method