feat(app): give cards hints and an explanation

A card of any type can carry up to six hints and an explanation, both
rich text. They are written in the composer, added from its menu (or
Ctrl+Alt+H / Ctrl+Alt+E), each removed on its own; blank ones aren't
kept. While studying, "Hints" under the question opens them one at a
time, and "Explanation" comes with the answer.

Card schema 5 holds them (`hints`, `explanation`), and with them what a
card needs next: a report that something on it is wrong (`report`:
category, note, when) and a word's senses with their grammar codes
(`senses`; a word's meanings then come from them, and its first sense
says whether it is usually written in kana). Each merges as a field of
its own.

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-07 21:24:41 +02:00
commit 9edb23a379
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -2098,6 +2098,78 @@ abstract class AppLocalizations {
/// **'+{count, plural, =1{1 tag} other{{count} tags}}'**
String tagChipsOverflow(int count);
/// No description provided for @cardHints.
///
/// In en, this message translates to:
/// **'Hints'**
String get cardHints;
/// No description provided for @cardHint.
///
/// In en, this message translates to:
/// **'Hint {number}'**
String cardHint(int number);
/// No description provided for @cardAddHint.
///
/// In en, this message translates to:
/// **'Add hint'**
String get cardAddHint;
/// No description provided for @cardRemoveHint.
///
/// In en, this message translates to:
/// **'Remove hint'**
String get cardRemoveHint;
/// No description provided for @cardExplanation.
///
/// In en, this message translates to:
/// **'Explanation'**
String get cardExplanation;
/// No description provided for @cardAddExplanation.
///
/// In en, this message translates to:
/// **'Add explanation'**
String get cardAddExplanation;
/// No description provided for @cardRemoveExplanation.
///
/// In en, this message translates to:
/// **'Remove explanation'**
String get cardRemoveExplanation;
/// No description provided for @cardHintsSheetTitle.
///
/// In en, this message translates to:
/// **'{count, plural, =1{Hint} other{Hints {count}}}'**
String cardHintsSheetTitle(int count);
/// No description provided for @cardPreviousHint.
///
/// In en, this message translates to:
/// **'Previous hint'**
String get cardPreviousHint;
/// No description provided for @cardNextHint.
///
/// In en, this message translates to:
/// **'Next hint'**
String get cardNextHint;
/// No description provided for @cardReport.
///
/// In en, this message translates to:
/// **'Report'**
String get cardReport;
/// No description provided for @cardSenses.
///
/// In en, this message translates to:
/// **'Senses'**
String get cardSenses;
/// No description provided for @cardFilterTooltip.
///
/// In en, this message translates to: