From 8ed2a2af6cf185936c8add978647c85771bc1e2b Mon Sep 17 00:00:00 2001 From: mannes Date: Thu, 24 Sep 2026 10:14:57 +0200 Subject: [PATCH] Add a Ko-fi link to the footer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A rotating joke per page load (9V battery · 10A fuse · new test leads · electrical tape), with a plain 'Support libreble on Ko-fi' title and aria-label so the destination is clear. Co-Authored-By: Claude Opus 5.5 (1M context) --- apps/web/src/components/AppFooter.tsx | 42 ++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/apps/web/src/components/AppFooter.tsx b/apps/web/src/components/AppFooter.tsx index 30a7e16..eb32777 100644 --- a/apps/web/src/components/AppFooter.tsx +++ b/apps/web/src/components/AppFooter.tsx @@ -1,4 +1,4 @@ -// One centered line: libreble · GitHub · Report an issue · build version. Colours come from the +// One centered line: libreble · GitHub · Report an issue · Ko-fi · build version. Colours come from the // zinc ramp, which index.css mirrors per theme; the libreble accent opts in via `dark:`. const REPO = 'https://github.com/libreble/multimeter'; @@ -7,6 +7,16 @@ const RELEASE = /^v\d+\.\d+\.\d+$/.test(__APP_VERSION__) ? `${REPO}/releases/tag/${__APP_VERSION__}` : null; +/** The Ko-fi link wears a different joke each page load; its title/aria-label says what it is. */ +const KOFI_JOKES = [ + 'Buy me a 9V battery', + 'Buy me a 10A fuse', + 'Buy me new test leads', + 'Buy me some electrical tape', +]; +const KOFI_JOKE = KOFI_JOKES[Math.floor(Math.random() * KOFI_JOKES.length)]; +const KOFI_TITLE = 'Support libreble on Ko-fi'; + const LINK = 'inline-flex items-center gap-1.5 hover:text-zinc-300'; export function AppFooter() { @@ -34,6 +44,17 @@ export function AppFooter() { > Report an issue + + + {KOFI_JOKE} + {RELEASE ? ( + + + + + ); +} + function GitHubMark() { return (