* graduate card when user press hard and has 0 learning steps
* fix error: useless conversion to the same type
* do the same thing to again
* fix expected `Option<u32>`, found integer
* ./ninja format
* let FSRS control short term schedule
* Update to FSRS-rs v1.3.0
* ./ninja check:clippy
* Update to FSRS-rs v1.3.1
* Pin FSRS version (dae)
https://github.com/ankidroid/Anki-Android-Backend/pull/417
* Remove redundant parens (dae)
* keep the same-day reviews in feature
* Update to FSRS-rs v1.2.3
* format
* don't remove short-term reviews if not training
* Update to FSRS-rs v1.2.4
* Bump Python deps
Primarily for flask-cors CVE
* Bump TS deps; pin license checker
Current checker is missing the binary
https://github.com/RSeidelsohn/license-checker-rseidelsohn/issues/118
* Update Rust deps
Hyper and axum are held back as we currently make use of the older
http library that reqwest pulls in
* graduate card when user press hard and has 0 learning steps
* fix error: useless conversion to the same type
* do the same thing to again
* fix expected `Option<u32>`, found integer
* ./ninja format
* Update to FSRS-rs v1.2.0
* if else -> match
* Weight length check has been moved into FSRS (dae)
* Don't mention the number of FSRS parameters (dae)
It has changed, and may change again.
* test using existed cards
* plot new and review
* convert learning cards & use line chart
* allow draw multiple simulations in the same chart
* support hide simulation
* convert x axis to Date
* convert y from second to minute
* support clear last simulation
* remove unused import
* rename
* add hover/tooltip
* fallback to default parameters
* update default value and maximum of deckSize
* add "processing..."
* fix mistake
* start of load balancer
* add configuration options; option to load balance per deck
* formatting
* clippy
* add myself to contributors
* cleanup
* cargo fmt
* copyright header on load_balancer.rs
* remove extra space
* more formatting
* python formatting
* ignore this being None
only doing this cause python has awful lambdas and can't
loop in a meaningful way without doing this
* only calculate notes on each day if we are trying to avoid siblings
* don't fuzz intervals if the load balancer is enabled
* force generator to eval so this actually happens
* load balance instead of fuzzing, rather than in addition to
* use builtin fuzz_bounds rather than reinvent something new
* print some debug info on how its load balancing
* clippy
* more accurately load balance only when we want to fuzz
* incorrectly doublechecking the presence of the load balancer
* more printfs for debugging
* avoid siblings -> disperse siblings
* load balance learning graduating intervals
* load balancer: respect min/max intervals; graduating easy should be at least +1 good
* filter out after-days under minimum interval
* this is an inclusive check
* switch load balancer to caching instead of on the fly calculation
* handle case where load balancer would balance outside of its bounds
* disable lb when unselecting it in preferences
* call load_balancer in StateContext::with_review_fuzz instead of next to
* rebuild load balancer when card queue is rebuilt
* remove now-unused configuration options
* add note option to notetype to enable/disable sibling dispersion
* add options to exclude decks from load balancing
* theres a lint checking that the link actually exists so I guess I'll add the anchor back in later?
* how did I even update this
* move load balancer to cardqueue
* remove per-deck balancing options
* improve determining whether to disperse siblings when load balancing
* don't recalculate notes on days every time
* remove debug code
* remove all configuration; load balancer enabled by default; disperse siblings if bury_reviews is set
* didn't fully remove caring about decks from load balancer sql query
* load balancer should only count cards in the same preset
* fuzz interval if its outside of load balancer's range
* also check minimum when bailing out of load balancer
* cleanup; make tests happy
* experimental weight-based load balance fuzzing
* take into account interval when weighting as it seems to help
* if theres no cards the interval weight is just 1.0
* make load balancer disableable through debug console
* remove debug prints
* typo
* remove debugging print
* explain a bit how load balancer works
* properly balance per preset
* use inclusive range rather than +1
* -1 type cast
* move type hint somewhere less ugly; fix comment typo
* Reuse existing deck list from parent function (dae)
Minor optimisation
* Feat/FSRS-5
* adapt the SimulatorConfig of FSRS-5
* update parameters from FSRS-4.5
* udpate to FSRS-rs v1.1.0
* ./ninja fix:minilints
* pass ci
* update cargo-deny to 0.14.24
* udpate to FSRS-rs v1.1.1
* update to fsrs-rs v1.1.2
* Apply fuzz to SM2 lapse interval and respect max ivl
Imo, there is no reason for not applying fuzz to SM2 lapse intervals
* Update review.rs
* Format
* Update review.rs
* Update review.rs
* Update review.rs
* Update review.rs
* Fix FSRS easy interval being same as good interval in relearning cards
https://github.com/ankitects/anki/pull/3236#issuecomment-2187787774
* Update relearning.rs
* Update relearning.rs
* Set min interval of easy to Good + 1
* Ensure minimum doesn't exceed maximum (dae)
With a maximum interval set, it would be possible to confuse with_review_fuzz()
by passing min > max.
* return current weights if fsrs_items is zero
* handle error of evaluation if items.is_empty()
* TODO: handle error of optimal retention
* Revert "TODO: handle error of optimal retention"
This reverts commit 80a5b3803e.
* Revert "handle error of evaluation if items.is_empty()"
This reverts commit 7f0a5570e7.
* update fsrs to 0.4.5
* update to fsrs 0.4.6
* add benchmark API
* update fsrs to 0.5.0
* cargo fmt
* ./ninja fix:minilints
* ./ninja format
* Add a brief comment about the new method (dae)
* Fix/set pretrain_only and insufficient reviews based on fsrs_items
* use review_count for FsrsInsufficientReviews
* Update weights.rs
* Update weights.rs