Skip to content

Release v2.1.1: QA Hardening & Ecosystem - #4

Merged
vietnguyentuan2019 merged 4 commits into
mainfrom
review/qa-full-audit-sept-2026
Sep 5, 2026
Merged

vietnguyentuan2019 merged 4 commits into
mainfrom
review/qa-full-audit-sept-2026

Conversation

@vietnguyentuan2019

Copy link
Copy Markdown
Contributor

Changes

  • krelay-testing artifact for mock-free testing
  • krelay-bom integration
  • Binary Compatibility Validator
  • Professional templates and workflows
  • Bug fixes: Concurrency race conditions, missing overloads

…le, build config

Core engine:
- Fix Android SharedPreferences StringSet mutation bug (critical data loss)
- Fix TOCTOU race condition in reset() via atomic adapter capture
- Fix setPersistenceAdapter() thread-safety with lock.withLock
- O(1) queue eviction — removeAt(lastIndex) instead of linear search
- Binary insertion for priority queue (O(log N) vs O(N log N) re-sort)
- Add KRelay.removeInstance() API to prevent memory leaks in Super App
- Add per-instance scoped metrics (scopeName on KRelayMetrics)

iOS:
- Optimize NSUserDefaults.clearAll() from O(N) to O(K) via scope key index

Compose:
- Add vararg keys to KRelayEffect and rememberKRelayImpl for recomposition safety
- Add KRelayComposeTest instrumented tests

Build:
- Bump Decompose 3.2.0 -> 3.4.0-alpha03 (fix iOS Native Linker / SkikoKey crash)
- Restore kotlinSerialization plugin (required by Decompose @serializable nav state)
- Enable R8 minification for composeApp release builds
- Fix composeApp namespace to dev.brewkits.krelay.demo
- Tighten consumer-rules.pro (remove deleted class rules)
- Add kotlin.native.cacheKind=none (workaround Kotlin 2.1.0 NPE in CacheBuilderKt)
- Bump org.gradle.jvmargs to 8192M to prevent OOM on full iOS builds
- Remove dead template files (Greeting.kt, Platform.kt)

Docs:
- Update CHANGELOG.md with full 2.1.1 release notes
- Update COMPOSE_INTEGRATION.md to document vararg keys API
CI/CD:
- Add release.yml CD workflow triggered by v*.*.* tags
  - Validates tag matches build.gradle.kts version
  - Runs JVM + iOS tests + BCV apiCheck before publish
  - Creates GitHub Release with auto-extracted CHANGELOG notes
  - No continue-on-error in publish steps

Binary Compatibility Validator (BCV):
- Add org.jetbrains.kotlinx.binary-compatibility-validator 0.17.0
- Apply to :krelay and :krelay-compose modules
- apiCheck gates all PR and release builds

New modules:
- krelay-testing: FakeKRelayInstance, KRelayTestRule, executeLastDispatch
  with full assertion API (assertDispatched, assertDispatchCount, etc.)
- krelay-bom: Bill of Materials (java-platform) aligning all artifact versions

API fix (I-07):
- Add public reified KRelay.dispatchWithPriority<T>(ActionPriority) overloads
- Add reified KRelayInstance.dispatchWithPriority<T>(ActionPriority) extensions
  (both with and without scopeToken)

Community:
- Add .github/ISSUE_TEMPLATE/bug_report.yml
- Add .github/ISSUE_TEMPLATE/feature_request.yml
- Add .github/ISSUE_TEMPLATE/config.yml (disable blank issues)
- Add CONTRIBUTING.md (setup, test commands, commit conventions, PR process)
- Add SECURITY.md (responsible disclosure policy, supported versions)

Roadmap:
- Update ROADMAP.md: document v2.1.1 released items
- Update v2.2.0: Desktop/Wasm + krelay-flow adapter + dispatchPersistedSuspend
- Update v2.3.0: Observability / metrics reporter
@vietnguyentuan2019
vietnguyentuan2019 merged commit 4cb3d44 into main Sep 5, 2026
@vietnguyentuan2019
vietnguyentuan2019 deleted the review/qa-full-audit-sept-2026 branch September 5, 2026 09:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant