diff --git a/Cargo.lock b/Cargo.lock index b0a42b53a..8ea4fbb1c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1862,9 +1862,9 @@ dependencies = [ [[package]] name = "fsrs" -version = "1.2.2" +version = "1.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bbd56ab9e6c5d40802c7f73701b9cc4bccf9fa29037799a94ac9f1a94f1a5f7" +checksum = "c6c3e9d1ab337e63735c4ceff913b9818eeac054d8dc17ca1b259195a7fbfb16" dependencies = [ "burn", "itertools 0.12.1", diff --git a/Cargo.toml b/Cargo.toml index 44a7c46fa..06d7375f0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -35,7 +35,7 @@ git = "https://github.com/ankitects/linkcheck.git" rev = "184b2ca50ed39ca43da13f0b830a463861adb9ca" [workspace.dependencies.fsrs] -version = "1.2.2" +version = "1.2.4" # git = "https://github.com/open-spaced-repetition/fsrs-rs.git" # rev = "58ca25ed2bc4bb1dc376208bbcaed7f5a501b941" # path = "../open-spaced-repetition/fsrs-rs" diff --git a/cargo/licenses.json b/cargo/licenses.json index cb6768817..212b858ea 100644 --- a/cargo/licenses.json +++ b/cargo/licenses.json @@ -1225,7 +1225,7 @@ }, { "name": "fsrs", - "version": "1.2.2", + "version": "1.2.4", "authors": "Open Spaced Repetition", "repository": "https://github.com/open-spaced-repetition/fsrs-rs", "license": "BSD-3-Clause", diff --git a/rslib/src/scheduler/fsrs/weights.rs b/rslib/src/scheduler/fsrs/weights.rs index e7e2cbd35..51bd7107d 100644 --- a/rslib/src/scheduler/fsrs/weights.rs +++ b/rslib/src/scheduler/fsrs/weights.rs @@ -308,16 +308,13 @@ pub(crate) fn single_card_revlog_to_items( } // Filter out unwanted entries - let mut unique_dates = std::collections::HashSet::new(); entries.retain(|entry| { - let manually_rescheduled = - entry.review_kind == RevlogReviewKind::Manual || entry.button_chosen == 0; - let cram = entry.review_kind == RevlogReviewKind::Filtered && entry.ease_factor == 0; - if manually_rescheduled || cram { - return false; - } - // Keep only the first review when multiple reviews done on one day - unique_dates.insert(entry.days_elapsed(next_day_at)) + !( + // manually rescheduled + (entry.review_kind == RevlogReviewKind::Manual || entry.button_chosen == 0) + || // cram + (entry.review_kind == RevlogReviewKind::Filtered && entry.ease_factor == 0) + ) }); // Compute delta_t for each entry @@ -346,6 +343,7 @@ pub(crate) fn single_card_revlog_to_items( .collect(); FSRSItem { reviews } }) + .filter(|item| !training || item.reviews.last().unwrap().delta_t > 0) .collect_vec(); if items.is_empty() { None