Archilyzer · Source

archilyzer

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

commit d8c9f227f216e98be545f100f549192a764798cb
parent 701c83c28cd777290f5e07aa230c625c7375aff9
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date:   Fri, 25 Sep 2026 20:08:42 -0400

common: KOFI_URL; a bare Ko-fi link in the homepage footer and the hub's footer (never a site build)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Diffstat:
Mcommon/lib/project.ts | 6++++++
Mexport/app/components/Footer.tsx | 14++++++++++++++
Mhomepage/app/components/Footer.tsx | 22+++++++++++++++++-----
3 files changed, 37 insertions(+), 5 deletions(-)

diff --git a/common/lib/project.ts b/common/lib/project.ts @@ -26,6 +26,12 @@ export const PROJECT_NAME = "Archilyzer"; // valid. Only then is changing this string a cosmetic follow-up. export const PROJECT_URL = "https://archilyzer.pages.dev"; +// The project's Ko-fi page. Rendered as a bare link (visible text "Ko-fi", no +// copy around it) on the project's OWN surfaces only: the homepage footer and +// the hub's footer. A site build never shows it — an archive someone else +// hosts must not carry this project's tip jar. +export const KOFI_URL = "https://ko-fi.com/archilyzer"; + export const PROJECT_TAGLINE = "Self-hosted, searchable video-transcript archives."; // Where a visitor gets the source. A dated snapshot tarball — there is no diff --git a/export/app/components/Footer.tsx b/export/app/components/Footer.tsx @@ -8,6 +8,7 @@ import { resolveSocialLinks, } from "yt-dlp-transcript-common/lib/site"; import { + KOFI_URL, PROJECT_NAME, PROJECT_URL, } from "yt-dlp-transcript-common/lib/project"; @@ -88,6 +89,19 @@ export default function Footer() { {PROJECT_NAME} </a> </span> + {/* Ko-fi: a bare link, no copy — and on the HUB only. The hub is the + project's own deployment; a site build is an archive whoever runs + it hosts, and must not carry this project's tip jar. */} + {instanceMode() === "hub" && ( + <a + href={KOFI_URL} + target="_blank" + rel="noopener noreferrer" + className="text-xs underline underline-offset-2 hover:text-foreground transition-colors" + > + Ko-fi + </a> + )} {socialLinks.length > 0 && ( <ul className="flex items-center gap-3 list-none"> {socialLinks.map((link, i) => ( diff --git a/homepage/app/components/Footer.tsx b/homepage/app/components/Footer.tsx @@ -5,6 +5,7 @@ import { } from "yt-dlp-transcript-common/lib/settings"; import { resolveHomepageSocialLinks } from "yt-dlp-transcript-common/lib/homepage"; import { + KOFI_URL, PROJECT_NAME, PROJECT_TAGLINE, } from "yt-dlp-transcript-common/lib/project"; @@ -49,9 +50,12 @@ export default function Footer() { </ul> </nav> - {socialLinks.length > 0 && ( - <div className="flex flex-col gap-3"> - <span className="label-machine">Elsewhere</span> + {/* "Elsewhere": the operator's social accounts, then the project's + Ko-fi — a bare link, no copy. Ko-fi is always present, so the + column always renders; the icon row only when links are set. */} + <div className="flex flex-col gap-3"> + <span className="label-machine">Elsewhere</span> + {socialLinks.length > 0 && ( <ul className="flex items-center gap-4 list-none"> {socialLinks.map((link, i) => ( <li key={`${link.url}-${i}`}> @@ -67,8 +71,16 @@ export default function Footer() { </li> ))} </ul> - </div> - )} + )} + <a + href={KOFI_URL} + target="_blank" + rel="noopener noreferrer" + className="text-sm text-[var(--muted-foreground)] hover:text-[var(--foreground)] transition-colors" + > + Ko-fi + </a> + </div> </div> </footer> );