Skip to content

FE-1725: Remember Petrinaut Voice disclosure for Live - #9748

Merged
kostandinang merged 3 commits into
kostandin/fe-1722-improve-brunch-voice-controlsfrom
kostandin/fe-1725-remember-petrinaut-voice-disclosure-for-live
Sep 15, 2026
Merged

kostandinang merged 3 commits into
kostandin/fe-1722-improve-brunch-voice-controlsfrom
kostandin/fe-1725-remember-petrinaut-voice-disclosure-for-live

Conversation

@kostandinang

@kostandinang kostandinang commented Sep 15, 2026

Copy link
Copy Markdown
Contributor

🌟 What is the purpose of this PR?

Make the Petrinaut Voice disclosure one-time for GPT-Live while keeping its consent separate from Realtime. Browser microphone permission remains separate.

🔗 Related links

🚫 Blocked by

🔍 What does this change?

  • Saves a Live-specific, versioned disclosure acknowledgement.
  • Starts later Live sessions directly without reusing Realtime consent.
  • Shows a consent-free retry state after an acknowledged session fails or ends.
  • Updates regression tests and user guidance.

Pre-Merge Checklist 🚀

🚢 Has this modified a publishable library?

This PR:

  • does not modify any publishable blocks or libraries, or modifications do not need publishing

📜 Does this require a change to the docs?

The changes in this PR:

  • require changes to docs which are made as part of this PR

🕸️ Does this require a change to the Turbo Graph?

The changes in this PR:

  • do not affect the execution graph

⚠️ Known issues

None.

🐾 Next steps

None.

🛡 What tests cover this?

  • 46 Voice control tests.
  • Petrinaut website type check, build, ESLint, formatting, and documentation lint.

❓ How to test this?

  1. Acknowledge Realtime Voice, then open Live Voice and confirm its disclosure still appears.
  2. Acknowledge Live Voice, end it, and confirm later Live sessions start directly.
  3. Simulate a Live connection failure and confirm Retry voice appears without another consent checkbox.

📹 Demo

Not included; this behavior is covered by the regression tests.

@vercel

vercel Bot commented Sep 15, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
hash Ready Ready Preview Sep 15, 2026 5:57pm UTC
petrinaut Ready Ready Preview Sep 15, 2026 5:57pm UTC
petrinaut-docs Ready Ready Preview Sep 15, 2026 5:57pm UTC
1 Skipped Deployment
Project Deployment Actions Updated
hashdotdesign-tokens Ignored Ignored Preview Sep 15, 2026 5:57pm UTC

Request Review

@github-actions github-actions Bot added area/infra Relates to version control, CI, CD or IaC (area) area/libs Relates to first-party libraries/crates/packages (area) type/eng > frontend Owned by the @frontend team area/apps labels Sep 15, 2026
@kostandinang
kostandinang added this pull request to stack #9749 September 15, 2026 16:26
@kostandinang
kostandinang marked this pull request as ready for review September 15, 2026 16:28
@cursor

cursor Bot commented Sep 15, 2026

Copy link
Copy Markdown

PR Summary

Low Risk
Changes are limited to client-side consent persistence and Live voice UI flow; no auth, API, or shared library contract changes.

Overview
GPT-Live voice now uses a separate, versioned browser storage key for disclosure acknowledgement, so Realtime consent is not reused and first-time Live still shows the full permission panel.

After the user acknowledges once, entering voice mode auto-starts Live (via extracted tryStartLiveConversation and a layout effect). When a session ends or errors, the UI shows a new VoiceInterviewRetry surface (Retry voice / Cancel) instead of the consent checkbox again; retries call the same start path without re-prompting.

Regression tests add an in-memory localStorage mock and cover persistence, isolation from Realtime, stop-then-restart timing, and error retry. User docs in ai-assistant.md describe the updated Live disclosure and retry behavior.

Reviewed by Cursor Bugbot for commit c110233. Bugbot is set up for automated code reviews on this repo. Configure here.

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 8b5995c. Configure here.

Comment thread apps/petrinaut-website/src/main/app/voice-interview/live-conversation-control.tsx Outdated

@lunelson lunelson left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Requesting changes for the disclosure acknowledgement behavior:

  1. Blocking: Live reuses VOICE_INTERVIEW_DISCLOSURE_STORAGE_KEY, so a user who previously acknowledged the Realtime disclosure will auto-start Live without seeing Live-specific disclosure of the separate voice and transcription processing streams. Please use a Live-specific/version-bumped acknowledgement key, or first make the provider disclosures semantically equivalent before sharing one key.

  2. After an acknowledged Live auto-start fails, LiveConversationControl renders VoiceInterviewDisclosure again with consented reset to false. This makes a returning user re-acknowledge the disclosure to retry. Please provide a distinct retry/error state or otherwise retain the acknowledged state instead of presenting consent again.

Optional naming suggestion: start returns whether startup was accepted, and that boolean controls retry after teardown. tryStartLiveConversation would make this contract and its provider scope clearer.

kostandinang commented Sep 15, 2026

Copy link
Copy Markdown
Contributor Author

Fixed in 761be96dec: Live-specific consent storage, consent-free retry, and tryStartLiveConversation. Tests, type check, lint, and build pass.

Co-authored-by: Cursor <cursoragent@cursor.com>
kostandinang and others added 2 commits September 15, 2026 19:45
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>

@lunelson lunelson left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-reviewed the follow-up. Live now has a distinct acknowledgement key and a separate retry state, and the startup helper rename clarifies its boolean contract. The requested changes are resolved.

@kostandinang
kostandinang added this pull request to the merge queue Sep 15, 2026
Merged via the queue into main with commit 8b22b6f Sep 15, 2026
63 checks passed
@kostandinang
kostandinang deleted the kostandin/fe-1725-remember-petrinaut-voice-disclosure-for-live branch September 15, 2026 19:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/apps area/infra Relates to version control, CI, CD or IaC (area) area/libs Relates to first-party libraries/crates/packages (area) type/eng > frontend Owned by the @frontend team

Development

Successfully merging this pull request may close these issues.

2 participants