Commit graph

698 commits

Author SHA1 Message Date
Damien Elmes
264e7c8ce9 simplify rev card answering 2018-02-02 15:19:41 +10:00
Damien Elmes
0b42787ffc fix no relearn steps case in v2 sched 2018-02-02 14:30:53 +10:00
Damien Elmes
ebe420b440 v2 sched cleanups 2018-02-02 12:44:56 +10:00
Damien Elmes
6d7dd08e1e include average answer time for today 2018-01-31 17:35:22 +10:00
Damien Elmes
3d71d6873e bump version 2018-01-31 15:34:04 +10:00
Damien Elmes
cdb9c07dc0 make sure we don't import v1 scheduling into a v2 collection 2018-01-31 15:33:58 +10:00
Damien Elmes
8e0b009173 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
49d1d8f9fd fix check for nesting under filtered deck 2018-01-31 11:40:16 +10:00
Damien Elmes
bbccc4fd6b enable syncing w/ v2 scheduler, and bump sync version
any client using a sync version of 9 must be able to handle
the V2 scheduler
2018-01-30 17:52:03 +10:00
Damien Elmes
0cce540d83 enforce schema version; allow importing+exporting v2 scheduler
To avoid all sorts of problems, we need to ensure cards scheduled with
the V2 scheduler are not studied in older clients. Unfortunately we
can't just bump the file's schema version, as the existing clients will
freely import files created with newer versions. This patch changes
that, so things should be a bit easier in the future.

In the mean time, we need a way to prevent older clients from importing
files created with the V2 scheduler. To do this, we switch to using a
'collection.anki21' file in the archive, and include a dummy collection
.anki2 file.

The code has been tested with both deck and collection packages, but
exporting deck packages w/ scheduling info will remain disabled until
the V2 scheduler has had more testing.
2018-01-29 14:12:04 +10:00
Damien Elmes
21284355be remove unused bundled certs 2018-01-27 16:08:31 +10:00
Damien Elmes
135aced882 bump version 2018-01-27 15:48:27 +10:00
Damien Elmes
4dce1befa5 re.escape leaves _ alone in python 3 2018-01-27 15:15:07 +10:00
Damien Elmes
2564dd75ee 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
a81932e62c bump version 2018-01-22 11:25:09 +10:00
Damien Elmes
bb6844716c linux mpv doesn't understand --input-media-keys 2018-01-21 10:34:29 +10:00
Damien Elmes
6affae1489 bump version 2018-01-20 16:12:09 +10:00
Damien Elmes
d3d61ce93f add option to show day learn cards before reviews 2018-01-20 16:07:57 +10:00
Damien Elmes
651b107b18 make preview delay customizable 2018-01-20 15:26:11 +10:00
Damien Elmes
1343101add 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
6bddcc10e6 return to win32 audio driver on windows
fixes various playback issues some users were experiencing
2018-01-20 13:41:12 +10:00
Damien Elmes
6077611646 prevent exceptions when invalid utf-8 in db 2018-01-20 11:23:49 +10:00
Damien Elmes
6113785b2f work around some decks with mod time stored as string 2018-01-19 11:42:06 +10:00
Damien Elmes
118326df1e remove format literals so we can support python 3.5 2018-01-16 16:07:30 +10:00
Damien Elmes
4f0e6561e8 bump version 2018-01-14 19:32:31 +10:00
Damien Elmes
b84d3b53af bump version 2018-01-14 17:53:09 +10:00
Damien Elmes
7915dcd1d9 disable syncing and deck exports for v2 sched 2018-01-14 17:35:59 +10:00
Damien Elmes
63d06946a8 extra newline 2018-01-14 17:01:39 +10:00
Damien Elmes
cf6d85baa4 support sched versions in collection 2018-01-14 16:58:04 +10:00
Damien Elmes
2ebd75ffe7 code in new scheduler to move between versions 2018-01-14 16:57:40 +10:00
Damien Elmes
a585c21082 add old sched code back 2018-01-14 16:55:07 +10:00
Damien Elmes
c56760802c rename new sched code to schedv2.py 2018-01-14 16:54:48 +10:00
Damien Elmes
1e0b97f25b support a second filter in filtered decks 2018-01-14 13:08:38 +10:00
Damien Elmes
a062e1bc29 store day rollover relative to local time 2018-01-14 12:16:53 +10:00
Damien Elmes
be0429479a make sure we log the correct type when card.type=3 2018-01-14 12:16:53 +10:00
Damien Elmes
21023ed3e5 don't fetch reviews in deck order
- fetch reviews from all child decks at once, sorted by due order
- shuffle the gathered cards as we did previously
- review limits on child decks are ignored - only the current deck and
its parents control what the limit is
- to make the deck list consistent with actual counts, we can't sum the
child counts, as the sum in the parent limit>child limit case may not
reflect the actual number of cards that would be presented
2018-01-14 12:16:53 +10:00
Damien Elmes
4e52f43365 distinguish between buried siblings and manually buried cards 2018-01-14 12:16:53 +10:00
Damien Elmes
62c1fa4a17 preserve learning/filtered state when suspending/burying
add new card type of 3 so we can distinguish cards in relearning from
normal reviews
2018-01-14 12:16:53 +10:00
Damien Elmes
ba87fc7736 experiment with simple resched=off case to 'preview mode'
the previous approach meant we weren't able to preserve the card state
exactly when cards were in learning, since we didn't record the step
position prior to cards being moved into the filtered deck.

