Abdo
daf5f68fd5
Limit cloze nesting level ( #3264 )
...
* Limit cloze nesting level
* Break cloze rendering at a lower limit
2024-07-10 19:59:31 +07:00
Damien Elmes
227f790d8e
Update axum/reqwest for hyper 1.0
2024-07-06 18:45:32 +07:00
Damien Elmes
dca962c81e
Update Rust + Rust deps
2024-07-06 18:40:38 +07:00
Damien Elmes
6b3b545a9a
Some lint fixes for newer Rust
2024-07-06 18:40:37 +07:00
Abdo
55d68c01d8
Shuffle identical values in filtered deck sort ( #3259 )
...
* Shuffle identical values in filtered deck sort
* Update test
2024-06-28 18:53:16 +07:00
Damien Elmes
f98fbbf298
Revert "Ensure minimum doesn't exceed maximum"
...
This reverts commit 37ce4e8426
.
Also remove a stale comment that is no longer relevant after
b8ec76fb66
2024-06-28 19:49:23 +08:00
Jarrett Ye
6d13221ae5
Remove threshold of compute minimum recommended retention ( #3246 )
...
* remove threshold of compute minimum recommended retention
* update tool tip of compute-optimal-retention
* cargo clippy --fix
* Update FsrsOptionsOuter.svelte
* Remove 'from 0 cards' reference (dae)
2024-06-28 18:26:39 +07:00
user1823
8d11a909ed
Fix FSRS easy interval being same as good interval in relearning cards ( #3256 )
...
* Fix FSRS easy interval being same as good interval in relearning cards
https://github.com/ankitects/anki/pull/3236#issuecomment-2187787774
* Update relearning.rs
* Update relearning.rs
* Set min interval of easy to Good + 1
* Ensure minimum doesn't exceed maximum (dae)
With a maximum interval set, it would be possible to confuse with_review_fuzz()
by passing min > max.
2024-06-28 18:20:45 +07:00
James Elmore
930c97b1c7
Fix Renaming note fields not updating custom browser appearance ( #3245 )
...
* Added methods to parse browser templates
* Added method to get parsed browser templates
* Make field rename check browser templates for field updates
* Update tests
* Updated CONTRIBUTORS
* Formatting
* Refactored cloze field logic for question template into closure
* Refactored cloze field logic for answer template into closure
2024-06-24 08:39:56 +01:00
Jarrett Ye
79917bbd2d
Fix/Relearning cards' Intervals don't update after changing Desired Retention ( #3236 )
...
* Fix/Relearning cards' Intervals don't update after changing Desired Retention
* cargo clippy --fix
2024-06-22 10:44:02 +01:00
Abdo
e0a3768bf3
Mention missing field's name in CardTypeError ( #3225 )
2024-06-06 11:20:19 +01:00
Abdo
06f7aa393d
Add a preference to toggle LaTeX generation ( #3218 )
...
* Add a preference to toggle LaTeX generation
* Fix test
* Remove LaTeX security restrictions
* Show existing LaTeX images regardless of preference
* Lift config check out of loop (dae)
* Shift option to review settings; display warning when disabled (dae)
2024-06-01 09:26:28 +01:00
Voczi
9e3a34f17f
Add support for custom certificates ( #3203 )
...
* Add support for custom certificates
* Update lints
* Update licenses
* Changes after feedback
* More changes
2024-05-24 10:57:54 +01:00
user1823
1957566c39
Reschedule → Reposition ( #3209 )
2024-05-24 10:48:03 +01:00
Jarrett Ye
2b890b0eee
Fix/ignore revlogs when there is not learn entry after the last forget entry ( #3199 )
2024-05-17 06:07:15 +01:00
Jarrett Ye
c9dccb5217
Fix/exclude suspended cards when optimize all presets ( #3198 )
2024-05-15 13:12:52 +01:00
Abdo
ce8ddc84b9
Fix finished preview learning cards being repeated ( #3196 )
2024-05-15 12:55:25 +01:00
Abdo
df004b0b0c
Do not clear unused parent tags ( #3174 )
...
* Do not clear unused parent tags
* Update rslib/src/storage/note/mod.rs (dae)
2024-05-06 23:49:59 +10:00
Jarrett Ye
c9c7a3133c
Use median in calculating cost and remove outliers ( #3181 )
...
* Use median in calculating cost and remove outliers
* extract fn median_secs
2024-05-02 20:16:04 +10:00
Abdo
22ac77896f
Show review count for Evaluate/Optimize button ( #3170 )
...
* Revert "Show review count with FSRS evaluation results (#3165 )"
This reverts commit b7e782c7e1
.
* Show review count for Evaluate/Optimize button
2024-05-01 17:02:59 +10:00
Abdo
b7e782c7e1
Show review count with FSRS evaluation results ( #3165 )
2024-04-25 17:10:41 +10:00
Jarrett Ye
2c9accf595
update optimal retention and parameters tooltip ( #3148 )
...
* update optimal retention and parameters tooltip
* Revert "update optimal retention and parameters tooltip"
This reverts commit 32fdc5c1c3
.
* update optimal retention and parameters tooltip
* check num of revlogs at first
* use new translation string
* Update deck-config.ftl
Co-authored-by: user1823 <92206575+user1823@users.noreply.github.com>
* Update deck-config.ftl
Co-authored-by: user1823 <92206575+user1823@users.noreply.github.com>
* Update deck-config.ftl
Co-authored-by: user1823 <92206575+user1823@users.noreply.github.com>
* Update ftl/core/deck-config.ftl
Co-authored-by: user1823 <92206575+user1823@users.noreply.github.com>
* fix position of translation string
* Update deck-config.ftl
Co-authored-by: Damien Elmes <dae@users.noreply.github.com>
* Update deck-config.ftl
Co-authored-by: Damien Elmes <dae@users.noreply.github.com>
* Update deck-config.ftl
---------
Co-authored-by: user1823 <92206575+user1823@users.noreply.github.com>
Co-authored-by: Damien Elmes <dae@users.noreply.github.com>
2024-04-24 02:38:52 +01:00
Abdo
351aa96dfc
Fix IO text size in review screen ( #2986 )
...
* Store relative font size
* Handle multi-line text
Thanks to @glutanimate
2024-04-17 20:45:40 +10:00
Jarrett Ye
d1b2ab5983
Return current weights if fsrs items is zero & handle error in evaluation and optimal retention ( #3141 )
...
* return current weights if fsrs_items is zero
* handle error of evaluation if items.is_empty()
* TODO: handle error of optimal retention
* Revert "TODO: handle error of optimal retention"
This reverts commit 80a5b3803e
.
* Revert "handle error of evaluation if items.is_empty()"
This reverts commit 7f0a5570e7
.
2024-04-17 20:18:00 +10:00
Loudwig
d8f2782c26
Feature Show Reminder before answer ( #3064 ) ( #3119 )
...
* Feature Question Action Show Reminder (#3064 )
Added a option in the deck config that allow the user to choose in
Autoupdate mode between showing a reminder or revealing the card.
Also added my name to the contributors
* Update ftl/core/deck-config.ftl
2024-04-13 08:39:50 +01:00
Jarrett Ye
10d567f937
Update to FSRS-rs v0.6.1 ( #3106 )
...
* update to FSRS-rs 0.6.0
* update to crates.io version
* format
* update to FSRS-rs v0.6.01
* ./ninja fix:minilints
* update python backend code
2024-04-05 13:04:50 +01:00
Mani
038a0189d0
highlight io shapes in answer side ( #3098 )
2024-03-31 10:14:11 +01:00
Jarrett Ye
15506328e9
rename sm2 retention to historical retention ( #3101 )
...
* rename sm2 retention to historical retention
* ninja format
* keep sm2_retention in DeckConfSchema11
* update wording
* Update schema11.rs
2024-03-29 09:34:26 +00:00
Damien Elmes
c1877f9df6
Fix incorrect search results after preset used
...
https://forums.ankiweb.net/t/anki-24-04-beta-rc/41792/129
2024-03-29 13:19:15 +07:00
ijqq
22559929f9
Replace deprecated method chrono::NaiveDateTime::timestamp_millis
( #3097 )
...
* Replace deprecated method `chrono::NaiveDateTime::timestamp_millis`
* Update CONTRIBUTORS
2024-03-28 08:30:02 +00:00
laalsaas
798d9df4de
sync-server: add option to store hashed passwords ( #3083 )
2024-03-26 07:39:57 +00:00
Jarrett Ye
74a603e61b
use rmse in comparing parameters ( #3087 )
2024-03-24 08:28:15 +00:00
Damien Elmes
8fc4225b29
Update translations, and full sync -> one-way sync
2024-03-21 10:17:24 +07:00
Damien Elmes
656cfe0b9c
When updating all FSRS parameters at once, exclude suspended cards
2024-03-20 12:56:36 +07:00
Jarrett Ye
8d197a1555
Feat/fsrs simulator backend part ( #3075 )
...
* [WIP] FSRS simulator
* add desired_retention as input
* cargo fmt
* fix format
* add standard copyright header
* support existing cards
* fix format
* pass days_elapsed into Card::convert & return None
2024-03-18 13:42:38 +00:00
Damien Elmes
e9d3b46d47
Shift FSRS optimization into top level; shown optimize all tip after 30 days
2024-03-17 17:46:26 +07:00
Brayan Oliveira
1bd6d2883e
fix: cloze_numbers_in_string treating {{c0::}}
as valid ( #3059 )
...
* fix: cloze_numbers_in_string treating `{{c0::}}` as valid
* Update rslib/src/cloze.rs
Co-authored-by: Abdo <abdo@abdnh.net>
---------
Co-authored-by: Abdo <abdo@abdnh.net>
2024-03-12 15:51:13 +07:00
Jarrett Ye
8c9d7d64d9
refactor optimal retention to minimize workload per memorization & fix progress goes backwards ( #3065 )
...
* Feat/optimal retention for minimal workload per memorization
* ./ninja fix:minilints
* update to FSRS-rs 0.5.2
* update to FSRS-rs 0.5.3
* ./ninja fix:minilints
* 'estimated retention' -> 'predicted optimal retention'; add warning (dae)
2024-03-11 16:16:37 +07:00
Jarrett Ye
f2acf40221
alert when the resp.weights is empty ( #3061 )
...
* alert when the resp.weights is empty
* format
2024-03-09 10:26:59 +00:00
Jarrett Ye
055b6e30f8
update FSRS-rs to 0.5.0 & export benchmark API ( #3056 )
...
* update fsrs to 0.4.5
* update to fsrs 0.4.6
* add benchmark API
* update fsrs to 0.5.0
* cargo fmt
* ./ninja fix:minilints
* ./ninja format
* Add a brief comment about the new method (dae)
2024-03-08 12:37:06 +00:00
Abdo
9228c87b3a
Show preset and original deck in card info ( #3055 )
...
* Show preset and original deck in card info
* Make original_deck optional
2024-03-07 07:47:55 +00:00
Jarrett Ye
eb597475c5
Fix/set pretrain_only by fsrs_items ( #3051 )
...
* Fix/set pretrain_only and insufficient reviews based on fsrs_items
* use review_count for FsrsInsufficientReviews
* Update weights.rs
* Update weights.rs
2024-03-05 07:54:34 +00:00
Jarrett Ye
c7556f17e6
update fsrs to 0.4.4 ( #3045 )
...
* update fsrs to 0.4.4
* fix bypassed_learning_is_handled
2024-03-03 14:30:34 +07:00
Abdo
60f8399aed
Show total review count when optimizing FSRS parameters ( #3027 )
...
* Show total review count when optimizing FSRS parameters
* Do not expose items
2024-02-26 13:27:22 +07:00
Jarrett Ye
103ea6ded0
clamp interval before fuzz_bounds ( #3024 )
...
* clamp interval before fuzz_bounds
* update unit test of with_review_fuzz
2024-02-25 12:18:01 +07:00
Viktor Ricci
68b374e65f
Fix regex skipping over all src except the last ( #3021 )
...
Adapting HTML_MEDIA_TAGS to allow for `>` inside '' and "" led to
multiple images inside a field sometimes being disregarded and
marked as "unused". This seems to have been caused by a missing
lazy (?) quantifier for the regex part skipping over non-`>`.
2024-02-24 15:27:38 +07:00
Abdo
6843d65ed1
Check required review count for FSRS after filtering ( #3019 )
...
* Check for required review count for FSRS after filtering
* Remove unreachable check
* Update minimum review count in optimal retention calculation
* Fix review check in optimal retention routine too
2024-02-24 14:53:38 +07:00
Luc Mcgrady
8b18a08b3b
FSRS - Ignore revlogs before date while optimizing ( #2922 )
...
* Added: Date input button
* Added: ignoreDate to config
* Added: Backend
* Optimize function passes value
* Fix: Spelling
* Moved: filter logic from revlog_for_srs to update_memory_state
* fmt
* Copyright header
* ./check
* Fix: Test
* Renamed: Ignore_date -> Ignore_before_date
* Neaten parameters
* evaluate weights
* ./check
* Optimize all presets
* Added: Label localizations
* Removed globe label
* Added: Tooltip
* Changed error type
* fmt
* Moved filter to own function
* missing function call replacement
* Fix: Typo
* Apply suggestions from code review
Co-authored-by: Damien Elmes <dae@users.noreply.github.com>
* timestamp * 1000 -> timestamp_millis
* ignoreBefore -> ignore_before
* clarified ignore_before variables
* i64 -> TimestampMillis
* Un-traitified remove_revlogs_before
* Added: ms == 0 guard
* Added: Ignore_before affects scheduling
* Moved filter to fsrs_items_for_training
* removed filter from revlog_for_srs
* Tuple -> UpdateMemoryStateEntry
* Removed unused function
* Removed superfluous _ms from variables
* cid -> id
* Different ignore method
* Added: Unit test
* cid -> id
* Test: Exact ms edge case
* ./check
* Fix: re-learns could be before ignore date in cards without learning steps
* getignoreRevlogsBeforeMs -> getIgnoreRevlogsBeforeMs
* Removed pub(crate)
* Clarified unit test
* last_learn_entry -> first_of_last_learn_entries
* @user1823's method
* IOS fix
* ./check
* Fix: width defined twice
2024-02-22 11:01:10 +07:00
Damien Elmes
9642a69b88
FSRS items, not revlogs
...
https://forums.ankiweb.net/t/discrepancy-between-revlog-count-in-optimize-and-evaluate/41224/5
2024-02-19 17:51:07 +07:00
Abdo
2b4cb2992b
Fix deck names differing in case being duplicated in CSV import ( #3008 )
2024-02-14 20:25:54 +10:00
Jarrett Ye
492178c107
Fix/ignore revlogs before Forget entry ( #3002 )
...
* Fix/ignore revlogs before Forget entry
* Update weights.rs
2024-02-12 16:09:39 +10:00
Abdo
4ef389b580
Keep previous FSRS parameters if they get worse when optimizing ( #2996 )
...
* Update to fsrs-rs 0.3.0
* Keep previous FSRS parameters if they get worse when optimizing
2024-02-11 16:26:04 +10:00
Abdo
e136ec65e9
Fix preset: search ignoring cards in filtered decks ( #2997 )
2024-02-11 16:11:05 +10:00
Abdo
db02c95eb5
Fix maybe_coalesce_note_undo_entry() ( #2992 )
...
* Fix maybe_coalesce_note_undo_entry()
* Use .count()
* Only check .first()
* Explicitly match on [note change, collection modification] (dae)
2024-02-11 16:04:10 +10:00
Abdo
80c14aa6e9
Maintain original IO cloze order in editing mode ( #2987 )
...
* Maintain original IO cloze order in editing mode
* Fix ordinal propery name
2024-02-07 13:42:47 +10:00
Abdo
85a8824c8c
Do not reset original_due when card stays in filtered deck ( #2988 )
2024-02-07 13:27:54 +10:00
Jarrett Ye
2fffe4b7ba
update FSRS to v0.2.0 ( #2977 )
...
* update FSRS to v0.2.0
* update comments
* ./ninja fix:minilints
* 1000 -> 400 in translation (dae)
2024-01-30 16:27:12 +10:00
RumovZ
e7a2242262
Increase parent limits in custom study when 'limits start from top' is enabled ( #2971 )
...
Closes #2965 .
2024-01-29 13:15:44 +10:00
RumovZ
69a51ec296
Fix notetype conflict resolution ( #2967 )
...
* Fix undoing notetype conflict resolution
* Fix field/template mapping after notetype conflict resolution
2024-01-29 13:00:57 +10:00
Abdo
eab5c02251
Add by creation date review sort order ( #2957 )
...
* Add by creation date review sort order
* Order by template after nid in ReverseAdded of filtered decks too
2024-01-21 20:29:19 +10:00
Abdo
f480ecea0c
Default to 'Bury Card' action consistently ( #2950 )
2024-01-19 15:49:16 +10:00
Damien Elmes
f21b5aec12
Fix error after notetype merge + downgrade
2024-01-12 15:16:27 +10:00
Damien Elmes
86687b4148
Include details on what's missing when a NotFound error is triggered
...
Makes debugging issues like #2939 easier
2024-01-11 14:20:10 +10:00
Damien Elmes
57ec454847
Fix importing of Mnemosyne due dates ( #2936 )
2024-01-11 14:11:17 +10:00
RumovZ
1613eae261
Fix note id mix-up when resolving notetype conflicts ( #2940 )
...
Closes #2939 .
2024-01-11 13:50:03 +10:00
Damien Elmes
bf06020855
Use card.reps - 1 when calculating fuzz ( #2933 )
...
https://github.com/open-spaced-repetition/fsrs4anki-helper/issues/343#issuecomment-1879584562
https://forums.ankiweb.net/t/reschedule-is-inconsistent-with-normal-schedule-in-fuzz/39363
2024-01-09 12:26:46 +10:00
Damien Elmes
66d0046b8a
Check review count up front
...
https://forums.ankiweb.net/t/inconsistent-number-of-reviews-when-clicking-optimize/39275/7
2024-01-08 14:05:09 +10:00
Damien Elmes
3982e0c8fe
Update to Rust 1.75
2024-01-05 14:28:23 +10:00
Abdo
646ba41cf8
Ignore some extra chars in no-combining search ( #2929 )
...
* Ignore some extra chars in no-combining search
* Construct new string
* Update rslib/src/text.rs (dae)
2024-01-05 14:22:52 +10:00
Viktor Ricci
f544bdd041
Allow > inside HTML attributes ( #2918 )
...
* Allow > inside HTML attributes
* Don't add unnecessary (?:...) to HTML_MEDIA_TAGS
2024-01-01 14:09:30 +10:00
Damien Elmes
1a1d4d5419
Work around test failure on Windows
2023-12-28 18:43:28 +10:00
Damien Elmes
b73c1c7f87
Pull in FSRS fix for pretrain
2023-12-28 18:15:44 +10:00
RumovZ
be89ec8892
Cloze notetype merges ( #2912 )
...
* Abort when trying to match notetypes of different kinds
* Skip merging templates if target is cloze
2023-12-28 18:01:23 +10:00
RumovZ
c39f2cacae
Fix new cards from parent decks being gathered ( #2907 )
...
Fixes #2906 .
2023-12-24 20:04:28 +10:00
Jarrett Ye
3378e476e6
Update to FSRS-4.5 ( #2901 )
2023-12-22 16:17:40 +10:00
Damien Elmes
4908be62ed
Update FSRS
...
We're on the commit prior to
https://github.com/open-spaced-repetition/fsrs-rs/pull/141 , as that is
going to require work that will need to wait until after 23.12
2023-12-22 14:02:39 +10:00
Damien Elmes
d9f5487815
Force memory state recompute when cards moved into different deck
2023-12-22 14:02:39 +10:00
RumovZ
8537e85a64
Log existing notes during CSV import ( #2898 )
2023-12-22 14:01:35 +10:00
Damien Elmes
4678b0cc4a
Use seconds instead of minutes for preview delay
...
Since this is not compatible with older clients, preview_delay has been
brought back so the configured value will still sync.
2023-12-21 11:02:29 +10:00
Damien Elmes
edd38ca067
Calculate elapsed days for intraday learning cards
...
https://forums.ankiweb.net/t/anki-23-12-beta/37771/109
2023-12-13 10:18:29 +10:00
Damien Elmes
9205b4db3a
Fix error generating parameters when a parameter is 0
2023-12-12 12:33:32 +10:00
Damien Elmes
45abf1c7e8
Ensure cloze numbers sort in order
...
https://forums.ankiweb.net/t/anki-23-12-beta/37771/103
2023-12-12 09:51:42 +10:00
Damien Elmes
db93939ded
Don't use SM2 memory state when cards are manually introduced
...
https://github.com/open-spaced-repetition/fsrs4anki/issues/540#issuecomment-1848833376
2023-12-12 09:40:31 +10:00
Damien Elmes
cfc6bc6548
Update FSRS for new default weights
2023-12-08 13:54:31 +10:00
Damien Elmes
e778cba089
Allow user to configure hard/good buttons when rescheduling off
...
Closes #2858
2023-12-08 11:04:34 +10:00
Damien Elmes
fdcdc14f6b
Hide position when card not new
...
https://forums.ankiweb.net/t/position-info-is-shown-even-when-the-card-is-not-new/38087
2023-12-08 10:06:14 +10:00
Damien Elmes
86aafa74a6
Treat cards with no reps like new cards
...
https://github.com/open-spaced-repetition/fsrs4anki/issues/540#issuecomment-1837780217
2023-12-07 14:56:39 +10:00
Damien Elmes
96ae3a5d63
Update to latest fsrs-rs
...
The extra entries in Cargo.lock and licenses.json are mostly spurious,
and caused by https://github.com/tracel-ai/burn/pull/1025#issuecomment-1842006690
2023-12-07 14:13:58 +10:00
Gustaf-C
63260631e4
Include elapsed_secs in learning card state ( #2862 )
...
* Include elapsed_time in learning card state
* Suggested updates, elapsed_time -> elapsed_secs
* Remove outdated comment
2023-12-06 16:40:22 +10:00
Jarrett Ye
96ae3dce48
Fix/keep two decimals for stability ( #2873 )
...
* Fix/keep two decimals
* update test
2023-12-06 10:08:52 +10:00
Abdo
27b2bce604
Do not add a fallback field reference if front side contains conditionals ( #2859 )
...
* Do not add a fallback field ref if front contains conditionals
* Ensure field reference when there are only conditionals
2023-12-06 10:06:28 +10:00
Jarrett Ye
80c5f2d491
skip revlog with time = 0 when calc recall cost ( #2870 )
...
* skip revlog with time = 0 when calc recall cost
* Update retention.rs
2023-12-05 13:08:34 +10:00
Damien Elmes
4e281026a0
Catch NaNs in FSRS weights
...
Users pasting in weights from the old scheduler were leaving the outer
square brackets in, causing the first and last numbers to be parsed as
NaN.
2023-12-04 16:19:22 +10:00
Shawn M Moore
f447f89d07
Remember endpoint we authenticated against in returned SyncAuth ( #2864 )
...
* Include endpoint we authed against in response
* Add self to contributors
2023-12-04 15:05:29 +10:00
Abdo
344dbe45ed
Show actual due date of learning cards in Card Info ( #2865 )
2023-12-04 15:04:22 +10:00
Damien Elmes
75febab401
Fix relative overdueness order error in filtered deck
...
https://forums.ankiweb.net/t/anki-23-12-beta/37771/21
2023-12-01 14:54:33 +10:00
Damien Elmes
b29dc99b3e
Fix sorting by due column in notes mode
...
https://forums.ankiweb.net/t/anki-23-12-beta/37771/20
2023-12-01 14:50:41 +10:00
Damien Elmes
063b6f60fd
Rework error dialog
...
- Hide traceback
- Include full add-on info in 'copy debug info' button, like about
screen
- Link to troubleshooting page
- Use non-modal pop-up in the common case, to avoid potential conflicts
with other modals.
Closes #2830
2023-11-29 10:25:32 +10:00
Damien Elmes
e5170f341b
Remove some v3 checks
2023-11-28 14:06:49 +10:00
Damien Elmes
70b0fbde92
Update to Rust 1.74, and update most Rust deps
...
hyper has been held back, as neither reqwest nor axum support 1.0 yet
2023-11-27 13:34:42 +10:00
Damien Elmes
d767e9ad3c
Suppress manual revlog entry if the previous entry was also manual
...
Means we lose some detail in the history, but should reduce the
collection bloat caused by a user experimenting with reschedule multiple
times in a short period, when they don't restore from backup afterwards.
https://forums.ankiweb.net/t/possible-syncing-limitation-by-fsrs-manual-scheduling-data-accumulation/37610
2023-11-27 11:24:31 +10:00
Damien Elmes
8b6abd3f8f
Switch FSRS reschedule to a global option; don't persist
...
A global is easier to use in conjunction with the 'optimize all' action.
The value is no longer persisted, as doing so makes it too easy for users
to generate a lot of revlog entries when playing with different FSRS
weights/retention settings, such as in https://forums.ankiweb.net/t/possible-syncing-limitation-by-fsrs-manual-scheduling-data-accumulation/37610
2023-11-27 11:24:31 +10:00
Damien Elmes
452e012c71
Add option to calculate all weights at once
2023-11-27 11:24:31 +10:00
Damien Elmes
c67f510b9a
Update to latest FSRS
2023-11-27 11:24:31 +10:00
Jarrett Ye
3713c86373
don't convert from sm2 when ivl = 0 ( #2849 )
2023-11-26 13:14:31 +10:00
Abdo
9bdc8d8229
Fix sorting of due timestamps in the browser ( #2840 )
...
* Fix sorting of due timestamps in the browser
* Fix due sorting in notes mode
* Drop initial ctype sorting
* Fix new card positions being treated as due days
2023-11-24 18:31:14 +10:00
Jarrett Ye
a3363d7463
ignore filtered revlog in time of last review ( #2845 )
...
* ignore filtered revlog in time of last review
* fmt SQL
2023-11-24 15:52:00 +10:00
Damien Elmes
a50b086b33
Use note order when previewing
...
https://forums.ankiweb.net/t/card-in-disorder/37534/2
2023-11-24 15:01:14 +10:00
Mani
be1f889211
fixes: remove unfinished shapes, remove selectable and make shapes remain inside canvas ( #2809 )
...
* remove unfinished polygon and remove selectable for shapes in polygon mode
* make group and polygon position remain inside canvas area
* click through transparent area in grouped object
* add some shortcuts for basic usages
* tools button icon in center & switch mode border
* fix load svg image
* basic rtl support, panzoom have issues in rtl mode
* better zoom option both in ltr and rtl
* handle zoom event in mask editor
* add h button to handle toggle mask
* add more mime type
* use capital M (shift+m) for toggle mask
* allow io shortcuts in mask editor only
* make other shapes also remain in canvas bound area
* better zoom implementation, zoom from center
add zoom to resize event listener
* add a border to corner to handle blend of control
* add refresh button to go to selection menu
* add tooltip to shortcuts and also add shortcut for other tools
* make opacity remain in same state when toggled on
* opacity for group/ungroup objects
* update shortcuts implementation
2023-11-24 14:06:40 +10:00
Damien Elmes
366f78715b
Include next_day timestamp in revlog export
2023-11-23 14:46:48 +10:00
Damien Elmes
a9d73fc3be
Add a method for exporting revlogs in binary
2023-11-22 11:57:40 +10:00
Damien Elmes
f8e0321ca5
When training with the whole collection, include deleted card history
2023-11-22 10:53:08 +10:00
Damien Elmes
2399bf492a
Fix FSRS retrievability sorting issues
...
- We must use interval, not stability to infer days_elapsed
- We must use original due date in a filtered deck
- Use retrievability in filtered deck sorting, not just regular sorting
2023-11-20 13:59:45 +10:00
Damien Elmes
b248911b0f
Fix cards showing up due in the past in a filtered deck
...
Caused by using due instead of original_due when card was in learning.
I think the original goal of that code was to ignore the learning timestamp
and show the next review date instead, but it's both simpler and more
intuitive to show the learning date instead.
2023-11-20 10:52:13 +10:00
Damien Elmes
469052700f
Ignore invalid I/O notetypes when deciding whether to add
...
https://forums.ankiweb.net/t/can-t-add-new-cards/37155
2023-11-15 13:32:02 +10:00
Abdo
d752a43e2a
Fix filtered deck ordering of intraday learning cards and reviews ( #2828 )
...
* Fix filtered deck ordering of intraday learning cards and reviews
* Handle rollover correctly
2023-11-14 15:08:36 +10:00
Abdo
390935d4ea
Persist FSRS weights search in preset ( #2827 )
2023-11-14 11:47:08 +10:00
RumovZ
39a60bc3a4
Allow applying limits of inactive parents ( #2824 )
...
* Allow applying limits of inactive parents
* Tweak label/help text (dae)
2023-11-13 14:30:19 +10:00
RumovZ
f200d6248e
Allow im-/exporting with or without deck configs ( #2804 )
...
* Allow im-/exporting with or without deck configs
Closes #2777 .
* Enable webengine remote debugging in launch.json
* Reset deck limits and counts based on scheduling
Also:
- Fix `deck.common` not being reset.
- Apply all logic only depending on the source collection in the
gathering stage.
- Skip checking for scheduling and only act based on whether the call
wants scheduling. Preservation of filtered decks also depends on all
original decks being included.
- Fix check_ids() not covering revlog.
* Fix importing legacy filtered decks w/o scheduling
* Disable 'include deck options' by default, and fix tab order (dae)
* deck options > deck presets (dae)
2023-11-13 13:54:41 +10:00
Abdo
ae7b14bf40
Add auto-advance options to deck preset ( #2765 )
...
* Move stop-timer-on-answer strings to correct section
* Add auto-advance options to deck preset
* Implement answer actions
* Fix error when last card is answered before timeout
* Fix deserialization of answerAction
* Add answerAction to reserved key list
* Fix inverted boolean
* Add option to wait for audio to finish
* Add auto-advance toggle
* Add shortcut
* Disable auto-advance when main window state changes
* Start auto-advance timer after option is toggled
* Disable auto-advance when main window loses focus
* Use existing translations
* Add Answer Hard and Show Reminder
2023-11-13 10:41:51 +10:00
Abdo
6cb4155e8e
Show due date of buried/suspended cards in card info ( #2820 )
...
* Show due date of buried/suspended cards in card info
* Simplify match and handle relearning cards
* Omit ctype checks
* Test due, not card.due (dae)
2023-11-13 10:23:46 +10:00
Damien Elmes
b6102d0310
Update fsrs-rs
2023-11-13 10:13:20 +10:00
Abdo
6a2d1f94d4
Move anki.utils.html_to_text_line() to backend ( #2816 )
2023-11-09 09:57:23 +10:00
Damien Elmes
ae6a03942f
Check video tags in media check
...
https://forums.ankiweb.net/t/video-tag-does-not-recognize-the-source-file-in-check-media/36850/2
2023-11-08 14:00:41 +10:00
Damien Elmes
82aaa913a6
Change color of info box depending on retention; increase limit to 0.99
...
Closes #2803
2023-11-07 13:05:43 +10:00
Damien Elmes
9268dce707
Expose fuzz delta for FSRS add-on
2023-11-06 12:27:53 +10:00
Damien Elmes
59acde45a1
Remove redundant FSRS revlog code
...
Closes https://github.com/open-spaced-repetition/fsrs-rs/issues/113
2023-11-06 09:44:07 +10:00
Damien Elmes
fb05e430c0
Handle stability < 0.5 in stability graph
2023-11-05 13:44:39 +10:00
Gustaf-C
e071fb471b
Allow creation of empty filtered decks ( #2788 )
...
* Add new button to UI
* Add bool to allow creating empty filtered in back end
* Implement logic into front end for passing on bool
* Hide option on old decks
* Show option again if any settings are changed
* Revert "Show option again if any settings are changed"
This reverts commit 094acd9c65936823fa206594da5c1f3e4eb09248.
* Revert "Hide option on old decks"
This reverts commit d20a9a240b4fd85d080e8cc52d94318416ca753f.
* Update string
* Update ftl/core/decks.ftl
---------
Co-authored-by: Damien Elmes <dae@users.noreply.github.com>
2023-11-05 12:23:14 +10:00
Damien Elmes
987c1825a6
Fix panic when enabling FSRS with add-on-rescheduled cards
...
https://forums.ankiweb.net/t/error-upon-fsrs-activation-on-anki-23-10/36488
2023-11-03 10:07:47 +10:00
Damien Elmes
eda564ed59
Fix D/R graphs excluding values of 1.0
...
Closes #2783
2023-10-29 07:45:10 +10:00
Damien Elmes
f934bc2cf3
Fix sm2_retention getting reset on downgrade/sync
2023-10-28 14:45:24 +10:00
Damien Elmes
3ebc6ac68a
Expose method to check for v2 as well
2023-10-27 02:47:04 +10:00
Damien Elmes
633d246306
Don't lock collection while generating TTS
2023-10-26 11:45:17 +10:00
Damien Elmes
ceb8a4ac20
Revert "Use scheduling flag instead of checking revlog when importing decks ( #2730 )"
...
This reverts commit e1e0f2e1bd
.
The previous change breaks the assumption on this line:
DeckKind::Filtered(_) => unreachable!(),
This will likely need a bigger refactor to handle this properly, and separate
out importing of deck configs from other scheduling data.
2023-10-26 11:23:24 +10:00
Damien Elmes
35be9a70da
Add public method to determine if v3 is enabled
2023-10-25 11:41:05 +10:00
Abdo
14940a617b
Fix IO groups breaking upon editing ( #2766 )
...
* Fix IO groups breaking upon editing
* Emit change signal after group/ungroup
2023-10-23 09:43:31 +10:00
Damien Elmes
9bbc6c9405
Add image occlusion to stock notetypes
2023-10-22 11:00:39 +10:00
Aristotelis
26b2ac4ee3
Add ordinals to IO clozes ( #2763 )
...
Co-authored-by: Glutanimate <glutanimate@users.noreply.github.com>
2023-10-22 10:52:22 +10:00
Damien Elmes
3bfd828503
Fix browser query not matching stats
...
- Round instead of floor when binning
- Account for rounding in search
https://forums.ankiweb.net/t/anki-23-10-release-candidate/35967/4
2023-10-21 12:00:43 +10:00
Damien Elmes
7942487593
"Notetype" -> "Note Type" in browser column
...
While we may want to update things in the other direction in the future
(https://github.com/ankitects/anki/pull/1456#issuecomment-951767922 ),
this is more consistent with the existing other strings
Closes #2754
2023-10-21 11:35:30 +10:00
Gustaf-C
4b6aadfe62
Tweak browser column labels to card type, note type ( #2751 )
...
* Tweak browser column labels to card type, note type
* Apply suggestions from code review
2023-10-20 12:46:09 +10:00
Aristotelis
c828a2eb6f
Add APIs for IO card rendering ( #2739 )
...
* Refactor: Add index to shapes package
* Add shape draw callback API to setupImageCloze
* Expose IO drawing API, switch away from image cloze naming
We currently use "image occlusion" in most places, but some references to "image cloze" still remain. For consistency's sake and to make it easier to quickly find IO-related code, this commit replaces all remaining references to "image cloze", only maintaining those required for backwards compatibility with existing note types.
* Add cloze ordinal to shapes
* Do not mutate original shapes during (de)normalization
Mutating shapes would be a recipe for trouble when combined with IO API use by external consumers.
(makeNormal(makeAbsolute(makeNormal())) is not idempotent,
and keeping track of the original state would introduce
additional complexity with no discernible performance benefit
or otherwise.)
* Tweak IO API, allowing modifications to ShapeProperties
* Tweak drawShape parameters
* Switch method order
For consistency with previous implementation
* Run Rust formatters
* Simplify position (de)normalization
---------
Co-authored-by: Glutanimate <glutanimate@users.noreply.github.com>
2023-10-20 09:36:46 +10:00
Sam Waechter
0e24532439
Trim extra colons on conversion to NativeDeckName ( #2748 )
...
This fixes issue #2692 . Leading/trailing colons are remove along with whitespace so " : : :foo:bar: : : " becomes "foo:bar"
2023-10-19 13:42:57 +10:00
Abdo
bba67fdab4
Fix misleading warning when changing notetype from/to cloze ( #2744 )
2023-10-18 16:50:32 +10:00
Damien Elmes
39bf2f2160
Update to latest fsrs
2023-10-18 09:03:23 +10:00
Damien Elmes
72e57456ce
Fix stuttering in FSRS progress display
2023-10-14 14:03:20 +10:00
Abdo
5cde4b6941
Remove v1/v2 support from the backend ( #2727 )
...
* Remove v1/v2 support from deck list
* Remove v1/v2 support from most routines and show error
* Remove scheduler_version from preferences
* Fix formatting
* Remove v1/v2 conditionals from Python code
* Fix legacy importer
* Remove legacy hooks
* Add missing scheduler checks
* Remove V2 logic from deck options screen
* Remove the review_did_undo hook
* Restore ability to open old options with shift (dae)
2023-10-14 10:50:59 +10:00
Damien Elmes
e1e0f2e1bd
Use scheduling flag instead of checking revlog when importing decks ( #2730 )
...
Closes #2714
2023-10-14 10:30:20 +10:00
Damien Elmes
003cdfd2ec
Use sm2 retention when deriving memory state
...
Closes #2702
2023-10-13 10:37:35 +10:00
Abdo
9e147c6335
Add text tool to image occlusion ( #2705 )
...
* Add text tool to IO
* Remove unnecessary parentheses
* Fix text objects always grouped
* Remove log
* Fix text objects hidden on back side
* Implement text scaling
* Add inverse text outline
* Warn about IO notes with only text objects
This will result in a different error message than the case where no
objects are added at all though, and the user can bypass the warning.
Maybe this is better to avoid discarding the user's work if they have
spent some time adding text.
* Add isValidType
* Use matches!
* Lock aspect ratio of text objects
* Reword misleading comment
The confusion probably comes from the Fabric docs, which apparently need updating: http://fabricjs.com/docs/fabric.Canvas.html#uniformScaling
* Do not count text objects when calculating current index
* Make text objects respond to size changes
* Fix uniform scaling not working when editing
* Use Arial font
* Escape colons and unify parsing
* Handle scale factor when restricting shape to view
* Use 'cloned'
* Add text background
* Tweak drawShape's params
2023-10-12 13:40:11 +10:00
Abdo
c052be9e25
Add a backend method to extract static media references ( #2716 )
...
* Add a backend method to extract static media references
* Extract into Notetype.gather_media_names()
2023-10-11 14:10:02 +10:00
Damien Elmes
961d7dfd72
Rust 1.73
2023-10-09 19:22:43 +10:00
Damien Elmes
f741b4af91
Fix 'PanicException: command requires weights to be set'
2023-10-09 18:39:18 +10:00
Damien Elmes
0e6104a96b
Fix 'Expression tree is too large' when user has many decks
...
+ Allow 'did:' searches to match multiple decks at once
2023-10-09 18:39:18 +10:00
Damien Elmes
67acdc3034
Apply tag fix from Abdo
...
https://forums.ankiweb.net/t/drag-and-drop-tag-groups-crashes-anki/35505/3
2023-10-09 13:55:37 +11:00
RumovZ
23f29a6ecc
Invalid sorting ( #2709 )
...
* Rollback if toggling state fails
Previously, if the search triggered by a state toggle failed, the switch
and the model would move to the new state, while the table would remain
in the previous state.
* Fix reversed sort orders of FSRS columns
* Add sep. default sort orders for notes and cards
* Add test for consistent default sort orders
* Add launch config for debugging in VSC
* Extend launch config for macOS and Linux
2023-10-07 06:36:15 +00:00
RumovZ
ba43c7fdc1
Merge all conflicting notetypes ( #2707 )
...
* Refactor import apkg tests
* Merge conflicting notetypes regardless of id match
Original ids are a new thing, and we need to handle previous remappings.
This is done separately from the conflict resolution for notetypes with
matching ids, because 1) we need to look at the notes to determine
conflicts, and 2) we don't want to change the notetype of *all* existing
notes with the conflicting notetype. The main reason is that for 2
existing notes with the same noteype, their incoming counterparts could
have *different* notetypes. So to get rid of all conflicts, they must be
resolved on a note-by-note basis.
* Delete merged, now unused notetypes
2023-10-05 06:18:10 +00:00
Damien Elmes
6c1d7a6703
Use 0 when there are no relearning steps; ensure not NaN
2023-10-05 09:55:05 +10:00
Damien Elmes
3636c7c90e
When the user has no relearning steps, synthesize the value
2023-10-03 13:50:29 +10:00
Damien Elmes
41bddfc6cb
Ensure fuzz doesn't go backwards
...
Closes #2694
2023-10-03 13:23:27 +10:00
Damien Elmes
72b0c81761
When learning steps are missing, start from the SM-2 state
...
Closes https://github.com/open-spaced-repetition/fsrs-rs/issues/87
2023-10-03 12:20:10 +10:00
Damien Elmes
257d7bbbbc
Update FSRS crate
2023-10-03 11:28:56 +10:00
Damien Elmes
9fd8a8bb40
Add stability graph
2023-10-01 15:44:33 +10:00
Damien Elmes
072cd37b42
Support rescheduling on weight/retention change
2023-10-01 15:20:58 +10:00
Damien Elmes
d16faacd0f
Allow cards with no learning history when not training
2023-09-30 16:10:23 +10:00
Damien Elmes
93499d4182
Display the default weights as a placeholder
2023-09-30 16:10:23 +10:00
Damien Elmes
50c8a1ba9f
Update FSRS
...
- up to 10x performance increase in optimal retention
- expose loss aversion
- use SpinBoxes
2023-09-30 16:10:22 +10:00
Damien Elmes
f3bb845961
Update incompatible Rust deps
2023-09-28 10:00:47 +10:00
Damien Elmes
b8390d096e
Shift weight calculation to backend so it can be run in parallel
2023-09-28 09:10:54 +10:00
Damien Elmes
1f55ad1d44
Expose the ability to train weights from items ( #2687 )
2023-09-28 08:28:24 +10:00
Jarrett Ye
05499297e0
Fix first_rating_count & learn_cost ( #2688 )
...
* fix first_rating_count & learn_cost
* Update CONTRIBUTORS
* cargo clippy --fix
* cargo fmt
2023-09-27 18:31:40 +10:00
Damien Elmes
0532c1f5b0
Use revlog to determine days_elapsed when studying/for card info
...
Currently prop searches and the retrievability column will continue to
derive the days from the card only, as it's difficulty to integrate revlog
upgrade lookups into those code paths, especially in a performant way.
One possible way we could solve this in the future is to store last_review_day
in the card data, so we can know it even if the due date has been shifted.
Check DB could fill it in for existing cards.
2023-09-27 16:17:47 +10:00
Damien Elmes
66b944b722
Fix days_since_last_review() when used in filtered deck
2023-09-27 16:17:47 +10:00
Abdo
ab7e64865e
Implement "stop timer on answer" as a preset option ( #2686 )
...
* Implement "stop timer on answer" as a preset option
* Hide timer setting on AnkiMobile (dae)
2023-09-27 16:10:14 +10:00
Damien Elmes
ab4e820608
Update FSRS; fix handling of invalid revlogs
...
State is now inferred from SM-2 data when the revlog is not suitable
2023-09-27 13:13:10 +10:00
Damien Elmes
add6f6f62f
Fix invalid utf-8 in tags
2023-09-27 10:06:31 +10:00
Damien Elmes
a1f4bcb3cb
Fix optimal retention caps
2023-09-26 14:17:55 +10:00
Abdo
4cf2ab35ab
Match IO extensions in a case-insensitive manner ( #2683 )
2023-09-26 13:14:59 +10:00
Damien Elmes
bae8038178
Allow desired retention to be set to 0.7
...
https://github.com/open-spaced-repetition/fsrs-rs/issues/79#issuecomment-1733779005
2023-09-26 13:03:49 +10:00
Damien Elmes
1395f3e5e6
Fix changes_since_open()
2023-09-26 11:02:16 +10:00
Damien Elmes
c9ca5ee6e7
Fix cancel signal being ignored if sent quickly
2023-09-25 16:32:12 +10:00
Damien Elmes
e0399bcad2
Allow cards with no learning history when not training
2023-09-25 15:57:35 +10:00
Damien Elmes
baae685dbb
UI tweaks
...
https://forums.ankiweb.net/t/anki-23-10-beta-1/34912/19
2023-09-25 15:54:18 +10:00
Damien Elmes
bb0acd9d92
Support retrievability calculation for (re)learning cards
2023-09-25 14:58:39 +10:00
Damien Elmes
da0e42ea03
Fix extract_fsrs_retrievabilty()
...
- Need to use fuzzed interval to accurately determine elapsed days
- saturating_sub on an i32 is not useful
2023-09-25 14:40:44 +10:00
Damien Elmes
e6aaeb85e9
Expose memory state computation to Python
...
Closes #2676
2023-09-25 11:05:47 +10:00
Damien Elmes
69c4efea8a
Use memory state to calculate relative overdueness
2023-09-24 13:07:11 +10:00
Damien Elmes
907a73eb88
When calculating retrievability, use stability instead of fuzzed interval
2023-09-24 12:53:05 +10:00
Damien Elmes
9cc4720efe
Support fetching new cards by deck then random note
...
https://forums.ankiweb.net/t/feature-request-option-for-new-card-gather-order-that-prioritizes-subdecks-closer-to-top-but-gathers-cards-randomly-from-each-subdeck/23178
2023-09-24 11:54:10 +10:00
Damien Elmes
e6fdfc20a9
Use FSRS difficulty when sorting by ease
2023-09-23 16:20:36 +10:00
Damien Elmes
06d99b5871
Allow extracting desired retention
2023-09-23 16:11:35 +10:00
Damien Elmes
2126ff9a16
Gate graph display on fsrs status
2023-09-23 15:59:02 +10:00
Damien Elmes
8b849dd629
Avoid excessive floating point precision when serializing
2023-09-23 15:50:10 +10:00
Damien Elmes
03edb7bf9e
Store desired retention in card data
...
If we want to be able to factor the desired retention into a sort based
on relative overdueness, having the values accessible on the card makes
things easier.
2023-09-23 15:42:42 +10:00
Damien Elmes
c78de23cf9
Convert FSRS to a global option
...
Allowing some decks to be FSRS and some SM-2 will lead to confusing
behavior when sorting on SM-2 or FSRS-specific fields, or when moving
cards between decks.
2023-09-23 14:41:55 +10:00
Abdo
f78c59176e
Add an option to stop the timer on answer ( #2673 )
...
* Add an option to stop the timer on answer
* Fix tab order
2023-09-23 14:01:03 +10:00
Abdo
c2b1ab5eb0
Skip template checks in Fields screen ( #2670 )
2023-09-20 16:09:54 +10:00
Damien Elmes
b8ec76fb66
Fix crash when using FSRS with a low max interval setting
2023-09-20 13:14:03 +10:00
Damien Elmes
6074865763
Calculate parameters automatically
...
Logic derived from d8e2f6a0ff
Closes #2661
2023-09-18 16:43:36 +10:00