- Allow instantiation and override of DefaultConstraintMaker to deserialize constraints (#414) (#416)
- Update Swift to 5.7.0 (#419)
- Update Xcode Version in Github Actions (#420)
- Update Actions dependencies (#421)
- Update Bundle (#418)
- Lint correct (#417)
Minimum version required has been updated
platforms: [
.macOS(.v10_14),
.iOS(.v12),
.macCatalyst(.v13),
.tvOS(.v12),
.watchOS(.v5),
]
- Dependency over
Reachability
has been removed and replaced withNWPathMonitor
- WatchOS can now use
NetworkConstraint
Thanks, @GianniCarlo for the contribution 🎉
- Remove empty files (#408)
- Update copyright (#410)
- Add test for network listener (#411)
Allow user to specify enqueue DispatchQueue to fix multi-thread enqueue crash
SwiftQueueManagerBuilder(creator: creator)
.set(enqueueDispatcher: .main)
- 'JobListener' now has 'onJobScheduled' callback (#384)
- Add Lambda Job (#382)
For simple job, instead of creating your own implementation of 'Job', you can use LambdaJob {}
- Update Swift (#397)
- Important Fix for deserialise tasks (#363) Thanks @arthurdapaz for the contribution
- Important Fix for deserialise tasks (#363)
- Update to Swift 5.3 (#352)
- Bump (#364) (#365)
- Fix copyright (#359)
If you are using serialised task. After updating, the library will not be able to deserialised the task saved with version 4.X
You can now add your own constraint dynamically
- Dynamic constraint feature (#310)
- Add custom constraint (#343)
- Rename NoSerialiser to NoPersister (#341)
- Bump Reachability (#354)
- Cleanup (#342) (#347) (#353) (#356) (#357)
- Dynamic constraint feature (#310)
- JobBuilder method requireCharging(value: Bool) was renamed .requireCharging() (#311)
- JobBuilder method .persist(required: true) was renamed .persist() (#312)
- JobBuilder method .internet(atLeast: .any) is forbidden. It's already default behaviour (#329)
- Internet constraint cannot be used if Operation is running in main thread (#329)
- Logger jobId parameter function can be nil (#318)
- Remove V1 serialiser (#320)
- Remove JobCount() method that is relying on a deprecated method (#337) (#336)
- Add JobBuilder.copy() (#304)
- Update to Swift 5.2 (#306)
- Cleanup (#302) (#313) (#319) (#321) (#322) (#327) (#330)
- Constrains refactoring (#326) (#328) (#331) (#332) (#333) (#335)
- Auto archive carthage build artifacts (#303) (#308)
- Update dependencies (#301) (#307)
Make backgroundTask available for MacOS 10.15 (#299)
Update to Swift 5.1 (#280)
Refactor constraints (#282) Refactor encoding (#283)
Update Reachability to 5.0.0 (#273)
Add Method to query all jobs (#277) Add method to remove all task (#275)
Fix Perf: Can only have 1 unique uuid per Queue
Remove timeout from tests (#274) Update Copyright (#270) Remove unused (#272)
- Make all params in JobBuilder public (#266)
- Remove Deprecated methods (#263)
Update dependencies (#262)
- Increased minimal support to 4.1 and XCode 11 (#248) (#246)
- Experimental support of BackgroundTask API (iOS/tvOS 13+) (#252) (#251) (#254) (#257)
- Stop init variable at runtime (#258)
- Avoid object creation (#250)
- Cleanup (#247)
- Job execution timeout constraint (#50)
- Exponential backoff with max delay (#226)
- Better threading configuration for Queue and Manager (#228) (#229) (230)
- Jobs can be enqueue from manager with
.enqueue(JobInfo)
(#231)
- Job status listener (#217)
- Allow a queue to run multiple jobs in parallel (#215)
- Rename synchronous to initInBackground (#213)
- Rename group() to parallel() (#212)
- Better control on running for duplicate job constraint (#219)
- Add no logger by default (#211)
- Swift 5 support. Source was already compatible 🙌 (#206)
- Drop Linux support (#206)
- SwiftQueue is now available on Linux (#189)
- Bump Reachability to 4.3.0 (#190)
- Revise charging constraint implementation (#177)
- Swift 4.2 and Xcode 10 support (#181) (#182) (#187)
- Bump Reachability to 4.2.1 for carthage (#174)
- Bump Reachability and change origin for SPM (#175)
- Bump Rechability for pod #172
- Expose
count
insideSwiftQueueManager
(#160)
- Change SPM dependency for reachability to original #167
- Update copyrights (#162)
- Bump DEPS (#161) (#163) (#165) (#168)
- Remove deprecated methods (#156)
- Prevent missing CFBundleVersion (#153)
SwiftQueueManager
need to be built withSwiftQueueManagerBuilder
(#126)- Custom serializer and switch to
codable
by default (#115) - Minimum version required is
Swift 3.2
- Add a persister by default to avoid having
persist(required: true)
but nopersister
(#119)
- Expose
isSuspended
fromSwiftQueueManager
(#145) - Revise JobInfo and make it conform to
Codable
protocol (#117) (#120)
- Charging constraint (#123)
- Deserialize tasks in background (#112)
- Add internal logger (#105)
Cleanup JobInfo structure
- Fix constraint does not properly cancel the job and execution flow should stop (#113)
- Execution flow does not stop immediately after a constraint not satisfied (#113)
- Parsing error not forwarded and not reported with the logger (#121)
- Parsing error not reported and prevent the job to be serialized (#122)
- Update for Swift 3.3 and 4.1 (#110) (#111) (#107)
- Add proper implementation of support compactMap (#116)
- Fix compatibility with Swift 3.2 (#100)
- Fix warning for Swift 4.1 (#102)
- Change
JobCreator.create
signature (#94)- Return type is no longer optional
SwiftQueueManager
only accept 1 singleJobCreator
- This is to avoid unregistered handler or scheduling job with no
JobCreator
associates - The user will have to deal with unknown handler on his side
- Origin error is now forward to completion block (#88)
- Change signature of Limit(Int) to Limit(Double)
- Delay not waiting for the remaining time (#99)
- Deadline now cancel the job properly (#98)
- Fix calling
done
after termination will remove the lastError (#97) - Breaking support for Swift 3.2 (#75)
- Avoid crash when scheduling a terminated job (#92)
- Performance issue when overriding a job (#73)
- Update documentation
- Change Error type to follow enum pattern (#68)
TaskAlreadyExist
->SwiftQueueError.Duplicate
DeadlineError
->SwiftQueueError.Deadline
Canceled
->SwiftQueueError.Canceled
- Performance improvement in for-loops
SwiftQueue
has been renamedSqOperationQueue
SwiftQueueJob
->SqOperation
JobBuilder
has moved to its own class- SwiftQueue.swift reference all public protocols
- Support
BUCK
build
- Remove unavailable methods (#71)
func retry(Int)
func periodic(Int, TimeInterval)
- Fix an issue where a periodic job will not be re-scheduled (#63)
- Validate dictionary args only if persistence is required (#61)
- Make unavailable methods crash if called #64
- Raise warning if something went wrong during the deserialization (#58)
Develop 1.4.0 (#52)
- Validate argument to avoid empty strings
- Validate JSON argument
- JobBuilder.retry(Limit)
- JobBuilder.periodic(Limit, TimeInterval)
- Allow overriding previous job for SingleInstance constraint (#38)
- Add cancel with uuid (#42)
- Fix Swiftlint warnings (#36)
- Fix readme documentation (#40)
- Setup danger (#31)
- Support travis cache builds (#39)
- Fix crash in exponential retry
- Fix exponential retry not reset after a success run
Develop 1.3.0 Re-write 90% of the code (#22)
- Scheduling a job without a creator will throw an error (Assertion)
- Replace Any params type to [String: Any] (#20)
- Callback result now use enum to avoid passing nil error as success (#26)
- onRemove will forward JobCompletion (#32)
- Remove delay(inSecond) use delay(time) instead
- Improve documentation and publish (#24)
- Constraints should be public (#25)
- Add assertion to validate the [String: Any] when serialize
- Job is now immediately canceled when the deadline is reached
- Add support for Swift Package Manager
- Fix job retained longer after cancellation
- Job constraint error should not call onRetry
- if Reachability throw error when starting the notifier, call onRemove
- UniqueUUID constraint will also be checked for same name in non SwiftQueueJob
- Fix retention issue
- Each constraints will be defined in it's own file
- Each job will own an instance of all the constrains
- Remove throw in Run method to avoid confusion with onError callback
- User will need to keep a strong reference to SwiftQueueManager
Support all targets when using carthage
- Delay by TimeInterval
- Reschedule and run immediately when delay is set to 0
- Job not delayed properly
- Crash when delaying the job with a high value
- Add delay to retry()
- Pause and restart will match behaviour of OperationQueue to avoid job running 2 times
- First stable release