it also meant the answer buttons needed to change depending on state - 4
for cards in learning/review, but 2 when the card is on the final step
or is a review.

instead, in preview mode cards always have 2 buttons: again will repeat
again after a delay, and good immediately removes the card and restores
it to its previous state.

to accomplish this, we use a separate queue #, as the learn count
always needs to have a 1:1 correspondence to the number of cards
2018-01-14 12:16:53 +10:00
Damien Elmes
575f61c384 tweaks to interval constraining
- move fuzzing into _constrainedIvl() so it's applied prior to limits
like maxIvl

- don't fuzz early reviews, so cards get the same interval if a filtered
deck is rebuilt again
2018-01-14 12:16:53 +10:00
Damien Elmes
765ec0fb36 use the review queue for undue reviews 2018-01-14 12:16:53 +10:00
Damien Elmes
4070f4eef8 schedtest changes, squashed from local branch 2018-01-14 12:16:53 +10:00
Carl Hofmeister
baee6916e7 Fix string decode error when importing csv files 2017-12-31 14:01:47 -06:00
Damien Elmes
bf95b3f671 bump version 2017-12-24 22:27:09 +10:00
aakatov
6c61dc180b fix play sound with HTML special symbols in its filename 2017-12-23 12:36:26 +03:00
Damien Elmes
ef323e2d35 bump version 2017-12-22 21:48:13 +10:00
Damien Elmes
ace01a21bc different cloze colour in night mode 2017-12-20 16:05:28 +10:00
Damien Elmes
435afed325 fix error when importing 2017-12-12 11:55:27 +10:00
Damien Elmes
576c2b38b2 fix mpv warnings 2017-12-11 17:26:25 +10:00
Damien Elmes
81d4b77ee1 more open() and regex strings 2017-12-11 17:25:51 +10:00
Damien Elmes
3b71f8e44e move regex flags to start of string 2017-12-11 16:42:19 +10:00
Damien Elmes
7ac601f0af fix 'unclosed file' warnings with python -Wall 2017-12-11 16:38:15 +10:00
Damien Elmes
bc65baeff7 cgi.escape is deprecated 2017-12-11 16:20:00 +10:00
Damien Elmes
774c19e83e add the ability to disable cert verification 2017-12-07 17:15:20 +10:00
Damien Elmes
39c0a57b13 work around pops in recording start
https://anki.tenderapp.com/discussions/ankidesktop/26005-when-recording-sound-on-mbp

on my machine, the pops start around sample 2048 of a 44.1khz recording,
and only for the first recording after the audio hardware has gone to
sleep
2017-12-05 11:07:52 +10:00
Damien Elmes
ea5f8eed36 bump version 2017-12-04 12:58:29 +10:00
Damien Elmes
c451141f97 play question audio when preview set to 'show both sides' 2017-12-04 12:45:22 +10:00
Damien Elmes
c67fc3e769 fix time translation patch 2017-12-04 12:33:23 +10:00
Damien Elmes
fcccf12ba6 night mode 2017-12-04 12:20:56 +10:00
Damien Elmes
84dd488d21 add catalan 2017-12-03 16:06:56 +10:00
Piotr Kubowicz
879ca0b72b Allow to better translate "in x minutes"
"There is 1 minute" and "in 1 minute" need to be translated
differently in Slavic languages.

