Commit graph

51 commits

Author SHA1 Message Date
Damien Elmes
dc0fdaeea5 add a bunch of annotations for mypy 2019-12-20 15:07:40 +10:00
Damien Elmes
87d37c7889 type hints for scheduler 2019-12-20 11:07:08 +10:00
Damien Elmes
9983774a12 add pytype inferred types to anki/
I've corrected some obvious issues, and we can fix others over time.
Mypy tests are currently broken, as adding the type hints has increased
mypy's testing surface.
2019-12-20 11:07:08 +10:00
Damien Elmes
6a72b9eedc fix type inference in scheduler 2019-12-16 17:54:17 +10:00
Damien Elmes
d99cca56cf sort due in filtered decks by ordinal, like normal review
https://anki.tenderapp.com/discussions/ankidesktop/37419-card-order-of-siblings-not-preserved-in-filtered-deck#comment_47910714
2019-12-11 08:12:50 +10:00
Damien Elmes
79ab33ee49 add a token 1 day bonus so easy on a relearn card differs from good
https://anki.tenderapp.com/discussions/beta-testing/1589-anki-2116-beta#comment_47905454
2019-12-09 12:12:29 +10:00
Damien Elmes
f7bbbfdbb1 fix negative due dates in filtered decks
https://anki.tenderapp.com/discussions/ankidesktop/35978-rebuilding-filtered-deck-on-experimental-v2-empties-deck-and-reschedules-to-the-year-1745

this means affected cards will not have the selected ordering applied,
but that seems preferable to the alternatives
2019-09-24 15:38:33 +10:00
Damien Elmes
9f27be3095 ensure random distribution of due cards for a given day in v2 sched 2019-08-17 18:45:00 +10:00
Damien Elmes
51f9e7eec9 fix v2 relearning reset bug
https://anki.tenderapp.com/discussions/ankidesktop/34560-schedule-switching-bug
2019-06-14 09:15:48 +10:00
Damien Elmes
ca6142ccf0 fix v2 lrn scheduling bug
https://anki.tenderapp.com/discussions/ankimobile/9714-deleting-custom-study-deck-skips-learning-step-time
2019-05-31 15:05:12 +10:00
Damien Elmes
0303939568 fix learn steps being assigned on relearn in v2 2019-04-30 09:27:28 +10:00
Damien Elmes
7d0f7ae33c fix some warnings 2019-03-04 16:01:10 +10:00
Damien Elmes
f8bdf0ceec revlog changes need to limited to (re)learning cards
if you switched schedulers with the git code or the beta, please
restore from a backup prior to the switch
2019-02-11 18:12:44 +10:00
Damien Elmes
a7eb6bb357 update copyright and clarify licenses 2019-02-05 14:01:33 +10:00
Damien Elmes
9e540ea5e6 shift revlog eases when turning v2 sched on/off
fixes old 'good'/'easy' answers showing up as 'hard'/'good' in
the graphs
2019-02-05 12:30:01 +10:00
Damien Elmes
89d784a0d7 ensure today and dayCutoff are integers
https://github.com/dae/anki/pull/272
2019-02-04 14:29:52 +10:00
Damien Elmes
914077e807 make sure lapse % doesn't create decimal intervals
issue reported on
https://github.com/dae/anki/pull/272
2019-01-29 08:01:23 +10:00
Damien Elmes
87575674f9 scan for due learning cards more frequently 2018-12-10 12:11:45 +10:00
Damien Elmes
aeea07498c update learning cutoff time periodically
prevents users from having to leave and return to the deck to show
cards that have become due during the study session

https://anki.tenderapp.com/discussions/ankimobile/8530-ankimobile-with-experimental-schedule-not-showing-due-cards-in-realtime
2018-11-27 19:37:46 +10:00
Arthur-Milchior
708cc0a628 Change order of new cards
This commit corrects the following bug:

* Create a note N in an empty deck D of type basic (reverse), with
only some back, no front. Only card 2 will be generated.
* Edit the note, add a front. Card 1 will be generated.
* In the main window, try to learn deck D. In anki, currently, you'll
  see Card 2 first. According to the manual (and to my common sens),
  it should be Card 1 first.

This commit correct this bug, and ensure that new cards are seen
according to their order, and not to their creation date.
2018-11-20 21:50:36 +01:00
Damien Elmes
f576d19426 improve handling of invalid deck trees
- move checking code out of the schedulers and into the deck manager
- ensure we can fix the problem in one loop - the previous recursive
approach could lead to stack overflows if the top level of a large
deck tree was missing. this was also the cause of the sqlite
'interrupted' error that some users were seeing
2018-11-09 15:04:35 +10:00
Damien Elmes
9be9d7c576 strictly enforce maxIvl
https://anki.tenderapp.com/discussions/ankidesktop/29904-bug-in-v2-scheduler-that-allows-exceeding-the-maximum-review-interval
2018-09-25 09:55:46 +10:00
Damien Elmes
e7d8cef8b5 recover from decks with blank sections (eg '::deck') 2018-09-22 16:04:26 +10:00
Damien Elmes
b1cd168447 days since creation needs to be calculated relative to rollover
https://anki.tenderapp.com/discussions/ankidesktop/29502-next-day-starts-experimental-v2-scheduler-bug
2018-09-05 20:21:30 +10:00
Damien Elmes
c7620478cf v2: limit learn delay fuzz to 5 minutes and sub-day 2018-07-28 13:56:56 +10:00
Damien Elmes
066adfd933 use scheduled ivl in lapse calculation
reverting to 2.0 behaviour

