Anki/anki
Damien Elmes bac4acdaa8 reworked handling of spaced cards; add cms argument to previewFact()
- obsolete spaceUntil - it serves no useful purpose
- the old per-model spacing variables are obsolete, as the new approach
  requires uniform spacing across all models for new cards
- introduce a new per-deck variable: newSpacing
- don't fill new queue if we've done today's cards
- still need to check cramming / review early

newSpacing is a time in seconds to delay introduction of sibling new cards.
It can be applied as many times as necessary as there is no harm in new cards
being delayed repeatedly. Because the default queue length is 200 and it can
take quite some time for the spaced cards to be placed in the queue again, we
use a separate array to track spaced new cards provided the configured delay
is less than 20 minutes. At times under 20 minutes this number is not a
guaranteed minimum spacing - if the new card queue is empty the spaced cards
will be flushed before checking the new queue again, as otherwise we end up
trying to fill on every repetition. The due counts no longer decrease by more
than one if the spacing is less than the due cutoff, since that confused some
users.

Review cards are now placed at the end of the current review queue, and will
never be rescheduled to a different day. The old approach had a number of
problems:

- the more card models you had, the more likely a card would be spaced
  multiple times, resulting in you forgetting the card before you get a chance
  to review it
- spacing was applied even if the due card was already late
- repeatedly failing one card over a period of days or weeks would also stave
  the other cards of attention
2010-12-02 06:33:40 +09:00
..
importing support tags: at the top of file to import; fix comment stripping 2010-11-26 01:48:54 +09:00
template convert pystache to private library since it doesn't behave like upstream 2010-11-29 22:51:55 +09:00
__init__.py bump version 2010-11-30 03:35:45 +09:00
cards.py reworked handling of spaced cards; add cms argument to previewFact() 2010-12-02 06:33:40 +09:00
db.py remove string exceptions for python2.6 2010-06-10 13:24:46 +09:00
deck.py reworked handling of spaced cards; add cms argument to previewFact() 2010-12-02 06:33:40 +09:00
errors.py rename instance var to avoid deprecation warning 2009-04-29 15:28:13 +09:00
exporting.py more type handling updates; don't munge counts on sync 2010-11-13 18:39:24 +09:00
facts.py add a field cache for searching without html 2010-10-27 19:00:49 +09:00
fonts.py initial commit from hg 2008-09-27 23:50:03 +09:00
graphs.py don't fudge matplotlib path on win32 2010-11-26 21:59:09 +09:00
history.py fix reviewHistory table by rebuilding it 2009-03-15 07:27:44 +09:00
hooks.py new syncName handling 2010-11-23 23:12:34 +09:00
lang.py translation patches from Piotr 2009-01-20 23:33:50 +09:00
latex.py python2.7/win32 fix for latex 2010-11-12 13:05:43 +09:00
media.py don't die when filename case is borked in media check 2010-08-16 19:28:45 +09:00
models.py reworked handling of spaced cards; add cms argument to previewFact() 2010-12-02 06:33:40 +09:00
sound.py avoid passing the second fade argument, as it seems to be more robust 2010-11-16 18:04:04 +09:00
stats.py more type handling updates; don't munge counts on sync 2010-11-13 18:39:24 +09:00
stdmodels.py strip all chinese/japanese support out in favour of plugins 2009-06-10 22:58:28 +09:00
sync.py Require explicit reset for most queue-modifying functions 2010-11-23 17:41:36 +09:00
tags.py don't create empty tags on export 2010-02-05 12:27:32 +09:00
utils.py don't allow tags to be prefixed with a colon, as this breaks sqlite 2010-11-26 03:49:01 +09:00