CI / policy (pull_request) Successful in 8s
CI / validate (pull_request) Successful in 31s
CI / build (pull_request) Successful in 29s
CI / benchmark (pull_request) Successful in 1m34s
CI / security (pull_request) Successful in 1m3s
CI / test (pull_request) Successful in 2m9s
CI / images (pull_request) Successful in 1m10s
CI / required (pull_request) Successful in 1s
CI / policy (push) Successful in 8s
CI / validate (push) Successful in 36s
CI / build (push) Successful in 34s
CI / benchmark (push) Successful in 1m39s
CI / security (push) Successful in 1m8s
CI / test (push) Successful in 2m20s
CI / images (push) Successful in 1m1s
CI / required (push) Successful in 1s
The today marker and past styling used the device's local date while the default planning horizon starts on the Paris date, so outside Paris time near midnight the horizon's first day was not marked as today (CI in UTC failed nightly). project() now takes an injectable now, derives today once with planningDateInParis and returns it; calendar-month styles a day as past when its date key is before that today. Delete DateCacheService, monthsInAYearFromNow() and the default year of getHolidays(), whose only remaining callers were their own specs. Refs #301 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>