Skip to content

Releases: copper-leaf/ballast

4.2.1

18 May 15:08
3b060f2
Compare
Choose a tag to compare
  • 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 support wasmJs, because stable builds of Ktor Client don't support wasmJs yet.
    • :ballast-firebase-analytics and :ballast-firebase-crashlytics do not support any targets other than Android, thus these modules are not available on wasmJs. However, the more generic version of those modules, :ballast-analytics and :ballast-crash-reporting are supported on wasmJs.
    • All other Ballast modules do support wasmJs targets, including :ballast-navigation.
    • BrowserHashNavigationInterceptor and BrowserHistoryNavigationInterceptor are also ported to the wasmJs target, but a shared sourceset between js and wasmJs is not available. it must be configured separately in each target.
  • :ballast-navigation no longer depends on the ktor-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 the OneTimeWorkRequest.Builder. This can be used to apply constraints, mark the job as expedited, etc.

4.2.0

16 May 16:42
Compare
Choose a tag to compare
  • 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 support wasmJs, because stable builds of Ktor Client don't support wasmJs yet.
    • :ballast-firebase-analytics and :ballast-firebase-crashlytics do not support any targets other than Android, thus these modules are not available on wasmJs. However, the more generic version of those modules, :ballast-analytics and :ballast-crash-reporting are supported on wasmJs.
    • All other Ballast modules do support wasmJs targets, including :ballast-navigation.
  • :ballast-navigation no longer depends on the ktor-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 the OneTimeWorkRequest.Builder. This can be used to apply constraints, mark the job as expedited, etc.

4.1.0

14 Feb 20:02
Compare
Choose a tag to compare
  • Updates to Kotlin 1.9.22
  • Adds custom toString() implementations for many classes
  • ballast-navigation: Adds override of RoutingTable.fromEnum which accepts EnumEntries<T>
  • ballast-navigation: Adds override of BallastViewModelConfiguration.Builder.withRouter which accepts a deepLink URL
  • Adds ballast-schedules module, for sending Inputs at regularly-scheduled intervals.

4.0.0

05 Sep 22:40
d8d3791
Compare
Choose a tag to compare
  • 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

08 Jun 20:42
661f866
Compare
Choose a tag to compare
  • Fixes regression where awaitViewModelStart() never calls a terminal Flow operator and doesn't actually suspend.

3.0.1

14 May 05:03
72f24f7
Compare
Choose a tag to compare
  • Fixes regression in BallastSavedStateInterceptor

3.0.0

08 May 00:19
Compare
Choose a tag to compare
  • 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

10 Dec 01:32
Compare
Choose a tag to compare
  • 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

13 Oct 16:29
Compare
Choose a tag to compare
  • 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 a BallastNotification.UnhandledError.

2.1.0

29 Sep 18:49
Compare
Choose a tag to compare
  • Restores the Debugger UI in the Ballast Intellij Plugin
  • Removed deprecated AndroidViewModel.attachEventHandler() version that should have been removed in 2.0.0, adds new AndroidViewModel.runOnLifecycle() to combine attaching an eventHandler and observing states with 1 method