feat(learn): an assistant reads PDFs' pages, and sees images the person chooses or approves

ADR 0021, D12: text first. Lookups find a studyset's PDFs and read a page's
text as PDFium extracts it. An assistant that reads images is offered a
card's images as chips, and may ask to see a card's image or a PDF's page
drawn whole; the conversation asks the person each time (Show it, Don't
show) and sends nothing meanwhile. Images go only as png, jpeg, gif or webp
of at most 5 MB, are never kept in a turn, and a follow-up goes without them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-10-25 21:54:56 +01:00
commit 2b7d04fd70
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -10701,6 +10701,12 @@ abstract class AppLocalizations {
/// **'Studyset: {title}'**
String assistantChipStudyset(String title);
/// A chip sending an image on the card (ADR 0021, D12).
///
/// In en, this message translates to:
/// **'Image {number}'**
String assistantChipImage(int number);
/// No description provided for @assistantHintWeb.
///
/// In en, this message translates to:
@ -10965,6 +10971,78 @@ abstract class AppLocalizations {
/// **'Looked for a note, found none'**
String get assistantLookedUpNoNote;
/// No description provided for @assistantListedPdfs.
///
/// In en, this message translates to:
/// **'Listed {count, plural, =0{no PDFs} =1{1 PDF} other{{count} PDFs}}'**
String assistantListedPdfs(int count);
/// No description provided for @assistantLookedUpPdfs.
///
/// In en, this message translates to:
/// **'Looked for “{query}” in PDFs: {count, plural, =0{none found} =1{1 found} other{{count} found}}'**
String assistantLookedUpPdfs(String query, int count);
/// No description provided for @assistantLookedUpPage.
///
/// In en, this message translates to:
/// **'Read a page of a PDF'**
String get assistantLookedUpPage;
/// No description provided for @assistantLookedUpNoPage.
///
/// In en, this message translates to:
/// **'Looked for a page of a PDF, couldn\'t read it'**
String get assistantLookedUpNoPage;
/// No description provided for @assistantShownImage.
///
/// In en, this message translates to:
/// **'Was shown an image you approved'**
String get assistantShownImage;
/// No description provided for @assistantNotShownImage.
///
/// In en, this message translates to:
/// **'Was not shown an image'**
String get assistantNotShownImage;
/// No description provided for @assistantShownPage.
///
/// In en, this message translates to:
/// **'Was shown a page you approved'**
String get assistantShownPage;
/// No description provided for @assistantNotShownPage.
///
/// In en, this message translates to:
/// **'Was not shown a page'**
String get assistantNotShownPage;
/// The model asks for an image; the person approves each (D12).
///
/// In en, this message translates to:
/// **'{name} asks to see image {number} of the card “{title}”.'**
String assistantImageAskCard(String name, int number, String title);
/// No description provided for @assistantImageAskPage.
///
/// In en, this message translates to:
/// **'{name} asks to see page {page} of “{title}” as a picture.'**
String assistantImageAskPage(String name, int page, String title);
/// No description provided for @assistantImageShow.
///
/// In en, this message translates to:
/// **'Show it'**
String get assistantImageShow;
/// No description provided for @assistantImageDontShow.
///
/// In en, this message translates to:
/// **'Don\'t show'**
String get assistantImageDontShow;
/// The warning before a private studyset's content goes to a remote model (ADR 0021, D9).
///
/// In en, this message translates to: