feat: a round in the order cards come, shared daily limits, and a start screen

Studying:
- A round is one list in the order its cards come: those done, the one
  shown, those to come. A card due again within the day goes back in
  after 4 more cards when rated Bad, at the end otherwise, so the pills
  above the card follow it; the buttons say "in 4 cards", "at the end",
  "now" (round_order.dart).
- The studied studyset's daily limits hold for everything inside it
  together, as Anki's do for subdecks: twenty topics start 20 new cards
  a day in all, not 20 each.
- The study header's studyset name shows whole on hover or long press.
- The assistant's button sits at the lower left: in the Library across
  from Create studyset, in a studyset above its bar, and higher while
  studying, above the buttons that answer the card.

A studyset:
- Progress also counts the learning paths' steps done and lists the
  PDFs not read to their end, begun first, each opening the reader,
  across its topics (MaterialProgressCubit).
- Next up starts with studying for the exam while one is ahead: its
  reviews due and the new cards its pace leaves for the day.
- Learning paths tagged with a level count towards its automatic exam
  plan and offer it, as cards do.
- A step's first heading equal to its title is dropped on import and
  hidden in paths imported before.

Signing out, or a session the server ended, leads to a start screen
(GitHub, email, without an account, another instance) rather than a new
anonymous account; only the very first start makes one by itself.
Settings names the kind of account and its instance.

Also: the Watch screen reads the cards once for held words and their
progress; its ±10 s buttons tick as the navigation bar does; a map card
keeps its view as its caption changes and brings a picked region
towards the middle; an empty or failed library can be pulled to sync.

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-17 00:39:34 +02:00
commit de6af3efab
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -577,6 +577,11 @@
"settingsTitle": "Einstellungen",
"settingsAccount": "Konto",
"instanceWelcome": "Willkommen bei Halkyon Learn",
"startSignedOut": "Abgemeldet",
"startOn": "Starte auf {instance}:",
"startWithoutAccount": "Ohne Konto starten",
"startNoGitHubAccount": "Noch kein Konto hier meldet sich mit diesem GitHub-Konto an. Starte ohne Konto und füge GitHub dann im Profil hinzu.",
"startOtherInstance": "Andere Instanz verwenden",
"instanceFirstStartSubtitle": "Wähle die Instanz, auf der deine Lernsets liegen sollen. Jede betreibt jemand; weitere kannst du später hinzufügen.",
"instanceAddress": "Adresse der Instanz",
"instanceUseBuiltIn": "{name} verwenden",
@ -586,6 +591,10 @@
"instanceUnreachable": "Unter {name} antwortet keine Instanz von Halkyon Learn.",
"instanceOpenFailed": "Die App auf {name} konnte nicht geöffnet werden.",
"settingsSwitchAccount": "Konto wechseln",
"settingsAccountAnonymous": "Anonym auf {instance}",
"settingsAccountSignedIn": "Angemeldet auf {instance}",
"accountAnonymous": "Anonym",
"accountSignedIn": "Angemeldet",
"accountsTitle": "Konten",
"accountAdd": "Konto hinzufügen",
"accountAddSubtitle": "Wähle die Instanz für das Konto, das du hinzufügst.",
@ -987,6 +996,9 @@
"studyBackFirstOff": "Rückseite der Karten zuerst zeigen",
"studyShowAnswer": "Antwort anzeigen",
"studyCheck": "Prüfen",
"studyComesBackIn": "{count, plural, =1{nach 1 Karte} other{nach {count} Karten}}",
"studyComesBackAtEnd": "am Ende",
"studyComesBackNow": "sofort",
"studySelectAll": "Wähle alle zutreffenden aus",
"studySelectOne": "Wähle die richtige Antwort",
"studyMatchingInstructions": "AUF DIE KARTEN OBEN ZIEHEN",
@ -1906,10 +1918,20 @@
"progressThisWeek": "diese Woche",
"progressMinutes": "{minutes} Min.",
"progressHoursMinutes": "{hours} Std. {minutes} Min.",
"progressPathsInfo": "Die Schritte der Lernpfade dieses Lernsets und seiner Themen, die du erledigt hast.",
"progressStepsDone": "{total, plural, =1{von 1 Schritt erledigt} other{von {total} Schritten erledigt}}",
"progressReading": "Lesen",
"progressReadingInfo": "Die PDFs dieses Lernsets und seiner Themen, die du noch nicht bis zur letzten Seite gelesen hast. Tippe eins an, um weiterzulesen.",
"progressPdfPage": "Seite {page} von {count}",
"progressPdfNotBegun": "Noch nicht begonnen",
"progressPdfsAllRead": "{count, plural, =1{Das PDF ist zu Ende gelesen.} other{Alle {count} PDFs sind zu Ende gelesen.}}",
"progressShowAllPdfs": "Alle {count} zeigen",
"progressShowFewerPdfs": "Weniger zeigen",
"planPathsDone": "{count, plural, =1{{done} von 1 Pfad abgeschlossen} other{{done} von {count} Pfaden abgeschlossen}}",
"planNoPaths": "Noch keine Lernpfade",
"planNextUp": "Als Nächstes",
"planReview": "{count, plural, =1{1 Karteikarte lernen} other{{count} Karteikarten lernen}}",
"planStudyForExam": "{count, plural, =1{1 Karteikarte für {exam} lernen} other{{count} Karteikarten für {exam} lernen}}",
"planContinue": "„{title}“ fortsetzen",
"planStart": "„{title}“ beginnen",
"planStepOf": "Schritt {number} von {total}",