Release v26.04.29.4 — recurrence UI + journal weather wiring fixes #48

Merged
bvandeusen merged 0 commits from dev into main 2026-04-29 22:08:20 -04:00
bvandeusen commented 2026-04-29 22:07:27 -04:00 (Migrated from git.fabledsword.com)

Summary

  • EventSlideOver recurrence UI (36cd08c) — adds a "Repeat" select (None / Daily / Weekly / Monthly / Yearly) wired to the existing Event.recurrence RRULE column. CalDAV-imported rules with extra parts (e.g. FREQ=WEEKLY;BYDAY=MO,WE,FR) surface as a disabled "Custom" option with the raw rule preserved read-only.
  • Journal weather wiring fixes (c33cab7) — closes two gaps that produced empty weather sites in the journal panel:
    1. PUT /api/journal/config now triggers a background refresh_location_cache for any saved location with valid lat/lon, so newly-entered sites populate without needing the manual refresh button.
    2. get_cached_weather_rows now accepts a valid_keys filter; the journal weather routes and prep pipeline pass currently-configured location keys, so briefing-era leftover cache rows (which survived migration 0040 because that migration only dropped briefing_config, not weather_cache rows) no longer surface as ghost tabs.

Test plan

  • 153 backend pytest tests pass
  • Frontend vue-tsc --noEmit clean
  • Manual: edit an event → set recurrence → save → reopen, preset persists
  • Manual: save a fresh location in Profile → journal weather panel populates without clicking refresh
  • Manual: any pre-existing orphaned weather tabs disappear after this rolls out

🤖 Generated with Claude Code

## Summary - **EventSlideOver recurrence UI** (`36cd08c`) — adds a "Repeat" select (None / Daily / Weekly / Monthly / Yearly) wired to the existing `Event.recurrence` RRULE column. CalDAV-imported rules with extra parts (e.g. `FREQ=WEEKLY;BYDAY=MO,WE,FR`) surface as a disabled "Custom" option with the raw rule preserved read-only. - **Journal weather wiring fixes** (`c33cab7`) — closes two gaps that produced empty weather sites in the journal panel: 1. `PUT /api/journal/config` now triggers a background `refresh_location_cache` for any saved location with valid lat/lon, so newly-entered sites populate without needing the manual refresh button. 2. `get_cached_weather_rows` now accepts a `valid_keys` filter; the journal weather routes and prep pipeline pass currently-configured location keys, so briefing-era leftover cache rows (which survived migration 0040 because that migration only dropped `briefing_config`, not `weather_cache` rows) no longer surface as ghost tabs. ## Test plan - [x] 153 backend pytest tests pass - [x] Frontend `vue-tsc --noEmit` clean - [ ] Manual: edit an event → set recurrence → save → reopen, preset persists - [ ] Manual: save a fresh location in Profile → journal weather panel populates without clicking refresh - [ ] Manual: any pre-existing orphaned weather tabs disappear after this rolls out 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: bvandeusen/FabledScribe#48