Skip to content

Commit 920c80e

Browse files
enedclaude
andcommitted
docs: Update CHANGELOGs and READMEs for v0.8.0 release
- Add comprehensive v0.8.0 changelog entries for all packages - Document breaking changes: camelCase enums, native Map transfer - Add federated plugin architecture section to READMEs - Add badges to all README files (pub version, points, license, CI status) - Update platform-specific READMEs to be minimal and direct to main docs - Fix enum references from snake_case to camelCase in documentation - Document new features: isScheduledByUniqueName, integration tests - List all bug fixes and improvements in the release 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 7d67007 commit 920c80e

9 files changed

Lines changed: 153 additions & 27 deletions

File tree

README.md

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,31 @@
11
# Flutter Workmanager
22

33
[![pub package](https://img.shields.io/pub/v/workmanager.svg)](https://pub.dartlang.org/packages/workmanager)
4-
[![Build status](https://img.shields.io/cirrus/github/vrtdev/flutter_workmanager/master)](https://cirrus-ci.com/github/vrtdev/flutter_workmanager/)
5-
=======
4+
[![pub points](https://img.shields.io/pub/points/workmanager)](https://pub.dev/packages/workmanager/score)
5+
[![likes](https://img.shields.io/pub/likes/workmanager)](https://pub.dev/packages/workmanager/score)
6+
[![popularity](https://img.shields.io/pub/popularity/workmanager)](https://pub.dev/packages/workmanager/score)
7+
[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/fluttercommunity/flutter_workmanager/test.yml?branch=main&label=tests)](https://github.com/fluttercommunity/flutter_workmanager/actions)
8+
[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/fluttercommunity/flutter_workmanager/blob/main/LICENSE)
69

710
Flutter WorkManager is a wrapper around [Android's WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager), [iOS' performFetchWithCompletionHandler](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623125-application) and [iOS BGAppRefreshTask](https://developer.apple.com/documentation/backgroundtasks/bgapprefreshtask), effectively enabling headless execution of Dart code in the background.
811

9-
For iOS users, please watch this video on a general introduction to background processing: https://developer.apple.com/videos/play/wwdc2019/707 ( and old link for [Background execution demystified (WWDC 2020)](https://devstreaming-cdn.apple.com/videos/wwdc/2020/10063/3/2E1C3BA0-2643-4330-A5B2-3A9878453987/wwdc2020_10063_hd.mp4). All of the constraints discussed in the video also apply to this plugin.
12+
For iOS users, please watch this video on a general introduction to background processing: https://developer.apple.com/videos/play/wwdc2019/707. All of the constraints discussed in the video also apply to this plugin.
1013

1114
This is especially useful to run periodic tasks, such as fetching remote data on a regular basis.
1215

1316
> This plugin was featured in this [Medium blogpost](https://medium.com/vrt-digital-studio/flutter-workmanager-81e0cfbd6f6e)
1417
18+
## Federated Plugin Architecture
19+
20+
This plugin uses a federated architecture, which means that the main `workmanager` package provides the API, while platform-specific implementations are in separate packages:
21+
22+
- **workmanager**: The main package that provides the unified API
23+
- **workmanager_platform_interface**: The common platform interface
24+
- **workmanager_android**: Android-specific implementation
25+
- **workmanager_ios**: iOS-specific implementation
26+
27+
This architecture allows for better platform-specific optimizations and easier maintenance. When you add `workmanager` to your `pubspec.yaml`, the platform-specific packages are automatically included through the endorsed federated plugin system.
28+
1529
# Platform Setup
1630

1731
In order for background work to be scheduled correctly you should follow the Android and iOS setup first.
@@ -276,7 +290,7 @@ Workmanager().registerOneOffTask("1", "simpleTask", tag: "tag");
276290
## Existing Work Policy
277291

278292
Indicates the desired behaviour when the same task is scheduled more than once.
279-
The default is `KEEP`
293+
The default is `keep`
280294

281295
```dart
282296
Workmanager().registerOneOffTask("1", "simpleTask", existingWorkPolicy: ExistingWorkPolicy.append);

workmanager/CHANGELOG.md

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,40 @@
11
# 0.8.0
22

3+
## Major Architecture Changes
34
* **BREAKING**: Migrate to federated plugin architecture for better platform extensibility
45
* **BREAKING**: Platform-specific implementations moved to separate packages
56
* Create `workmanager_platform_interface` for shared platform interface
67
* Create `workmanager_android` package with Android WorkManager implementation
78
* Create `workmanager_ios` package with iOS BGTaskScheduler implementation
89
* Foundation for future macOS support using NSBackgroundActivityScheduler
9-
* Android: Fix v2 embedding import in BackgroundWorker by @jogapps (from PR #595)
10-
* Android: Fix documentation formatting and typo in BackgroundWorker by @jogapps (from PR #595)
11-
* iOS: Fix swapped constraints bug for requiresNetworkConnectivity and requiresExternalPower by @thegriffen (from PR #562)
10+
11+
## Breaking Changes
12+
* **BREAKING**: Enum values changed from snake_case to camelCase:
13+
* `NetworkType` values: `not_required``notRequired`, `not_roaming``notRoaming`, `metered``metered` (unchanged)
14+
* `OutOfQuotaPolicy` values: `run_as_non_expedited_work_request``runAsNonExpeditedWorkRequest`, `drop_work_request``dropWorkRequest`
15+
* **BREAKING**: Removed JSON serialization for inputData - now uses native Map transfer for better performance and type safety
16+
17+
## New Features
18+
* Android: Added `isScheduledByUniqueName` method to check if a periodic task is scheduled by its unique name (Android only)
19+
* Added comprehensive integration tests for better reliability
20+
21+
## Bug Fixes
22+
* iOS: Fixed `initialDelaySeconds` parameter handling - was previously ignored
23+
* Android: Fixed NullPointerException when `isInDebugMode` was not properly initialized
24+
* Fixed inputData type handling across platforms - now properly supports all primitive types and lists
25+
* iOS: Fixed compilation errors with Map handling
26+
* iOS: Fixed swapped constraints bug for requiresNetworkConnectivity and requiresExternalPower by @thegriffen (from PR #562)
27+
* Android: Fixed v2 embedding import in BackgroundWorker by @jogapps (from PR #595)
28+
29+
## Improvements
30+
* Updated to Flutter 3.32 and flutter_lints 6.0.0
31+
* Android: Updated target SDK to 35
32+
* Improved CI/CD with Android emulator caching for faster builds
33+
* Better error handling and type safety throughout the codebase
1234
* iOS: Add Privacy Manifest for App Store compliance by @navaronbracke (from PR #555)
1335
* iOS: Replace print statements with proper os_log for better logging
1436
* iOS: printScheduledTasks now returns String instead of void by @yarith28 (from PR #585)
37+
* Android: Fix documentation formatting and typo in BackgroundWorker by @jogapps (from PR #595)
1538

1639
# 0.7.0
1740

workmanager/README.md

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
# Flutter Workmanager
22

33
[![pub package](https://img.shields.io/pub/v/workmanager.svg)](https://pub.dartlang.org/packages/workmanager)
4-
[![Build status](https://img.shields.io/cirrus/github/vrtdev/flutter_workmanager/master)](https://cirrus-ci.com/github/vrtdev/flutter_workmanager/)
5-
=======
4+
[![pub points](https://img.shields.io/pub/points/workmanager)](https://pub.dev/packages/workmanager/score)
5+
[![likes](https://img.shields.io/pub/likes/workmanager)](https://pub.dev/packages/workmanager/score)
6+
[![popularity](https://img.shields.io/pub/popularity/workmanager)](https://pub.dev/packages/workmanager/score)
7+
[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/fluttercommunity/flutter_workmanager/test.yml?branch=main&label=tests)](https://github.com/fluttercommunity/flutter_workmanager/actions)
8+
[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/fluttercommunity/flutter_workmanager/blob/main/LICENSE)
69

710
Flutter WorkManager is a wrapper around [Android's WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager), [iOS' performFetchWithCompletionHandler](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623125-application) and [iOS BGAppRefreshTask](https://developer.apple.com/documentation/backgroundtasks/bgapprefreshtask), effectively enabling headless execution of Dart code in the background.
811

@@ -12,6 +15,17 @@ This is especially useful to run periodic tasks, such as fetching remote data on
1215

1316
> This plugin was featured in this [Medium blogpost](https://medium.com/vrt-digital-studio/flutter-workmanager-81e0cfbd6f6e)
1417
18+
## Federated Plugin Architecture
19+
20+
This plugin uses a federated architecture, which means that the main `workmanager` package provides the API, while platform-specific implementations are in separate packages:
21+
22+
- **workmanager**: The main package that provides the unified API
23+
- **workmanager_platform_interface**: The common platform interface
24+
- **workmanager_android**: Android-specific implementation
25+
- **workmanager_ios**: iOS-specific implementation
26+
27+
This architecture allows for better platform-specific optimizations and easier maintenance. When you add `workmanager` to your `pubspec.yaml`, the platform-specific packages are automatically included through the endorsed federated plugin system.
28+
1529
# Platform Setup
1630

1731
In order for background work to be scheduled correctly you should follow the Android and iOS setup first.
@@ -249,7 +263,7 @@ Workmanager().registerOneOffTask("1", "simpleTask", tag: "tag");
249263
## Existing Work Policy
250264

251265
Indicates the desired behaviour when the same task is scheduled more than once.
252-
The default is `KEEP`
266+
The default is `keep`
253267

254268
```dart
255269
Workmanager().registerOneOffTask("1", "simpleTask", existingWorkPolicy: ExistingWorkPolicy.append);

workmanager_android/CHANGELOG.md

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,32 @@
11
## 0.8.0
22

3+
### Initial Release
34
* **BREAKING**: Migrate to federated plugin architecture
45
* Initial release of the Android implementation
56
* Implement all `WorkmanagerPlatform` methods for Android
67
* Support for one-off and periodic tasks using WorkManager API
8+
* Migrate from `be.tramckrijte` to `dev.fluttercommunity` namespace
9+
10+
### Breaking Changes
11+
* **BREAKING**: Enum values changed from snake_case to camelCase:
12+
* `NetworkType` values: `not_required``notRequired`, `not_roaming``notRoaming`, `metered``metered` (unchanged)
13+
* `OutOfQuotaPolicy` values: `run_as_non_expedited_work_request``runAsNonExpeditedWorkRequest`, `drop_work_request``dropWorkRequest`
14+
* **BREAKING**: Removed JSON serialization for inputData - now uses native Map transfer
15+
16+
### New Features
17+
* Add `isScheduledByUniqueName` method to check if a periodic task is scheduled by its unique name
718
* Support for constraints: network type, battery not low, charging, device idle, storage not low
819
* Support for backoff policies: linear and exponential
9-
* Add `isScheduled` method to check if a periodic task is scheduled (Android only)
10-
* Migrate from `be.tramckrijte` to `dev.fluttercommunity` namespace
20+
* Added comprehensive integration tests
21+
22+
### Bug Fixes
23+
* Fixed NullPointerException when `isInDebugMode` was not properly initialized
24+
* Fixed inputData type handling - now properly supports all primitive types and lists
25+
* Fixed v2 embedding import in BackgroundWorker
26+
27+
### Improvements
28+
* Updated to Android target SDK 35
29+
* Updated Android dependencies to latest versions
30+
* Improved CI/CD with Android emulator caching
31+
* Better error handling and type safety
32+
* Fix documentation formatting and typo in BackgroundWorker

workmanager_android/README.md

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,22 @@
11
# workmanager_android
22

33
[![pub package](https://img.shields.io/pub/v/workmanager_android.svg)](https://pub.dartlang.org/packages/workmanager_android)
4+
[![pub points](https://img.shields.io/pub/points/workmanager_android)](https://pub.dev/packages/workmanager_android/score)
5+
[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/fluttercommunity/flutter_workmanager/blob/main/LICENSE)
46

57
The Android implementation of [`workmanager`][workmanager].
68

9+
## Description
10+
11+
This package provides the Android-specific implementation for the workmanager plugin, wrapping Android's WorkManager API to enable background task execution in Flutter applications.
12+
713
## Usage
814

915
This package is [endorsed][federated_plugin_docs], which means you can simply use `workmanager`
1016
normally. This package will be automatically included in your app when you do,
1117
so you do not need to add it to your `pubspec.yaml`.
1218

13-
However, if you `import` this plugin directly (instead of the generic `workmanager` plugin),
14-
you should add it to your `pubspec.yaml`:
19+
However, if you `import` this package directly, you should add it to your `pubspec.yaml`:
1520

1621
```yaml
1722
dependencies:
@@ -20,8 +25,7 @@ dependencies:
2025
2126
## Documentation
2227
23-
For detailed setup instructions, usage examples, and platform-specific information,
24-
please refer to the main [`workmanager`][workmanager] package documentation.
28+
For detailed setup instructions, usage examples, and API documentation, please refer to the main [`workmanager`][workmanager] package documentation.
2529

2630
[workmanager]: https://pub.dartlang.org/packages/workmanager
2731
[federated_plugin_docs]: https://flutter.dev/go/federated-plugins

workmanager_ios/CHANGELOG.md

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,32 @@
11
## 0.8.0
22

3+
### Initial Release
34
* **BREAKING**: Migrate to federated plugin architecture
45
* Initial release of the iOS implementation
56
* Implement all `WorkmanagerPlatform` methods for iOS
67
* Support for one-off tasks using BGTaskScheduler API
78
* Support for processing and refresh tasks
8-
* Fix optional `initialDelaySeconds` parameter handling
9+
* Migrate from `be.tramckrijte` to `dev.fluttercommunity` namespace
10+
11+
### Breaking Changes
12+
* **BREAKING**: Enum values changed from snake_case to camelCase:
13+
* `NetworkType` values: `not_required``notRequired`, `not_roaming``notRoaming`, `metered``metered` (unchanged)
14+
* **BREAKING**: Removed JSON serialization for inputData - now uses native Map transfer
15+
16+
### New Features
917
* Add debug notification helper for testing
1018
* Add thumbnail generator for background tasks
11-
* Migrate from `be.tramckrijte` to `dev.fluttercommunity` namespace
19+
* Added comprehensive integration tests
20+
21+
### Bug Fixes
22+
* Fixed `initialDelaySeconds` parameter handling - was previously ignored
23+
* Fixed compilation errors with Map handling
24+
* Fixed inputData type handling - now properly supports all primitive types and lists
25+
* Fixed swapped constraints bug for requiresNetworkConnectivity and requiresExternalPower
26+
27+
### Improvements
28+
* Updated to Flutter 3.32 requirements
29+
* Add Privacy Manifest for App Store compliance
30+
* Replace print statements with proper os_log for better logging
31+
* printScheduledTasks now returns String instead of void
32+
* Better error handling and type safety

workmanager_ios/README.md

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,22 @@
11
# workmanager_ios
22

33
[![pub package](https://img.shields.io/pub/v/workmanager_ios.svg)](https://pub.dartlang.org/packages/workmanager_ios)
4+
[![pub points](https://img.shields.io/pub/points/workmanager_ios)](https://pub.dev/packages/workmanager_ios/score)
5+
[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/fluttercommunity/flutter_workmanager/blob/main/LICENSE)
46

57
The iOS implementation of [`workmanager`][workmanager].
68

9+
## Description
10+
11+
This package provides the iOS-specific implementation for the workmanager plugin, supporting iOS background fetch and BGTaskScheduler APIs for background task execution in Flutter applications.
12+
713
## Usage
814

915
This package is [endorsed][federated_plugin_docs], which means you can simply use `workmanager`
1016
normally. This package will be automatically included in your app when you do,
1117
so you do not need to add it to your `pubspec.yaml`.
1218

13-
However, if you `import` this plugin directly (instead of the generic `workmanager` plugin),
14-
you should add it to your `pubspec.yaml`:
19+
However, if you `import` this package directly, you should add it to your `pubspec.yaml`:
1520

1621
```yaml
1722
dependencies:
@@ -20,8 +25,7 @@ dependencies:
2025
2126
## Documentation
2227
23-
For detailed setup instructions, usage examples, and platform-specific information,
24-
please refer to the main [`workmanager`][workmanager] package documentation.
28+
For detailed setup instructions, usage examples, and API documentation, please refer to the main [`workmanager`][workmanager] package documentation.
2529

2630
[workmanager]: https://pub.dartlang.org/packages/workmanager
2731
[federated_plugin_docs]: https://flutter.dev/go/federated-plugins
Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,23 @@
11
## 0.8.0
22

3+
### Initial Release
34
* **BREAKING**: Migrate to federated plugin architecture
45
* Initial release of the platform interface package
56
* Define `WorkmanagerPlatform` abstract class with all method signatures
67
* Define data classes: `WorkmanagerConfig`, `Constraints`, `BackoffPolicy`
7-
* Add comprehensive documentation for all public APIs
8+
9+
### Breaking Changes
10+
* **BREAKING**: Enum values changed from snake_case to camelCase:
11+
* `NetworkType` values: `not_required``notRequired`, `not_roaming``notRoaming`, `metered``metered` (unchanged)
12+
* `OutOfQuotaPolicy` values: `run_as_non_expedited_work_request``runAsNonExpeditedWorkRequest`, `drop_work_request``dropWorkRequest`
13+
* **BREAKING**: Removed JSON serialization for inputData - now uses native Map transfer
14+
15+
### Features
16+
* Add comprehensive documentation for all public APIs
17+
* Support for all constraint types: network, battery, charging, device idle, storage
18+
* Support for linear and exponential backoff policies
19+
* Type-safe data transfer between Dart and native platforms
20+
21+
### Improvements
22+
* Updated to Flutter 3.32 and flutter_lints 6.0.0
23+
* Better error handling and type safety throughout the interface
Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,36 @@
11
# workmanager_platform_interface
22

33
[![pub package](https://img.shields.io/pub/v/workmanager_platform_interface.svg)](https://pub.dartlang.org/packages/workmanager_platform_interface)
4+
[![pub points](https://img.shields.io/pub/points/workmanager_platform_interface)](https://pub.dev/packages/workmanager_platform_interface/score)
5+
[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/fluttercommunity/flutter_workmanager/blob/main/LICENSE)
46

57
A common platform interface for the [`workmanager`][workmanager] plugin.
68

7-
This interface allows platform-specific implementations of the `workmanager`
8-
plugin, as well as the plugin itself, to ensure they are supporting the
9-
same interface.
9+
## Description
10+
11+
This package provides the common platform interface for the workmanager plugin, defining the API contract that platform-specific implementations must follow. It ensures consistency across different platform implementations.
1012

1113
## Usage
1214

15+
This interface is only relevant for packages that implement `workmanager` for a specific platform. App developers should use the main [`workmanager`][workmanager] package instead.
16+
1317
To implement a new platform-specific implementation of `workmanager`, extend
1418
[`WorkmanagerPlatform`][platform_interface] with an implementation that performs the
1519
platform-specific behavior, and when you register your plugin, set the default
1620
`WorkmanagerPlatform` by calling
1721
`WorkmanagerPlatform.instance = MyWorkmanagerPlatform()`.
1822

19-
## Note on breaking changes
23+
## Note on Breaking Changes
2024

2125
Strongly prefer non-breaking changes (such as adding a method to the interface)
2226
over breaking changes for this package.
2327

2428
See https://flutter.dev/go/platform-interface-breaking-changes for a discussion
2529
on why a less-clean interface is preferable to a breaking change.
2630

31+
## Documentation
32+
33+
For detailed API documentation and usage examples, please refer to the main [`workmanager`][workmanager] package documentation.
34+
2735
[workmanager]: https://pub.dartlang.org/packages/workmanager
2836
[platform_interface]: lib/src/workmanager_platform_interface.dart

0 commit comments

Comments
 (0)