Three things squashed into one commit since they're all release-prep:
1. Bump CFBundleVersion 2 → 3, CFBundleShortVersionString 0.2.0 →
0.3.0, WorkerPlugin.version & ExpandedView footer string to match.
Aligns with the 5-feature v0.3.0 ship.
2. fix(water): lastWaterReminderHr was an Int hour (0-23) so a
yesterday-fired 17:00 blocked today's 17:00 reminder. Now stores
"yyyy-MM-dd HH" composite key so dedupe is scoped per-day.
3. Holidays.swift: 2026 entry table re-calibrated per typical
State Council 调休 pattern. Notable changes:
- 春节 starts on 除夕 02-16 (not 初一 02-17) per 2024 policy
- 中秋 + 国庆 merged into 10-day 09-25 ~ 10-04 window (since
2026 中秋 09-25 is 6 days before 国庆 10-01)
- 劳动节 renamed from "五一" for clarity
Disclaimer still in header: verify against 国务院 announcement
when published, edit + re-release if 调休 differs.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds HolidayDatabase with 7 entries for 2026 (元旦/春节/清明/五一/
端午/中秋·国庆 + 2027 元旦 roll-over). WorkerStore.nextHoliday
computed returns the upcoming or currently-ongoing holiday with
days-until. WeekendView gains a tomato-tinted card under the
weekend hero showing "下个法定假 国庆 · 放 8 天 · X 天后" — or
"假期中" + 🎉 when the user opens the panel during the window.
Dates are estimated from typical State Council patterns; the file
header carries a TODO to verify against the official announcement
each year.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>