geist-bold-digits.jsonfeat(calendar): tell the calendar tab apart at a glance
A Cedar tab looked the same whether it held mail or the calendar, so the
calendar is now marked the way Google Calendar marks its own: today's date,
set in Geist Bold on Cedar's surface colour, and a title that saves a
bookmark as a calendar rather than as another "Cedar".
The date has to be read in the browser — the server renders the same HTML
for everyone, so a day baked in there is wrong for anyone far enough east or
west — and the icons are 31 plain files rather than one drawn at runtime,
because a canvas-generated favicon has no stable URL for a bookmark or the
favicon cache to file under.
Co-Authored-By: Claude Opus 5 (1M context) <<email>>Aug 30, 2026, 3:42 PMgenerate-calendar-favicons.mjsfeat(calendar): tell the calendar tab apart at a glance
A Cedar tab looked the same whether it held mail or the calendar, so the
calendar is now marked the way Google Calendar marks its own: today's date,
set in Geist Bold on Cedar's surface colour, and a title that saves a
bookmark as a calendar rather than as another "Cedar".
The date has to be read in the browser — the server renders the same HTML
for everyone, so a day baked in there is wrong for anyone far enough east or
west — and the icons are 31 plain files rather than one drawn at runtime,
because a canvas-generated favicon has no stable URL for a bookmark or the
favicon cache to file under.
Co-Authored-By: Claude Opus 5 (1M context) <<email>>Aug 30, 2026, 3:42 PM