From 5d89fbd8852063ffaaf1b9c37f21551230964e72 Mon Sep 17 00:00:00 2001 From: jedarden Date: Sat, 25 Apr 2026 07:22:06 -0400 Subject: [PATCH] =?UTF-8?q?fix(index-builder):=20add=20=5Fredirects=20to?= =?UTF-8?q?=20route=20/=20=E2=86=92=20app.html?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The replay viewer was baked into index.html (served at /) while the leaderboard app was at /app.html. Add a _redirects file so visitors landing on / get redirected to the main leaderboard app. Co-Authored-By: Claude Sonnet 4.6 --- cmd/acb-index-builder/deploy.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/cmd/acb-index-builder/deploy.go b/cmd/acb-index-builder/deploy.go index 2ea0835..6ddd6fc 100644 --- a/cmd/acb-index-builder/deploy.go +++ b/cmd/acb-index-builder/deploy.go @@ -107,6 +107,16 @@ func verifyMergedOutput(cfg *Config) error { slog.Warn("leaderboard.json not yet generated, deploying with partial data") } + // Ensure _redirects routes / → app.html so the main leaderboard app is the + // entry point. The replay viewer stays at /index.html for direct linking. + redirectsPath := filepath.Join(cfg.OutputDir, "_redirects") + if _, err := os.Stat(redirectsPath); err != nil { + redirectsContent := "/ /app.html 301\n" + if writeErr := os.WriteFile(redirectsPath, []byte(redirectsContent), 0644); writeErr != nil { + slog.Warn("Failed to write _redirects", "error", writeErr) + } + } + slog.Info("Merged output verified", "directory", cfg.OutputDir) return nil }