Conversation
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — The PR adds an explicitly opt-in, device-local voice auto-send option while preserving the existing review-first default and existing submission checks. The new controller behavior is narrowly scoped and covered by focused tests; the remaining changes are settings wiring, documentation, and test-only dependencies. You can add or adjust custom eligibility rules. Learn more. |
|
Understand this PR’s impact Explore downstream dependencies and potential security impact with Blast Radius. No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository: pingdotgg/t3code/.coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (12)
Included review availability: Your plan provides up to 10 included reviews per hour; 8 remain after this review. 📝 WalkthroughWalkthroughThe pull request adds browser voice input and immediate-send settings for web and mobile composers. It adds settings contracts, recording lifecycle handling, composer integration, mobile submission guards, tests, and documentation. ChangesVoice input and immediate submission
Priority: ➖ Normal Estimated code review effort: 4 (Complex) | ~60 minutes Change: Feature Sequence Diagram(s)sequenceDiagram
participant User
participant Settings
participant VoiceInput
participant Composer
participant Submit
User->>Settings: Enable immediate sending
Settings->>VoiceInput: Provide voiceInputSendImmediately
User->>VoiceInput: Start and finish recording
VoiceInput->>Composer: Commit transcript
VoiceInput->>Composer: Request submission when eligible
Composer->>Submit: Send the composed message
Suggested reviewers: Merge Risk: ⚪ Minimal · up to The voice-input setting and controls have no remaining actionable issue in the reviewed changes. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 16 functions across 19 files. (1 skipped: 1 unsupported.)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
Add voice input to supported web browsers and an optional immediate-send setting on web and iPhone. The default inserts recognized text into the composer for review. Enabling immediate sending submits the full composer message through the normal send path.
The settings are device-local and off by default:
Both new tasks and existing threads use their existing send checks, attachments, and connection paths. Recognition replaces the selection captured when recording starts. Sending waits for the committed text to render. A blocked send stays in the composer and is not retried later automatically. Cancellation, errors, empty results, and stale drafts never send. Switching threads or hiding the browser page cancels web recognition.
Web uses the browser's SpeechRecognition API, requires HTTPS or localhost, and reports unsupported clients and permission/service errors. The browser may send audio to its speech service; the microphone tooltip, setting, and user guide explain this. No API key, new transcription backend, or provider-adapter changes are required.
Web comparison and demos
Default: insert into the composer · Opt-in: send immediately
The web videos visibly label simulated browser speech-result events. The actual composer and send paths run against an isolated backend. New-thread and existing-thread submissions received the expected agent replies. These captures do not verify microphone audio or the browser vendor's recognition service.
iPhone settings comparison and demos
Before video · After video
Captured on the iPhone 17 Pro simulator, iOS 26.5. The before capture uses the original settings/navigation source. These videos show the settings flow, not speech recognition. Recording pauses were shortened.
Validation: 258 focused tests passed across browser voice input, iPhone voice input, shared draft insertion, settings contracts, and settings search. Web and mobile typechecks passed. Targeted lint completed with warnings. The iOS development-client build passed. Browser UI checks covered default insertion, recording submission lock, immediate sending in new and existing threads, cancellation at a 390px viewport, and preference persistence after reload. iPhone UI checks covered default-off, toggling, and persistence after app restart. Native microphone recognition remains unverified on both surfaces.
Model: GPT-6. Harness: Codex.
Summary by CodeRabbit