Calendar mode polish batch + Today & Tomorrow view

Responds to post-launch feedback on calendar mode: configurable
week-start day for week/month views, crisper non-antialiased text
(threshold-masked instead of drawn straight, so Floyd-Steinberg
dithering doesn't speckle glyph edges), a color-coded/proportionally
filled battery icon on the manage overlay, word-wrapped placeholder
text so "Calendar isn't set up yet" no longer clips in portrait, photo
inlay support extended from agenda-only to every view, and a fix so
manage-overlay face labels reposition correctly when a photo inlay is
active (they previously assumed the photo filled the whole canvas).

Also adds a fourth calendar view, "Today & Tomorrow" -- a two-day
agenda that reuses the same per-day row-layout helper the single-day
agenda view already has.
This commit is contained in:
2026-07-22 21:20:44 -04:00
parent 716776c3f2
commit aa194be09a
9 changed files with 326 additions and 115 deletions
+11
View File
@@ -100,6 +100,16 @@ def _migration_7(conn) -> None:
conn.execute(text("ALTER TABLE frames ADD COLUMN calendar_fetch_summary TEXT NOT NULL DEFAULT ''"))
def _migration_8(conn) -> None:
"""Configurable week-start day for calendar mode's week/month views
(0=Monday..6=Sunday, matching Python's date.weekday()/calendar.Calendar
convention exactly -- no translation needed at render time). Default 0
(Monday) matches calendar_render.py's previous hardcoded behavior, so
this is a no-op for every existing frame until changed."""
conn.execute(text("ALTER TABLE frames ADD COLUMN calendar_week_start INTEGER NOT NULL DEFAULT 0"))
MIGRATIONS = [
(1, _migration_1),
(2, _migration_2),
@@ -108,6 +118,7 @@ MIGRATIONS = [
(5, _migration_5),
(6, _migration_6),
(7, _migration_7),
(8, _migration_8),
]