Damien Elmes
b7e3d87e5d
new active/inactive handling, bigger queues
...
- separate categories for new & review cards
- 'only these tags' + 'none of these tags'
2010-10-19 19:17:52 +09:00
Damien Elmes
be4dea39b1
more scheduler updates
...
- reimplement reviewEarly and newEarly by replacing parts of the scheduler,
instead of adding special conditions
- remove references to isDue and priority (1,2,3,4) which is not necessary
anymore
- add option to switch between per-day scheduling and due now scheduling
- newCardsToday() -> newCardsDoneToday()
- don't decrement counts for suspended cards
- make sure to update type when suspending/unsuspending
- fix findCards()
- set hardInterval = 1-1.1 on upgrade, or the default per day scheduling doesn't
make sense
2010-10-18 18:01:19 +09:00
Damien Elmes
ad743d850d
start work on scheduling refactor
...
Previously we used getCard() to fetch a card at the time. This required a
number of indices to perform efficiently, and the indices were expensive in
terms of disk space and time required to keep them up to date. Instead we now
gather a bunch of cards at once.
- Drop checkDue()/isDue so writes are not necessary to the DB when checking
for due cards
- Due counts checked on deck load, and only updated once a day or at the end
of a session. This prevents cards from expiring during reviews, leading to
confusing undo behaviour and due counts that go up instead of down as you
review. The default will be to only expire cards once a day, which represents
a change from the way things were done previously.
- Set deck var defaults on deck load/create instead of upgrade, which should
fix upgrade issues
- The scheduling code can now have bits and pieces switched out, which should
make review early / cram etc easier to integrate
- Cards with priority <= 0 now have their type incremented by three, so we can
get access to schedulable cards with a single column.
- rebuildQueue() -> reset()
- refresh() -> refreshSession()
- Views and many of the indices on the cards table are now obsolete and will
be removed in the future. I won't remove them straight away, so as to not
break backward compatibility.
- Use bigger intervals between successive card templates, as the previous
intervals were too small to represent in doubles in some circumstances
Still to do:
- review early
- learn more
- failing mature cards where delay1 > delay0
2010-10-18 14:35:11 +09:00
Damien Elmes
747a28556a
when determining which card templates to use, replace text: too
2010-10-18 11:34:02 +09:00
Damien Elmes
4437024ecc
fix a bug caused by sqlite not understanding unicode case
2010-08-26 18:38:08 +09:00
Damien Elmes
9332444dfd
add hook for when undo is finished
2010-08-16 19:27:00 +09:00
Damien Elmes
84cb81854b
faster tag updating for large number of tags
2010-08-16 18:52:55 +09:00
Damien Elmes
f3d2965e12
Revert "don't delete dangling facts when deleting cards" hack
...
We don't need this any more as we do conflict handling.
This reverts commit 880219567e
.
2010-07-21 18:37:35 +09:00
Damien Elmes
880219567e
don't delete dangling facts when deleting cards
...
If the user is not careful to only sync when one side has been modified, they
can end up with cards on one side and not the other. If they then delete a
card, deleting the dangling facts also deletes the fact associated with the
not-yet-synced card. In order to avoid this, we avoid deleting dangling facts
until a DB check.
2010-05-21 06:56:38 +09:00
Damien Elmes
edf121f8dc
add hex cache for dumb clients, make sure not to mark deck modified
2010-05-16 01:01:38 +09:00
Damien Elmes
5616e679f5
cache the css as a deck var, don't accidentally send it in sync
2010-05-10 21:32:36 +09:00
Damien Elmes
a1d3f13f0a
update for sqlalchemy 0.6
2010-04-21 13:21:16 +09:00
Damien Elmes
1be5943903
remove erroneous comment
2010-04-16 01:25:47 +09:00
Damien Elmes
21ec548680
more explicit setting of creation time, don't fiddle with ordinals for rand
2010-04-15 23:05:14 +09:00
Damien Elmes
783751d7ea
support ? for single char search
2010-04-06 18:47:39 +09:00
Damien Elmes
09f51e5028
when adding facts, use a small due increment for each card model
2010-03-03 02:51:05 +09:00
Damien Elmes
80197d9c2f
when generating cards, use a small creation date increment
2010-03-03 02:49:55 +09:00
Damien Elmes
220670a048
update combinedDue attr in cardAnswered(), not just on disk
2010-02-22 16:41:20 +09:00
Damien Elmes
472b68b831
don't backup when importing / saving as
2010-02-20 10:03:39 +09:00
Damien Elmes
bc345d3711
create backup dir if missing
2010-02-20 09:54:54 +09:00
Damien Elmes
6dce4e0602
add progress dialog to save as
2010-02-09 01:52:06 +09:00
Damien Elmes
ae690ccea3
don't bother with an integrity check if the deck is unchanged
2010-02-09 01:36:39 +09:00
Damien Elmes
295bacacd8
forget sync name on saveas
2010-02-09 01:30:16 +09:00
Damien Elmes
095a7dbb6f
implement save as without attaching a db
...
Attaching new to old causes old to be implicitly commited.
We also can't access old from new if a write lock has been
taken out, so the only option left is to move all the data
through Python and take the speed hit.
2010-02-09 01:27:49 +09:00
Damien Elmes
dfd88cc4c1
don't set modtime of 0
2010-02-06 01:20:50 +09:00
Damien Elmes
c659660864
don't send acq cards when there are cards to review & new cards shown last
2010-02-05 13:07:42 +09:00
Damien Elmes
09f51e27f0
return newly created card ids when generating cards
2010-02-05 12:59:54 +09:00
Damien Elmes
8378f71c73
since interval is updated first, use lastInterval in cardIsBeingLearnt()
2010-02-01 05:11:34 +09:00
Damien Elmes
9b61d86096
place a minimum bound on average factor
...
Since SM2's grading has a bias towards starting high and going down (fail/hard
decrease the interval more than easy increases it), more conservative users
find their average interval reaches the minimum allowable interval and the
times given by hard/good start to converge. In the future, the whole concept
of using the average interval for new cards should be revisited to see if the
data supports it
2010-02-01 05:01:23 +09:00
Damien Elmes
d8ba9e1987
revert ease1 change
...
suspicious of the previous change, I had a look at the example pascal and
found the EF _was_ actually updated on a failure. The spec is misleading there.
2010-02-01 04:44:27 +09:00
Damien Elmes
87a0e087e5
tweak scheduler
...
- don't touch factor on fail, as per SM2 specs
- hard code no-punish-on-hard 'learning period' to 7 days so users who tweak
the initial intervals aren't punished too early
2010-02-01 03:28:46 +09:00
Damien Elmes
a6a7782030
fix another windows timer resolution bug
2010-01-22 02:16:57 +09:00
Damien Elmes
33aede4d56
document 'features' reuse, add tool to get var as string
2010-01-19 01:51:35 +09:00
Damien Elmes
20da165b6e
check backup integrity using existing db connection to avoid locking issues
2010-01-04 22:37:14 +09:00
Damien Elmes
ec9a7c3755
check db integrity on backup
2009-11-30 14:31:47 +09:00
Damien Elmes
6a8c19a889
use threadlocal for single user access
2009-11-30 08:34:31 +09:00
Damien Elmes
4bea904dc6
give the card id on cardAnswered hook, not old card
2009-11-27 15:59:58 +09:00
Damien Elmes
a50ec2649a
fix undo of deck properties bug
2009-11-27 15:26:03 +09:00
Damien Elmes
feaedccc9a
fix field ordinals on db check
2009-11-19 13:07:43 +09:00
Damien Elmes
9671d15371
rewrite expression to be clearer
2009-10-25 19:48:28 +09:00
Damien Elmes
4e83a67e00
lowercase is:foo searches
2009-10-04 19:30:21 +09:00
Damien Elmes
c786479268
timeout @ 60
2009-09-28 09:22:57 +09:00
Damien Elmes
1111cae80a
mark everything updated on full db check
2009-09-26 23:13:28 +09:00
Damien Elmes
0863acc160
make pool an argument instead of progress handling; timeout=30
2009-09-25 18:08:53 +09:00
Damien Elmes
1028b04d9c
default timeout of 90 seconds
2009-09-22 18:35:31 +09:00
Damien Elmes
2e2444f488
apsw -> nullpool
2009-09-21 20:48:04 +09:00
Damien Elmes
fa6d1f9528
set isolation_level=None when using apsw
2009-09-20 19:55:56 +09:00
Damien Elmes
dce35eda06
disable progress handler if apsw enabled
2009-09-17 01:33:29 +09:00
Damien Elmes
2a72a4dc70
apsw wants unicode
2009-09-17 01:08:19 +09:00
Damien Elmes
090529c4d7
add option to initialize via apsw
2009-09-17 00:25:53 +09:00
Damien Elmes
1b1b69e966
don't die on resetUndo() if undo disabled
2009-09-14 15:30:20 +09:00
Damien Elmes
a9f3e4dca7
don't throw a traceback with an invalid fid
2009-09-06 17:31:47 +09:00
Damien Elmes
5fed1f7f35
support rtl in html too
2009-08-17 07:42:19 +09:00
Damien Elmes
fd9ce1a876
random(0, time())
2009-08-17 06:52:26 +09:00
Damien Elmes
c33c6318b2
handle text:field in rename & delete
2009-08-17 04:53:29 +09:00
Damien Elmes
2f2487e5b8
increase 5 year max scheduling time to 100 years
2009-07-09 23:07:38 +09:00
Damien Elmes
fdb9327864
fix locking in ubuntu
2009-07-08 14:38:40 +09:00
Damien Elmes
6dfaccaa5e
reuse features as rtl marker, fix deck version
2009-07-05 02:19:13 +09:00
Damien Elmes
8f383db5d2
don't bump mod time on upgrade
2009-07-04 17:10:32 +09:00
Damien Elmes
6514c2a2a5
when previewing cards, use all available card models
2009-07-04 16:50:25 +09:00
Damien Elmes
e2ad8a7ce3
bump deck mod time on suspend/unsuspend
2009-07-02 23:42:05 +09:00
Damien Elmes
01cb3a4b7d
when regenerating cards, use fact's creation date
2009-06-29 23:30:13 +09:00
Damien Elmes
5e9a68d4c7
fix problem upgrading shared decks
2009-06-28 22:23:40 +09:00
Damien Elmes
1cc077e1e7
make sure save as copies deck vars
2009-06-27 17:20:49 +09:00
Damien Elmes
35731d0cb3
move leech detection into libanki
2009-06-26 08:10:33 +09:00
Damien Elmes
5598bcbce4
make sure to set leech vars on create, fix recently created decks
2009-06-25 14:57:34 +09:00
Damien Elmes
1e7cae5202
add leech control
2009-06-25 05:24:02 +09:00
Damien Elmes
1a5d243520
reenable removal of suspended tag
2009-06-23 23:43:21 +09:00
Damien Elmes
2f93ca3d8f
reuse features as media url, blank
2009-06-21 06:51:48 +09:00
Damien Elmes
f94104ed9f
new backup-friendly backup handling
2009-06-20 02:05:11 +09:00
Damien Elmes
aca3ea2513
upgrade suspended, but don't mark cards dirty and don't delete from suspended
2009-06-19 10:26:54 +09:00
Damien Elmes
358b453906
always update buried/reviewEarly cards
2009-06-19 08:02:40 +09:00
Damien Elmes
3e2c150b17
only set lastDue if card is not new, hide due for new cards in stats
2009-06-19 07:46:26 +09:00
Damien Elmes
a1981cf220
strip suspended upgrade code, users will have to do it manually
2009-06-18 07:57:38 +09:00
Damien Elmes
0cd3b517b3
make sure to use unicode in suspended
2009-06-18 06:11:22 +09:00
Damien Elmes
b6a50db1c2
rebuild queue after upgrade mostly done
2009-06-18 04:25:45 +09:00
Damien Elmes
33c23bc082
add leech report to congrats, remove bold from less important items
2009-06-18 03:43:31 +09:00
Damien Elmes
285bf5a9a0
add search for inactive
2009-06-18 03:14:22 +09:00
Damien Elmes
5bca5bc0da
make distinction between suspended/inactive
2009-06-18 03:13:58 +09:00
Damien Elmes
58c4e6eb27
fix error caused by upgrading deck without queue built
2009-06-18 02:40:18 +09:00
Damien Elmes
6a286d1eca
obsolete suspended tag
...
- add suspendCards/unsuspendCards()
- set priority = -3 to manually suspend
- ignore cards with negative priorities when updating
- remove suspended from list of initial tags
2009-06-18 02:25:50 +09:00
Damien Elmes
09e002c8d6
when generating cards in ordered mode, set due = fact creation + ordinal
2009-06-15 11:57:25 +09:00
Damien Elmes
8d3678b9fb
mark deck dirty on reset cards
2009-06-15 06:57:50 +09:00
Damien Elmes
2db2b65df0
set deck created time on download
2009-06-12 22:41:21 +09:00
Damien Elmes
d67b4b2ed9
remove obsolote newSpacedCount()
2009-06-11 22:49:15 +09:00
Damien Elmes
d2ac7fc13e
don't dirty cards/fact on full check, rely on lastSync = 0
2009-06-11 03:49:16 +09:00
Damien Elmes
2d32e1aaa1
strip all chinese/japanese support out in favour of plugins
2009-06-10 22:58:28 +09:00
Damien Elmes
261c70b8c2
set first answered on reset
2009-06-10 21:23:30 +09:00
Damien Elmes
845aede221
if show failed cards at end, use maxFailed = 0
2009-06-08 12:36:23 +09:00
Damien Elmes
bd31fb4e69
numerous optimizations - cold cache start is much faster now
...
- fix priorityDue index order
- force correct index on checkDue() and spacedCardCount()
- don't check due again if reviewEarly & newEarly false
- optimize reviewEarly/buried unsuspend
2009-06-06 18:49:30 +09:00
Damien Elmes
c5cabb7e84
analyze after adding index
2009-06-06 17:37:48 +09:00
Damien Elmes
598b2e79e9
add index for average factor calculation
2009-06-06 17:32:51 +09:00
Damien Elmes
82e8555793
remove debugging from fixIntegrity
2009-06-06 03:42:01 +09:00
Damien Elmes
c6cddeb163
respect max failed cards with 'show failed cards at end', set to default 1000
2009-06-04 07:22:03 +09:00
Damien Elmes
4effec1c59
remove extra newline
2009-06-04 05:28:32 +09:00
Damien Elmes
3e40dc1557
return if numBackups = 0
2009-06-04 05:17:36 +09:00
Damien Elmes
5692c91855
add check for fields without field model
2009-06-04 04:19:53 +09:00
Damien Elmes
76b114f584
make sure to include type= when raising deck access error
2009-06-02 03:21:40 +09:00
Damien Elmes
22b086fbad
better error report if deck is missing decks table
2009-05-31 01:22:06 +09:00
Damien Elmes
b237bcbdf0
support searching for fact ids
2009-05-30 18:22:55 +09:00
Damien Elmes
ddbe0b8657
make sure utcoffset defaults to -1 so initialized on first load
2009-05-27 00:30:29 +09:00
Damien Elmes
7588eb9650
don't need to mention views/indices
2009-05-16 05:12:44 +09:00
Damien Elmes
ea9ad13932
add support for alternative media dir and disabling media copy on export
2009-05-16 04:07:54 +09:00
Damien Elmes
6ccafcb996
optimize change model - much faster for large decks
2009-05-16 03:14:23 +09:00
Damien Elmes
2a9e88cb5d
support quick db check, don't forget deletions, report deleted cards
2009-05-16 02:47:51 +09:00
Damien Elmes
ebf83d898e
don't clobber deck modified when expired cards on open
2009-05-16 00:49:33 +09:00
Damien Elmes
57b659ca36
optimize updatePriorities(), get a 2-3x speedup
2009-05-09 05:58:42 +09:00
Damien Elmes
6893d01458
add back priorityDue index
2009-05-09 04:17:53 +09:00
Damien Elmes
2f4b853140
improve speed of unused tag deletion in updateCardTags()
2009-05-09 03:46:59 +09:00
Damien Elmes
19bc9768f1
delete unused tags on card delete, do it efficiently
2009-05-09 03:26:34 +09:00
Damien Elmes
d15dd71b68
speed up deleteDanglingFacts()
2009-05-09 03:25:46 +09:00
Damien Elmes
bc7bdc24c4
update all card priorities at once on add
2009-05-09 03:25:24 +09:00
Damien Elmes
9df4b3278f
don't flushMod() unless modified
2009-05-07 17:26:29 +09:00
Damien Elmes
3de46f701b
type->is
2009-05-06 16:40:03 +09:00
Damien Elmes
2550d3ec08
new 'learn more' handling
2009-05-06 15:45:15 +09:00
Damien Elmes
f8b6d18dff
add search for delayed
2009-05-06 13:47:57 +09:00
Damien Elmes
eac428f6b3
fail>failed
2009-05-06 13:40:49 +09:00
Damien Elmes
0b9df42400
support searching for card type
2009-05-06 13:32:00 +09:00
Damien Elmes
992f7af50e
make priorities sort better
2009-05-06 12:44:43 +09:00
Damien Elmes
f32f96fb53
if updating priorities results in a suspend, update due counts
2009-05-01 04:36:26 +09:00
Damien Elmes
143a78dd2a
handle buried cards in deck load
2009-04-29 12:12:07 +09:00
Damien Elmes
32d5dccbc9
randomize after reset; refresh deck
2009-04-29 11:51:33 +09:00
Damien Elmes
33c59a3006
new review early handling so that we can recover on load
2009-04-28 17:12:50 +09:00
Damien Elmes
bc2e9d9593
fix adding cards while in random mode
2009-04-23 16:49:55 +09:00
Damien Elmes
2393775f80
add type to factid index
2009-04-23 04:05:37 +09:00
Damien Elmes
d1a44e308e
handle randomize progress in ankiqt, add helper for updating facts
2009-04-23 01:57:54 +09:00
Damien Elmes
f4997f328c
don't randomize on upgrade, will cause sync problems
2009-04-23 01:36:25 +09:00
Damien Elmes
35837ef213
mark cards modified when randomizing/ordering
2009-04-23 01:35:41 +09:00
Damien Elmes
ae7047f5af
add progress dialogs
2009-04-23 01:33:59 +09:00
Damien Elmes
fbf31d60da
new random handling
2009-04-23 01:25:42 +09:00
Damien Elmes
a6827b8dd7
check if modified in setvar()
2009-04-23 00:32:40 +09:00
Damien Elmes
cd87adbe71
fix new count where cards are suspended, highlight type in blue too
2009-04-22 21:37:42 +09:00
Damien Elmes
bc8b7f45da
fix plural of suspended cards
2009-04-22 21:34:38 +09:00
Damien Elmes
09e158ac74
update card priorities after fact tags updated
2009-04-22 21:34:17 +09:00
Damien Elmes
3c9ad98a44
remove comma from delete tags
2009-04-22 18:10:54 +09:00
Damien Elmes
013f3d00a8
support * wildcard in normal text search too
2009-04-20 21:50:29 +09:00
Damien Elmes
c0b46ff994
mark cards modified when priority changed
2009-04-18 22:41:03 +09:00
Damien Elmes
e1f505b853
don't randomize field ids anymore
2009-04-18 22:00:49 +09:00
Damien Elmes
451c266591
make sure tag index is unique
2009-04-18 04:45:41 +09:00
Damien Elmes
19e597cbc9
don't update tag for each card, we do it for the fact
2009-04-18 02:32:03 +09:00
Damien Elmes
1d4710b6d6
flush after startProgress() in case a lost focus has been triggered
2009-04-17 23:18:05 +09:00
Damien Elmes
099202c28f
trailing whitespace
2009-04-14 02:01:07 +09:00
Damien Elmes
06b1ee47f9
add support for turning off backups
2009-04-14 00:15:45 +09:00
Damien Elmes
b7a81f952c
don't mark deck modified on upgrade, just commit
2009-04-11 02:15:52 +09:00
Damien Elmes
49089732c4
make sure to set progress handler envs before setting handler
2009-04-11 01:05:51 +09:00
Damien Elmes
51213784a8
init progress handle at start, tweaks for faster deck startup
2009-04-11 00:20:52 +09:00
Susanna Björverud
356d9365bb
Clean up, removing commented out no longer needed lines
2009-04-10 14:45:27 +02:00
Susanna Björverud
87b4e72f47
Experimenting with selecting cards that are both new and spaced
2009-04-10 10:57:49 +02:00
Susanna Björverud
2738ee9100
Changed 'At the same time...' to 'At this time...'
2009-04-09 15:21:11 +02:00
Susanna Björverud
c4304fa195
Plural support for some strings
2009-04-07 08:56:35 +02:00