From 27af9d09031236a96339cc9cfe844eac551b04e2 Mon Sep 17 00:00:00 2001 From: MattNotarangelo Date: Wed, 24 Jun 2026 15:49:32 -0700 Subject: [PATCH] fix(seo): set explicit site name and search-ready favicon Google search results showed the site name as "Cloudflare" and a generic globe icon instead of the project's own. The page provided no site-name signal, so Google fell back to the pages.dev registered domain, and the 1019x1095 non-square favicon failed Google's square/multiple-of-48 favicon requirement. - Add og:site_name, og:title/description/type/url and a WebSite JSON-LD block so search engines label the result "Cave Survey Viewer". - Add application-name meta tag. - Add a 96x96 square favicon-96x96.png (centre-cropped from the source) and reference it with an explicit sizes hint, keeping the original as fallback. The JSON-LD is an application/ld+json data block, not executable script, so the existing strict script-src CSP is unaffected. Co-Authored-By: Claude Opus 4.8 (1M context) --- index.html | 20 ++++++++++++++++++++ public/favicon-96x96.png | Bin 0 -> 8109 bytes 2 files changed, 20 insertions(+) create mode 100644 public/favicon-96x96.png diff --git a/index.html b/index.html index 3530265..da2b833 100644 --- a/index.html +++ b/index.html @@ -11,11 +11,31 @@ content="default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob:; connect-src 'self'; worker-src 'self' blob:; object-src 'none'; base-uri 'self'; form-action 'none'" /> Cave Survey Viewer + + + + + + + + +
diff --git a/public/favicon-96x96.png b/public/favicon-96x96.png new file mode 100644 index 0000000000000000000000000000000000000000..c4bb6e03d88c72fc4da094e029d663847dc987bc GIT binary patch literal 8109 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 AGynhq literal 0 HcmV?d00001