diff --git a/proto/anki/deck_config.proto b/proto/anki/deck_config.proto index 43b3429a0..98d27d8f2 100644 --- a/proto/anki/deck_config.proto +++ b/proto/anki/deck_config.proto @@ -81,6 +81,8 @@ message DeckConfig { REVIEW_CARD_ORDER_EASE_DESCENDING = 6; REVIEW_CARD_ORDER_RELATIVE_OVERDUENESS = 7; REVIEW_CARD_ORDER_RANDOM = 8; + REVIEW_CARD_ORDER_ADDED = 9; + REVIEW_CARD_ORDER_REVERSE_ADDED = 10; } enum ReviewMix { REVIEW_MIX_MIX_WITH_REVIEWS = 0; diff --git a/rslib/src/storage/card/filtered.rs b/rslib/src/storage/card/filtered.rs index 16024e983..00f1839ab 100644 --- a/rslib/src/storage/card/filtered.rs +++ b/rslib/src/storage/card/filtered.rs @@ -20,7 +20,7 @@ pub(crate) fn order_and_limit_for_search( FilteredSearchOrder::IntervalsDescending => "ivl desc", FilteredSearchOrder::Lapses => "lapses desc", FilteredSearchOrder::Added => "n.id, c.ord", - FilteredSearchOrder::ReverseAdded => "n.id desc", + FilteredSearchOrder::ReverseAdded => "n.id desc, c.ord asc", FilteredSearchOrder::Due => { let current_timestamp = timing.now.0; temp_string = format!( diff --git a/rslib/src/storage/card/mod.rs b/rslib/src/storage/card/mod.rs index 27ec7b818..d51236696 100644 --- a/rslib/src/storage/card/mod.rs +++ b/rslib/src/storage/card/mod.rs @@ -711,6 +711,8 @@ enum ReviewOrderSubclause { RelativeOverduenessFsrs { timing: SchedTimingToday, }, + Added, + ReverseAdded, } impl fmt::Display for ReviewOrderSubclause { @@ -737,6 +739,8 @@ impl fmt::Display for ReviewOrderSubclause { format!("extract_fsrs_relative_overdueness(data, due, {today}, ivl, {next_day_at}) desc"); &temp_string } + ReviewOrderSubclause::Added => "nid asc, ord asc", + ReviewOrderSubclause::ReverseAdded => "nid desc, ord asc", }; write!(f, "{}", clause) } @@ -771,6 +775,8 @@ fn review_order_sql(order: ReviewCardOrder, timing: SchedTimingToday, fsrs: bool }] } ReviewCardOrder::Random => vec![], + ReviewCardOrder::Added => vec![ReviewOrderSubclause::Added], + ReviewCardOrder::ReverseAdded => vec![ReviewOrderSubclause::ReverseAdded], }; subclauses.push(ReviewOrderSubclause::Random); diff --git a/ts/deck-options/choices.ts b/ts/deck-options/choices.ts index 5e6a65cdd..e1eb134d6 100644 --- a/ts/deck-options/choices.ts +++ b/ts/deck-options/choices.ts @@ -105,6 +105,14 @@ export function reviewOrderChoices(fsrs: boolean): Choice