Additionally remove unused afterTimeTable.
2017-11-30 20:03:51 +01:00
Damien Elmes
3bf7f19843 bump version 2017-11-27 11:17:42 +10:00
Damien Elmes
77bb67a555 accept current and future mnemosyne imports 2017-11-27 10:49:38 +10:00
Damien Elmes
5ee1ee0450 restore media dir mod check
https://anki.tenderapp.com/discussions/beta-testing/853-anki-210-beta-21/page/1#comment_44071381
2017-11-20 14:22:53 +10:00
Damien Elmes
44e88afed0 bump version 2017-11-17 17:35:36 +10:00
Damien Elmes
8e7ef1d1be detect image extension, catch errors, add timeout 2017-11-17 17:30:01 +10:00
Damien Elmes
0b3685193d fix crash when deleting nested default deck
https://anki.tenderapp.com/discussions/ankidesktop/25777-bug-report-syn
2017-11-14 13:13:52 +10:00
Damien Elmes
64b55f0e55 bump version 2017-11-11 12:15:38 +10:00
Damien Elmes
645f6714d2 favour most recent modified when importing template changes 2017-11-11 12:11:45 +10:00
Damien Elmes
b6972a22e8 fix stutter when multiple audio files on card on windows
setting playlist pos to 0 was causing half-played sound to restart
2017-11-10 19:52:20 +10:00
Damien Elmes
905692b2a7 bump version 2017-10-27 18:07:29 +10:00
Damien Elmes
3b7c0ff733 bump version 2017-10-26 19:57:47 +10:00
Damien Elmes
d96517710a bump version 2017-10-25 20:47:00 +10:00
Damien Elmes
554ff3d8d2 drop experimental prewrap mode
- pasting in prewrap mode had been broken for a while and nobody noticed
- needs changes to export code and cloze handling code to deal with the
newlines
- newline rewriting in filterNode() is likely fragile
- may revisit post 2.1
2017-10-25 19:18:00 +10:00
Damien Elmes
6b479fc839 don't leave a wav file lying around when recording 2017-10-25 18:35:39 +10:00
Damien Elmes
e3885fd924 fix detection of media refs in cloze
https://anki.tenderapp.com/discussions/beta-testing/796-another-check-media-issue
2017-10-18 21:56:57 +10:00
Damien Elmes
8d0eb42c01 bump version 2017-10-13 13:12:36 +10:00
Damien Elmes
ec9c2476a3 don't capture media keys 2017-10-13 13:11:22 +10:00
Damien Elmes
519187e941 probable fix for win32 startup errors; add timeout to mpv start 2017-10-13 12:14:40 +10:00
Damien Elmes
c08818119c bump version 2017-10-11 14:50:28 +10:00
Damien Elmes
17cc7d6eec bump version 2017-10-05 17:26:48 +10:00
Damien Elmes
d3233f2446 don't show album artwork 2017-10-05 14:35:58 +10:00
Damien Elmes
f9f5a3d9f6 add coding: line to mpv.py for xgettext 2017-10-02 16:41:14 +10:00
Damien Elmes
b75b4ae470 bump version 2017-10-02 16:38:20 +10:00
Damien Elmes
ca95552408 integrate _packagedCmd() into mpv for binary distrib 2017-10-02 16:37:52 +10:00
Damien Elmes
384a01e53b turn off mpv debug 2017-09-30 19:33:09 +10:00
Damien Elmes
e8b4d276b4 use named pipes for mpv on windows
currently using non-blocking mode which involves a sleep in the read
loop - overlapped i/o might be a better option in the future
2017-09-30 19:32:48 +10:00
Damien Elmes
7dc8f82906 mpv support 2017-09-30 19:29:48 +10:00
Damien Elmes
bb661a4b7d mpv.py fixes
- enable input keys for video seeking
- output debug info to stdout so it's not caught by anki's error handler
- before sending a command, check the process is still alive, and
restart if necessary - otherwise a user who closes a video window will
end up with errors
2017-09-30 19:29:48 +10:00
Damien Elmes
e7d9d1264d add mpv.py 2017-09-30 19:29:48 +10:00
Damien Elmes
d0a9a87095 fix normalization in normal import 2017-09-30 19:29:33 +10:00
Damien Elmes
b04c2212b5 stripHTML() should work when tag split over multiple lines 2017-09-30 15:33:05 +10:00
Damien Elmes
8737c6737b another fix for mathjax+cloze 2017-09-12 13:53:08 +10:00
Damien Elmes
bd414595de Merge pull request #209 from sieben/simplify_comparisons
Simplify comparisons
2017-09-11 15:01:07 +10:00
Damien Elmes
f786ad1594 Merge pull request #208 from sieben/none_comparison
Comparison with None shouldn't use equality
2017-09-11 15:01:01 +10:00
Rémy Léone
4446b85ef2 Simplify comparisons 2017-09-10 15:32:51 +02:00
Rémy Léone
8f1ad57931 Comparison with None shouldn't use equality
That type of comparisons should always be done with 'is' or 'is not',
never the equality operators.
2017-09-10 15:30:22 +02:00
Rémy Léone
9e574a448b Remove trailing semicolon 2017-09-10 14:41:38 +02:00
Damien Elmes
67728e73d7 fix broken cloze deletion 2017-09-10 19:51:25 +10:00
Damien Elmes
ce803b9f44 bump version 2017-09-10 18:54:08 +10:00
Damien Elmes
0c80b5454f use separate .colpkg extension for collection exports
- allows translations of filename
- allows users to keep multiple collection exports in the same folder
- provides a clearer distinction between deck and collection packages
- the collection/backup .apkg special cases will continue to work in
future 2.1.x releases
2017-09-10 16:58:55 +10:00
Damien Elmes
593569d0dc only strip formatting when inside mathjax 2017-09-08 19:35:34 +10:00
Damien Elmes
4990b2f8eb mathjax tweaks
- drop support for $$ in favour of separate opening and closing tags
- add shortcuts to add mathjax
- don't highlight any clozes in blue if field contains mathjax chars
2017-09-08 19:20:37 +10:00
Damien Elmes
bdcc8e284b re.escape() deck search 2017-09-08 15:13:46 +10:00
Damien Elmes
1d257c05ce 'oldest first' now uses the revlog for correct ordering 2017-09-06 13:02:52 +10:00
Damien Elmes
ca6412b6c9 don't force win32 audio output
was added in 2008 as a hack around sound problems users were having, but
it causes problems for other users and prevents overriding in the conf
file, so let's try with the default

