From f387dc300b127c07062aeb9a1c8b69b52f97465d Mon Sep 17 00:00:00 2001 From: Val Alexander Date: Fri, 19 Jun 2026 03:19:37 -0500 Subject: [PATCH 1/2] =?UTF-8?q?chore:=20add=20dev:cave=20script=20for=20lo?= =?UTF-8?q?cal=20Salem=20=E2=86=94=20Cave=20integration?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Runs the chat API on :3001 so it can pair with Coven Cave's dev server (which owns :3000) when Cave's /api/salem proxies to SALEM_CHAT_API_URL. Co-Authored-By: Claude Opus 4.8 (1M context) --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 7cdf030..8eecec5 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "scripts": { "bdev": "next build && next dev", "dev": "next dev", + "dev:cave": "next dev -p 3001", "build": "next build", "start": "next start", "lint": "next lint", From 67c178148268b79efcbed61a6f4357d4fd38abea Mon Sep 17 00:00:00 2001 From: Val Alexander Date: Fri, 19 Jun 2026 03:41:24 -0500 Subject: [PATCH 2/2] feat: add dedicated favicon assets MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The favicon previously resolved from /logo.svg (white mark on transparent), which was faint on light browser tabs. Add self-contained favicon assets so the mark stays legible on both light and dark tabs: - public/favicon.svg — OpenCoven monoline mark (white) on a dark rounded tile; crisp at any size for modern browsers. - public/favicon.ico — multi-size 16/32/48 raster (strokes slightly bolded for small-size legibility). - public/apple-icon.png — 180x180 apple-touch-icon. Wire all three into the metadata icons in app/layout.tsx. /logo.svg is unchanged and still used for the in-page header and chat button. Co-Authored-By: Claude Opus 4.8 (1M context) --- app/layout.tsx | 6 +++++- public/apple-icon.png | Bin 0 -> 11517 bytes public/favicon.ico | Bin 0 -> 15086 bytes public/favicon.svg | 11 +++++++++++ 4 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 public/apple-icon.png create mode 100644 public/favicon.ico create mode 100644 public/favicon.svg diff --git a/app/layout.tsx b/app/layout.tsx index 9c5e324..399a06e 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -7,7 +7,11 @@ export const metadata: Metadata = { title: "Salem | OpenCoven Documentation Assistant", description: "RAG-based documentation assistant for OpenCoven", icons: { - icon: "/logo.svg", + icon: [ + { url: "/favicon.svg", type: "image/svg+xml" }, + { url: "/favicon.ico", sizes: "any" }, + ], + apple: { url: "/apple-icon.png", sizes: "180x180" }, }, openGraph: { images: [`${baseUrl}/og-image.png`], diff --git a/public/apple-icon.png b/public/apple-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d8404241f7fde1d0afc471a3e74762e522501229 GIT binary patch literal 11517 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 O`7eA;qZB?{zW)~_nGzfT literal 0 HcmV?d00001 diff --git a/public/favicon.svg b/public/favicon.svg new file mode 100644 index 0000000..a3b7523 --- /dev/null +++ b/public/favicon.svg @@ -0,0 +1,11 @@ + + + + + + + + + + +