Commit Graph

6635 Commits

Author SHA1 Message Date
Damien Elmes
97300a16bf implement fuzzing
Notes:

- The fuzz seed is now derived from the card id and # of reps, so
if a card is undone and done again, the same fuzz will be used.
- The intervals shown on the answer buttons now include the fuzz, instead
of hiding it from the user. This will prevent questions about due dates
being different to what was shown on the buttons, but will create
questions about due dates being different for cards with the same
interval, and some people may find it distracting for learning cards.
The new approach is easier to reason about, but time will tell
whether it's a net gain or not.
- The env var we were using to shift the clock away from rollover for
unit tests has been repurposed to also disable fuzzing, which simplifies
the tests.
- Cards in filtered decks without scheduling now have the preview delay
fuzzed.
- Sub-day learning cards are mostly fuzzed like before, but will apply
the up-to-5-minutes of fuzz regardless of the time of day.
- The answer buttons now round minute values, as the fuzz on short
intervals is distracting.
2021-02-22 21:31:53 +10:00
Damien Elmes
e1e552ff93 if learning step crossed day boundary, reflect that on the answer button 2021-02-22 21:31:53 +10:00
Damien Elmes
08c5fe474a make checkRevIvl() assert so pytest can print values; fix missed check 2021-02-22 21:31:53 +10:00
Damien Elmes
f82cf0cd4b drop some unused code 2021-02-22 21:31:53 +10:00
Damien Elmes
3af5221895 plug new answering code in
This is not the way the code is intended to be used, but making it
conform to the existing API allows us to exercise the existing unit
tests and provides partial backwards compatibility.

- Leech handling is currently broken
- Fix answered_at in wrong units, and not being used
2021-02-22 21:31:53 +10:00
Damien Elmes
f811beae5e remove burySiblings()'s dependency on newConf()/revConf() 2021-02-22 21:31:53 +10:00
Damien Elmes
7dc05253c1 fix a few more instances where v2 tests were referencing 'left today' 2021-02-22 21:31:53 +10:00
Damien Elmes
72389595fa tidy up top of file 2021-02-22 21:31:53 +10:00
Damien Elmes
63df7ee7a9 move re-queuing out of _answerCard() 2021-02-22 21:31:53 +10:00
Damien Elmes
a112a4403a duplicate schedv2.py in scheduler.py 2021-02-22 11:40:19 +10:00
Damien Elmes
c659898ee1 separate queue building and card answering 2021-02-22 11:33:28 +10:00
Damien Elmes
b8ad694006 move more routines down 2021-02-22 11:14:41 +10:00
Damien Elmes
4c5d4befbf move routines not related to building/answering to bottom of file 2021-02-22 11:07:56 +10:00
Damien Elmes
e7bcc22d6f move legacy aliases to bottom of schedv2.py 2021-02-22 10:57:08 +10:00
Damien Elmes
f41ec183c2
Merge pull request #1034 from abdnh/clayout-cloze-shortcuts
Shortcuts to preview clozes in card layout screen
2021-02-22 10:07:16 +10:00
Damien Elmes
f50cd43e75 fix incorrect nested review counts in v2 scheduler
https://forums.ankiweb.net/t/problem-with-anki-subdecks/7689
2021-02-21 22:48:14 +10:00
abdo
39f3b6ce93 Shortcuts to preview clozes in card layout screen
Assign Alt+{number} to select cloze cards.
2021-02-21 14:46:53 +03:00
Damien Elmes
46e9720e06 update translations 2021-02-21 19:55:31 +10:00
Damien Elmes
13f5ee1ddc tweak update message
- Since we need to show this to new users until AnkiDroid is updated,
use a wording that doesn't seem so out of place to new users.
- Avoid mentioning syncing, since the user may not sync, and the
modSchema() call will allow the user to confirm anyway.
- Let the user know they can change their mind about AnkiDroid by
visiting the preferences.
2021-02-21 19:47:26 +10:00
Damien Elmes
53d9433d94 Revert "use v2 scheduler+new timezone handling by default for new users"
This reverts commit 8372931b9b.

I fear this will be too disruptive - let's give AnkiDroid a bit more
time to catch up. Reverting this will mean new users are presented with
an upgrade notice on first startup, which looks a bit silly, but it's
probably the lesser of two evils.
2021-02-21 19:03:46 +10:00
Damien Elmes
73ddaf3c96 update translations 2021-02-21 18:19:33 +10:00
Damien Elmes
8372931b9b use v2 scheduler+new timezone handling by default for new users
- In corner cases, enabling the new timezone handling later can cause
reviews to shift forward or back a day, so it's best to have it on
by default.
- https://github.com/ankidroid/Anki-Android/issues/5805 has not landed
in a stable release yet, but will hopefully not be too far off by the
time 2.1.41 is released.
- Existing users will be unaffected, as the upgrade prompt in the previous
commit asks them if they use AnkiDroid.
- Users starting on AnkiDroid will be unaffected, as their collections
will still be on V1.
- The error message AnkiWeb gives when syncing an older AnkiDroid
with the new timezone enabled has been updated to direct users to the
preferences screen.
2021-02-21 17:18:08 +10:00
Damien Elmes
5ae66af5d2 rework v2 scheduler upgrade; drop downgrade
- Rework V2 upgrade so that it no longer resets cards in learning,
or empties filtered decks.
- V1 users will receive a message at the top of the deck list
encouraging them to upgrade, and they can upgrade directly from that
screen.
- The setting in the preferences screen has been removed, so users
will need to use an older Anki version if they wish to switch back to
V1.
- Prevent V2 exports with scheduling from being importable into a V1
collection - the code was previously allowing this when it shouldn't
have been.
- New collections still default to v1 at the moment.

