feat(learn): Explore by what a licence allows, a skeleton while the library loads, and an assistant's agreement per provider (ADR 0005, rule 12; ADR 0021, D66)
- Explore filters by what a studyset's licence lets a learner do: adapt it (no NoDerivatives) and use it commercially (no NonCommercial), which the instance reads from the release's licence (ExploreQuery.adaptable, commercial) and the app the same way (LicenseUse). An instance from before ignores both. - While the studysets are read, the Library shows shimmering skeletons of their cards rather than a spinner: halkyon_ui's new Shimmer and SkeletonBox, still where the system asks for no animations. - The scope's "Include private studysets" is offered only while the person has a private studyset. - An agreement to what goes where is per provider (protocol and host): agreeing to one assistant agrees to every assistant of that provider, those granted later too, and the agreement sheet says so. No migration: it is written on every grant of the provider, so taking one back keeps it for the others, and read per provider from any of them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
138c4dd46e
commit
5641285d31
6 changed files with 970 additions and 85 deletions
|
|
@ -1642,6 +1642,13 @@
|
|||
"exploreKindPaths": "Lernpfade",
|
||||
"exploreKindPdfs": "PDFs",
|
||||
"exploreKindsIntro": "Nur Lernsets, die all das enthalten.",
|
||||
"exploreLicense": "Lizenz",
|
||||
"exploreLicenseChosen": "Lizenz: {count}",
|
||||
"exploreLicenseIntro": "Nur Lernsets, deren Lizenz dir jedes davon erlaubt. Alles hier darf kopiert und weitergegeben werden.",
|
||||
"exploreLicenseAdapt": "Bearbeiten",
|
||||
"exploreLicenseAdaptDetail": "Verändern und das Ergebnis weitergeben: keine Lizenzen mit NoDerivatives.",
|
||||
"exploreLicenseCommercial": "Kommerziell nutzen",
|
||||
"exploreLicenseCommercialDetail": "Für bezahlte Arbeit oder Unterricht nutzen: keine Lizenzen mit NonCommercial.",
|
||||
"exploreClearFilters": "Filter zurücksetzen",
|
||||
"exploreNothingMatches": "Nichts Veröffentlichtes passt dazu.",
|
||||
"exploreBy": "von {author}",
|
||||
|
|
|
|||
|
|
@ -1936,6 +1936,14 @@
|
|||
"exploreKindPaths": "Learning paths",
|
||||
"exploreKindPdfs": "PDFs",
|
||||
"exploreKindsIntro": "Only studysets holding each of these.",
|
||||
"exploreLicense": "Licence",
|
||||
"exploreLicenseChosen": "Licence: {count}",
|
||||
"@exploreLicenseChosen": {"placeholders": {"count": {"type": "int"}}},
|
||||
"exploreLicenseIntro": "Only studysets whose licence lets you do each of these. Everything here may be copied and passed on.",
|
||||
"exploreLicenseAdapt": "Adapt it",
|
||||
"exploreLicenseAdaptDetail": "Change it and pass on what you made: no NoDerivatives licences.",
|
||||
"exploreLicenseCommercial": "Use it commercially",
|
||||
"exploreLicenseCommercialDetail": "Use it for paid work or teaching: no NonCommercial licences.",
|
||||
"exploreClearFilters": "Clear filters",
|
||||
"exploreNothingMatches": "Nothing published here matches.",
|
||||
"exploreBy": "by {author}",
|
||||
|
|
|
|||
|
|
@ -5,6 +5,11 @@
|
|||
"tagSheetColor": "Color",
|
||||
"formatAlignCenter": "Center",
|
||||
"homeCustomise": "Customize",
|
||||
"exploreLicense": "License",
|
||||
"exploreLicenseChosen": "License: {count}",
|
||||
"exploreLicenseIntro": "Only studysets whose license lets you do each of these. Everything here may be copied and passed on.",
|
||||
"exploreLicenseAdaptDetail": "Change it and pass on what you made: no NoDerivatives licenses.",
|
||||
"exploreLicenseCommercialDetail": "Use it for paid work or teaching: no NonCommercial licenses.",
|
||||
"studysetSheetLicense": "License",
|
||||
"studysetSheetLicenseLabel": "License",
|
||||
"studysetSheetLicenseHolder": "License holder",
|
||||
|
|
|
|||
|
|
@ -9711,6 +9711,48 @@ abstract class AppLocalizations {
|
|||
/// **'Only studysets holding each of these.'**
|
||||
String get exploreKindsIntro;
|
||||
|
||||
/// No description provided for @exploreLicense.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Licence'**
|
||||
String get exploreLicense;
|
||||
|
||||
/// No description provided for @exploreLicenseChosen.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Licence: {count}'**
|
||||
String exploreLicenseChosen(int count);
|
||||
|
||||
/// No description provided for @exploreLicenseIntro.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Only studysets whose licence lets you do each of these. Everything here may be copied and passed on.'**
|
||||
String get exploreLicenseIntro;
|
||||
|
||||
/// No description provided for @exploreLicenseAdapt.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Adapt it'**
|
||||
String get exploreLicenseAdapt;
|
||||
|
||||
/// No description provided for @exploreLicenseAdaptDetail.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Change it and pass on what you made: no NoDerivatives licences.'**
|
||||
String get exploreLicenseAdaptDetail;
|
||||
|
||||
/// No description provided for @exploreLicenseCommercial.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Use it commercially'**
|
||||
String get exploreLicenseCommercial;
|
||||
|
||||
/// No description provided for @exploreLicenseCommercialDetail.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Use it for paid work or teaching: no NonCommercial licences.'**
|
||||
String get exploreLicenseCommercialDetail;
|
||||
|
||||
/// No description provided for @exploreClearFilters.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
|
|
|
|||
|
|
@ -6113,6 +6113,32 @@ class AppLocalizationsDe extends AppLocalizations {
|
|||
@override
|
||||
String get exploreKindsIntro => 'Nur Lernsets, die all das enthalten.';
|
||||
|
||||
@override
|
||||
String get exploreLicense => 'Lizenz';
|
||||
|
||||
@override
|
||||
String exploreLicenseChosen(int count) {
|
||||
return 'Lizenz: $count';
|
||||
}
|
||||
|
||||
@override
|
||||
String get exploreLicenseIntro =>
|
||||
'Nur Lernsets, deren Lizenz dir jedes davon erlaubt. Alles hier darf kopiert und weitergegeben werden.';
|
||||
|
||||
@override
|
||||
String get exploreLicenseAdapt => 'Bearbeiten';
|
||||
|
||||
@override
|
||||
String get exploreLicenseAdaptDetail =>
|
||||
'Verändern und das Ergebnis weitergeben: keine Lizenzen mit NoDerivatives.';
|
||||
|
||||
@override
|
||||
String get exploreLicenseCommercial => 'Kommerziell nutzen';
|
||||
|
||||
@override
|
||||
String get exploreLicenseCommercialDetail =>
|
||||
'Für bezahlte Arbeit oder Unterricht nutzen: keine Lizenzen mit NonCommercial.';
|
||||
|
||||
@override
|
||||
String get exploreClearFilters => 'Filter zurücksetzen';
|
||||
|
||||
|
|
|
|||
|
|
@ -6056,6 +6056,32 @@ class AppLocalizationsEn extends AppLocalizations {
|
|||
@override
|
||||
String get exploreKindsIntro => 'Only studysets holding each of these.';
|
||||
|
||||
@override
|
||||
String get exploreLicense => 'Licence';
|
||||
|
||||
@override
|
||||
String exploreLicenseChosen(int count) {
|
||||
return 'Licence: $count';
|
||||
}
|
||||
|
||||
@override
|
||||
String get exploreLicenseIntro =>
|
||||
'Only studysets whose licence lets you do each of these. Everything here may be copied and passed on.';
|
||||
|
||||
@override
|
||||
String get exploreLicenseAdapt => 'Adapt it';
|
||||
|
||||
@override
|
||||
String get exploreLicenseAdaptDetail =>
|
||||
'Change it and pass on what you made: no NoDerivatives licences.';
|
||||
|
||||
@override
|
||||
String get exploreLicenseCommercial => 'Use it commercially';
|
||||
|
||||
@override
|
||||
String get exploreLicenseCommercialDetail =>
|
||||
'Use it for paid work or teaching: no NonCommercial licences.';
|
||||
|
||||
@override
|
||||
String get exploreClearFilters => 'Clear filters';
|
||||
|
||||
|
|
@ -8165,6 +8191,26 @@ class AppLocalizationsEnUs extends AppLocalizationsEn {
|
|||
return 'These studysets\' licenses don\'t allow passing them on: $titles';
|
||||
}
|
||||
|
||||
@override
|
||||
String get exploreLicense => 'License';
|
||||
|
||||
@override
|
||||
String exploreLicenseChosen(int count) {
|
||||
return 'License: $count';
|
||||
}
|
||||
|
||||
@override
|
||||
String get exploreLicenseIntro =>
|
||||
'Only studysets whose license lets you do each of these. Everything here may be copied and passed on.';
|
||||
|
||||
@override
|
||||
String get exploreLicenseAdaptDetail =>
|
||||
'Change it and pass on what you made: no NoDerivatives licenses.';
|
||||
|
||||
@override
|
||||
String get exploreLicenseCommercialDetail =>
|
||||
'Use it for paid work or teaching: no NonCommercial licenses.';
|
||||
|
||||
@override
|
||||
String get exploreReadLicence => 'Read the license';
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue