From c781e42896ec8c26c5155f5093cb4fb0914c6a50 Mon Sep 17 00:00:00 2001 From: zlshames Date: Sat, 19 Sep 2026 07:03:02 -0400 Subject: [PATCH 1/2] Fix the favicon markup and add crisp PNG icons The link tag declared sizes="48x48", carried over from the old site. The .ico actually holds 16, 24, 32 and 48px entries, so claiming a single size stopped browsers picking the right one for a tab. It is now sizes="any". Adds 16 and 32px PNGs generated from the 512px brand icon, which browsers prefer where offered and which are sharper than the .ico's BMP-encoded entries. 852 and 2281 bytes. The .ico stays as the fallback. Both are asserted in the build, so a future change cannot drop them silently. Co-Authored-By: Claude Opus 5 --- public/favicon-16.png | Bin 0 -> 852 bytes public/favicon-32.png | Bin 0 -> 2281 bytes scripts/verify-build.mjs | 2 ++ src/layouts/BaseLayout.astro | 7 ++++++- 4 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 public/favicon-16.png create mode 100644 public/favicon-32.png diff --git a/public/favicon-16.png b/public/favicon-16.png new file mode 100644 index 0000000000000000000000000000000000000000..195575c069bd2b19c47334c494597c4f0e0969ad GIT binary patch literal 852 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 - + {/* sizes="any" on the .ico: it holds 16, 24, 32 and 48px entries, and the + old markup claimed 48x48, which stopped browsers choosing the right one + for a tab. The PNGs are crisper where a browser prefers them. */} + + + From f3c3cbf3238f8b20532e2bb1f8dd7efb9e3c04c6 Mon Sep 17 00:00:00 2001 From: zlshames Date: Sat, 19 Sep 2026 07:03:02 -0400 Subject: [PATCH 2/2] Reword the sentences that leaned on em dashes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Six em dashes across the copy this site added, each rewritten rather than swapped for another mark, since an em dash usually hides a sentence that wanted restructuring: "...to do the actual talking — there's no way around it" -> "...to do the actual talking, and there is no way around it" "It does not need to be fast — it only relays messages" -> "It only relays messages, so it does not need to be fast" "Managed Macs usually block both — and doing it anyway..." -> "Managed Macs usually block both, and doing it anyway..." "Yes — this is built for you" -> "Yes, this is built for you" "nothing sent anywhere — it all runs in your browser" -> "questions, answered in your browser. No email address, and nothing is sent anywhere." "Copy failed — press Control or Command + C" -> "Copy failed. Press Control or Command + C instead." The FAQ, install guide and legal documents are untouched: that copy is carried over verbatim and is not ours to restyle. None contained an em dash in any case. The built output now contains none at all. Co-Authored-By: Claude Opus 5 --- src/components/CopyCommand.astro | 2 +- src/data/fit.ts | 8 ++++---- src/pages/is-it-for-me/index.astro | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/components/CopyCommand.astro b/src/components/CopyCommand.astro index 25880dc..8c4cbff 100644 --- a/src/components/CopyCommand.astro +++ b/src/components/CopyCommand.astro @@ -60,7 +60,7 @@ const { display, copy = display, prompt = true } = Astro.props; if (status) status.textContent = 'Copied to clipboard'; } catch { button.textContent = 'Press ⌘C'; - if (status) status.textContent = 'Copy failed — press Control or Command + C'; + if (status) status.textContent = 'Copy failed. Press Control or Command + C instead.'; } window.setTimeout(() => { button.textContent = 'Copy'; diff --git a/src/data/fit.ts b/src/data/fit.ts index ba551e7..9b689a0 100644 --- a/src/data/fit.ts +++ b/src/data/fit.ts @@ -116,14 +116,14 @@ export const QUESTIONS: readonly Question[] = [ { id: 'mac', question: 'Do you have a Mac, or a way to get one?', - help: "This is the big one. BlueBubbles needs a Mac signed in to iMessage to do the actual talking — there's no way around it.", + help: "This is the big one. BlueBubbles needs a Mac signed in to iMessage to do the actual talking, and there is no way around it.", choices: [ { id: 'have', label: 'Yes, I have a Mac', tone: 'good' }, { id: 'buy', label: 'I could pick up a cheap old one', tone: 'good', - note: 'A second-hand Mac mini is the usual route. It does not need to be fast — it only relays messages.', + note: 'A second-hand Mac mini is the usual route. It only relays messages, so it does not need to be fast.', }, { id: 'vm', @@ -175,7 +175,7 @@ export const QUESTIONS: readonly Question[] = [ reason: 'the Mac belongs to a school or employer', tone: 'warn', blocks: true, - note: 'Probably not for you. BlueBubbles needs Full Disk Access and, for the extra features, a helper installed into Messages. Managed Macs usually block both — and doing it anyway may well breach the device policy you agreed to. Use a personal Mac instead.', + note: 'Probably not for you. BlueBubbles needs Full Disk Access and, for the extra features, a helper installed into Messages. Managed Macs usually block both, and doing it anyway may well breach the device policy you agreed to. Use a personal Mac instead.', }, ], }, @@ -245,7 +245,7 @@ export interface Verdict { export const VERDICTS: Record = { yes: { id: 'yes', - title: 'Yes — this is built for you', + title: 'Yes, this is built for you', blurb: 'You have what BlueBubbles needs, and none of the usual blockers. Install the server on your Mac, then the app wherever you want to read your messages.', }, maybe: { diff --git a/src/pages/is-it-for-me/index.astro b/src/pages/is-it-for-me/index.astro index 7f52ce0..c8ffec2 100644 --- a/src/pages/is-it-for-me/index.astro +++ b/src/pages/is-it-for-me/index.astro @@ -13,7 +13,7 @@ import { LINKS, SITE } from '@data/site'; >