From 33fe3022e09653c9563afce1991b2cd3e10bbd23 Mon Sep 17 00:00:00 2001 From: alpha Date: Tue, 6 Oct 2026 14:06:20 -0400 Subject: [PATCH] feat(headphones): make the headphone notice read as a requirement (#139) The notice was a small dialog with a 16px icon and muted 12px text, so it read as a tip and was clicked through. The cost of ignoring it is a live suggestion that silently never appears (#111). Centre a large destructive-tinted headphone icon, state the requirement in the title, and put the two consequence rows in a highlighted callout at full contrast. English and Russian copy updated together. Co-Authored-By: Claude Opus 5.5 --- .../custom/headphone-notice-dialog.tsx | 27 ++++++++++--------- src/renderer/i18n/locales/en.ts | 5 ++-- src/renderer/i18n/locales/ru.ts | 5 ++-- 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/src/renderer/components/custom/headphone-notice-dialog.tsx b/src/renderer/components/custom/headphone-notice-dialog.tsx index d284ee7d..d5371c35 100644 --- a/src/renderer/components/custom/headphone-notice-dialog.tsx +++ b/src/renderer/components/custom/headphone-notice-dialog.tsx @@ -91,26 +91,29 @@ export default function HeadphoneNoticeDialog({ return ( (next ? onOpenChange(true) : handleDismiss())}> - - - - - {t.headphoneNotice.title} - - {copy.description} + + +
+ +
+ {t.headphoneNotice.title} + + {copy.description} +
-
+
{copy.rows.map((row, i) => ( ))}
- - @@ -122,8 +125,8 @@ export default function HeadphoneNoticeDialog({ function NoticeRow({ icon, text }: { icon: React.ReactNode; text: string }) { return (
-
{icon}
-

{text}

+
{icon}
+

{text}

); } diff --git a/src/renderer/i18n/locales/en.ts b/src/renderer/i18n/locales/en.ts index afa843f1..22ea81f1 100644 --- a/src/renderer/i18n/locales/en.ts +++ b/src/renderer/i18n/locales/en.ts @@ -751,8 +751,9 @@ export const en = { }, headphoneNotice: { - title: 'Put your headphones on', - description: "This session needs the interviewer's voice going to your ears only.", + title: 'Headphones are required', + description: + "Put them on before you start. The interviewer's voice must reach your ears only - never your speakers.", liveSpeakers: 'On speakers, your microphone hears the interviewer as well as you do.', /** The failure is the quiet one, so it is named rather than left as "quality issues". */ liveConsequence: diff --git a/src/renderer/i18n/locales/ru.ts b/src/renderer/i18n/locales/ru.ts index 1f88c036..afcb4c0c 100644 --- a/src/renderer/i18n/locales/ru.ts +++ b/src/renderer/i18n/locales/ru.ts @@ -762,8 +762,9 @@ export const ru: Translation = { }, headphoneNotice: { - title: 'Наденьте наушники', - description: 'Голос интервьюера должен звучать только у вас в наушниках.', + title: 'Наушники обязательны', + description: + 'Наденьте их до начала. Голос интервьюера должен звучать только в наушниках - не через динамики.', liveSpeakers: 'Через динамики ваш микрофон слышит интервьюера так же хорошо, как и вы.', liveConsequence: 'Тогда приложение принимает его вопрос за ваши слова и перестаёт на него отвечать - без каких-либо сообщений об ошибке.',