Changelog since v0.8.3 → v0.9.0
-
New: Compose jobs
- Run Docker Compose services on a schedule with
docker compose run --rm, or setexec = trueto usedocker compose exec. - Minimal INI example:
[job-compose "backup"] schedule = @daily file = docker-compose.yml service = db command = pg_dumpall -U postgres
- Details: see
composein docs/jobs.md.
- Run Docker Compose services on a schedule with
-
New: Config file globs
- Load multiple INI files with a single flag:
ofelia daemon --config="/etc/ofelia/conf.d/*.ini" - Also available via
OFELIA_CONFIG.
- Load multiple INI files with a single flag:
-
New: Max runtime limits
- Enforce time limits for
runandservice-runjobs (kills if exceeded). - Set globally in
[global](max-runtime, default24h) or per job viamax-runtime. See examples in docs/jobs.md.
- Enforce time limits for
-
Web UI enhancements
- Create, update, delete, enable/disable, and run jobs from the UI (all job types, including
compose). - View job origin (INI/label/API), type, full config JSON, and past run history.
- Timezone selector (local/server/UTC) with preference persistence.
- Endpoints include
/api/jobs,/api/jobs/removed,/api/jobs/disabled,/api/config, and job CRUD actions. See README.md.
- Create, update, delete, enable/disable, and run jobs from the UI (all job types, including
-
Config reload improvements
- Automatic reload now applies job changes and most
[global]settings (e.g.,slack-*,save-*,mail-*,log-level,max-runtime) at runtime. - Options that start servers (
enable-web,web-address,enable-pprof,pprof-address) and[docker]settings still require a restart. - More reliable reloads, including non-schedule and environment-derived changes. See README.md.
- Automatic reload now applies job changes and most
-
Behavior and compatibility changes
- No more
--dockerflag: label-based configuration is enabled by default. Update any old invocations accordingly (see “Docker label configurations” in README.md). - Configuration precedence is now:
- built-in defaults → 2)
config.ini→ 3) Docker labels → 4) command-line flags → 5) environment variables.
- built-in defaults → 2)
- INI vs labels: INI-defined jobs take precedence; label jobs with the same name are skipped (and logged).
- Removed jobs are retained and visible in the web UI.
- No more
-
Quality-of-life
- Docker image includes a healthcheck (usable with
depends_on.condition: service_healthyin Compose). - Tighter HTTP server timeouts and broader validation/error messages (more resilient web/API experience).
- Updated examples: see example/ofelia.ini.
- Docker image includes a healthcheck (usable with
Upgrade notes
-
Remove
--dockerfrom anydaemoncommands; labels are processed by default. -
If you previously split configs manually, prefer
--config="…/*.ini"orOFELIA_CONFIG. -
Consider setting a global
max-runtimeand/or per-jobmax-runtimefor runaway protections. -
Be aware that environment variables now override flags (by design).
-
Short summary:
- Added
composejob type. - Globbing for
--config, plus broader runtime reloads. - Web UI now supports full job CRUD, timezone selector, origins, and history.
- Added
What's Changed
- feat: add glob support for --config by @CybotTM in #197
- Improve config reload logging by @CybotTM in #198
- Improve config reload logging and tests by @CybotTM in #199
- Add compose job type by @CybotTM in #200
- feat: Initialize TaskMaster project management system by @CybotTM in #201
- Add configurable max runtime by @CybotTM in #202
- Implement config refactor with JobSource by @CybotTM in #203
- Update configuration precedence docs by @CybotTM in #205
- Add ComposeJob buildCommand tests by @CybotTM in #208
- Fix config reload for env changes by @CybotTM in #209
- Fix ComposeJob initialization in tests by @CybotTM in #213
- Add runtime reload for global settings by @CybotTM in #214
- Add timezone selector for web UI by @CybotTM in #212
- chore(deps): bump github.com/docker/docker from 28.2.2+incompatible to 28.3.3+incompatible in the go_modules group across 1 directory by @dependabot[bot] in #216
- Chore/lint improvements by @CybotTM in #217
- ci: consolidate duplicated CI workflow and fix YAML errors (single CI… by @CybotTM in #219
- Chore/lint improvements by @CybotTM in #220