https://anki.tenderapp.com/discussions/effective-learning/1300-lapse-duration-not-being-honored-for-lapses-of-multi-stepday-relearn-cards
2018-07-27 15:02:41 +10:00
Damien Elmes
e0f24b626f better handle invalid deck list
deleting will fail if the problem deck is the default deck - better to
rename instead

fixes infinite recursion errors
2018-07-26 11:34:10 +10:00
Damien Elmes
d78a6eb3fb fix invalid cards when moving from v2->v1 sched
type needs to be reset from 3->2 when relearning cards removed from
learning

https://anki.tenderapp.com/discussions/beta-testing/1210-scheduling-error
2018-07-16 16:29:53 +10:00
Damien Elmes
2fdd9c89d5 differentiate easy button more when reviewing early
apply half the easy bonus post ivl calculation, or else very early
reviews with longer intervals appear to have the same intervals as
answering 'good'
2018-07-11 22:18:46 +10:00
Damien Elmes
f656a2da09 support customizing hard factor 2018-07-11 21:23:22 +10:00
Damien Elmes
1e63ed2965 remove study card count cap in v2 sched
- cap kept for the deck list, as we need to calculate it for multiple
decks
- v2 sched can calculate review limit faster, as it doesn't have to
check each deck separately
- filtered deck cap is same as in interface
- as this will be deployed on ankiweb, beta clients will need to update
or risk getting sanity check errors when syncing with high due counts
2018-07-11 20:03:36 +10:00
Damien Elmes
51f50e7b4c make sure we don't put suspended leeches back in the learning queue
fixes
https://anki.tenderapp.com/discussions/beta-testing/1119-anki-210-beta-38#comment_45555453
2018-06-25 20:27:26 +10:00
Damien Elmes
d352ec7581 ignore delay in hard case
https://anki.tenderapp.com/discussions/ankidesktop/27627-request-allow-setting-maximum-delay-for-interval-calculation-in-overdue-cards
2018-06-01 12:24:11 +10:00
Damien Elmes
b7d3e5fa68 speed up v2 deckDueList() in many decks case 2018-05-31 16:21:33 +10:00
Damien Elmes
f8101d0084 fix regular reviews being treated as relearning in v2 sched 2018-05-31 12:44:23 +10:00
Damien Elmes
3b91c1d6c5 cache deck name->obj map to improve many decks case 2018-05-29 19:30:13 +10:00
Damien Elmes
29597abe85 give hard a 1.5x interval when there's only one (re)learning step
otherwise we end up with two buttons that do the same thing
2018-02-06 15:41:56 +10:00
Damien Elmes
fe85b3bf26 misleading spacing 2018-02-06 11:47:28 +10:00
Damien Elmes
80487ad664 rename _restoreFromFiltered
and use same logic as restoreQueueSnippet
2018-02-02 19:10:35 +10:00
Damien Elmes
b9932249e3 remove _cidsByDid()
no longer necessary
2018-02-02 16:55:53 +10:00
Damien Elmes
067191b8cc simplify rev card answering 2018-02-02 15:19:41 +10:00
Damien Elmes
3d3cf3d135 fix no relearn steps case in v2 sched 2018-02-02 14:30:53 +10:00
Damien Elmes
4f281b5db0 v2 sched cleanups 2018-02-02 12:44:56 +10:00
Damien Elmes
7013cbcd57 experiment with counting learning cards instead of learning steps
When studying, the learning count now indicates the number of
learning cards due within the learn ahead limit, instead of the total
number of learning steps required to complete that day.

Also fix the ineffective limit clauses in the learning counts.
2018-01-31 14:50:17 +10:00
Damien Elmes
8d536a16e8 fix error on final step of lapsed card
https://anki.tenderapp.com/discussions/beta-testing/968-experimental-scheduler-in-anki-210beta31#comment_44552449
2018-01-22 12:10:39 +10:00
Damien Elmes
7c79f24916 add option to show day learn cards before reviews 2018-01-20 16:07:57 +10:00
Damien Elmes
65b81b0a47 make preview delay customizable 2018-01-20 15:26:11 +10:00
Damien Elmes
b8c498b570 fix counts in preview mode
We can't preserve the original queues when in preview mode, as
otherwise the due counts report the remaining steps of cards in
the learning queue, instead of just 1.

Rather than the rather complicated approach of making the learning and
deck list code aware of the current mode we're in, preview mode moves
all cards to the review queue when the filtered deck is built - just as
cards are moved to the new queue in Anki 2.0.x. The reason for the
review queue is that users were frequently confused when cards appeared
as new - hopefully this is slightly less confusing.
2018-01-20 14:22:57 +10:00
Damien Elmes
5f22a067e2 extra newline 2018-01-14 17:01:39 +10:00
Damien Elmes
59aa78f253 code in new scheduler to move between versions 2018-01-14 16:57:40 +10:00