Breaking changes
- Android minimum API requirement is now 23, because Google forced us by upgrading it in activity-ktx.
🚀 New Features
Enforce must-use return value (#152).
If you enable compiler flag -Xreturn-value-checker=check, the IDE will warn you when you create a store/subscription/plugin and not use it.
- add lambda intent emit { } lambda overload
- improve return type in store.test { } with
SubscriptionAwareto test subscriptions. You can now accesssubscriberCountin tests. - Batch intent decorator now exposes
onUnhandledIntent. This is used when the intent is batched, but then was unhandled. This is likely a temporary solution to "catch" those intents, as due to intents being deferred, we can' use our regularonUndeliveredIntentfunctions. - implement new sample showcasing serialized state transactions
🐞 Bug Fixes
This update includes many important fixes for decorators and child stores.
- #173 ensure delegate unsubscribes child stores
- fix off-by-one in batch intents decorator
- harden decorator batching and timeouts
- treat batched intents as undelivered on stop
- call
onUndeliveredIntentcorrectly when buffer overflows - cancel coroutines launched in plugins during tests when harness block ends. This fixes "hanging" tests due to plugins launching coroutines.
- allow decorators to define handlers even if children don't specify a hook. this fixes skipped logic in decorators because the plugin didn't define a callback.
- synchronize batched intent flushing
❔ Other
- extend update_deps.sh to autobump docs
- Enhance documentation for updateState function (#169)
- Add Claude Code GitHub Workflow (#175)
- update config
- update deps: kotlin 2.2.21
- promote subscription aware APIs to stable
- add more tests for delegates
- let kotest run on more platforms since 6.0
- trim redundant tests
- expand decorator test coverage
- test coverage for conflate decorators
- validate batch queue flush
- enable return value checker and other flags
- change syntax of setOnce to be infix
- fix deprecations
- gradle 9.2
📚 Docs
add docusaurus-plugin-llms for AI-friendly documentation
-
Any docs page can now be used with an
.mdfile suffix tocurl -sSit to your agent. E.g: https://opensource.respawn.pro/FlowMVI/plugins/delegates.md -
Also published llms.txt and llms-full.txt :
-
clarify batch intents unhandled intent callback
New Contributors
- @dimagor555 made their first contribution in #169
Full Changelog: 3.2.0...3.2.1