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>
The today marker and past styling follow the same Paris date that
starts the default planning horizon (#301).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>