You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Registers KSerializers once per ViewModel config so all plugins (debugger, queue, etc.) share them
Deprecations
ballast-repository — Marked deprecated. The MVI repository pattern is being phased out as it turned out to be a failed experiment.
ballast-schedules — Marked deprecated. Superseded by the new ballast-scheduler-* family of modules.
KillSwitch interceptor — Deprecated. Graceful shutdown is now a first-class API on BallastViewModel via AutoCloseable (close()) and SideJobScope.
API Changes
BallastEncoder / BallastDecoder — New unified serialization interfaces on the ViewModel config. Previously each plugin had its own serialization logic; now they all share one. ballast-kotlinx-serialization provides the implementation.
ballast-navigation — Added pathFormat() helper for sharing route definitions between Ktor client and server.
Documentation
The entire documentation system was overhauled — docs moved from an SSG/Orchid website into plain Markdown files living alongside the code:
docs/ is the new home for all Ballast documentation
Each module now has its own README.md co-located with the source code
Old Orchid/MkDocs build system and all generated pages removed
This commit was created on GitHub.com and signed with GitHub’s verified signature.
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.
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.
This commit was created on GitHub.com and signed with GitHub’s verified signature.
The key has expired.
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.
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