2.5 KiB
2.5 KiB
v0.5.0 (2026-04-24)
A small but impactful release that finally makes the Immich scheduled / periodic / memory dispatch fire on its own. The slot was already visible in the tracker UI and the "Test" button worked — but no production scheduler was reading the config, so users only ever saw fires through manual tests. This release wires the missing cron jobs end-to-end.
Features
- Cron-fired Immich dispatch for scheduled / periodic / memory slots — adds the missing production fan-out so
scheduled_enabled/scheduled_times(and the periodic / memory counterparts) onTrackingConfigactually fire on their own, not only through "Test" (309dec2):- New
services/scheduled_dispatch.pyreuses the test-path event builders, picks the slot template per kind (scheduled_assets/periodic_assets/memory_assets), and writes anEventLogrow per fire so the dashboard reflects it. services/scheduler.pygains_load_immich_dispatch_jobs, which builds oneCronTriggerper(tracker, kind, HH:MM)from each tracker's defaultTrackingConfig, all keyed off the app-level IANA timezone.reschedule_immich_dispatch_jobsrebuilds the job set on any relevant CRUD or timezone change.- Tracker / link / tracking-config CRUD endpoints now invalidate the schedule, so edits take effect immediately without a restart.
- Dispatch is skipped when scheduled / memory queries yield zero matching assets — prevents header-only "On this day:" spam when nothing qualifies.
- EN / RU default
scheduled_assetstemplates updated to surface that the delivery is a scheduled random selection.
- New
Upgrade Notes
- No config changes required. Existing
scheduled_enabled/scheduled_times/periodic_*/memory_*settings on tracking configs will start firing automatically on the next startup. - If you had been relying on the "Test" button as a workaround, you can stop doing that now.
All Commits
| Hash | Message | Author |
|---|---|---|
| 309dec2 | feat(immich): wire cron-fired scheduled/periodic/memory dispatch | alexei.dolgolyov |