feat(meditate): the instance's library in the app: Explore, its player, courses, keeping offline

Explore shows the instance's library below Meditate's practices, where it
has one: its courses and items by category (Meditate's eleven, named in
English and German, and the operator's own) and by the same search; an
instance without one shows nothing more. An item's page: its recordings
to choose, Play, a favourite (kept in the sealed settings under
library/<id>), keeping it on the device and removing it, and for a sound,
a silent sitting with it looped; its credit and licence. The player
plays, pauses and seeks; played to its end it is kept as a sitting, and
as its course's lesson done (lesson_done, sealed and synced). Settings
lists the library's credits beside About; Today shows its favourites.

The last catalogue is kept in the person's folder for offline; files are
fetched with the catalogue's access, asked for again shortly before it
ends. ADR 0038, D16.

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-03 16:47:28 +01:00
commit 811182b376
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -1131,6 +1131,222 @@ abstract class AppLocalizations {
/// In en, this message translates to:
/// **'Speak it'**
String get todayDreamSpeak;
/// No description provided for @exploreLibrary.
///
/// In en, this message translates to:
/// **'From {server}'**
String exploreLibrary(String server);
/// No description provided for @libraryCourses.
///
/// In en, this message translates to:
/// **'Courses'**
String get libraryCourses;
/// No description provided for @libraryCourse.
///
/// In en, this message translates to:
/// **'Course'**
String get libraryCourse;
/// No description provided for @libraryCategoryMeditation.
///
/// In en, this message translates to:
/// **'Meditation'**
String get libraryCategoryMeditation;
/// No description provided for @libraryCategorySleepStory.
///
/// In en, this message translates to:
/// **'Sleep stories'**
String get libraryCategorySleepStory;
/// No description provided for @libraryCategorySound.
///
/// In en, this message translates to:
/// **'Sounds'**
String get libraryCategorySound;
/// No description provided for @libraryCategoryMovement.
///
/// In en, this message translates to:
/// **'Movement'**
String get libraryCategoryMovement;
/// No description provided for @libraryCategoryAutogenicTraining.
///
/// In en, this message translates to:
/// **'Autogenic training'**
String get libraryCategoryAutogenicTraining;
/// No description provided for @libraryCategoryProgressiveMuscleRelaxation.
///
/// In en, this message translates to:
/// **'Progressive muscle relaxation'**
String get libraryCategoryProgressiveMuscleRelaxation;
/// No description provided for @libraryCategoryRoutine.
///
/// In en, this message translates to:
/// **'Routines'**
String get libraryCategoryRoutine;
/// No description provided for @libraryCategoryDreamJourney.
///
/// In en, this message translates to:
/// **'Dream journeys'**
String get libraryCategoryDreamJourney;
/// No description provided for @libraryCategoryKnowledge.
///
/// In en, this message translates to:
/// **'Knowledge'**
String get libraryCategoryKnowledge;
/// No description provided for @libraryCategoryMorningStory.
///
/// In en, this message translates to:
/// **'Morning stories'**
String get libraryCategoryMorningStory;
/// No description provided for @libraryCategoryOther.
///
/// In en, this message translates to:
/// **'Other'**
String get libraryCategoryOther;
/// No description provided for @libraryLessons.
///
/// In en, this message translates to:
/// **'{count, plural, =1{1 lesson} other{{count} lessons}}'**
String libraryLessons(int count);
/// No description provided for @libraryLessonsDone.
///
/// In en, this message translates to:
/// **'{done} of {count} done'**
String libraryLessonsDone(int done, int count);
/// No description provided for @libraryLessonDone.
///
/// In en, this message translates to:
/// **'Done'**
String get libraryLessonDone;
/// No description provided for @libraryWith.
///
/// In en, this message translates to:
/// **'With {speaker}'**
String libraryWith(String speaker);
/// No description provided for @libraryPlay.
///
/// In en, this message translates to:
/// **'Play'**
String get libraryPlay;
/// No description provided for @libraryPause.
///
/// In en, this message translates to:
/// **'Pause'**
String get libraryPause;
/// No description provided for @libraryResume.
///
/// In en, this message translates to:
/// **'Resume'**
String get libraryResume;
/// No description provided for @libraryStop.
///
/// In en, this message translates to:
/// **'Stop'**
String get libraryStop;
/// No description provided for @libraryRecording.
///
/// In en, this message translates to:
/// **'Recording'**
String get libraryRecording;
/// No description provided for @libraryKeep.
///
/// In en, this message translates to:
/// **'Keep on this device'**
String get libraryKeep;
/// No description provided for @libraryKeeping.
///
/// In en, this message translates to:
/// **'Fetching…'**
String get libraryKeeping;
/// No description provided for @libraryKept.
///
/// In en, this message translates to:
/// **'On this device'**
String get libraryKept;
/// No description provided for @libraryRemove.
///
/// In en, this message translates to:
/// **'Remove from this device'**
String get libraryRemove;
/// No description provided for @libraryKeepFailed.
///
/// In en, this message translates to:
/// **'It couldn\'t be fetched. Try again when you\'re online.'**
String get libraryKeepFailed;
/// No description provided for @libraryPlayFailed.
///
/// In en, this message translates to:
/// **'It can\'t be played now. Are you online?'**
String get libraryPlayFailed;
/// No description provided for @librarySitWithSound.
///
/// In en, this message translates to:
/// **'Sit in silence with this sound'**
String get librarySitWithSound;
/// No description provided for @libraryCredit.
///
/// In en, this message translates to:
/// **'Credit'**
String get libraryCredit;
/// No description provided for @libraryLicence.
///
/// In en, this message translates to:
/// **'Licence'**
String get libraryLicence;
/// No description provided for @libraryCredits.
///
/// In en, this message translates to:
/// **'Library credits'**
String get libraryCredits;
/// No description provided for @libraryCreditsIntro.
///
/// In en, this message translates to:
/// **'What the library of {server} offers, whom each is credited to and under which licence.'**
String libraryCreditsIntro(String server);
/// No description provided for @libraryGone.
///
/// In en, this message translates to:
/// **'This isn\'t in the library any more.'**
String get libraryGone;
/// No description provided for @libraryFromLibrary.
///
/// In en, this message translates to:
/// **'From the library'**
String get libraryFromLibrary;
}
class _AppLocalizationsDelegate