Monorepo for Aesthetic.Computer aesthetic.computer

date-wizard: fix all-day day-shift, self-advancing badge, wand → Upcoming master

Four calendar/time fixes surfaced while the menu-bar wand kept showing "now" for a meeting that had ended hours earlier. - All-day off-by-one: feed all-day events arrive as UTC midnight ("2026-07-16T00:00:00Z"); parsed as an instant and shown in a zone behind UTC they slid into the previous evening (Thu → Wed). New parseBoundary() treats all-day items as floating dates — read Y/M/D in UTC, rebuild as local start-of-day — so the day holds in every timezone. Applied at all four LaidEvent build sites; parseISO also gains a date-only ("2026-07-16") fallback that was previously dropped. - Badge stuck on "now": the next-event target was only re-picked on the 5-min network poll, so once a meeting started the wand froze on "now" until the next (possibly asleep/failing) reload. Split out publishNextEvent() and drive it from a 20s local ticker so the badge rolls to the next meeting on the clock, no round-trip. - Runaway durations: cap timed events at 12h (cappedEnd) so a missing/garbled end can't keep an appointment "ongoing" forever and mask the ones behind it. - Wand click now opens the "Upcoming" agenda (revealUpcoming) instead of the last-shown day, and the today marker is cleared in agenda mode so DayStrip no longer promotes today to the lit "selected" look (the stray "F" highlight).