feat(studyset): make a studyset private or not, and what a locked one shows (ADR 0019)

- A top-level studyset's options make it private, with everything inside
  it, or non-private again, after a dialog saying what changes and that
  the instance's backups keep readable copies until they expire; a device
  without the account's keys says how to get them there.
- A locked studyset (its key doesn't open here) is titled Locked, says
  why when opened, and offers only Delete.
- Publishing names the person's tags as the device reads them, and says
  what to do when the studyset is private or a tag has no name.
- The export sheet says an archive is readable by whoever has the file.

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-21 21:40:27 +02:00
commit 0e10afcc68
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -12158,6 +12158,114 @@ abstract class AppLocalizations {
/// In en, this message translates to:
/// **'The video couldn\'t be played.'**
String get watchFailed;
/// No description provided for @publishPrivateRefused.
///
/// In en, this message translates to:
/// **'It\'s private: only your devices can read it. Make it non-private first, in its menu.'**
String get publishPrivateRefused;
/// No description provided for @publishTagNames.
///
/// In en, this message translates to:
/// **'Its tags couldn\'t all be named. Sync, then try again.'**
String get publishTagNames;
/// No description provided for @studysetMenuMakePrivate.
///
/// In en, this message translates to:
/// **'Make private'**
String get studysetMenuMakePrivate;
/// No description provided for @studysetMenuMakeReadable.
///
/// In en, this message translates to:
/// **'Make non-private'**
String get studysetMenuMakeReadable;
/// No description provided for @studysetPrivateTitle.
///
/// In en, this message translates to:
/// **'Make “{title}” private?'**
String studysetPrivateTitle(String title);
/// No description provided for @studysetPrivateBody.
///
/// In en, this message translates to:
/// **'Everything in it is end-to-end encrypted on your devices: the instance can\'t read it, publish it or show it to Claude. Copies in the instance\'s backups stay readable until those expire.'**
String get studysetPrivateBody;
/// No description provided for @studysetReadableTitle.
///
/// In en, this message translates to:
/// **'Make “{title}” non-private?'**
String studysetReadableTitle(String title);
/// No description provided for @studysetReadableBody.
///
/// In en, this message translates to:
/// **'Everything in it is decrypted and synced again, so the instance can read it: you can publish it, and Claude can read it through the connector.'**
String get studysetReadableBody;
/// No description provided for @studysetPrivateNoKeys.
///
/// In en, this message translates to:
/// **'Sign in with your password on this device to make studysets private.'**
String get studysetPrivateNoKeys;
/// No description provided for @studysetPrivateSomeLocked.
///
/// In en, this message translates to:
/// **'Some of it couldn\'t be opened on this device and stayed as it was.'**
String get studysetPrivateSomeLocked;
/// No description provided for @studysetPrivateLabel.
///
/// In en, this message translates to:
/// **'Private'**
String get studysetPrivateLabel;
/// No description provided for @studysetLockedTitle.
///
/// In en, this message translates to:
/// **'Locked'**
String get studysetLockedTitle;
/// No description provided for @studysetLockedBody.
///
/// In en, this message translates to:
/// **'This studyset is private, and its key doesn\'t open on this device: it was encrypted with keys your account no longer has. It can only be deleted.'**
String get studysetLockedBody;
/// No description provided for @libraryOfferPrivateTitle.
///
/// In en, this message translates to:
/// **'Make your studysets private?'**
String get libraryOfferPrivateTitle;
/// No description provided for @libraryOfferPrivateBody.
///
/// In en, this message translates to:
/// **'New studysets are private: end-to-end encrypted, so only your devices can read them. Those you made before stay readable by the instance until you make them private too. Copies in the instance\'s backups stay readable until those expire.'**
String get libraryOfferPrivateBody;
/// No description provided for @libraryOfferPrivateAction.
///
/// In en, this message translates to:
/// **'Make all private'**
String get libraryOfferPrivateAction;
/// No description provided for @libraryOfferPrivateLater.
///
/// In en, this message translates to:
/// **'Not now'**
String get libraryOfferPrivateLater;
/// No description provided for @exportReadableNote.
///
/// In en, this message translates to:
/// **'The archive isn\'t encrypted: whoever has the file can read it.'**
String get exportReadableNote;
}
class _AppLocalizationsDelegate