Skip to content

Add an "Is BlueBubbles a good fit for me?" questionnaire - #43

Merged
zlshames merged 9 commits into
masterfrom
fit-quiz
Sep 18, 2026
Merged

zlshames merged 9 commits into
masterfrom
fit-quiz

Conversation

@zlshames

Copy link
Copy Markdown
Member

Six questions that answer the thing a newcomer actually wants to know before spending an evening on setup. Light in tone, honest in substance, and willing to say no.

Grounded in real constraints

Every question maps to something already documented in the FAQ or install guide — a Mac is required (a VM counts), the server only relays while that Mac is awake, Full Disk Access is mandatory, SMS is not supported. Nothing invented.

Three severities, not two

Severity Behaviour Used for
Disqualifying Ends the quiz immediately No Mac and no plans to get one — the only requirement with no workaround
Blocking Continues, but the result is "probably not" Managed school/work Mac; wanting to read only on an iPhone
Caveat Yes, with notes attached A Mac that sleeps; needing SMS; wanting zero configuration

The middle tier exists because two tiers produced a contradiction: a managed-Mac answer returned a result headed "Yes, with a couple of caveats" sitting directly above a note reading "Probably not for you". Caught by running the paths, not by reading the code.

Verified across four paths:

Path Verdict
No Mac Not a match — ends immediately
Managed Mac Not a match
iPhone only Not a match
Sleeps sometimes + needs SMS Yes, with caveats
Clean run Yes — built for you

Details

  • The result links somewhere matched to the verdict: install guide + downloads for a yes, FAQ + Discord for a no
  • All six questions are in the HTML and the script reveals one at a time, so without JavaScript the page is a readable list rather than an empty box, plus a noscript summary
  • Answers stay in the browser; nothing is sent anywhere, and the page says so up front
  • Back button per step, and a restart on the result

Linked from the footer and the home hero.

🤖 Generated with Claude Code

zlshames and others added 9 commits September 18, 2026 17:00
Six questions that answer the one thing a newcomer actually wants to know
before spending an evening on setup. Light in tone, honest in substance,
and willing to say no.

Every question maps to a real constraint already documented in the FAQ or
the install guide: a Mac is required and a VM counts, the server only
relays while that Mac is awake, Full Disk Access is mandatory, and SMS is
not supported. Nothing here is invented.

Three severities rather than two, because two was not enough:

- Disqualifying ends the quiz on the spot. Only "no Mac, and no plans to
  get one" qualifies, since that is the single requirement with no
  workaround.
- Blocking carries on but steers the result to "probably not". A managed
  school or work Mac, and wanting to read messages only on an iPhone, are
  both of this kind. The first version treated them as caveats, which
  produced a result headed "Yes, with a couple of caveats" sitting directly
  above a note reading "Probably not for you". Caught by running the paths
  rather than by reading the code.
- Caveats produce a yes with the relevant notes attached: a Mac that sleeps,
  needing SMS, wanting zero configuration.

The result sends people somewhere useful and matched to the verdict: the
install guide and downloads for a yes, the FAQ and Discord for a no.

All six questions are in the HTML and the script shows one at a time, so
without JavaScript the page is still a readable list rather than an empty
box; a noscript note gives the short version. Answers stay in the browser
and nothing is sent anywhere, which the page says up front.

Linked from the footer and from the home hero, where the question is
actually being asked.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Numbered nodes joined by connectors, in the shape of React Bits' Stepper:
answered questions collapse to a tick on a filled node, the current one is
ringed, the rest stay outlined, and each connector fills as you pass it.

Built in CSS rather than with the `motion` package that component depends
on. The transitions here are colour and background changes on three states,
which CSS does without a runtime.

The indicator tells the truth about partial runs: it marks only the
questions actually answered, so a disqualifying answer on question one
leaves one node ticked and five outstanding rather than implying a
completed run. Verified across the paths -- forward, Back, early exit,
full completion and restart.

It is aria-hidden. Each question card already announces "Question N of 6",
and repeating that as six list items would only add noise for a screen
reader without adding information.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The result said "something in your answers is a genuine blocker", which
told the reader nothing they could act on -- the detail was in the notes
below, but the sentence carrying the verdict was vague.

Each deciding answer now supplies a short clause naming why it counts, and
the verdict sentence is built from the ones that actually applied:

  The sticking point is that you do not have a Mac.
  Two things get in the way: the Mac belongs to a school or employer and
  you only read messages on Apple devices.
  BlueBubbles will work for you. One thing worth knowing first: your Mac
  will not be awake much.

