Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ migrate_working_dir/
GEMINI.md
.gemini/
.gemini_security/
CLAUSE.md

# Claude Code
.claude/
Expand Down
3 changes: 3 additions & 0 deletions .pubignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
GEMINI.md
CLAUDE.md
CLAUSE.md
CONTRIBUTING.md
ROADMAP.md
.github/
Expand All @@ -10,4 +11,6 @@ benchmark/
scripts/
tool/
assets/
coverage/
test_results.txt
doc/internal/
40 changes: 0 additions & 40 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

---

---

## [1.2.5] - 2026-05-06

### Fixed
Expand Down Expand Up @@ -93,41 +91,3 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- **Global Middleware API**: Global interceptors for task configuration (Headers, RemoteConfig, Logging).
- **Code Generation Enhancements**: `native_workmanager_gen` now generates type-safe enqueue wrappers and automatic worker registries from `@WorkerCallback` annotations.
- **Task Graphs (DAG)**: Support for complex non-linear task dependencies on Android.

---

### ⚡ **Performance**

All workers maintain high performance with low resource usage:

| Worker | Memory Usage | Startup Time | Battery Impact |
|--------|-------------|--------------|----------------|
| HttpDownloadWorker | Low | Fast | Minimal |
| HttpUploadWorker | Low | Fast | Minimal |
| FileDecompressionWorker | Low | Fast | Minimal |
| CryptoWorker | Low | Fast | Minimal |

**Key:** Streaming I/O keeps memory low regardless of file size.

---

### 🙏 **Acknowledgments**

Built on [kmpworkmanager v2.4.3](https://github.com/brewkits/kmpworkmanager/releases/tag/v2.4.3) for Kotlin Multiplatform.

---

## Links

- [GitHub Repository](https://github.com/brewkits/native_workmanager)
- [Issue Tracker](https://github.com/brewkits/native_workmanager/issues)
- [Documentation](https://github.com/brewkits/native_workmanager#readme)
- [KMP WorkManager](https://github.com/brewkits/kmpworkmanager)
- [Migration Guide](doc/MIGRATION_GUIDE.md)

---

**Latest Version:** 1.2.5
**Status:** Production Ready - Stable release for all production apps
**KMP Parity:** 100% (kmpworkmanager v2.4.3)
**Platforms:** Android | iOS
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
<a href="https://github.com/brewkits/native_workmanager/actions"><img src="https://github.com/brewkits/native_workmanager/workflows/ci/badge.svg" alt="CI"></a>
<a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="MIT"></a>
<img src="https://img.shields.io/badge/Android-8.0%2B-brightgreen.svg" alt="Android 8.0+">
<img src="https://img.shields.io/badge/iOS-13.0%2B-lightgrey.svg" alt="iOS 13.0+">
<img src="https://img.shields.io/badge/iOS-14.0%2B-lightgrey.svg" alt="iOS 14.0+">
</p>

---
Expand Down Expand Up @@ -46,7 +46,7 @@ No boilerplate. No native code to write. No `AndroidManifest.xml` changes. Each

```yaml
dependencies:
native_workmanager: ^1.2.4
native_workmanager: ^1.2.5
```

**2. Initialize once in `main()`:**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -298,13 +298,17 @@ internal fun NativeWorkmanagerPlugin.handleEnqueue(call: MethodCall, result: Res
val triggerType = triggerMap?.get("type") as? String ?: "oneTime"
val trigger: TaskTrigger = when (triggerType) {
"periodic" -> {
val intervalMs = (triggerMap?.get("intervalMs") as? Number)?.toLong() ?: 900_000L
val rawIntervalMs = (triggerMap?.get("intervalMs") as? Number)?.toLong()
if (rawIntervalMs == null) {
NativeLogger.w("periodic trigger missing 'intervalMs' — defaulting to 15 min. Dart bridge bug?")
}
val intervalMs = rawIntervalMs ?: 900_000L
val flexMs = (triggerMap?.get("flexMs") as? Number)?.toLong()
val initialDelayMs = (triggerMap?.get("initialDelayMs") as? Number)?.toLong() ?: 0L
var runImmediately = triggerMap?.get("runImmediately") as? Boolean ?: true

// Resolve KMP Library "Ambiguous" conflict: if initial delay is provided,
// the task is inherently not running immediately.
// KMP library rejects runImmediately=false when initialDelayMs>0 ("Ambiguous" error).
// Force true so the library accepts the request; initialDelayMs controls first-run timing.
if (initialDelayMs > 0L) {
runImmediately = true
}
Expand Down
191 changes: 0 additions & 191 deletions doc/BUG_FIX_VERIFICATION.md

This file was deleted.

Loading
Loading