From 8c55b9b10fecd45ac5acf3f13fc23d342a4aa53b Mon Sep 17 00:00:00 2001 From: Peter Stone Date: Mon, 29 Jun 2026 10:29:12 +0000 Subject: fix: calendar/meals sync, tomorrow flat layout, /health endpoint - Calendar: fall back to GOOGLE_CALENDAR_ID config when no source_configs synced yet (fixes blank calendar after fresh deploy) - Meals: call fetchMeals in HandleTimeline so PlanToEat cache refreshes on every timeline load, not just during manual refresh - Tomorrow section: replace calendar-grid with flat chronological list matching widget layout (time label | source bar | title) - Add /health endpoint (no auth required) for deploy health checks Co-Authored-By: Claude Sonnet 4.6 --- internal/handlers/handlers.go | 10 +++++++--- internal/handlers/timeline.go | 7 +++++++ 2 files changed, 14 insertions(+), 3 deletions(-) (limited to 'internal/handlers') diff --git a/internal/handlers/handlers.go b/internal/handlers/handlers.go index 5ecaf7c..eaef558 100644 --- a/internal/handlers/handlers.go +++ b/internal/handlers/handlers.go @@ -392,10 +392,14 @@ func (h *Handler) fetchCalendarEvents(ctx context.Context, forceRefresh bool) ([ } } - // If none enabled but we have a default from config, use that as a fallback - // (or if we want to respect the toggle strictly, we should only use enabled ones) if len(enabledIDs) == 0 { - return nil, nil + // No source_configs synced yet — fall back to the configured calendar ID + if len(configs) == 0 && h.config.GoogleCalendarID != "" { + enabledIDs = []string{h.config.GoogleCalendarID} + } else { + // Configs exist but all disabled — respect that + return nil, nil + } } h.googleCalendarClient.SetCalendarIDs(enabledIDs) diff --git a/internal/handlers/timeline.go b/internal/handlers/timeline.go index bbdae51..2c3c6b6 100644 --- a/internal/handlers/timeline.go +++ b/internal/handlers/timeline.go @@ -69,6 +69,13 @@ func (h *Handler) HandleTimeline(w http.ResponseWriter, r *http.Request) { log.Printf("Warning: failed to fetch calendar events: %v", err) } + // Refresh meals cache before building timeline + if h.planToEatClient != nil { + if _, err := h.fetchMeals(r.Context(), false); err != nil { + log.Printf("Warning: failed to fetch meals: %v", err) + } + } + // Call BuildTimeline items, err := BuildTimeline(r.Context(), h.store, start, end) if err != nil { -- cgit v1.2.3