Configuration
The default deck options are
const deckOptions = {
"deck1": {
easeReward: {
minimumConsecutiveSuccessfulReviewsRequiredForReward: 3,
baseEaseReward: 0.05,
stepEaseReward: 0.05,
minimumEase: 1.30,
maximumEase: 2.50,
},
scheduler: {
enableFuzz: true,
maximumInterval: 36500,
intervalModifier: 1.00,
calculateHardMultiplier: (currentEaseFactor, currentInterval) => {
return 0.0;
},
calculateGoodMultiplier: (currentEaseFactor, currentInterval) => {
return currentEaseFactor / Math.pow(currentInterval, 0.054297);
},
calculateEasyMultiplier: (currentEaseFactor, currentInterval) => {
return 0.0;
},
},
},
"Global Settings": {
easeReward: {
minimumConsecutiveSuccessfulReviewsRequiredForReward: 3,
baseEaseReward: 0.05,
stepEaseReward: 0.05,
minimumEase: 1.30,
maximumEase: 2.50,
},
scheduler: {
enableFuzz: true,
maximumInterval: 36500,
intervalModifier: 1.00,
// Approximation of the default FSRS-5 parameters
// [0.40255, 1.18385, 3.173, 15.69105, 7.1949, 0.5345, 1.4604, 0.0046, 1.54575, 0.1192, 1.01925, 1.9395, 0.11, 0.29605, 2.2698, 0.2315, 2.9898, 0.51655, 0.6621]
calculateHardMultiplier: (currentEaseFactor, currentInterval) => {
return currentEaseFactor * Math.pow(currentInterval, -0.013242011) + (-1.048236196);
},
calculateGoodMultiplier: (currentEaseFactor, currentInterval) => {
return currentEaseFactor * Math.pow(currentInterval, -0.154370758) + (1.395807731);
},
calculateEasyMultiplier: (currentEaseFactor, currentInterval) => {
return currentEaseFactor * Math.pow(currentInterval, -0.178728777) + (5.295133129);
},
},
},
};
Each deck can be configured individually by adding a new top level entry in
deckOptions
with the name of the deck you want to configure.
The easeReward
and scheduler
fields, along with their corresponding
settings, must be correctly configured. Any typos or omitted fields will cause
the custom scheduler to fallback to Anki's native scheduler, either SM-2 or
FSRS, whichever has been enabled for the deck options preset.
The Global Settings
entry serves as a fallback configuration for any decks
that do not match the name of a specified deck. If Global Settings
is removed
from deckOptions
, Anki will revert to using its native scheduler, either SM-2
or FSRS, based on the enabled preset.
Any subdecks under a parent deck will not inherit its options from the parent
deck. A separate top level entry must be created in order for the custom
scheduler to take effect. Otherwise, it will be scheduled using the settings
configured in Global Settings
if present. For example, if there is a parent
deck called parentDeck
and a subdeck called subDeck
, then the top level
entry should be named parentDeck::subDeck
.