Select safe capture improvements from PR 7 - #9
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
ibrahim-khan12
added a commit
that referenced
this pull request
Jul 21, 2026
…uard Traced every call into the speech layer. speak() and createStreamingSpeech() (the two functions that produce audible content) are imported only by ConversationScreen.tsx across all 9 other screens. The other window.speechSynthesis.speak() call sites, in audioUnlock.ts and speech.ts's own unlockAudio(), are silent volume:0 empty-text utterances used to prime the browser's speech engine for the mobile autoplay gate, not spoken content. Earcons (lib/earcon.ts) are pure oscillator tones, not speech. No live region duplicates another region's announcement on the same screen. Verified live: instrumented window.speechSynthesis.speak and Audio() in the running app. Home, Settings, and the Saved-restaurants list produced only silent priming calls (empty/space text, volume 0, empty-src or silent-WAV audio). Opening a saved restaurant into Conversation produced a real blob-URL audio play (OpenAI TTS), confirming the instrumentation correctly detects genuine speech and that it fires only there. Adds tests/speechScope.test.ts as the automated guard: it reads every screen file and fails if any file other than ConversationScreen.tsx imports speak or createStreamingSpeech, including a sanity check that the detector catches a planted violation. This is the regression guard the report asked for; future changes are caught here instead of needing another manual trace. Remaining: a real-device VoiceOver pass to confirm the audible experience matches, same device-only caveat as bugs #14 and #15. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.
Selectively lands the useful app/test parts from collaborator PR #7 without merging stale docs or BUGS-CLAUDE.md.\n\nIncluded:\n- Ground chat replies in menu provenance so photo menus are not described as found online or most current.\n- Add scanner framing metrics for too close, too far, and tilted guidance.\n- Add post-capture/upload photo quality feedback with a retake-last-photo flow.\n- Add a soft 0.5x camera zoom hint where supported.\n- Add unit tests for scanner metrics and photo quality verdicts.\n\nVerification:\n- npm test\n- npm run build\n- npm run a11y:audit against Vite preview on localhost:4173\n\nNot included:\n- BUGS-CLAUDE.md\n- stale AGENTS.md/FABLE doc state from the source branch\n\nReal-device camera and VoiceOver behavior still need confirmation on an iPhone/phone camera because local automated checks cannot verify hardware camera framing or true screen-reader behavior.