Releases: copper-leaf/ballast
Releases · copper-leaf/ballast
5.0.1
5.0.1 - 2025-12-15
- Replaced usages of
kotlinx.datetime.Clockwithkotlin.time.Clock - Replaced usages of
kotlinx.datetime.Instantwithkotlin.time.Instant - Ballast debugger client is now supported on WasmJS targets
- Kotlin updated to
2.2.20. - Compose updated to
1.8.2. - kotlinx-serialization updated to
1.9.0. - kotlinx-datetime updated to
0.7.1. - ktor client updated to
3.3.0.
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
wasmJsis supported.wasmWasitarget is not currently supported due to lack of support from kotlinx.coroutines :ballast-debugger-clientdoes not supportwasmJs, because stable builds of Ktor Client don't supportwasmJsyet.:ballast-firebase-analyticsand:ballast-firebase-crashlyticsdo not support any targets other than Android, thus these modules are not available onwasmJs. However, the more generic version of those modules,:ballast-analyticsand:ballast-crash-reportingare supported onwasmJs.- All other Ballast modules do support
wasmJstargets, including:ballast-navigation. BrowserHashNavigationInterceptorandBrowserHistoryNavigationInterceptorare also ported to thewasmJstarget, but a shared sourceset betweenjsandwasmJsis not available. it must be configured separately in each target.
- Only
:ballast-navigationno longer depends on thektor-httplibrary. 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
wasmJsis supported.wasmWasitarget is not currently supported due to lack of support from kotlinx.coroutines :ballast-debugger-clientdoes not supportwasmJs, because stable builds of Ktor Client don't supportwasmJsyet.:ballast-firebase-analyticsand:ballast-firebase-crashlyticsdo not support any targets other than Android, thus these modules are not available onwasmJs. However, the more generic version of those modules,:ballast-analyticsand:ballast-crash-reportingare supported onwasmJs.- All other Ballast modules do support
wasmJstargets, including:ballast-navigation.
- Only
:ballast-navigationno longer depends on thektor-httplibrary. 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.fromEnumwhich acceptsEnumEntries<T>ballast-navigation: Adds override ofBallastViewModelConfiguration.Builder.withRouterwhich accepts a deepLink URL- Adds
ballast-schedulesmodule, 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-navigationmodule 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-syncmodule 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-undomodule 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
BallastLoggeras aBallastNotification.UnhandledError.