Shorten the app's wording, and tell users to tap Read menu - #44
Open
AnirudhG15 wants to merge 1 commit into
Open
Shorten the app's wording, and tell users to tap Read menu#44AnirudhG15 wants to merge 1 commit into
AnirudhG15 wants to merge 1 commit into
Conversation
Two changes, both about what the user actually hears.
Plain language
--------------
Everything the app says is read aloud by a screen reader, often while someone
is holding a phone over a table. A long sentence is one the listener is still
hearing after the thing it described has already changed, and an uncommon word
is one they have to stop and decode. Both cost time at the exact moment the
user is trying to act.
25 strings were over 90 characters. Capture coaching took the biggest cut,
since it plays over and over:
before: "I don't see menu text yet. Slide the phone slowly over the table
until I find it, or tap Take photo to capture now."
after: "I don't see it yet. Move the phone slowly over the table."
before: "Still dark. Tilt the menu toward the nearest light, or ask for a
phone flashlight. You can also tap Take photo and I will try anyway."
after: "Still dark. Tilt the menu toward a light."
Also shortened: the rotation advice, the capture announcements, the Browse
Menu and Pause Voice messages, the mode-toggle labels, the camera error, the
photo-quality notes, and the Settings hints. Nothing lost any meaning; the
long versions were explaining rather than instructing.
The Read menu step
------------------
Taking photos does NOT start the reading. `analyze()` is reachable only from
the "Read menu" button, so nothing happens until the user activates it — and
neither tutorial said so. A blind user who does not know that is left holding a
phone full of photos wondering why the app has gone quiet.
Both tutorials now have the step, with the Voice Control phrasing for anyone
who drives the app by voice. The full tutorial also gained a "Take your photos"
step so the capture flow reads in order.
Tests: 7 new guards. Ceilings on coaching and tutorial length, a check that no
single spoken sentence runs long, a small list of words with plainer
equivalents, and two that fail if either tutorial stops telling the user about
Read menu.
Three existing tests hard-coded the old wording and broke. Rather than
re-copying the new strings into them, they now import the message tables
directly (STAGE_MSGS, ROTATE_MSGS, RELAX_NOTICE are exported for this), so
future rewording cannot silently stop them checking anything.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two changes, both about what the user actually hears.
Plain language
Everything the app says is read aloud by a screen reader, usually while someone is holding a phone over a table. A long sentence is one the listener is still hearing after the thing it described has already changed. An uncommon word is one they have to stop and decode. Both cost time at exactly the moment the user is trying to act.
25 strings were over 90 characters. Capture coaching took the biggest cut, since it plays over and over:
Also shortened: the capture announcements, the Browse Menu and Pause Voice messages, the mode-toggle labels, the camera error, the photo-quality notes, and the Settings hints. Nothing lost meaning — the long versions were explaining where they should have been instructing.
The Read menu step
Taking photos does not start the reading.
analyze()is reachable only from the "Read menu" button, so nothing happens until the user activates it — and neither tutorial said so. A blind user who doesn't know that is left holding a phone full of photos wondering why the app has gone quiet.Both tutorials now carry the step:
The full tutorial also gained a Take your photos step, so the capture flow reads in order.
Note on wording: the request mentioned saying "read menu" to VoiceOver. VoiceOver is a screen reader and doesn't take spoken commands — the Apple feature that does is Voice Control, where "Tap Read menu" is the correct phrasing. That's what the step says. With VoiceOver alone the user swipes to the button and double-taps, which the first sentence covers. Happy to reword if a different flow was meant.
Tests
7 new guards:
Mutation-checked: reinstating one long, jargon-heavy message fails 3 of the guards.
Three existing tests hard-coded the old wording and broke on this change. Rather than re-copying the new strings into them, they now import the message tables directly (
STAGE_MSGS,ROTATE_MSGS,RELAX_NOTICEare exported for this), so future rewording can't silently stop them checking anything.Full suite 189/190,
tsc -bclean,vite buildclean. The one failure (auth.test.ts) fails identically onmain—joseis declared but not installed.Verified both tutorials render correctly in the browser at mobile size. The only console errors are
/api/events404s, which are the telemetry endpoint not existing under plainvite dev.🤖 Generated with Claude Code