feat(learn): voice mode, a conversation spoken as Claude's "Let's talk" (ADR 0021, D68)

Beside the field's microphone, a button opens voice mode over the whole
screen: a glow rising from below, a big microphone, and +, who answers,
the speaker and End in one row. It listens with the device's recogniser,
asks what was heard in one kept conversation, reads the answer aloud
with the device's speech (flutter_tts, its Markdown left out) and
listens again. On Linux there is none, as there is no microphone; where
nothing reads aloud, answers are shown as text.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-11-03 22:11:28 +01:00
commit c984678c5b
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -12601,6 +12601,66 @@ abstract class AppLocalizations {
/// In en, this message translates to:
/// **'Files'**
String get assistantAddFiles;
/// The field's button opening voice mode, a conversation spoken rather than typed (ADR 0021, D68)
///
/// In en, this message translates to:
/// **'Voice mode'**
String get assistantTalk;
/// Voice mode's heading
///
/// In en, this message translates to:
/// **'Let\'s talk'**
String get voiceTitle;
/// Voice mode while it hears the person
///
/// In en, this message translates to:
/// **'Listening…'**
String get voiceListening;
/// Voice mode while the answer is awaited
///
/// In en, this message translates to:
/// **'Thinking…'**
String get voiceThinking;
/// Voice mode waiting for the microphone
///
/// In en, this message translates to:
/// **'Tap the microphone to talk'**
String get voiceTapToTalk;
/// The microphone's tooltip: listens, stopping any reading
///
/// In en, this message translates to:
/// **'Talk'**
String get voiceTalk;
/// The microphone's tooltip while listening: stops and asks what was heard
///
/// In en, this message translates to:
/// **'Send'**
String get voiceDone;
/// Switches reading answers aloud off
///
/// In en, this message translates to:
/// **'Don\'t read answers aloud'**
String get voiceSpeakerOff;
/// Switches reading answers aloud on
///
/// In en, this message translates to:
/// **'Read answers aloud'**
String get voiceSpeakerOn;
/// Closes voice mode
///
/// In en, this message translates to:
/// **'End voice mode'**
String get voiceEnd;
}
class _AppLocalizationsDelegate