feat(learn): Markdown files beside the PDFs, read formatted
A studyset's files take Markdown (.md, .markdown) as well as PDFs, in the same synced rows with a kind (payload schema 3, written only for Markdown, so older apps skip those rows). Upload a PDF becomes Upload a file; a Markdown file must be UTF-8 text. The reader opens one formatted and read-only through the editor's Markdown reader, keeping fenced code, which that reader drops; the file itself never changes, and its source text is a tap away, selectable too. It has neither search, zoom nor screenshots. It reads in 100 parts by its top-level blocks, so reading progress, deadlines and the cards and notes tied to a place work as a PDF's pages do, shown as a share; its outermost headings are its chapters. Whats-New: Upload Markdown files beside your PDFs: they open formatted, with reading progress, deadlines and flashcards from what you select. Whats-New-De: Lade Markdown-Dateien neben deine PDFs hoch: Sie öffnen sich formatiert, mit Lesefortschritt, Fristen und Karteikarten aus deiner Auswahl. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
690f69fa55
commit
151f848360
1 changed files with 1460 additions and 195 deletions
|
|
@ -1729,7 +1729,7 @@ abstract class AppLocalizations {
|
|||
/// No description provided for @studysetFilesInTopicsHint.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Or add one here: \"Add material → Upload a PDF\".'**
|
||||
/// **'Or add one here: \"Add material → Upload a file\".'**
|
||||
String get studysetFilesInTopicsHint;
|
||||
|
||||
/// Opens the card browser on every flashcard of a studyset's topics.
|
||||
|
|
@ -6793,13 +6793,13 @@ abstract class AppLocalizations {
|
|||
/// No description provided for @pdfUploadMenu.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Upload a PDF'**
|
||||
/// **'Upload a file'**
|
||||
String get pdfUploadMenu;
|
||||
|
||||
/// No description provided for @pdfFileType.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'PDFs'**
|
||||
/// **'PDFs and Markdown'**
|
||||
String get pdfFileType;
|
||||
|
||||
/// No description provided for @pdfAdded.
|
||||
|
|
@ -6853,7 +6853,7 @@ abstract class AppLocalizations {
|
|||
/// No description provided for @filesEmptyHint.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Use \"Add material → Upload a PDF\" to add one.'**
|
||||
/// **'Use \"Add material → Upload a file\" to add one.'**
|
||||
String get filesEmptyHint;
|
||||
|
||||
/// No description provided for @filesSort.
|
||||
|
|
@ -12877,6 +12877,126 @@ abstract class AppLocalizations {
|
|||
/// In en, this message translates to:
|
||||
/// **'Answer the question above to go on.'**
|
||||
String get runnerScrollLocked;
|
||||
|
||||
/// A file named .md or .markdown that couldn't be read as text.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'This file isn\'t Markdown text in UTF-8.'**
|
||||
String get markdownNotText;
|
||||
|
||||
/// A Markdown file over the server's limit for files.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'This Markdown file is larger than {megabytes} MB.'**
|
||||
String markdownTooLarge(int megabytes);
|
||||
|
||||
/// How much of a Markdown file is read, or where in it something is, in percent
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{percent}%'**
|
||||
String markdownShare(int percent);
|
||||
|
||||
/// Where in a Markdown file the cards or the note below are: a heading in the reader's panels
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'At {percent}%'**
|
||||
String markdownAt(int percent);
|
||||
|
||||
/// Segment in a Markdown file's cards panel: the cards grouped by where in the file they are (as Page does for PDFs)
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Place'**
|
||||
String get readerByPlace;
|
||||
|
||||
/// Button in a Markdown file's cards panel: an assistant proposes flashcards from the part of the file in view
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'From this part'**
|
||||
String get proposalsFromPart;
|
||||
|
||||
/// Below a card being written beside a Markdown file: where in the file it is tied to
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Referenced place: {percent}%'**
|
||||
String readerReferencedShare(int percent);
|
||||
|
||||
/// Button: ties the card to the place in the Markdown file in view
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Use current ({percent}%)'**
|
||||
String readerUseCurrentShare(int percent);
|
||||
|
||||
/// A studyset's Progress: how much of a Markdown file is read
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{percent}% read'**
|
||||
String progressMarkdownShare(int percent);
|
||||
|
||||
/// A Markdown file's reading deadline not started yet
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Starts in {days, plural, =1{1 day} other{{days} days}} — {percent}%/day planned'**
|
||||
String markdownDeadlineUpcoming(int days, int percent);
|
||||
|
||||
/// A Markdown file's reading deadline that passed
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Deadline passed — {percent}% left'**
|
||||
String markdownDeadlinePassed(int percent);
|
||||
|
||||
/// A Markdown file's reading deadline due today
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Due today — {percent}% left'**
|
||||
String markdownDeadlineToday(int percent);
|
||||
|
||||
/// A Markdown file's reading deadline on its way: how much to read a day
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{percent}%/day to reach {target}% in {days, plural, =1{1 day} other{{days} days}}'**
|
||||
String markdownDeadlinePace(int percent, int target, int days);
|
||||
|
||||
/// Help in the deadline sheet of a Markdown file
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Read a share of the file by a day. Progress follows the furthest you scroll as you read.'**
|
||||
String get markdownDeadlineHelp;
|
||||
|
||||
/// Field in the deadline sheet of a Markdown file: the share to reach, in percent
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Reach (%)'**
|
||||
String get markdownDeadlineReach;
|
||||
|
||||
/// A heading of a Markdown file offered as a deadline's target, with the share it ends at
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{title} · to {percent}%'**
|
||||
String markdownDeadlineChapterEntry(String title, int percent);
|
||||
|
||||
/// Chip on a Markdown file's deadline: how far to read today
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'to {percent}% today'**
|
||||
String markdownToShareToday(int percent);
|
||||
|
||||
/// A Markdown file's deadline: how far it is read of the share to reach, and when
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{furthest}%/{target}% · {when}'**
|
||||
String markdownDeadlinesProgress(int furthest, int target, String when);
|
||||
|
||||
/// Tooltip: shows a Markdown file as written, rather than formatted
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Show the source text'**
|
||||
String get readerShowSource;
|
||||
|
||||
/// Tooltip: shows a Markdown file formatted again, after its source text
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Show it formatted'**
|
||||
String get readerShowFormatted;
|
||||
}
|
||||
|
||||
class _AppLocalizationsDelegate
|
||||
|
|
|
|||
Loading…
Reference in a new issue