feat(feedback): report, suggest, and an inbox in the Profile tab

The app's side of stage 4 (ADR 0005, rule 11). The card's Report sheet
offers "Send to the author too" on a card from a release; a copy's menu
reports the studyset as a whole and lists what is reported and
suggested on it, as Explore's summary does; the editors of cards, notes
and steps suggest them to the author as the learner has them, never
under "no derivatives". The Profile tab holds the inbox: the threads on
the person's published studysets and those they wrote, the newest
activity first, with a count on the tab. A thread shows a suggestion
beside the author's own item and its replies; its writer and the author
reply, and the author accepts (the content becomes their own edit, its
files fetched from the writer's), declines, closes, hides or blocks.
Writing needs an identity; reading what is public doesn't.

ADR 0005 gets an addendum for stage 4.

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:
Tizian 「ティツィアーン」 2026-10-10 01:29:09 +02:00
commit 1c1a1aada8
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -5399,4 +5399,165 @@ class AppLocalizationsDe extends AppLocalizations {
String exploreBasedOn(String location) {
return 'nach $location';
}
@override
String get feedbackReport => 'Meldung';
@override
String get feedbackSuggestion => 'Vorschlag';
@override
String get feedbackOnStudyset => 'Zum Lernset';
@override
String get feedbackOnCard => 'Zu einer Karteikarte';
@override
String get feedbackOnNote => 'Zu einer Notiz';
@override
String get feedbackOnStep => 'Zu einem Schritt';
@override
String feedbackByOn(String name, String date) {
return '$name · $date';
}
@override
String get feedbackStatusClosed => 'Geschlossen';
@override
String get feedbackStatusAccepted => 'Angenommen';
@override
String get feedbackStatusDeclined => 'Abgelehnt';
@override
String get feedbackStatusHidden => 'Verborgen';
@override
String get feedbackReplyHint => 'Schreib eine Antwort …';
@override
String get feedbackSend => 'Senden';
@override
String get feedbackAccept => 'Annehmen';
@override
String get feedbackDecline => 'Ablehnen';
@override
String get feedbackClose => 'Schließen';
@override
String get feedbackReopen => 'Wieder öffnen';
@override
String get feedbackHide => 'Verbergen';
@override
String get feedbackShow => 'Zeigen';
@override
String feedbackBlock(String name) {
return '$name blockieren';
}
@override
String feedbackBlockTitle(String name) {
return '$name blockieren?';
}
@override
String get feedbackBlockMessage =>
'Was zu deinen Lernsets von dort kam und kommt, sieht dann niemand außer der Person selbst.';
@override
String get feedbackProposed => 'Vorgeschlagen';
@override
String get feedbackYours => 'Jetzt bei dir';
@override
String get feedbackAuthor => 'Original';
@override
String get feedbackAccepted =>
'In dein Lernset übernommen. Die nächste Veröffentlichung nennt, wer es vorgeschlagen hat.';
@override
String get feedbackDecided => 'Erledigt.';
@override
String get feedbackReplied => 'Antwort gesendet.';
@override
String get feedbackBlocked => 'Blockiert.';
@override
String get feedbackNotTaken =>
'Das lässt sich nicht übernehmen: worum es geht, ist nicht mehr in deinem Lernset.';
@override
String get feedbackFailed =>
'Deine Instanz war nicht erreichbar. Versuche es noch einmal.';
@override
String get feedbackUnreachable =>
'Meldungen und Vorschläge sind gerade nicht erreichbar.';
@override
String get feedbackRetry => 'Erneut versuchen';
@override
String get inboxTitle => 'Posteingang';
@override
String get inboxIntro =>
'Meldungen und Vorschläge zu deinen veröffentlichten Lernsets und die, die du geschrieben hast.';
@override
String get inboxEmpty => 'Noch nichts.';
@override
String get studysetFeedback => 'Meldungen und Vorschläge';
@override
String get studysetFeedbackEmpty =>
'Noch hat niemand etwas gemeldet oder vorgeschlagen.';
@override
String get reportToAuthor => 'Fehler im Original melden';
@override
String get cardReportToAuthor => 'Auch im Original melden';
@override
String get cardReportToAuthorHint =>
'Öffentlich: alle, die es lernen, lesen es, mit deinem öffentlichen Profil.';
@override
String get feedbackReportSent => 'Im Original gemeldet.';
@override
String get suggestToAuthor => 'Dem Original vorschlagen';
@override
String get suggestHint => 'Was es ändert, und warum';
@override
String get suggestIntro =>
'Im Original sieht man es so, wie du es jetzt hast, neben der eigenen Fassung. Öffentlich: alle, die es lernen, lesen es, mit deinem öffentlichen Profil.';
@override
String get suggestSent => 'Vorschlag gesendet.';
@override
String get suggestNoDerivatives =>
'Seine Lizenz verbietet Bearbeitungen: keine Vorschläge.';
@override
String get feedbackNeedsIdentity =>
'Melde dich mit GitHub an, um im Original zu melden und vorzuschlagen.';
}