Commit graph

1990 commits

Author SHA1 Message Date
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
d4b5d85ea7 Add remove_dir_all() 2023-11-22 17:41:45 +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
Damien Elmes
e5153fde78 Fix some build steps being re-run a second time unnecessarily 2023-11-13 13:35:54 +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
RumovZ
2d03f6a55c Time out after 60s when checking URLs (#2785) 2023-11-01 07:46:49 +10:00
Damien Elmes
2b07464ca4 Fix D/R graphs excluding values of 1.0
Closes #2783
2023-10-29 07:45:10 +10:00
Damien Elmes
dbfbd356f1 Fix sm2_retention getting reset on downgrade/sync 2023-10-28 14:45:24 +10:00
Damien Elmes
04b5f53896 Expose method to check for v2 as well 2023-10-27 02:47:04 +10:00
Damien Elmes
9b496816b2 Don't lock collection while generating TTS 2023-10-26 11:45:17 +10:00
Damien Elmes
301405da5c Revert "Use scheduling flag instead of checking revlog when importing decks (#2730)"
This reverts commit 068d79329e.

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
4b05cda8e2 Add public method to determine if v3 is enabled 2023-10-25 11:41:05 +10:00
Abdo
ebcbed1b83 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
c9eb57ec7a Add image occlusion to stock notetypes 2023-10-22 11:00:39 +10:00
Aristotelis
e4d904444d 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
cdf8fcaaaf 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
9e218e115b "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
5c8bcd577d 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
8726ef8fff 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
6547376845 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
b09bf31748 Fix misleading warning when changing notetype from/to cloze (#2744) 2023-10-18 16:50:32 +10:00
Damien Elmes
695bb9e291 Update to latest fsrs 2023-10-18 09:03:23 +10:00
Damien Elmes
e41e7cc508 Fix stuttering in FSRS progress display 2023-10-14 14:03:20 +10:00
Abdo
10966394fd 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
068d79329e Use scheduling flag instead of checking revlog when importing decks (#2730)
Closes #2714
2023-10-14 10:30:20 +10:00
Damien Elmes
ec8990dc11 Use sm2 retention when deriving memory state
Closes #2702
2023-10-13 10:37:35 +10:00
Abdo
495dc4d87c 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
3a52080eeb 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
eaff6b466b Rust 1.73 2023-10-09 19:22:43 +10:00
Damien Elmes
bd6f0d2d92 Fix 'PanicException: command requires weights to be set' 2023-10-09 18:39:18 +10:00
Damien Elmes
6394a449bc 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
3738d9ce28 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
fd94ad49a0 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