feat(app): the studyset screen laid out as before

The Study pill reads "Learn 12 flashcards" in the app bar and "Learn 12"
floating, "Study" with nothing due, and is off with nothing to study,
saying so. With a path not finished, a chevron beside it offers to start
or continue the path: a menu in the app bar, a Study mode sheet on
phones. The floating bar rises above the licence line, which takes two
lines at most.

Add material offers a path, flashcards, a note and a PDF, in that order;
imports moved to the options' Import content, which asks for a learning
path or an Anki deck. The options read Edit, Move, Study options, Import
content, Reset progress, Archive, Delete. The bibliography is an outlined
round button above the content, and on phones at the foot of the topics.

The tabs sit on a line of their own across the card, what the tab shown
offers beside them: the flashcards' filter and options, and on the paths
Reorder once there are two, which turns them into handles to drag. An
empty tab says so in its middle; tapping the open tab again returns to
its top, and pulling a tab down syncs. The breadcrumb's steps are plain
links between "›", the studyset itself bold. A long description is cut at
a fixed height, measured, with Read more opening it whole under the
studyset's title. A studyset that no longer exists leads back to the
library.

The topics: All topics on the primary colour, in view also while they
are rearranged; each topic with the study it invites in a round icon,
what it holds ("Empty" with nothing, files counted too), and its options
(now with Reset progress) behind "…" or a long press where the finger
is; New sub-studyset at the foot below a line, the list with its
scrollbar always shown. All topics opens Add material while nothing is
due.

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-08 11:42:50 +02:00
commit 72b29c7e80
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -346,6 +346,12 @@ abstract class AppLocalizations {
/// **'No content yet'**
String get studysetNoContent;
/// No description provided for @studysetEmpty.
///
/// In en, this message translates to:
/// **'Empty'**
String get studysetEmpty;
/// No description provided for @studysetActionReview.
///
/// In en, this message translates to:
@ -1408,6 +1414,108 @@ abstract class AppLocalizations {
/// **'Learn {count}'**
String studysetLearnCount(int count);
/// No description provided for @studysetLearnFlashcards.
///
/// In en, this message translates to:
/// **'{count, plural, =1{Learn 1 flashcard} other{Learn {count} flashcards}}'**
String studysetLearnFlashcards(int count);
/// No description provided for @studysetNothingToStudy.
///
/// In en, this message translates to:
/// **'Nothing to study yet'**
String get studysetNothingToStudy;
/// No description provided for @studysetStudyMode.
///
/// In en, this message translates to:
/// **'Study mode'**
String get studysetStudyMode;
/// No description provided for @studysetStartPath.
///
/// In en, this message translates to:
/// **'Start: {title}'**
String studysetStartPath(String title);
/// No description provided for @studysetContinuePath.
///
/// In en, this message translates to:
/// **'Continue: {title}'**
String studysetContinuePath(String title);
/// No description provided for @studysetStartPathHint.
///
/// In en, this message translates to:
/// **'Begin the first step of this path.'**
String get studysetStartPathHint;
/// No description provided for @studysetContinuePathHint.
///
/// In en, this message translates to:
/// **'Pick up the next path step where you left off.'**
String get studysetContinuePathHint;
/// No description provided for @studysetSpacedRepetition.
///
/// In en, this message translates to:
/// **'Spaced repetition'**
String get studysetSpacedRepetition;
/// No description provided for @studysetSpacedRepetitionHint.
///
/// In en, this message translates to:
/// **'Review the cards that are due, scheduled by FSRS.'**
String get studysetSpacedRepetitionHint;
/// No description provided for @studysetImportContent.
///
/// In en, this message translates to:
/// **'Import content'**
String get studysetImportContent;
/// No description provided for @studysetImportPath.
///
/// In en, this message translates to:
/// **'Learning path'**
String get studysetImportPath;
/// No description provided for @studysetImportPathHint.
///
/// In en, this message translates to:
/// **'From a Halkyon path JSON file'**
String get studysetImportPathHint;
/// No description provided for @studysetImportAnki.
///
/// In en, this message translates to:
/// **'Anki deck'**
String get studysetImportAnki;
/// No description provided for @studysetImportAnkiHint.
///
/// In en, this message translates to:
/// **'From an .apkg or .colpkg file'**
String get studysetImportAnkiHint;
/// No description provided for @studysetReorder.
///
/// In en, this message translates to:
/// **'Reorder'**
String get studysetReorder;
/// No description provided for @studysetReorderPaths.
///
/// In en, this message translates to:
/// **'Reorder paths'**
String get studysetReorderPaths;
/// No description provided for @studysetReorderDone.
///
/// In en, this message translates to:
/// **'Done'**
String get studysetReorderDone;
/// No description provided for @studysetOpenTopics.
///
/// In en, this message translates to:
@ -1444,18 +1552,6 @@ abstract class AppLocalizations {
/// **'Break this studyset into milestones or lessons.'**
String get studysetSubStudysetsEmptyHint;
/// No description provided for @studysetReorder.
///
/// In en, this message translates to:
/// **'Reorder'**
String get studysetReorder;
/// No description provided for @studysetReorderDone.
///
/// In en, this message translates to:
/// **'Done'**
String get studysetReorderDone;
/// No description provided for @studysetDragToReorder.
///
/// In en, this message translates to:
@ -4012,6 +4108,12 @@ abstract class AppLocalizations {
/// **'This no longer exists. It may have been deleted on another device.'**
String get notFoundGone;
/// No description provided for @studysetBackToLibrary.
///
/// In en, this message translates to:
/// **'Back to library'**
String get studysetBackToLibrary;
/// No description provided for @fileImage.
///
/// In en, this message translates to: