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 --- cmd/dashboard/main.go | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'cmd/dashboard') diff --git a/cmd/dashboard/main.go b/cmd/dashboard/main.go index 9f69d46..7e58125 100644 --- a/cmd/dashboard/main.go +++ b/cmd/dashboard/main.go @@ -207,6 +207,13 @@ func main() { // Rate limiter for agent auth (stricter - 10 requests/minute per IP) agentAuthRateLimiter := appmiddleware.NewRateLimiter(10, time.Minute) + // Health check (no auth) + r.Get("/health", func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-Type", "text/plain") + w.WriteHeader(http.StatusOK) + _, _ = w.Write([]byte("ok")) + }) + // Public routes (no auth required) r.Get("/login", authHandlers.HandleLoginPage) r.With(authRateLimiter.Limit).Post("/login", authHandlers.HandleLogin) -- cgit v1.2.3