Schedules and runs

Every row runs on its own schedule. How to set it, how to write a custom one, and which background jobs matter.

Schedules

Activity → Jobs lists everything on a timer. Each job carries its own next run on its line, and opening one reveals its frequency picker; underneath, Rows lists the rows that build on a schedule, grouped by the cron they share. Three rows on the same schedule are one trigger that builds all three, not three timers. That list is read-only: a row’s schedule is edited in the row editor, so each setting has exactly one home.

It lives with Jobs rather than in its own nav entry because “what background work exists” and “when does it run” are two views of one thing. As separate pages, every job was listed twice and neither page could answer a whole question. /schedule still redirects here.

These jobs are worth knowing about there:

Every row runs on its own schedule. There is no single server-wide one. Open a row (Rows → edit) and set its Schedule: Nightly or Weekly presets (just pick a run time), Custom for anything else, or Off to only run that row by hand. New rows default to nightly at 03:30 server-local; on upgrade, existing rows keep whatever your old global schedule was. Rows that share a cron run together. To skip a person entirely, pause them on their detail page.

A row run is never skipped for starting late. If Shortlist is busy at the moment a row is due, the run starts when it can. The other timers on Jobs are different: one that starts more than 30 seconds late is skipped until its next time, and the bell says “A scheduled job didn’t run”. A run that was due while Shortlist was stopped is not replayed when it starts again.

A scheduled run cut short by a restart is finished once. If the container restarts part-way through a scheduled run (an auto-updater such as Watchtower replacing it, a host reboot), Shortlist starts a run as soon as it is back up for the people that run never reached, on the same rows. It shows on Runs as Resumed after a restart. It happens once: a resumed run that is itself cut short is not resumed again, and neither is a run you started by hand or one more than 20 hours old. Shared rows rebuild on the next full run. To avoid the interruption in the first place, schedule your auto-updater for after your rows finish.

Writing a custom schedule

Every Custom schedule box in Shortlist (a row’s schedule, and the watch-history, user-sync and backup pickers on Jobs) takes either form:

Whichever you type, the line underneath tells you what it will actually do and what gets saved, and nothing saves until it parses. So a typo can’t quietly leave you on the built-in default. Times are the server’s, not your browser’s.

Edit this page on GitHub