Jarrett Ye
51e847bfea
use rmse in comparing parameters ( #3087 )
2024-03-24 08:28:15 +00:00
Damien Elmes
f20181d899
Update translations, and full sync -> one-way sync
2024-03-21 10:17:24 +07:00
Damien Elmes
69f8d9713f
When updating all FSRS parameters at once, exclude suspended cards
2024-03-20 12:56:36 +07:00
Jarrett Ye
40870b22a8
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
1883549d32
Shift FSRS optimization into top level; shown optimize all tip after 30 days
2024-03-17 17:46:26 +07:00
Brayan Oliveira
7f28646523
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
11423405d5
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
fec80175d9
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
6c4e047eaf
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
e64f72f91c
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
5faaff7d56
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
0362727bd9
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
6427f01339
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
6648b20b06
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
43999e4518
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
3cde97275d
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
291342ea2c
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
5a152ff56e
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
970ca973ba
Fix deck names differing in case being duplicated in CSV import ( #3008 )
2024-02-14 20:25:54 +10:00
Jarrett Ye
9b7ff46fb2
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
739e0196e9
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
6d62ca1cf5
Fix preset: search ignoring cards in filtered decks ( #2997 )
2024-02-11 16:11:05 +10:00
Abdo
bffac38cf9
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
d11a655e9b
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
c828c8d1e6
Do not reset original_due when card stays in filtered deck ( #2988 )
2024-02-07 13:27:54 +10:00
Jarrett Ye
f76763b10e
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
b8aa550353
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
4274fbf04c
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
09b5ed719e
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
c183b758bd
Default to 'Bury Card' action consistently ( #2950 )
2024-01-19 15:49:16 +10:00
Damien Elmes
fd5100ae88
Fix error after notetype merge + downgrade
2024-01-12 15:16:27 +10:00
Damien Elmes
b2345e9fe4
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
5b6a81cbf2
Fix importing of Mnemosyne due dates ( #2936 )
2024-01-11 14:11:17 +10:00
RumovZ
4920c13526
Fix note id mix-up when resolving notetype conflicts ( #2940 )
...
Closes #2939 .
2024-01-11 13:50:03 +10:00
Damien Elmes
6709e022fc
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
ee05094e57
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
f1009d8d44
Update to Rust 1.75
2024-01-05 14:28:23 +10:00
Abdo
c18ad5ed85
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
d0359ab5eb
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
bb71e9b18c
Work around test failure on Windows
2023-12-28 18:43:28 +10:00
Damien Elmes
f94a129f5e
Pull in FSRS fix for pretrain
2023-12-28 18:15:44 +10:00
RumovZ
54b21bdeaa
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
9bebe2d72d
Fix new cards from parent decks being gathered ( #2907 )
...
Fixes #2906 .
2023-12-24 20:04:28 +10:00
Jarrett Ye
9af073cd0e
Update to FSRS-4.5 ( #2901 )
2023-12-22 16:17:40 +10:00
Damien Elmes
08a7b3ccab
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
2a173fdca9
Force memory state recompute when cards moved into different deck
2023-12-22 14:02:39 +10:00
RumovZ
1ad343c22a
Log existing notes during CSV import ( #2898 )
2023-12-22 14:01:35 +10:00
Damien Elmes
e5fa4791a7
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
3b3d9444b8
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
701e0b7e60
Fix error generating parameters when a parameter is 0
2023-12-12 12:33:32 +10:00
Damien Elmes
9c3cf6af57
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
935f50cfff
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
f4acaa17cd
Update FSRS for new default weights
2023-12-08 13:54:31 +10:00
Damien Elmes
629ff330a2
Allow user to configure hard/good buttons when rescheduling off
...
Closes #2858
2023-12-08 11:04:34 +10:00
Damien Elmes
cdacb9a489
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
a1c2009c0e
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
75681810b0
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
908f77ca53
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
f968cad2a6
Fix/keep two decimals for stability ( #2873 )
...
* Fix/keep two decimals
* update test
2023-12-06 10:08:52 +10:00
Abdo
95af26a056
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
c54ae4bee1
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
7d8ca4f86d
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
996216c736
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
5e06a131f6
Show actual due date of learning cards in Card Info ( #2865 )
2023-12-04 15:04:22 +10:00
Damien Elmes
a52309a9aa
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
6ac44aa9ef
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
9537646604
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
cb39d40f9f
Remove some v3 checks
2023-11-28 14:06:49 +10:00
Damien Elmes
910d864ee7
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
ff3cdaa4cf
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
aea95ee9ae
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
1021502377
Add option to calculate all weights at once
2023-11-27 11:24:31 +10:00
Damien Elmes
91d2822358
Update to latest FSRS
2023-11-27 11:24:31 +10:00
Jarrett Ye
e88866acc3
don't convert from sm2 when ivl = 0 ( #2849 )
2023-11-26 13:14:31 +10:00
Abdo
b5f1c6a53c
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
dcd729374d
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
a64624a3d6
Use note order when previewing
...
https://forums.ankiweb.net/t/card-in-disorder/37534/2
2023-11-24 15:01:14 +10:00
Mani
b8d9e77984
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
89fe5f710c
Include next_day timestamp in revlog export
2023-11-23 14:46:48 +10:00
Damien Elmes
70900e91d0
Add a method for exporting revlogs in binary
2023-11-22 11:57:40 +10:00
Damien Elmes
e6a7a8ff4a
When training with the whole collection, include deleted card history
2023-11-22 10:53:08 +10:00
Damien Elmes
c97205a535
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
2da97e4720
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
353d1ac003
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
fc5b38567b
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
7c2007ccad
Persist FSRS weights search in preset ( #2827 )
2023-11-14 11:47:08 +10:00
RumovZ
134793835f
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
cf28ec1437
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
cb9d5218f7
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
48d38bb9af
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
b989c98639
Update fsrs-rs
2023-11-13 10:13:20 +10:00
Abdo
92b88fc3e2
Move anki.utils.html_to_text_line() to backend ( #2816 )
2023-11-09 09:57:23 +10:00
Damien Elmes
7bcb31b65b
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
3c31386c1f
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
a2adbf0bf2
Expose fuzz delta for FSRS add-on
2023-11-06 12:27:53 +10:00
Damien Elmes
4cbb9a36d2
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
c22cf9fc50
Handle stability < 0.5 in stability graph
2023-11-05 13:44:39 +10:00
Gustaf-C
5ff618b7ac
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
aa5ccad26e
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
2b07464ca4
Fix D/R graphs excluding values of 1.0
...
Closes #2783
2023-10-29 07:45:10 +10:00