diff --git a/internal/app/app.go b/internal/app/app.go index 573d24a..99473bc 100644 --- a/internal/app/app.go +++ b/internal/app/app.go @@ -113,6 +113,7 @@ func routes(logger *slog.Logger, cfg *config.Config, db *store.DB, provider ai.P mcpHandler := mcpserver.New(cfg.MCP, toolSet) mux.Handle(cfg.MCP.Path, auth.Middleware(cfg.Auth, keyring, logger)(mcpHandler)) + mux.HandleFunc("/favicon.ico", serveFavicon) mux.HandleFunc("/healthz", func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusOK) diff --git a/internal/app/favicon.go b/internal/app/favicon.go new file mode 100644 index 0000000..b06f267 --- /dev/null +++ b/internal/app/favicon.go @@ -0,0 +1,24 @@ +package app + +import ( + _ "embed" + "net/http" +) + +var ( + //go:embed static/favicon.ico + faviconICO []byte +) + +func serveFavicon(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-Type", "image/x-icon") + w.Header().Set("Cache-Control", "public, max-age=31536000, immutable") + + if r.Method == http.MethodHead { + w.WriteHeader(http.StatusOK) + return + } + + w.WriteHeader(http.StatusOK) + _, _ = w.Write(faviconICO) +} diff --git a/internal/app/static/favicon-source.png b/internal/app/static/favicon-source.png new file mode 100644 index 0000000..35ce339 Binary files /dev/null and b/internal/app/static/favicon-source.png differ diff --git a/internal/app/static/favicon.ico b/internal/app/static/favicon.ico new file mode 100644 index 0000000..3424005 Binary files /dev/null and b/internal/app/static/favicon.ico differ