Skip to content

v1.0.8 — DartWorker iOS fix, path traversal hardening, Koin hot restart

Latest

Choose a tag to compare

@vietnguyentuan2019 vietnguyentuan2019 released this 07 Mar 05:04

What's Fixed

  • iOS: DartWorker works in debug / integration-test modeFlutterCallbackCache returns nil in JIT builds; fixed by routing through the existing main method channel instead of a secondary engine. All iOS integration tests now pass.
  • iOS: DartWorker callback input correctly decoded — input was wrapped as {'raw': '...'} instead of the actual decoded map; callbacks now receive {'key': 'value'} as expected.
  • iOS: False disk-space failure on small downloads — removed the fixed 50 MB constant from hasEnoughDiskSpace(); formula now matches Android: requiredBytes × 1.2.
  • iOS: Chain cancel handle stored before executionhandleEnqueueChain now stores the Task handle in activeTasks before starting, so cancel() finds it correctly.
  • iOS: Chain enqueue was blocking — returns "ACCEPTED" immediately; result delivered via EventChannel.
  • iOS: Data race on taskStartTimes — all reads/writes now use stateQueue with .barrier writes.
  • Android: Hot restart skipped Koin reloadisKoinInitialized now reset in onDetachedFromEngine().
  • Android: Path traversal hardened — replaced contains("..") with File.canonicalPath across all 7 workers.
  • Android: HttpDownloadWorker null body NPEresponse.body!! replaced with explicit null check.
  • Dart: TaskEvent null-safety — replaced unsafe casts with null-safe fallbacks.
  • Dart: TaskEvent.operator== ignored message — fixed equality to include message field.
  • README: API examples corrected — all 9 code sample inaccuracies fixed against the actual Dart API.

Version Alignment

pubspec.yaml, native_workmanager.podspec, and android/build.gradle all set to 1.0.8.

Full changelog