report:
https://anki.tenderapp.com/discussions/ankidesktop/24859-poor-playback-with-mono-mp3

originally changed in c50203b9a1
2017-09-04 19:05:02 +10:00
Damien Elmes
62a1382c0d python 3 doesn't save us from misconfigured locales 2017-09-02 13:59:10 +10:00
Damien Elmes
ecb683cdd1 bump version 2017-08-31 22:00:37 +10:00
Damien Elmes
5fd9228273 handle invalid filename encodings
on Linux users can end up creating filenames that can't be encoded to utf8,
which breaks Anki when it tries to store the filename in sqlite
2017-08-31 18:55:25 +10:00
Damien Elmes
c18bd47a6e scan media each time
Experiment with ignoring dirMod and scanning the folder for changes on
each sync. Use scandir() for better performance. Please let me know if
this causes a noticeable slowdown for you.
2017-08-29 10:52:13 +10:00
Damien Elmes
25cb6d3abe bump version 2017-08-28 22:30:05 +10:00
Damien Elmes
3faa82571c warn about subfolders 2017-08-28 22:01:13 +10:00
Damien Elmes
ca37b15aa7 bump version 2017-08-26 15:25:10 +10:00
Damien Elmes
2c9f286026 update python ver dep 2017-08-25 16:39:21 +10:00
Damien Elmes
08e0174f2e remove dupeOnSchemaChange
no longer required now that anki 1.x importing dropped
2017-08-21 13:50:11 +10:00
Damien Elmes
ff2e7b9e81 typo in stats 2017-08-21 11:29:54 +10:00
Damien Elmes
3ad9261c8c catch corrupt media db, fix it in 'check media' 2017-08-17 13:33:54 +10:00
Damien Elmes
e8cc960da3 bump version 2017-08-16 21:53:21 +10:00
Damien Elmes
375c071a26 catch attempts to write outside the media folder
big thanks to David Bailey for discovering this
2017-08-16 21:08:46 +10:00
Damien Elmes
af14051637 add check to see if drag&drop caused a recent bug
user was getting errors because they had a deck starting with double
quotes
2017-08-15 15:11:59 +10:00
Damien Elmes
a353135af3 add type-in-the-answer note type 2017-08-13 19:42:27 +10:00
Damien Elmes
be1514a97b bump version 2017-08-12 17:04:53 +10:00
Damien Elmes
b7be2ad744 clear flags on export 2017-08-12 16:13:53 +10:00
Damien Elmes
71101d041a ditch marked tag in favour of card flags
Users can now mark individual cards with one of four different coloured
flags, instead of relying on a tag that applied to the whole note.

