-
released this
2026-04-29 22:08:38 -04:00 | 284 commits to main since this releaseHighlights
EventSlideOver recurrence UI
The calendar event modal now exposes the existing
Event.recurrenceRRULE column. A "Repeat" select offers None / Daily / Weekly / Monthly / Yearly presets that map to/from canonical RRULE strings.CalDAV-imported rules with extra parts (e.g.
FREQ=WEEKLY;BYDAY=MO,WE,FR) are preserved — they surface as a disabled "Custom" option with the raw rule shown read-only, so they remain visible in the UI without us silently destroying them.Journal weather wiring fixes
Closes two real gaps that caused empty weather sites in the journal panel:
-
Saving locations now triggers a fetch.
PUT /api/journal/configkicks off a backgroundrefresh_location_cachefor every saved location with valid lat/lon. Previously, newly-entered sites had no cache row (or a stale one) until the user manually clicked the panel's refresh button. -
Orphaned cache rows are filtered. Migration 0040 deleted the briefing-era
briefing_configsetting but leftweather_cacherows untouched. Those briefing-era rows showed up as ghost tabs in the new journal weather panel.get_cached_weather_rowsnow accepts avalid_keysfilter; the journal weather routes and prep pipeline pass currently-configured location keys, so only cache rows that match an actively-configured location surface in the UI or the daily prep.
Commits
36cd08cfeat(events): expose recurrence presets in EventSlideOverc33cab7fix(journal): wire weather refresh on config save; drop orphaned cache rows
Verification
- 153 backend pytest tests pass
- Frontend
vue-tsc --noEmitclean - CI green on dev before merge
Downloads
-