Archilyzer · Source

archilyzer

Archilyzer
git clone https://archilyzer.pages.dev/source/archilyzer.git
Log | Files | Refs | README | LICENSE

commit ce82f1b7fa07cc122fd29313d3f41b24b6d7dd90
parent 02545df562a0da24327e90ad33a6f26e7110055e
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date:   Fri, 25 Sep 2026 21:27:08 -0400

homepage: the icons and favicon are rendered at build from the parent mark (brand S1)

The twin of the export routes, always ICON_PALETTES.archilyzer (bone on
slate). The committed public/icons/* and app/favicon.ico are gone; the layout
links ICON_METADATA, which adds icon-32.png. The OG image still names
/icons/icon-512.png.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

Diffstat:
Dhomepage/app/favicon.ico | 0
Ahomepage/app/favicon.ico/route.ts | 10++++++++++
Ahomepage/app/icons/[file]/route.ts | 27+++++++++++++++++++++++++++
Mhomepage/app/layout.tsx | 11+++--------
Dhomepage/public/icons/apple-touch-icon.png | 0
Dhomepage/public/icons/icon-192.png | 0
Dhomepage/public/icons/icon-512.png | 0
Dhomepage/public/icons/icon.svg | 10----------
Dhomepage/public/icons/maskable-512.png | 0
Dhomepage/public/icons/maskable.svg | 7-------
10 files changed, 40 insertions(+), 25 deletions(-)

diff --git a/homepage/app/favicon.ico b/homepage/app/favicon.ico Binary files differ. diff --git a/homepage/app/favicon.ico/route.ts b/homepage/app/favicon.ico/route.ts @@ -0,0 +1,10 @@ +import { ICON_PALETTES } from "yt-dlp-transcript-common/lib/brand"; +import { iconResponse, renderFaviconIco } from "yt-dlp-transcript-common/lib/brandIcons"; + +// /favicon.ico: the parent mark at 16/32/48 in one PNG-payload ICO. Static; +// written to out/favicon.ico at build. +export const dynamic = "force-static"; + +export async function GET() { + return iconResponse(await renderFaviconIco(ICON_PALETTES.archilyzer), "image/x-icon"); +} diff --git a/homepage/app/icons/[file]/route.ts b/homepage/app/icons/[file]/route.ts @@ -0,0 +1,27 @@ +import { ICON_PALETTES } from "yt-dlp-transcript-common/lib/brand"; +import { + ICON_FILES, + iconResponse, + renderIconFile, +} from "yt-dlp-transcript-common/lib/brandIcons"; + +// /icons/<file>: the project site's icon set — the parent mark, achromatic +// (bone on slate), rendered at build time from common/lib/brand.ts. The twin +// of export/app/icons/[file]/route.ts; under `output: "export"` each listed +// file lands at out/icons/<file>. The OG image names /icons/icon-512.png. +export const dynamic = "force-static"; +export const dynamicParams = false; + +export function generateStaticParams() { + return ICON_FILES.map((f) => ({ file: f.file })); +} + +export async function GET( + _req: Request, + { params }: { params: Promise<{ file: string }> }, +) { + const { file } = await params; + const out = await renderIconFile(file, ICON_PALETTES.archilyzer); + if (!out) return new Response("Not found", { status: 404 }); + return iconResponse(out.body, out.contentType); +} diff --git a/homepage/app/layout.tsx b/homepage/app/layout.tsx @@ -7,6 +7,7 @@ import { PROJECT_TAGLINE, PROJECT_URL, } from "yt-dlp-transcript-common/lib/project"; +import { ICON_METADATA } from "yt-dlp-transcript-common/lib/brandIcons"; import Header from "./components/Header"; import Footer from "./components/Footer"; import "./globals.css"; @@ -31,14 +32,8 @@ export const metadata: Metadata = { description: "Archilyzer downloads a channel's back catalogue, transcribes it on your " + "own machine, and builds a static, searchable site you host yourself.", - icons: { - icon: [ - { url: "/icons/icon.svg", type: "image/svg+xml" }, - { url: "/icons/icon-192.png", sizes: "192x192", type: "image/png" }, - { url: "/icons/icon-512.png", sizes: "512x512", type: "image/png" }, - ], - apple: [{ url: "/icons/apple-touch-icon.png", sizes: "180x180" }], - }, + // Rendered at build by app/icons/[file]/route.ts — the parent mark. + icons: ICON_METADATA, openGraph: { type: "website", siteName: PROJECT_NAME, diff --git a/homepage/public/icons/apple-touch-icon.png b/homepage/public/icons/apple-touch-icon.png Binary files differ. diff --git a/homepage/public/icons/icon-192.png b/homepage/public/icons/icon-192.png Binary files differ. diff --git a/homepage/public/icons/icon-512.png b/homepage/public/icons/icon-512.png Binary files differ. diff --git a/homepage/public/icons/icon.svg b/homepage/public/icons/icon.svg @@ -1,10 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 512 512" role="img" aria-label="Archilyzer"> - <!-- The tool's mark, not an archive's. The export sites wear a brass diamond - on warm black; this is a bone play head on graphite — the instrument that - builds them, in the instrument family's palette (see tokens.css, - [data-theme="archilyzer"]). The bar beneath is the transcript: the - recording resolved into a line of text. --> - <rect width="512" height="512" rx="96" fill="#151b20"/> - <polygon points="188,132 372,236 188,340" fill="#e7edf1"/> - <rect x="140" y="384" width="232" height="20" rx="4" fill="#8496a2"/> -</svg> diff --git a/homepage/public/icons/maskable-512.png b/homepage/public/icons/maskable-512.png Binary files differ. diff --git a/homepage/public/icons/maskable.svg b/homepage/public/icons/maskable.svg @@ -1,7 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 512 512" role="img" aria-label="Archilyzer"> - <!-- Maskable variant: same mark, pulled into the safe zone (the inner 80% - circle) because a launcher may crop this to any shape. --> - <rect width="512" height="512" fill="#151b20"/> - <polygon points="206,164 350,246 206,328" fill="#e7edf1"/> - <rect x="176" y="356" width="160" height="16" rx="4" fill="#8496a2"/> -</svg>