- replaced marking functionality in reviewer and browser with new
flag options
- added flag:x search
- marked and leech tags now show in normal tag list in filter screen,
instead of being treated specially
- the other clients will need updating to set and shown the flags, but
flags set in the beta should be preserved by the other clients
2017-08-12 16:08:10 +10:00
Damien Elmes
1c88315e86 bump version 2017-08-10 21:51:46 +10:00
Damien Elmes
94cf132918 make sure exporting ignores subfolders 2017-08-10 21:06:41 +10:00
Damien Elmes
82aeb57318 Revert "experiment with displaying FrontSide under answer"
This reverts commit a1b0ddb00c.
2017-08-10 15:04:24 +10:00
Damien Elmes
17693f1b63 bump version 2017-08-08 20:05:20 +10:00
Damien Elmes
d5aede7252 bump version 2017-08-07 18:39:29 +10:00
Damien Elmes
a1b0ddb00c experiment with displaying FrontSide under answer
- avoids having to move eyes to answer section
- the fade out/fade in step feels more natural when the
question section moves

feedback welcome
2017-08-07 18:38:35 +10:00
Damien Elmes
e40445a9c4 bump version 2017-08-06 15:30:41 +10:00
Damien Elmes
072489f436 fix unicode error when generating latex 2017-08-06 13:03:32 +10:00
Damien Elmes
0543a4533b add devMode flag to utils
also remove the extra toolbar call in loadProfile(), as we require a
restart to update the translations anyway
2017-08-01 14:28:13 +10:00
Damien Elmes
d2507899c2 bump version 2017-07-31 16:35:18 +10:00
Damien Elmes
96c737f24f fix translations on Mac 2017-07-31 13:59:10 +10:00
Damien Elmes
d6a7cc0a51 bump version 2017-07-28 18:38:42 +10:00
Damien Elmes
8cd20f3352 turn latex svg into a note type option
needed until the other clients support svgs
2017-07-28 18:38:31 +10:00
Damien Elmes
7ad6966943 split js code out into separate files, mathjax improvements
- js code that was previously bundled in .py files is now in the
web folder
- add helpers to create links to bundled files, and update
stdHtml() to accept a list of javascript files to include
instead of text
- render MathJax in card layout and preview screens - these should be
updated in the future to update the document dynamically like the
reviewer does
- start media server earlier so it can be used to serve content for
the toolbar, etc
- work around a bug in WebEngine on Windows that could cause the
media server to hang
2017-07-28 16:35:45 +10:00
Damien Elmes
b1959e5c83 latex fixes
- fix the missing replacement tmp.%s
- use a zoom factor of 2 by default
- look for both png and svg files before creating
2017-07-22 12:36:31 +10:00
Damien Elmes
9cda9334d3 Merge pull request #112 from sigkell/master
Output SVG instead of PNG for LaTeX
2017-07-22 11:00:13 +10:00
Damien Elmes
8a85471374 bump version 2017-07-20 12:17:59 +10:00
Damien Elmes
17bb179d06 experimental prewrap support
- add option to wrap html in implicit pre-wrap environment during
editing and review - defaults to off
- update paste filter to convert divs/Ps to newlines and non-breaking
spaces to normal ones
- catch enter key and write \n instead of creating a new div

also:

- remove extra caretToEnd() call that is no longer required
- add dd/dt/dl to allowed tags
2017-07-20 12:16:47 +10:00
Damien Elmes
9df1947e41 require decorator 2017-07-17 13:18:56 +10:00
Damien Elmes
dffab1376f Merge branch 'master' of github.com:dae/anki 2017-07-17 13:16:06 +10:00
dequis
37ba8832f8 Make hooks.wrap preserve signatures, fixes hooking some pyqt5 callbacks
It looks like pyqt5 is playing dirty and checking the number of args of
functions before calling them. When using hooks.wrap, pyqt5 thinks it
can pass any amount of arguments (because *args) and you get exceptions
like this inside the wrap function, when calling the 'old' function:

>TypeError: onFindDupes() takes 1 positional argument but 2 were given

This commit fixes it by preserving the signature of the wrapped method,
by adding an optional dependency on the "decorator" module.

Making it an optional dependency is probably not the wisest idea but
since this is a small edge case it might be smoother to start like this.

I also added functools.wraps() as a fallback, which won't help much but
is slightly more correct.

See this article for details: https://hynek.me/articles/decorators/
2017-07-16 23:25:34 -03:00
Damien Elmes
4eb3902759 bump version 2017-07-12 11:26:26 +10:00
Damien Elmes
e8777e8630 bump version 2017-07-10 15:22:47 +10:00
Damien Elmes
36ed23e103 fix python version check 2017-07-05 12:28:03 +10:00
Damien Elmes
c392418ba7 bump version 2017-07-05 10:54:27 +10:00
Damien Elmes
4967275973 bump version 2017-06-22 18:09:48 +10:00