Summary
Dev date simulation and real calendar day helpers diverge. Make getTodayInTZ() the single source of truth so every habit/calendar/notification path respects Dev Mode date override automatically.
Problem
dev-mode.js exposes simulateDate(dateString) and keeps override state separately.
timezone.js getTodayInTZ() does not honor that override.
- New date-aware modules tend to call
getTodayInTZ() and silently ignore simulation → unreliable Dev Mode bug reports.
Approach
In core/timezone.js:
- Private
_devDateOverride (YYYY-MM-DD | null)
__setDevDateOverride / __clearDevDateOverride
getTodayInTZ() returns override when set
dev-mode.js simulateDate calls those helpers instead of a parallel path.
Acceptance
Summary
Dev date simulation and real calendar day helpers diverge. Make
getTodayInTZ()the single source of truth so every habit/calendar/notification path respects Dev Mode date override automatically.Problem
dev-mode.jsexposessimulateDate(dateString)and keeps override state separately.timezone.jsgetTodayInTZ()does not honor that override.getTodayInTZ()and silently ignore simulation → unreliable Dev Mode bug reports.Approach
In
core/timezone.js:_devDateOverride(YYYY-MM-DD | null)__setDevDateOverride/__clearDevDateOverridegetTodayInTZ()returns override when setdev-mode.jssimulateDatecalls those helpers instead of a parallel path.Acceptance
getTodayInTZ