feat(app): reviews know how a card was studied; progress can start afresh

Each review records its mode (ADR 0004, rule 3): front to back, back to
front with a schedule of its own, or crammed outside the schedule. A
card's schedule replays only the reviews of one mode. Resetting progress
appends a 'reset' entry per card, no migration (the column is text):
schedules replay what follows it, and the history stays for the streak
and the heatmap. Reviews are inserted in batches.

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-01 19:03:31 +02:00
commit baace1b6e9
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -95,6 +95,8 @@ abstract class ReviewLog
/// (back to front, with a schedule of its own, as Anki's reverse cards have),
/// or 'cram' (outside the schedule: counts for streaks and the activity
/// heatmap, never moves a schedule). Reviews from before modes are 'review'.
/// 'reset' is no rating but a fresh start: the card's schedules replay only
/// what follows it, its rating means nothing.
String mode;
@override
@ -313,6 +315,8 @@ class ReviewLogTable extends _isd.Table<_isc.UuidValue?> {
/// (back to front, with a schedule of its own, as Anki's reverse cards have),
/// or 'cram' (outside the schedule: counts for streaks and the activity
/// heatmap, never moves a schedule). Reviews from before modes are 'review'.
/// 'reset' is no rating but a fresh start: the card's schedules replay only
/// what follows it, its rating means nothing.
late final _isd.ColumnString mode;
_i4926i81.CardTable get card {