All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
Diff for unreleased
- Fixed problem with Daylight Saving Time for jobs with timezone other than UTC.
Diff for 2.2.6
- Omit
gen_stage
warning on~> 0.13
Diff for 2.2.5
- Relax
timex
dependency
Diff for 2.2.4
- Fixed compatibility with
gen_stage ~> 0.12
Diff for 2.2.3
- Better Debugging Capabilities
- Relaxed version requirements for
gen_stage
Diff for 2.2.2
- sometimes the task supervisor was not running in a cluster
Diff for 2.2.1
Diff for 2.2.0
- Local run strategy
Diff for 2.1.3
- Runtime Added Jobs are executed right away instead of waiting for the next job execution.
- Fix Typo in Doc
Diff for 2.1.2
- Distillery is not mentioned in list of package managers
- Source is not formatted properly
- Removed unused Alias from
Quantum.Job
- Hot upgrade is not possible due to missing supervisor
Diff for 2.1.1
- Resolved some Dialyzer Warnings
Diff for 2.1.0
- Resolved some Dialyzer Warnings
Diff for 2.1.0-beta.1
The internal handling has been refactored onto gen_stage
.
There were a few Breaking Changes which should not influence a user of the library.
- Replaced
call
withcast
Scheduler.add_job
Scheduler.deactivate_job
Scheduler.activate_job
Scheduler.delete_job
Scheduler.delete_all_jobs
- The overlap handling is removed from the Job struct.
- removed
Job.pids
- removed
Job.executable?
- removed
Diff for 2.0.4
- Fix Race Condition with reboot in Runner state
Diff for 2.0.3
@reboot
cron expressions
Diff for 2.0.2
- Updated Docs.
Diff for 2.0.1
- Timezone in job configuration is now normalized into a job.
Diff for 2.0.0
The whole library has been refactored. See the Migration Guide.
Diff for 2.0.0-beta.2
The whole library has been refactored. See the Migration Guide.
Diff for 2.0.0-beta.1
The whole library has been refactored. See the Migration Guide.
Diff for 1.9.2
Diff for 1.9.1
Diff for 1.9.0
- Three modules were removed and replaced by crontab.
Quantum.Matcher
Quantum.Parser
Quantum.Translator
- The whole cron expression syntax is now supported.
- Crons can now be configured for Umbrella applications. See the
README
for the new syntax.
- Cron Expressions can now be provided via the
%Crontab.CronExpression{}
struct or via the~e[CRON EXPRESSION]
sigil. - Cron Expressions can now be extended. This way second granularity of the expressions can be provided.
- The configuration property
cron
is deprecated. Use the app configuration instead.
Diff for 1.8.1
- Clarity on the table to not use full name of day (Coburn Berry)
- Travis testing against erlang 19.1 and elixir 1.3.3 (Julius Beckmann)
- Don't allow "local" timezone. Replace Timex w. Calendar (Lau Taarnskov)
- Global cannot be used directly (Po Chen)
- Support for timezones other than utc or local not in readme (Coburn Berry)
- Timezone as string not working in config (Daniel Roux)
- Timex references in readme (Coburn Berry)
- License badge in README
Diff for 1.8.0
- Requires Elixir >= 1.3
- Updated C4 contribution process to RFC42
- Updated timex dependency to 3.0 (Svilen Gospodinov)
- Same task could be generated multiple times in a cluster (Po Chen)
- Elixir 1.3.0 introduced unsafe var warnings (Jamie J Quinn)
- Typo in README (Uģis Ozols)
- Code coverage below 100% (Lucas Charles)
- Unused alias (Philip Giuliani)
Diff for 1.7.1
- Optional per-job timezone support
- Nodes defaulting in
%Quantum.Job
struct job.nodes
defaulting in the normalizer- Test suite after changing defaulting of nodes property for the
%Quantum.Jobs{}
struct
Diff for 1.7.0
- ToC to README
- Documentation for
overlap
option - Elixir 1.2 to Travis-CI config
- Prevent duplicate job-names at runtime (Kai Faber)
- ToC markdown
- Default values are now configurable
- Updated all dependencies
- Required Elixir version is now
>= 1.2
- Overlap option was not set to jobs
- Incorrect example in README
- Timezone is not configurable at runtime
- Credo warnings
- GenServer restarts when one of the jobs crashes (#82)
Diff for 1.6.1
@reboot
entries are throwing errors- Credo warnings and software design suggestions
- Elixir 1.2 warnings
- Dependency 'credo' updated
- Refactored range variables
.gitignore
updated
Diff for 1.6.0
- PID of last executed task to job struct
- Credo code linter (only for dev and test)
- Total downloads badge to README
- Elixir 1.1.0 and Erlang 18.1 to Travis-CI config
- Max hour is 23, not 24
- Long-running jobs could overlap
- Typo in README (Lucas Charles)
- Incorrect function and response types in readme (Bart van Zon)
- Unnamed job tuples cannot take args (Lucas Charles)
- Job names can only be atoms and can't be GC (Luis Hurtado)
Diff for 1.5.0
- Ability to run jobs on exact node (Rodion Vshevtsov)
- Documentation of named jobs
- OTP 17.5 and 18.0 to Travis tests
ex_doc
dependency version
- Typos in README
Diff for 1.4.0
- Named jobs and the ability to (de)activate them (Rodion Vshevtsov)
- Doc annotations for functions
- Inch-CI integration
- Updated
ex_doc
dependency
Diff for 1.3.2
- Timezone option to README.
- Using
@reboot
lead to crash.
Diff for 1.3.1
- Added contributors to changelog and project description
- Option to use local timezone instead of UTC.
- Tables in README use markdown format
Diff for 1.3.0
- Allow cron-like job formatting (
"* * * * * MyApp.MyModule.my_method"
) (Rodion Vshevtsov) - Allow defining functions as tuple (
{"Module", :method}
) in config (Rodion Vshevtsov) - Note about UTC (Lenz Gschwendtner)
Diff for 1.2.4
- Renamed parse/5 functions to do_parse/5 and made them private
- Always use
{expression, fun}
for jobs - Moved duplicate code to new private function
only_multiplier_of/2
- Moved code to normalize jobs to separate module
- Correctly use passed state in Quantum.init/1 function
- Moved reboot logic to executor.
- Unnecessary guard clause
- Unused parse/3 functions
- Unused call to String.split on patterns starting with "*/"
Diff for 1.2.3
- Support for
@reboot
- Does not convert jobs defined in config
Diff for 1.2.2
- Support for
@annually
and@midnight
- Function order in Quantum.Matcher
- Renamed private translate function to do_translate
- Do not convert and translate cron expressions on every tick
- Adding a job using Quantum.add_job/2 does not convert to lowercase
- Adding a job using Quantum.add_job/2 does not translate day/month names
Diff for 1.2.1
- Test for handle_info(:tick_state)
- Dependencies to generate hexdocs
- Badge for hexdocs
- Link to docs in hex package info
- Type specs and doc annotations
- Quantum.Application does not call Quantum.start_link/1 anymore
- Moved match logic to separate module Quantum.Matcher
- Moved parsing logic to separate module Quantum.Parser
- Moved execution logic to separate module Quantum.Executor
- Moved translation logic to separate module Quantum.Translator
- Typos in changelog
- Quantum.start_link/1
Diff for 1.2.0
- Date is updated in state only if it changed
- Wake up every minute instead of every second
- Intervals on ranges are not correctly parsed
- Hour constraints are not correct (Lenz Gschwendtner)
- There is no changelog
- Code coverage is low
- Explicit variables are not needed
- Pattern matching can be simplified
Diff for 1.1.0
- Add ability to schedule jobs at runtime and ability to view jobs (Dan Swain)
- Relax Elixir version
Diff for 1.0.4
- Written month and weekday names are not parsed
Diff for 1.0.3
- Do not fire on first tick
Diff for 1.0.2
- Special expressions are not correctly in all cases
- Functions to add and reset jobs
Diff for 1.0.1
- Configure cronjobs in config
- Add application
- Parsing of cron expression fails
Diff for 1.0.0
- Initial commit