Currently, the SchedulingContext has deck_name and seed
message SchedulingContext {
string deck_name = 1;
uint64 seed = 2;
}
I think it would be useful to also have the card’s deck options as well in the SchedulingContext (or SchedulingState if that makes more sense) when using the custom scheduler. In particular, the StateContext has the following information
pub(crate) struct StateContext<'a> {
/// In range `0.0..1.0`. Used to pick the final interval from the fuzz
/// range.
pub fuzz_factor: Option<f32>,
pub fsrs_next_states: Option<NextStates>,
// learning
pub steps: LearningSteps<'a>,
pub graduating_interval_good: u32,
pub graduating_interval_easy: u32,
pub initial_ease_factor: f32,
// reviewing
pub hard_multiplier: f32,
pub easy_multiplier: f32,
pub interval_multiplier: f32,
pub maximum_review_interval: u32,
pub leech_threshold: u32,
// relearning
pub relearn_steps: LearningSteps<'a>,
pub lapse_multiplier: f32,
pub minimum_lapse_interval: u32,
// filtered
pub in_filtered_deck: bool,
pub preview_step: u32
For my custom scheduling algorithm, I need at least
- hard_multiplier
- easy_multiplier
- maximum_review_interval
Is this possible to add?
Note, I do not need to modify these options, I just want to read the value
As a workaround, I can just add some JS code and create a deckParams object and read the deck_name like FSRS, but it would be nice to not have to do this and avoid any potential user error