Build and push server image / build-and-push (push) Successful in 35s
Quiet hours only clamped what refresh_interval_s the *device* is told to sleep for -- the separate elapsed-time check in photo_queue.get_current() (used by /frame/image, /frame/photo-info, /frame/face-labels, and /api/queue) had no quiet-hours awareness at all, since it runs independent of the device. An open web UI tab polling /api/queue overnight, or just loading the page during a quiet window, would silently advance which photo is "current" on raw elapsed time alone -- nothing reaches the panel until the device wakes after quiet hours end, but the pointer moving mid-window still isn't what "don't do anything overnight" implies. get_current() now takes an in_quiet_hours flag that suppresses only the elapsed-time trigger; an unset/invalid current photo is still picked regardless (showing nothing is worse than showing something even at 3am). New _in_quiet_hours() helper in main.py, passed at all four call sites.