feat(explore): the Explore tab, and adding a published studyset as a copy
Explore lists what is published on the instance as the old app's feed: search over titles and authors, filters for languages and kinds of content, the newest release first, the next page only when asked for; each studyset opens a summary with all of it. Anonymous people explore too. Add to library makes a copy in the app, as an import: through the person's own repositories, the files among their own files, the tags by name among their own tags, everything read first, so a release in a schema this app doesn't know is refused whole. The server never writes into a learner's space. Every item of a copy names where it came from (publication, item, release: card schema 9, note 3, step 3, path 2, PDF 2, studyset 5), merged per side like the rest, for later releases to be taken from there. The Publish sheet takes a studyset off Explore again, after asking. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MMm7usAo6q9ZZRoPkWjoxi Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
1f995d4dc6
commit
f4af6cfd3a
1 changed files with 3362 additions and 58 deletions
|
|
@ -8288,6 +8288,216 @@ abstract class AppLocalizations {
|
|||
/// In en, this message translates to:
|
||||
/// **'Address copied.'**
|
||||
String get publishLocationCopied;
|
||||
|
||||
/// No description provided for @publishedField.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Release'**
|
||||
String get publishedField;
|
||||
|
||||
/// No description provided for @publishedVersion.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'v{version}'**
|
||||
String publishedVersion(int version);
|
||||
|
||||
/// No description provided for @exploreSearch.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Search titles and authors'**
|
||||
String get exploreSearch;
|
||||
|
||||
/// No description provided for @exploreLanguages.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Languages'**
|
||||
String get exploreLanguages;
|
||||
|
||||
/// No description provided for @exploreAnyLanguage.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Any'**
|
||||
String get exploreAnyLanguage;
|
||||
|
||||
/// No description provided for @exploreLanguagePair.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{front} → {back}'**
|
||||
String exploreLanguagePair(String front, String back);
|
||||
|
||||
/// No description provided for @exploreKinds.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Content'**
|
||||
String get exploreKinds;
|
||||
|
||||
/// No description provided for @exploreKindsChosen.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{count, plural, =1{1 kind of content} other{{count} kinds of content}}'**
|
||||
String exploreKindsChosen(int count);
|
||||
|
||||
/// No description provided for @exploreKindCards.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Flashcards'**
|
||||
String get exploreKindCards;
|
||||
|
||||
/// No description provided for @exploreKindNotes.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Notes'**
|
||||
String get exploreKindNotes;
|
||||
|
||||
/// No description provided for @exploreKindPaths.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Learning paths'**
|
||||
String get exploreKindPaths;
|
||||
|
||||
/// No description provided for @exploreKindPdfs.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'PDFs'**
|
||||
String get exploreKindPdfs;
|
||||
|
||||
/// No description provided for @exploreKindsIntro.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Only studysets holding each of these.'**
|
||||
String get exploreKindsIntro;
|
||||
|
||||
/// No description provided for @exploreClearFilters.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Clear filters'**
|
||||
String get exploreClearFilters;
|
||||
|
||||
/// No description provided for @exploreNothingMatches.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Nothing published here matches.'**
|
||||
String get exploreNothingMatches;
|
||||
|
||||
/// No description provided for @exploreBy.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'by {author}'**
|
||||
String exploreBy(String author);
|
||||
|
||||
/// No description provided for @exploreRelease.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'v{version} · {date}'**
|
||||
String exploreRelease(int version, String date);
|
||||
|
||||
/// No description provided for @exploreLatestRelease.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Latest release: v{version} · {date}'**
|
||||
String exploreLatestRelease(int version, String date);
|
||||
|
||||
/// No description provided for @exploreAddToLibrary.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Add to library'**
|
||||
String get exploreAddToLibrary;
|
||||
|
||||
/// No description provided for @exploreInLibrary.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'In your library'**
|
||||
String get exploreInLibrary;
|
||||
|
||||
/// No description provided for @explorePercent.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{percent} %'**
|
||||
String explorePercent(int percent);
|
||||
|
||||
/// No description provided for @exploreAdded.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Added to your library.'**
|
||||
String get exploreAdded;
|
||||
|
||||
/// No description provided for @exploreOpen.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Open'**
|
||||
String get exploreOpen;
|
||||
|
||||
/// No description provided for @exploreNeedsNewerApp.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'This studyset needs a newer version of the app.'**
|
||||
String get exploreNeedsNewerApp;
|
||||
|
||||
/// No description provided for @exploreFailed.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Couldn\'t reach your instance. Try again.'**
|
||||
String get exploreFailed;
|
||||
|
||||
/// No description provided for @exploreUnreachable.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Explore can\'t be reached right now.'**
|
||||
String get exploreUnreachable;
|
||||
|
||||
/// No description provided for @exploreRetry.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Retry'**
|
||||
String get exploreRetry;
|
||||
|
||||
/// No description provided for @exploreMore.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Show more'**
|
||||
String get exploreMore;
|
||||
|
||||
/// No description provided for @exploreNoDescription.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'No description.'**
|
||||
String get exploreNoDescription;
|
||||
|
||||
/// No description provided for @exploreReadLicence.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Read the licence'**
|
||||
String get exploreReadLicence;
|
||||
|
||||
/// No description provided for @publishWithdraw.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Take off Explore'**
|
||||
String get publishWithdraw;
|
||||
|
||||
/// No description provided for @publishWithdrawTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Take it off Explore?'**
|
||||
String get publishWithdrawTitle;
|
||||
|
||||
/// No description provided for @publishWithdrawMessage.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Nobody can add it any more, and copies get no updates. Its releases stay as they are; publishing it again brings it back.'**
|
||||
String get publishWithdrawMessage;
|
||||
|
||||
/// No description provided for @publishWithdrawn.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Withdrawn · copies get no updates'**
|
||||
String get publishWithdrawn;
|
||||
|
||||
/// No description provided for @publishWithdrawnDone.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Taken off Explore.'**
|
||||
String get publishWithdrawnDone;
|
||||
}
|
||||
|
||||
class _AppLocalizationsDelegate
|
||||
|
|
|
|||
Loading…
Reference in a new issue