diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a4cbd5dc31f63e504e5c2477dbe4e3b5c61a4771 GIT binary patch literal 9028 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 XL&LB0yy9bEU|{fc^>bP0l+XkKTXcAN literal 0 HcmV?d00001 diff --git a/public/favicon-16x16.png b/public/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..e4b33427ed35425ac8f6896f32256b482b37944c GIT binary patch literal 562 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 SU+NbbXFPvZp%sT*D*^y2vz-e7 literal 0 HcmV?d00001 diff --git a/public/favicon.svg b/public/favicon.svg new file mode 100644 index 0000000..86142ae --- /dev/null +++ b/public/favicon.svg @@ -0,0 +1,20 @@ + + + Cameron's ring + + + + + + + + + + diff --git a/src/components/shell.tsx b/src/components/shell.tsx index c4519bd..853059d 100644 --- a/src/components/shell.tsx +++ b/src/components/shell.tsx @@ -36,6 +36,11 @@ export function Shell({ + + + + + diff --git a/src/index.tsx b/src/index.tsx index 4758ed8..46de62c 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -51,6 +51,8 @@ app.use( ); app.use("/public/*", serveStatic({ root: "./" })); app.use("/assets/*", serveStatic({ root: "./public" })); +app.get("/favicon.ico", (c) => c.redirect("/public/favicon.ico", 308)); +app.get("/apple-touch-icon.png", (c) => c.redirect("/public/apple-touch-icon.png", 308)); // --- Routes --- diff --git a/src/knowledge-landing.test.tsx b/src/knowledge-landing.test.tsx index 31bb052..1a386ae 100644 --- a/src/knowledge-landing.test.tsx +++ b/src/knowledge-landing.test.tsx @@ -93,6 +93,10 @@ test("Knowledge landing route renders the overview safely without embedding NOW" assert.doesNotMatch(html, /NOW lead|alert\('now'\)|knowledge-now-brief/); assert.match(html, /href="\/knowledge\/now"[^>]*>Now<\/a>/); assert.doesNotMatch(html, /href="\/public\/charts\.css"/); + assert.match(html, //); + assert.match(html, //); + assert.match(html, //); + assert.match(html, //); }); test("Knowledge landing route adds chart CSS only when the rendered overview declares a chart", async () => {