feat(learn): the assistant's field laid out as Claude's, with files attached and questions spoken, and no Check (ADR 0021, D67)

The question's text stands above its buttons: + attaching files, who
answers as a chip (Effort now a submenu of it), the conversations kept,
and the microphone while nothing is written, which gives way to the
button sending. What goes along is one row above the text, opening a
sheet with how far the assistant looks and the parts to send. A
conversation's follow-up has the same + and microphone.

Files are read on the device: an image goes as itself to an assistant
that reads images, a PDF as its pages' text, a text file as its text,
each cut at 20,000 characters and labelled by its name after the
question.

Voice is the device's own speech recognition (speech_to_text: Android,
Apple, Windows; none on Linux), in the app's language, the microphone
asked for once tapped. The privacy page says that Android's recogniser
may send the sound to Google or the phone's maker.

The field's Check goes, with its LanguageTool sheet (amending ADR 0024);
the editors' underlining and Why? stay.

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-02 05:50:36 +01:00
commit 447e00c52a
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -10851,6 +10851,102 @@ abstract class AppLocalizations {
/// **'{effort} (default)'**
String assistantEffortDefault(String effort);
/// In the menu of who answers, the submenu of how much the assistant thinks (D63), with the one it asks at.
///
/// In en, this message translates to:
/// **'Effort: {effort}'**
String assistantEffortMenu(String effort);
/// Title of the sheet, and tooltip of the row below the field opening it (D67): how far the assistant looks, and the parts sent along.
///
/// In en, this message translates to:
/// **'What goes along'**
String get assistantContext;
/// No description provided for @assistantContextReach.
///
/// In en, this message translates to:
/// **'How far it looks'**
String get assistantContextReach;
/// No description provided for @assistantContextParts.
///
/// In en, this message translates to:
/// **'Send along'**
String get assistantContextParts;
/// Beside how far it looks on the row below the field: how many parts were chosen to go along.
///
/// In en, this message translates to:
/// **'{count, plural, =1{1 part} other{{count} parts}}'**
String assistantContextChosen(int count);
/// No description provided for @assistantContextDone.
///
/// In en, this message translates to:
/// **'Done'**
String get assistantContextDone;
/// The + below the field (D67), for an assistant that reads images.
///
/// In en, this message translates to:
/// **'Attach a photo or file'**
String get assistantAttach;
/// The + below the field (D67), for an assistant that reads no images.
///
/// In en, this message translates to:
/// **'Attach a file'**
String get assistantAttachFile;
/// The kind of files the + offers, in the platform's file dialog.
///
/// In en, this message translates to:
/// **'Images, PDFs and text files'**
String get assistantAttachFiles;
/// No description provided for @assistantAttachNotRead.
///
/// In en, this message translates to:
/// **'{name} can\'t go along: only images, PDFs and text files can.'**
String assistantAttachNotRead(String name);
/// No description provided for @assistantAttachTooLarge.
///
/// In en, this message translates to:
/// **'{name} is larger than 5 MB, more than assistants take.'**
String assistantAttachTooLarge(String name);
/// No description provided for @assistantAttachNoImages.
///
/// In en, this message translates to:
/// **'{name} is an image, and {assistant} reads none.'**
String assistantAttachNoImages(String name, String assistant);
/// No description provided for @assistantAttachRemove.
///
/// In en, this message translates to:
/// **'Remove'**
String get assistantAttachRemove;
/// The microphone below the field while it is empty (D67): the device's own speech recognition writes what is said.
///
/// In en, this message translates to:
/// **'Speak your question'**
String get assistantSpeak;
/// No description provided for @assistantStopListening.
///
/// In en, this message translates to:
/// **'Stop listening'**
String get assistantStopListening;
/// No description provided for @assistantSpeechUnavailable.
///
/// In en, this message translates to:
/// **'This device can\'t listen now. Check that the app may use the microphone and that speech recognition is on.'**
String get assistantSpeechUnavailable;
/// No description provided for @assistantScopeTicked.
///
/// In en, this message translates to:
@ -10878,7 +10974,7 @@ abstract class AppLocalizations {
/// No description provided for @assistantScopeTickedLong.
///
/// In en, this message translates to:
/// **'Only what I choose above'**
/// **'Only what I send along'**
String get assistantScopeTickedLong;
/// No description provided for @assistantScopeStudysetLong.
@ -11234,12 +11330,6 @@ abstract class AppLocalizations {
/// **'I typed “{typed}”. Why isn\'t that right?'**
String assistantWhyTyped(String typed);
/// Has an assistant check what was written in the field (D54).
///
/// In en, this message translates to:
/// **'Check for mistakes'**
String get assistantCheck;
/// In place of suggestions for a mistake that has none.
///
/// In en, this message translates to:
@ -11270,48 +11360,6 @@ abstract class AppLocalizations {
/// **'Check here'**
String get grammarPrivateCheckHere;
/// The field's Check sheet, what the instance's LanguageTool found.
///
/// In en, this message translates to:
/// **'Spelling and grammar'**
String get grammarCheckTitle;
/// No description provided for @grammarCheckTooOften.
///
/// In en, this message translates to:
/// **'Checked too often for now. Try again in a minute.'**
String get grammarCheckTooOften;
/// No description provided for @grammarCheckTooLong.
///
/// In en, this message translates to:
/// **'Too long to check at once.'**
String get grammarCheckTooLong;
/// No description provided for @grammarCheckUnknownLanguage.
///
/// In en, this message translates to:
/// **'The instance doesn\'t check this language.'**
String get grammarCheckUnknownLanguage;
/// No description provided for @grammarCheckFailed.
///
/// In en, this message translates to:
/// **'The instance\'s check couldn\'t be reached. Try again later.'**
String get grammarCheckFailed;
/// No description provided for @grammarCheckAskWhy.
///
/// In en, this message translates to:
/// **'Ask {name} why'**
String grammarCheckAskWhy(String name);
/// No description provided for @grammarCheckAskInstead.
///
/// In en, this message translates to:
/// **'Ask {name} to check'**
String grammarCheckAskInstead(String name);
/// The sheet of cards an assistant proposes (ADR 0021, D55).
///
/// In en, this message translates to: