Commit Graph

10491 Commits

Author SHA1 Message Date
Damien Elmes ce11927f97 Update compatible Rust deps
Fixes a CVE in tungstenite
2023-09-28 09:54:56 +10:00
Damien Elmes b8390d096e Shift weight calculation to backend so it can be run in parallel 2023-09-28 09:10:54 +10:00
Damien Elmes 1f55ad1d44
Expose the ability to train weights from items (#2687) 2023-09-28 08:28:24 +10:00
Jarrett Ye 05499297e0
Fix first_rating_count & learn_cost (#2688)
* fix first_rating_count & learn_cost

* Update CONTRIBUTORS

* cargo clippy --fix

* cargo fmt
2023-09-27 18:31:40 +10:00
Damien Elmes d2f392ff9f Update translations 2023-09-27 16:37:37 +10:00
Damien Elmes da027bccd9 Tweak some wordings 2023-09-27 16:37:03 +10:00
Damien Elmes 65c2381f4d x% complete 2023-09-27 16:24:25 +10:00
Damien Elmes 0532c1f5b0 Use revlog to determine days_elapsed when studying/for card info
Currently prop searches and the retrievability column will continue to
derive the days from the card only, as it's difficulty to integrate revlog
upgrade lookups into those code paths, especially in a performant way.
One possible way we could solve this in the future is to store last_review_day
in the card data, so we can know it even if the due date has been shifted.
Check DB could fill it in for existing cards.
2023-09-27 16:17:47 +10:00
Damien Elmes 66b944b722 Fix days_since_last_review() when used in filtered deck 2023-09-27 16:17:47 +10:00
Michael Eliachevitch 2580399552
Button to set desired FSRS retention to optimal/calculated (#2685)
* Draft set optimal/calculated retention button

Temporarily save the calculated optimal retention and display it with a button
that sets the desired retention above to this value.Don't show button until
attention had been calculated. Disable button when optimal and desired
attention are equal.

I find this nicer than the current alert-popup solution, as it avoids a popup
and gives a choice to the user to accept the calculated retention or not, while
also persisting the calculated retention on the screen for a bit.

TODO: What's still missing is that the `optimalRetention` variable is global and
persists when I change presets. When changing presets the variable should reset to
`undefined`, which would also makes the button disappear. Ideally it should also
disappear when changing the FSRS parameters. So probably it should be made part
of some deck options state and subscribe to some events. But with that I might
need some help. Also I thought whether that variable should go into the deck
options schema but tbh it's not something we want to persist between sessions,
users should recalculate it.

* Add me to contributors for tests so pass

* Add formatting ant type fixes to make tests pass

* Minor fixes (dae)

* Remove the period
2023-09-27 16:12:49 +10:00
Abdo ab7e64865e
Implement "stop timer on answer" as a preset option (#2686)
* Implement "stop timer on answer" as a preset option

* Hide timer setting on AnkiMobile (dae)
2023-09-27 16:10:14 +10:00
Damien Elmes ab4e820608 Update FSRS; fix handling of invalid revlogs
State is now inferred from SM-2 data when the revlog is not suitable
2023-09-27 13:13:10 +10:00
Damien Elmes add6f6f62f Fix invalid utf-8 in tags 2023-09-27 10:06:31 +10:00
Damien Elmes a1f4bcb3cb Fix optimal retention caps 2023-09-26 14:17:55 +10:00
Damien Elmes aee6fcf456 Fix weight computation progress not showing 2023-09-26 14:02:12 +10:00
Michael Eliachevitch 2491b93ea6
More sensible lower FSRS progress indicator precision (#2684)
It's very helpful having a sub-permille precision in a progress
indicator, percent-precision or at most a tenth of a percent should be
sufficient for any indicator.

But in particular the compute-retention progress has 10 steps, i.e. the progress
increases in 10%-intervals (10%, 20%, ...), it *cannot* have sub-decimal
progress-percentages, see 2d5b19b494/src/optimal_retention.rs (L365-L368). So there integer percents should be
enough, everything else is misleading.

The compute-weights progress is currently (as of beta-2) not showing up at all.
Maybe if the bug is fixed it can show sub-percent percentages, so for know I changed that
to 0.1% precision. But I think integer percentages should be fine here as well,
so upon request I can fix that.

Also see my comment on this problem in https://forums.ankiweb.net/t/anki-23-10-beta/34912/39.
2023-09-26 14:01:05 +10:00
Abdo 4cf2ab35ab
Match IO extensions in a case-insensitive manner (#2683) 2023-09-26 13:14:59 +10:00
Abdo bccc5b0995
Fix wrong mask position after merging groups (#2682) 2023-09-26 13:14:13 +10:00
Damien Elmes bae8038178 Allow desired retention to be set to 0.7
https://github.com/open-spaced-repetition/fsrs-rs/issues/79#issuecomment-1733779005
2023-09-26 13:03:49 +10:00
Damien Elmes 1395f3e5e6 Fix changes_since_open() 2023-09-26 11:02:16 +10:00
Damien Elmes 8214aa42a1 Don't show multiple cancel buttons 2023-09-25 16:40:11 +10:00
Damien Elmes c9ca5ee6e7 Fix cancel signal being ignored if sent quickly 2023-09-25 16:32:12 +10:00
Damien Elmes 17cfec5e35 Prohibit weight generation when reps < 1000 2023-09-25 16:17:00 +10:00
Damien Elmes e0399bcad2 Allow cards with no learning history when not training 2023-09-25 15:57:35 +10:00
Damien Elmes baae685dbb UI tweaks
https://forums.ankiweb.net/t/anki-23-10-beta-1/34912/19
2023-09-25 15:54:18 +10:00
Damien Elmes bb0acd9d92 Support retrievability calculation for (re)learning cards 2023-09-25 14:58:39 +10:00
Damien Elmes da0e42ea03 Fix extract_fsrs_retrievabilty()
- Need to use fuzzed interval to accurately determine elapsed days
- saturating_sub on an i32 is not useful
2023-09-25 14:40:44 +10:00
Damien Elmes 3c62a8345a Cap optimal retention simulation to 10 years 2023-09-25 14:34:26 +10:00
Damien Elmes ba9ee93fa8 Expose deck-then-random option in UI 2023-09-25 11:12:28 +10:00
Damien Elmes e6aaeb85e9 Expose memory state computation to Python
Closes #2676
2023-09-25 11:05:47 +10:00
Damien Elmes 4dc9890845 Include v2 scheduler in "no longer supported" message 2023-09-25 09:39:59 +10:00
Damien Elmes c788f8ac8a Fix entire collection being used to calculate weights 2023-09-24 19:42:50 +10:00
Damien Elmes 2ab8aa002e QtQml was also required 2023-09-24 16:42:26 +10:00
Damien Elmes 52293dc371 Update Qt for Mac bundle 2023-09-24 16:24:11 +10:00
Damien Elmes 1f6938d74e Update translations 2023-09-24 14:31:12 +10:00
Damien Elmes 558c75493f Strip out v1/v2 code 2023-09-24 14:27:40 +10:00
Damien Elmes 7f56836295 Enable new exporter by default 2023-09-24 13:10:16 +10:00
Damien Elmes 69c4efea8a Use memory state to calculate relative overdueness 2023-09-24 13:07:11 +10:00
Damien Elmes 907a73eb88 When calculating retrievability, use stability instead of fuzzed interval 2023-09-24 12:53:05 +10:00
Damien Elmes 9cc4720efe Support fetching new cards by deck then random note
https://forums.ankiweb.net/t/feature-request-option-for-new-card-gather-order-that-prioritizes-subdecks-closer-to-top-but-gathers-cards-randomly-from-each-subdeck/23178
2023-09-24 11:54:10 +10:00
Damien Elmes e6fdfc20a9 Use FSRS difficulty when sorting by ease 2023-09-23 16:20:36 +10:00
Damien Elmes 06d99b5871 Allow extracting desired retention 2023-09-23 16:11:35 +10:00
Damien Elmes 2126ff9a16 Gate graph display on fsrs status 2023-09-23 15:59:02 +10:00
Damien Elmes 8b849dd629 Avoid excessive floating point precision when serializing 2023-09-23 15:50:10 +10:00
Damien Elmes 03edb7bf9e Store desired retention in card data
If we want to be able to factor the desired retention into a sort based
on relative overdueness, having the values accessible on the card makes
things easier.
2023-09-23 15:42:42 +10:00
Damien Elmes c78de23cf9 Convert FSRS to a global option
Allowing some decks to be FSRS and some SM-2 will lead to confusing
behavior when sorting on SM-2 or FSRS-specific fields, or when moving
cards between decks.
2023-09-23 14:41:55 +10:00
Damien Elmes 0071094e6c Add warning about all clients needing to support FSRS 2023-09-23 14:05:28 +10:00
Damien Elmes 4ee021c3a7 Update FSRS 2023-09-23 14:05:28 +10:00
Abdo 9d6e819701
Support Qt.TextFormat.MarkdownText in aqt.utils (#2675) 2023-09-23 14:04:25 +10:00
Abdo f78c59176e
Add an option to stop the timer on answer (#2673)
* Add an option to stop the timer on answer

* Fix tab order
2023-09-23 14:01:03 +10:00