From 667b1a82c3512fcc777ab1d9a341c3442128beec Mon Sep 17 00:00:00 2001 From: jay Date: Sun, 28 Jun 2026 20:01:20 -0400 Subject: [PATCH] =?UTF-8?q?brand:=20standardize=20"Upbeat=20Bytes"=20?= =?UTF-8?q?=E2=86=92=20"upbeatBytes"=20everywhere?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Per the logo + brand: the name is upbeatBytes (camelCase). Swept all user-facing strings — titles/og:site_name/og:title, logo alt text, share pages (share.py), emails (email_send), classifier prompt (llm), digest/unsubscribe (api), PWA manifest, game share text, sign-in, the SPA shell + patch-static-heads (play title) — plus README/publish.sh and the email test fixture. (SMTP From env was already upbeatBytes.) Domains (upbeatbytes.com) unchanged. 425 BE + 36 FE green. Co-Authored-By: Claude Opus 4.8 --- README.md | 4 +-- deploy/publish.sh | 4 +-- frontend/scripts/patch-static-heads.mjs | 2 +- frontend/src/app.css | 2 +- frontend/src/app.html | 6 ++--- .../src/lib/components/ArticleCard.svelte | 4 +-- frontend/src/lib/components/BloomGame.svelte | 2 +- frontend/src/lib/components/Header.svelte | 4 +-- frontend/src/lib/components/MatchGame.svelte | 2 +- frontend/src/lib/components/NewsFeed.svelte | 8 +++--- frontend/src/lib/components/SignIn.svelte | 2 +- frontend/src/lib/components/WordGame.svelte | 2 +- .../src/lib/components/WordSearchGame.svelte | 2 +- frontend/src/routes/account/+page.svelte | 2 +- frontend/src/routes/admin/+page.svelte | 2 +- frontend/src/routes/auth/verify/+page.svelte | 2 +- frontend/src/routes/play/+page.svelte | 2 +- frontend/src/routes/zen/+page.svelte | 4 +-- frontend/static/manifest.webmanifest | 4 +-- goodnews/api.py | 6 ++--- goodnews/email_send.py | 18 ++++++------- goodnews/llm.py | 2 +- goodnews/share.py | 26 +++++++++---------- tests/test_email_reply_to.py | 4 +-- 24 files changed, 58 insertions(+), 58 deletions(-) diff --git a/README.md b/README.md index 8aa2029..e9a5cbe 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ -# Upbeat Bytes +# upbeatBytes Calm, constructive news — local-first ingestion, scoring, and a daily brief. (The Python package and CLI are named `goodnews` for historical reasons; the -product is **Upbeat Bytes**, at upbeatbytes.com.) +product is **upbeatBytes**, at upbeatbytes.com.) The first milestone is intentionally small: collect public RSS/Atom metadata, dedupe it, store short source-provided snippets, and attach early reason-coded heuristic scores. It does not store full article bodies. diff --git a/deploy/publish.sh b/deploy/publish.sh index f20c870..79a2223 100755 --- a/deploy/publish.sh +++ b/deploy/publish.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# Publish Upbeat Bytes: build the frontend, sync it to the live Caddy site, +# Publish upbeatBytes: build the frontend, sync it to the live Caddy site, # rebuild/restart the API container, and reload Caddy. One command to redeploy. set -euo pipefail @@ -26,4 +26,4 @@ curl -fsS -o /dev/null -w ' logo-email.png → %{http_code} %{content_type}\n' https://upbeatbytes.com/logo-email.png \ || echo " ⚠ logo-email.png is not being served — the digest masthead would break!" -echo "✓ Published Upbeat Bytes → https://upbeatbytes.com" +echo "✓ Published upbeatBytes → https://upbeatbytes.com" diff --git a/frontend/scripts/patch-static-heads.mjs b/frontend/scripts/patch-static-heads.mjs index dd1ba88..a6d7680 100644 --- a/frontend/scripts/patch-static-heads.mjs +++ b/frontend/scripts/patch-static-heads.mjs @@ -19,7 +19,7 @@ const PAGES = [ }, { file: 'play.html', path: '/play', - title: 'Play · Upbeat Bytes — calm daily games', + title: 'Play · upbeatBytes — calm daily games', desc: 'A calm set of daily games — Daily Word, Word Search, Bloom, and Memory Match. ' + 'A friendly little break from the doomscroll.', }, diff --git a/frontend/src/app.css b/frontend/src/app.css index 7eb7bb1..caa9266 100644 --- a/frontend/src/app.css +++ b/frontend/src/app.css @@ -8,7 +8,7 @@ font-display: swap; } -/* Upbeat Bytes calm design system. +/* upbeatBytes calm design system. Sand, sea, and sun: warm paper surfaces, a vivid-azure accent, gold highlight, a serif voice for headlines, strong readable contrast, generous space. No urgency colors (no red). Built around the logo's #0083ad azure. */ diff --git a/frontend/src/app.html b/frontend/src/app.html index ee8fad0..c7180d3 100644 --- a/frontend/src/app.html +++ b/frontend/src/app.html @@ -10,7 +10,7 @@ upbeatBytes — a calmer, brighter corner of the internet - + @@ -128,9 +128,9 @@
%sveltekit.body%
diff --git a/frontend/src/lib/components/ArticleCard.svelte b/frontend/src/lib/components/ArticleCard.svelte index d46b9d4..f1bcc99 100644 --- a/frontend/src/lib/components/ArticleCard.svelte +++ b/frontend/src/lib/components/ArticleCard.svelte @@ -59,7 +59,7 @@ if (value) onaction?.(kind, value); } - // Sharing: share the branded Upbeat Bytes card page (default), with copy-source. + // Sharing: share the branded upbeatBytes card page (default), with copy-source. let shareOpen = $state(false); let copied = $state(''); const canNativeShare = typeof navigator !== 'undefined' && !!navigator.share; @@ -105,7 +105,7 @@ {:else if usePlaceholder} {/if} diff --git a/frontend/src/lib/components/BloomGame.svelte b/frontend/src/lib/components/BloomGame.svelte index bab396b..14f7d3d 100644 --- a/frontend/src/lib/components/BloomGame.svelte +++ b/frontend/src/lib/components/BloomGame.svelte @@ -228,7 +228,7 @@ const breakdown = Object.keys(byLen).sort((a, b) => b - a).map((l) => `${l}×${byLen[l]}`).join(' '); const pang = found.some(isPangram) ? ' · pangram ✓' : ''; const bloomV = mode === 'daily' ? 'daily' : (format === 'wild' ? 'free-wild' : 'free-center'); - const text = `Upbeat Bytes · Bloom ${date}\n${fullBloom ? 'Full Bloom 🌸' : tier.name} · ${found.length} words${pang}\n${breakdown}\n${gameShareUrl('bloom', bloomV)}`; + const text = `upbeatBytes · Bloom ${date}\n${fullBloom ? 'Full Bloom 🌸' : tier.name} · ${found.length} words${pang}\n${breakdown}\n${gameShareUrl('bloom', bloomV)}`; if (navigator.share) navigator.share({ text }).then(() => trackGame('bloom', 'shared')).catch(() => {}); else navigator.clipboard?.writeText(text).then(() => { trackGame('bloom', 'shared'); copied = true; setTimeout(() => (copied = false), 1500); }); } diff --git a/frontend/src/lib/components/Header.svelte b/frontend/src/lib/components/Header.svelte index 45e8ee3..ab1a326 100644 --- a/frontend/src/lib/components/Header.svelte +++ b/frontend/src/lib/components/Header.svelte @@ -6,8 +6,8 @@
- - + +