Adds Geist and Geist Mono to fontconfig with anti-aliasing disabled
and full hinting for crisp rendering on e-ink. All font sizes scaled
up 15% via a central FONT_SCALE factor for easy tuning.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The timeline rail now shows thick bars indicating event durations —
full opacity for current/future events, dimmed for past. The timeline
range anchors near the current time and extends to show upcoming hours,
capped at midnight.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Shows daily weather summary (icon, description, high/low) in the agenda
section header, and hourly temperatures alongside the timeline hour ticks.
Weather data fetched from OpenMeteo (no API key needed), configured via
location coordinates in the plugin settings.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Implements an e-ink daily dashboard plugin ("today") with four sections:
date/focus/success header, agenda timeline, chores checklist, and
due/overdue task lists.
Data sources:
- Focus & success text: Tana daily note (src/sources/tana.ts)
- Due/overdue tasks: Tana task search (src/sources/tana.ts)
- Agenda events: ICS calendar feeds (src/sources/ics.ts)
- Chores: Donetick API (src/sources/donetick.ts)
All sources fetch in parallel and fall back gracefully on error.
Tests use mock HTTP servers with synthetic data — no real services needed.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Introduces a plugin registry so the display mode is selectable per
device via the NixOS module config (defaults to "calendar"). Moves
the hardcoded render URL base into config.base_url. Adds tests
exercising the plugin system with a synthetic ICS feed.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>