- Shows get a description and an icon upload; broadcasts get a scheduled_at
start time. schema.sql adds the columns to existing databases and seeds
the descriptions from the old hand-written sidebar.
- The dashboard and cli/set_show.php take an optional date and Eastern start
time when queuing; index.php shows it with the UTC conversion.
- liveBroadcast() and currentShow() ignore broadcasts unseen for longer than
the grace period, so a stopped poller can't leave a show stuck as live.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The poller's lock file in /tmp could be left owned by another user after a
manual run, leaving cron unable to open it. Lock the script file instead.
SETUP.md walks through installing the site on Yunohost, including the
/etc/cron.d entry for the poller, which was missing on the server and left
the recently played list empty.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>