The clauses are deliberately short. A first attempt carried the full
explanation in each, which read fine alone and became an unparseable
run-on once two were joined by "and". The detail stays in the notes, which
is where there is room for it.

Counting is handled in both directions: one, two, or a few, for blockers
and caveats alike. The first version hardcoded "Two things" and would have
said that for three.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
BlueBubbles does carry SMS and RCS. They reach the Mac by Text Message
Forwarding from an iPhone, so what is actually required is a phone number,
not a missing feature.

The question now asks whether you want them and splits on whether you have
an iPhone with a SIM:

- Have one: a clean yes, with a note to enable Text Message Forwarding and
  point it at the server Mac.
- Do not: a caveat rather than a blocker, noting that a cheap prepaid SIM in
  an old iPhone on the same Apple ID is the usual workaround, and that
  iMessage works regardless.

This was wrong because it was taken from the FAQ, which says "Not at this
time, though we hope to add this feature in the near future!" -- and that
answer is live on the site today. The quiz is fixed here; the FAQ entry
still needs correcting, and is the more visible of the two.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…warding

Several notes were written as replies to the question that prompted them,
which reads fine while answering and badly on the result screen, where the
question is no longer on the page. "There are. The install guide walks
through every step" is the worst of them: on its own, "There are" refers to
nothing. Also fixed: "Fine.", "Then set expectations accordingly", and
"That works".

Corrects the SMS note as well. It said to turn on Text Message Forwarding
and point it at the server Mac, which overstates the work: with the iPhone
and the Mac on the same Apple ID, texts forward on their own. The manual
setting is now described as the fallback for when they do not appear, which
is what it actually is.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
"Grab the server for your Mac and a client for whatever you actually carry
around" was doing too much: "grab" and "carry around" are colloquial in a
way the rest of the page is not, and "a client for whatever you actually
carry around" makes the reader work out what a client is and which of their
devices counts.

Now: "Install the server on your Mac, then the app wherever you want to
read your messages." Same instruction, in the order it happens.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The current 2.x server needs Sonoma or newer, so the macOS version decides
which server someone ends up on -- and that is worth knowing before they
start rather than after.

Tahoe and Sequoia pass without comment. Sonoma passes with a note that a
few of the newer Private API features want Sequoia or Tahoe. Ventura and
older is a caveat rather than a blocker: BlueBubbles still works, on the
1.x server, which is in maintenance rather than active development. The
note gives the three ways out -- upgrade macOS if the Mac supports it, use
OpenCore Legacy Patcher if Apple has dropped it, or move to a newer Mac.

The floor is Sonoma, not Sequoia: Package.swift declares .macOS(.v14) with
"macOS 14 (Sonoma)" beside it, the compatibility matrix starts at 14, and
the lowest capability floor is 14. Confirmed before building, because
telling a Sonoma user to patch a Mac that already works would have been
worse than saying nothing.

The question count is no longer written into the copy. The lead derives it
from the data and the home page link no longer names a number, so the next
question added cannot leave "Six questions" stranded above seven of them --
which is exactly what this change would have done.

The result title is now count-aware too: "Yes, with one caveat" above "One
thing worth knowing first", rather than the static "a couple of caveats"
contradicting the sentence beneath it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The question shipped talking about "the current 2.x server" and 1.x being
in maintenance. Neither is true yet: 2.x has not been released, so a reader
cannot be on it, and telling someone their Mac is too old for a release
that does not exist is worse than not asking.

There are now two variants of that one question and a flag choosing between
them. The rest of the quiz is identical either way.

While 1.x is the only server, macOS version does not decide whether
BlueBubbles runs -- it decides how much of the Private API is available. So
the question asks in those terms, with buckets matching the FAQ's own
compatibility tables (Ventura and newer, Big Sur or Monterey, Catalina and
older), and says nothing about versions at all.

Flipping V2_RELEASED to true on release day swaps in the other variant:
Sonoma floor, the 1.x-versus-2.x explanation, and OpenCore Legacy Patcher
for Macs Apple has dropped.

Verified by building both ways. With the flag false the page offers the
Ventura-and-newer buckets and contains no mention of 2.x, 1.x, OpenCore,
Sonoma, Sequoia or Tahoe; with it true the Sonoma-floor choices appear. It
is now back to false.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
# Conflicts:
#	scripts/verify-build.mjs
@zlshames
zlshames merged commit a15979a into master Sep 18, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant