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
* chore: upgrade kmpworkmanager engine to v2.3.8
* fix(ios, android): update workers to use the new WorkerEnvironment parameter signature from kmpworkmanager 2.3.8
* chore: bump version to 1.1.1 and finalize kmpworkmanager 2.3.8 upgrade
* fix(android): FlutterEngineManager.dispose() always resets isInitialized even when engine.destroy() throws
FlutterJNI detaches before onTrimMemory fires; engine.destroy() throws RuntimeException
which previously skipped engine=null and isInitialized=false, leaving the engine in a
broken state (isInitialized=true, methodChannel=null). Any DartWorker task after this
returned false immediately without executing the callback.
Fix: wrap engine?.destroy() in try-catch so cleanup fields always execute.
Also: accept rejectedOsPolicy for exact trigger test on Android 12+ without
SCHEDULE_EXACT_ALARM permission.
* chore: set version to 1.1.1 for pub.dev release
* ci: fix dart format and gen package meta dependency conflict
- Format lib/src/method_channel.dart, test/backoff_policy_test.dart,
test/unit/v1_1_1_feature_verification_test.dart to match Flutter 3.41.6
dart formatter (lines were too long in committed state)
- Override meta in gen pubspec_overrides.yaml so analyzer 12.x resolves
alongside Flutter-pinned meta 1.17.0 during CI dependency resolution
Copy file name to clipboardExpand all lines: CHANGELOG.md
+23-4Lines changed: 23 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,6 +7,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
8
8
---
9
9
10
+
## [1.1.1] - 2026-04-11
11
+
12
+
### Added
13
+
-**Token Refresh on 401**: `HttpRequestWorker` and `HttpSyncWorker` now support automatic token refresh when a 401 response is received. Configure via the new `tokenRefresh` field in worker config (or `TokenRefreshConfig` in the Dart API) with a refresh URL, optional request body, and a `responseKey` path to extract the new token (supports nested keys like `"json.access_token"`).
14
+
-**Response Validation Patterns**: `HttpRequestWorker` supports `successPattern` and `failurePattern` regex fields. A 200 response is marked as failure if `failurePattern` matches or `successPattern` does not match — useful for APIs that always return HTTP 200 but embed error status in the body.
15
+
-**`http_sync_test.dart`**: New integration test for `HttpSyncWorker` covering token refresh and request signing.
16
+
17
+
### Changed
18
+
-**KMPWorkManager iOS XCFramework**: Updated simulator slice from `ios-arm64-simulator` to `ios-arm64_x86_64-simulator` to support both Apple Silicon and Intel Simulator targets.
19
+
-**Upgraded to kmpworkmanager 2.3.9**: Fixes `InvalidForegroundServiceTypeException` crash on Android 16 (API 36) when using `isHeavyTask: true`. `KmpHeavyWorker` now specifies `FOREGROUND_SERVICE_TYPE_DATA_SYNC` on API 31+.
20
+
-**Upgraded Core Engine to `kmpworkmanager 2.3.8`**:
21
+
- Removed `enqueuePeriodicWorkDirect` workaround; periodic task scheduling is now correctly handled by the core engine.
22
+
- Resolves `TaskEventBus` drop events (Android), `AlarmManager` cancellation bugs (Android), iOS queue corruption vulnerabilities, and massively improves queue performance.
23
+
- Resolves SSRF URL path bypasses and exact alarm permission bugs on Android 12+.
24
+
-**Refactored Workers**: Updated all built-in and example workers to support the new `WorkerEnvironment` signature required by kmpworkmanager 2.3.8.
25
+
26
+
### Fixed
27
+
-**Android: `FlutterEngineManager` dispose broken under memory pressure** — `engine.destroy()` threw `RuntimeException` when called from `onTrimMemory`, leaving the engine in a broken state (`isInitialized=true`, `methodChannel=null`). Any `DartWorker` task scheduled after this silently failed. Fix: wrap `engine.destroy()` in try-catch so cleanup always runs.
28
+
-**Android: `pause` method not routed** — calling `pauseByTag()`, `pauseAll()`, or any pause operation on Android threw `MissingPluginException`. The `"pause"` case was missing from the method channel switch statement.
29
+
10
30
## [1.1.0] - 2026-04-05
11
31
12
32
### Added
@@ -52,7 +72,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
52
72
-**Documentation**: Updated multiple docstrings and README examples for API accuracy.
53
73
54
74
### Fixed (2026-04-05 — demo & example fixes)
55
-
56
75
-**Example: `isStarted` lifecycle event caused false "Task failed" toast** — All event listeners in the example app (`demo_scenarios_page`, `comprehensive_demo_page`, `file_system_demo_page`, `floating_metrics_overlay`, `advanced_metrics_overlay`, `bug_fix_demo_screen`) now guard with `if (event.isStarted) return` before processing completion state. Root cause: `TaskEvent.fromMap` defaults `success` to `false` when the key is absent; lifecycle events (`isStarted: true`) don't carry a `success` key, so every task start was incorrectly shown as a failure.
57
76
58
77
-**Example: `_demoPhotoBackup()` chain always failed** — Replaced `List.filled(1024, 0)` dummy bytes (invalid JPEG) with a 5-step chain: `HttpDownloadWorker` fetches a real JPEG from `httpbin.org/image/jpeg` before `ImageProcessWorker` runs.
@@ -818,7 +837,7 @@ Minor difference: CryptoWorker uses AES-CBC (Android) vs AES-GCM (iOS), both AES
818
837
819
838
### 🙏 **Acknowledgments**
820
839
821
-
Built on [kmpworkmanager v2.3.0](https://github.com/pablichjenkov/kmpworkmanager) for Kotlin Multiplatform.
840
+
Built on [kmpworkmanager v2.3.8](https://github.com/pablichjenkov/kmpworkmanager) for Kotlin Multiplatform.
822
841
823
842
---
824
843
@@ -832,7 +851,7 @@ Built on [kmpworkmanager v2.3.0](https://github.com/pablichjenkov/kmpworkmanager
832
851
833
852
---
834
853
835
-
**Latest Version:** 1.0.1
854
+
**Latest Version:** 1.1.1
836
855
**Status:** Production Ready - Stable release for all production apps
0 commit comments