diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 8dfeed4cf..ae6817aea 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -224,6 +224,7 @@ rreemmii-dev babofitos Jonathan Schoreels JL710 +Matt Brubeck ******************** diff --git a/ftl/core/deck-config.ftl b/ftl/core/deck-config.ftl index 461c6a25a..12512acb0 100644 --- a/ftl/core/deck-config.ftl +++ b/ftl/core/deck-config.ftl @@ -484,7 +484,7 @@ deck-config-percent-input = { $pct }% deck-config-optimizing-preset = Optimizing preset { $current_count }/{ $total_count }... deck-config-fsrs-must-be-enabled = FSRS must be enabled first. deck-config-fsrs-params-optimal = The FSRS parameters currently appear to be optimal. -deck-config-fsrs-params-no-reviews = No reviews found. Please check that this preset is assigned to all decks you want to optimize (including subdecks) and try again. +deck-config-fsrs-params-no-reviews = No reviews found. Make sure this preset is assigned to all decks (including subdecks) that you want to optimize, and try again. deck-config-wait-for-audio = Wait for audio deck-config-show-reminder = Show Reminder diff --git a/rslib/src/scheduler/answering/current.rs b/rslib/src/scheduler/answering/current.rs index c40513a18..65eb87044 100644 --- a/rslib/src/scheduler/answering/current.rs +++ b/rslib/src/scheduler/answering/current.rs @@ -71,7 +71,7 @@ impl CardStateUpdater { // Decrease reps by 1 to get correct seed for fuzz. // If the fuzz calculation changes, this will break. let last_ivl_with_fuzz = self.learning_ivl_with_fuzz( - get_fuzz_seed_for_id_and_reps(self.card.id, self.card.reps - 1), + get_fuzz_seed_for_id_and_reps(self.card.id, self.card.reps.wrapping_sub(1)), last_ivl, ); let last_answered_time = due as i64 - last_ivl_with_fuzz as i64; diff --git a/rslib/src/scheduler/fsrs/params.rs b/rslib/src/scheduler/fsrs/params.rs index d313a6851..276150676 100644 --- a/rslib/src/scheduler/fsrs/params.rs +++ b/rslib/src/scheduler/fsrs/params.rs @@ -322,8 +322,6 @@ pub(crate) fn reviews_for_fsrs( if user_graded && entry.review_kind == RevlogReviewKind::Learning { first_of_last_learn_entries = Some(index); revlogs_complete = true; - } else if first_of_last_learn_entries.is_some() { - break; } else if matches!( (entry.review_kind, entry.ease_factor), (RevlogReviewKind::Manual, 0) @@ -343,6 +341,10 @@ pub(crate) fn reviews_for_fsrs( } else { return None; } + // Previous versions of Anki didn't add a revlog entry when the card was + // reset. + } else if first_of_last_learn_entries.is_some() { + break; } } if training {