Build and push server image / build-and-push (push) Successful in 36s
Two independent timers: a 1s tick re-renders "Last seen"/"On battery for" from the already-fetched device data (so they count up smoothly -- 1s ago, 5s ago, 1m ago...) without hitting the server that often, and a 10s poll re-fetches /api/queue to pick up real changes (new photo displayed, queue edited elsewhere, a battery/firmware report) -- both reuse the existing render functions, no new endpoints needed. The poll skips itself while a drag-reorder is in progress so it can't yank the grid out from under an in-flight drag.