Releases: grarcht/Shuttle
Releases · grarcht/Shuttle
Release list
v4.0.0 — 2026-05-17
Added
@ShuttleCargoannotation and a Kotlin compiler plugin that automatically injects theShuttleCargoData
serialization contract at compile time, removing the need to manually implementjava.io.Serializableon cargo classes.
Annotate a class with@ShuttleCargoand the plugin handles the rest:// Before class ProductModel(val id: String, val data: ByteArray) : java.io.Serializable // After @ShuttleCargo class ProductModel(val id: String, val data: ByteArray)
ShuttleCargoDatamarker interface as the public type bound for all cargo, replacing rawjava.io.Serializablein the public API- Bill of Materials (BOM) module to manage Shuttle dependency versions
- MVI with Compose demo module
- Kover code coverage configuration across framework modules
- GitHub Actions workflow that publishes API documentation to GitHub Pages via Dokka on every push to main
- Code of conduct
Changed
- Migrated all Gradle build files from Groovy to Kotlin DSL
- Migrated Dokka to v2
- Migrated from Material 2 to Material 3 in demo apps
- Updated Gradle plugin to version 9.1.0 and migrated to Gradle toolchain
- Enabled Gradle configuration cache
- Test coverage increased to 100% lines of code across the framework, persistence, and room extension modules
binderandipcServiceMessengerDecoratorinShuttleServiceare nowprotected, tightening encapsulation- Revamped README and contributing documentation
- Added API documentation link to README
Fixed
ShuttleRoomDao.getCargoByIdreturned a non-nullableShuttleRoomData, causing an NPE when no record exists in the database; return type corrected toShuttleRoomData?senderparameter was silently dropped inCargoShuttle.intentChooserCargoWith- Unsafe cast operations in
ShuttleBundleandShuttleNavControllerreplaced with safe fallbacks binderandipcServiceMessengerDecoratorinShuttleServicevisibility corrected frompublictoprotected- Yoda-style comparisons in
ShuttleRepositorycorrected to idiomatic Kotlin (null == x→x == null) - Window insets rendering in demo apps
Removed
enableJetifierproperty (no longer needed)
v3.0.3 — 2025-08-20
Changed
- dependency versions
- Gradle DSL updates for the Android Gradle Plugin in the build scripts
v3.0.2 — 2025-06-01
Changed
- dependency versions
- updated AGP to 8.10.1 and the Gradle Wrapper to 8.14.1
v3.0.1 — 2024-12-05
Added
- product flavors to the demo apps to control how the dependencies are referenced
Changed
- dependency versions
- updated AGP to 8.7.0 and the Gradle Wrapper to 8.11
Removed
- removed databinding
v3.0.0 — 2024-05-21
Added
- framework code to support Android services (remote and local):
ShuttleService,
LifecycleAwareShuttleServiceConnection,ShuttleServiceMessageValidator, and more. - mvvm-with-a-service demo module
- a cargo id parameter to the new states from version 2.1.0
- a test class for the message validator
Changed
- reverted an artifact versions to get the compose code to build
- brought back some databinding temporarily for the demos with the intention to remove it soon
- updated the documentation with Dokka
- updated the compile and target sdk version to 34
- code updates for issues reported by detekt
- organized import statements
- dependency declaration clean up
v2.1.0 — 2023-08-29
Added
- new states for the uninitialized
states:ShuttlePickupCargoResult.NotPickingUpCargoYet,
ShuttleRemoveCargoResult.NotRemovingCargoYet,
andShuttleStoreCargoResult.NotStoringCargoYetto help solutions usingStateFlowsto
have initial states for picking up, removing, or storing cargo data.
Changed
- Gradle to version 8.3
- other dependency artifact versions to newer versions
- Java versions for kotlin, source, etc, to target 17
- updated the compile and target sdk property names
- updated the compile and target sdk property versions
- updated the documentation with Dokka
- maven repository url ordering
- updated tests to reflect the state additions
- updated some of the scopes from MainScope to lifecycle and viewmodel
- R ids for incremental compilation speed improvements
Flowusage in demos to useStateFlow.
Removed
- databinding and the associated project module
- Dokka configuration for previous Dokka versions
v2.0.4 — 2023-02-26
Added
- suppression annotations for the
SwallowedExceptionwarnings - replacements for activity attributes to the Framework module's manifest file to remove warnings
Changed
- updated versions for many dependencies
- updated the
serialVersionUIDin theSerializableclasses - refactored the manifest package declaration to the namespace in the build.gradle files
- statements throwing
IllegalStateExceptionto useerror(message)
v2.0.3 — 2022-10-21
Changed
- dependency versions
- shuttle version references from build scripts
Removed
- an unnecessary unit test assertion
v2.0.2 — 2022-07-24
Added
- manifest opt-in for the new back press callback for SDK 33
Changed
- rolled back dependency versions to stable version
Removed
- the aar file classifier
v2.0.1 — 2022-07-23
- DON'T USE...USE 2.0.2 instead
Added
- the new back press callback for SDK version 33
- the new back press trigger for SDK version 33 to avoid the deprecated call
toactivity.onBackPressed().
Changed
- updated versions for many dependencies
- updated unit tests to remove redundant annotations
- updated unit tests to test the new back press handling
Removed
- Some nullability handling that is no longer needed since the objects cannot be null