Also add helper to get map of decks and deck configs, as there were
a few places in the codebase where that was required.
2021-02-21 15:50:41 +10:00
Damien Elmes
83c8d53da2
Merge pull request #1035 from BlueGreenMagick/sidebar-on-click-index
change _on_click_current to _on_click_index
2021-02-21 10:36:03 +10:00
BlueGreenMagick
86cf652609
Update CONTRIBUTORS
Add email so it recognizes the change of email
2021-02-20 23:11:46 +09:00
bluegreenmagick
d6eac551b1 change _on_click_current to _on_click_index
fix bug where clicking on a blank space below sidebar item
would still trigger currentIndex item's click event
2021-02-20 22:58:02 +09:00
Damien Elmes
ab790c1d14 initial work on moving v2 card answering into backend
Not plugged into the Python code yet. Still a work in progress.

Other changes:

- move a bunch of From implementations out of the giant backend/mod.rs
file into separate submodules.
- reorder backend methods to match proto order
- fix some clippy lints
2021-02-20 14:48:07 +10:00
Damien Elmes
54fa322f3d add some flush() calls and fix a card type in test_schedv2
Will help test when code is moved to backend
2021-02-20 14:00:26 +10:00
Damien Elmes
713bf254c8 stop checking "steps left today" in test_schedv2 2021-02-20 13:59:07 +10:00
Damien Elmes
2a7945f4be fix __repr__ in collection 2021-02-20 13:57:53 +10:00
Damien Elmes
ea07642c16 add issue template config.yml 2021-02-19 14:11:21 +10:00
Damien Elmes
e5d2d76666 tweak issue template again
re: https://github.com/ankitects/anki/issues/988
2021-02-19 14:06:16 +10:00
Damien Elmes
ae83e6ee15 tweak issue template 2021-02-19 13:44:14 +10:00
Damien Elmes
2941503bea tweak getFile() arguments in editor to be more readable 2021-02-19 10:18:40 +10:00
Damien Elmes
654f4d65f7 disable card shifting in reposition by default
https://forums.ankiweb.net/t/uncheck-shift-position-of-existing-cards-by-default/7550
2021-02-19 10:09:01 +10:00
Damien Elmes
b13d28cc5b tidy up doc string 2021-02-19 10:04:57 +10:00
Damien Elmes
bdfd8add8a
Merge pull request #1030 from abdnh/col-docs
Add docstrings to find_cards() and find_notes()
2021-02-19 10:00:59 +10:00
abdo
010ebef12e Add docstrings to find_cards() and find_notes() 2021-02-17 17:30:38 +03:00
Damien Elmes
4130e9fc68
Merge pull request #1029 from abdnh/tag-repl-fix
Fix tag replacement matching substrings
2021-02-17 15:54:57 +10:00
Damien Elmes
c63c927301
Merge pull request #1028 from hgiesel/imgmaxwidth
Add max-width: 100% to editable.scss
2021-02-17 15:54:01 +10:00
abdo
fae0437e49 Fix tag replacement matching substrings
https://github.com/ankitects/anki/issues/1027
2021-02-17 03:57:07 +03:00
Henrik Giesel
b98ddaafaa Increase the padding in the editable to 6px 2021-02-16 18:40:58 +01:00
Henrik Giesel
cfa44025a8 Add max-width: 100% to editable.scss 2021-02-16 18:28:40 +01:00
Damien Elmes
ab1e59a04d use add-on id if name is blank
https://forums.ankiweb.net/t/support-for-rtl-layout-in-ankiweb-add-on-page/7522
2021-02-16 11:12:05 +10:00
Damien Elmes
d2c580033b update translations 2021-02-12 13:45:16 +10:00
Damien Elmes
b3b40933c2 switch 'set due date' to leaving the interval alone for now
The previous approach worked when the user pushes their due date back,
or moves it forward a little bit, but breaks down if they reschedule
shortly after the previous answer - a card that was only just answered
will have had an effective delay of 0, causing the interval to be
reset, which is not great.

I thought about limiting interval reductions, but that means the
behaviour is inconsistent when sending a card forward and moving it
back again.

We could apply a cap to the amount of interval we'll reduce, but that
will either doing something like dividing by 2 (which breaks down when
the action is performed repeatedly), or or looking up the review log
to try and determine the previous interval we should not go below.

One other option we might want to consider in the future is using
the revlog to calculate the actual elapsed time at answer time instead
of reschedule time, falling back to existing behaviour when the revlog
doesn't match or is missing.
2021-02-12 11:19:58 +10:00
Damien Elmes
a6f0c60ff8
Merge pull request #1019 from hgiesel/cardspreviewfix
Note.ephemeral_card() fix
2021-02-12 11:19:46 +10:00
Henrik Giesel
adb002f05f Remove unused imports 2021-02-12 02:16:05 +01:00
Henrik Giesel
87febe489e Allow for passing in custom note type and template 2021-02-12 02:12:03 +01:00
Henrik Giesel
270cef63f4 Allow for passing in custom note types for rendering ephemeral cards 2021-02-12 01:53:03 +01:00