apps/api/src/services/vote.Service.ts:8-34 hardcodes if (year !== 2026 || month !== 3) return false with per-day hour ranges.
Day 2 also has a real bug: endMins = 4 * 60 + 30 is 4:30 AM, which is below the 9:30 AM start — so that window can never be open.
Blocked by the settings issue.
apps/api/src/services/vote.Service.ts:8-34hardcodesif (year !== 2026 || month !== 3) return falsewith per-day hour ranges.Day 2 also has a real bug:
endMins = 4 * 60 + 30is 4:30 AM, which is below the 9:30 AM start — so that window can never be open.isVotingOpen()with a check againstvotingStartsAt/votingEndsAtfrom settings. Both null → always open, the right default for a fresh install. This also drops the manual IST offset arithmetic.11s:vote.Service.ts:70,vote.Service.ts:78,items.Service.ts:50refreshItemAggregates(db, itemIds)takes the threshold as a third argument, passed fromvote.Service.tsandresults.route.tsrather than re-queried inside the loopapps/web/src/App.tsx:39—const totalStalls = 11becomesconfig.totalItemsBlocked by the settings issue.