Commit graph

11283 commits

Author SHA1 Message Date
Arthur Milchior
5610436c88 NF: Improve typing of AnkiWebView action (#3475)
There are only two types of actions. The code does not seems to
consider this to be extandable, and the changed variable is private,
so I would expect it relatively acceptable to change the way it
work. This would improve the typing.

If this is rejected, at least, the callback should be noted as
optional, so that the IDE does not complain that `if cb` can not be
false.
2024-10-11 20:16:20 +10:00
Taylor Obyen
0bd3b429c8 Add card position column and always show position in card info (#3471)
* Expose original position to columns and card info

* Fix contributors

* Change routine name and return, fix SQL file, utilize coalesce inline

* Handle cards without original position

* Remove unecessary conversion
2024-10-11 20:14:07 +10:00
Jarrett Ye
dea7bf8e36 Feat/Easy Days (#3442)
* Feat/Easy Days

* format

* add easy_days_percentages to deck_config

* configure Easy Days via table

* remove unused code

* add translatable strings & add default of easy days

* don't check easy_days_percentages when deserialize

* pass test::all_reserved_fields_are_removed

* consider next_day_at when interval_to_weekday

* remove y-axis-title created in last simulation

* EstimatedTotalKnowledge should be integer

* Reorder deck option sections (dae)

- Move FSRS to bottom left, to move it closer to the top, and so
the left and right columns appear roughly balanced when FSRS is
enabled.
- Move Easy Days above Advanced

* Don't crash if wrong number of days (dae)

* Use lower field number (dae)

Repeated fields are more compactly stored in the first 15 fields.
2024-10-11 19:47:44 +10:00
Damien Elmes
09788cfac9 Pretend mw is set from the start
https://github.com/ankitects/anki/pull/3476#issuecomment-2395281774

Closes #3476
2024-10-10 22:17:58 +10:00
Damien Elmes
280ba597d0 Fix updated template links
I forgot to update the PR before merging.
2024-10-10 20:52:14 +10:00
sorata
e7cd03db29 Change links in error messages (#3468)
* Update template.rs

* Update template.rs

* ./check (dae)
2024-10-10 20:47:11 +10:00
Hikaru Y.
76c69f8838 Fix issues with 'Discard changes' confirmation dialog (#3478)
* Prevent memory leak

* Fix deck option changes not detected until focus is lost

* Accurately determine if there are any pending changes

This makes it so that the confirmation dialog appears when it should,
and not when it shouldn't.
2024-10-06 14:21:00 +10:00
Jarrett Ye
60cf8790ad Let FSRS control short term schedule (#3375)
* graduate card when user press hard and has 0 learning steps

* fix error: useless conversion to the same type

* do the same thing to again

* fix expected `Option<u32>`, found integer

* ./ninja format

* let FSRS control short term schedule

* Update to FSRS-rs v1.3.0

* ./ninja check:clippy

* Update to FSRS-rs v1.3.1

* Pin FSRS version (dae)

https://github.com/ankidroid/Anki-Android-Backend/pull/417

* Remove redundant parens (dae)
2024-10-06 12:20:18 +10:00
Damien Elmes
3a172a3f23 Revert "Fix ease button alignment (#3404)"
This reverts commit 1663407d7e.

Due to regression:
https://forums.ankiweb.net/t/anki-24-10-beta/49989/119
2024-10-04 22:38:50 +10:00
Damien Elmes
501ddd0d05 Flip order of question/answer actions, and ascending/descending ease
https://forums.ankiweb.net/t/anki-24-10-beta/49989/53
2024-10-04 20:52:20 +10:00
user1823
cfd0e4d6a3 Add "open image" option to editor (#3431)
* Add "open image" option to editor

* Update qt/aqt/editor.py

Co-authored-by: Ben Nguyen <105088397+bpnguyen107@users.noreply.github.com>

* Update editor.py

* Remove unused import

* Fix "show in folder"

* Fix 'show in folder' on macOS

* Revert "Fix "show in folder""

This reverts commit cf2b33ee9422bcaf8d9e20bd4cce74e5061c13cf.

* Reimplement show_in_folder for Windows (dae)

- Avoid reusing call(), as the startupinfo we were passing in was
breaking the explorer invocation
- Attempt to bring explorer to the front after the window has been show,
as it otherwise appears under Anki (at least when running from source)

---------

Co-authored-by: Ben Nguyen <105088397+bpnguyen107@users.noreply.github.com>
Co-authored-by: Damien Elmes <gpg@ankiweb.net>
2024-10-04 20:51:55 +10:00
Damien Elmes
a161ee3a5a Split true retention into multiple tables; display vertically
This prevents the page scrolling off screen on small devices. This is
a quick fix, and further tweaks to the layout are welcome.
2024-10-04 17:04:22 +10:00
Damien Elmes
736a735987 Update translations 2024-10-04 16:29:47 +10:00
Damien Elmes
85f0761417 Update protobuf to fix Windows crash
https://forums.ankiweb.net/t/anki-24-10-beta/49989/109
2024-10-04 16:27:13 +10:00
박현우
e64cb6d3f0 Allow addon page URL on AddonsDialog (#3467)
* Allow users to just copy&paste addon page URL to addon 'code' field.

https://forums.ankiweb.net/t/get-addons-allow-url-on-code-section/36370
2024-10-04 15:02:29 +10:00
mmjang
ed81a6d2c2 Decide if element is bold by getComputedStyle (#2453) (#2579)
* Decide if element is bold by getComputedStyle (#2453)

* Use getComputedStyle() for italics too (dae)
2024-10-02 19:37:40 +10:00
Shirish Pokhrel
307438dbb0 Fix editor loses focus when toggling list and copy selects wrong target deck for filtered decks (#3465)
* fix copy selects wrong target deck for filtered decks
2024-10-02 18:42:41 +10:00
a.r
0023e3a4fd typeanswer: hoist strip_expected (#3464)
(renamed from prepare_expected)

Single use makes it likelier to get inlined, too.
2024-10-02 18:28:18 +10:00
Ben Nguyen
cf03ae4ad0 Fix Mnemosyne importer chokes on due dates >= 2038 (#3459)
* Fix integer overflow

* Update CONTRIBUTORS
2024-10-02 18:20:44 +10:00
Jarrett Ye
703bdef509 Fix/Reschedule doesn't work on cards in filtered deck (#3441)
* Fix/Reschedule doesn't work on cards in filtered deck

* Update docstring (dae)
2024-10-02 18:09:25 +10:00
Taylor Obyen
7a131f0fe9 Fix occlusion drift again (#3443)
* Fix occlusion drift

* Fix image editor occasionally not loading fully

* Fix occlusion disassociation when browsing

* Address oversights

* Fix translucent modifier applies to newly created shapes incorrectly

* Fix i-text turns yellow upon immediate note change

* Fix image occlusion hot keys not disabled when typing

* Improve text label creation experience

* Remove redundant functions

* Fix error when adding occlusion (dae)
2024-10-02 17:19:52 +10:00
Jarrett Ye
3337aad251 polish graphs of simulator, true retention table and forgetting curve (#3448)
* polish graphs of simulator and forgetting curve

* True Retention: decrease precision of percentages

* apply uniform sampling rate to forgetting curve

* don't display time, only date when maxDays >= 365

* don't floor the totalDaysSinceLastReview

* correct cramming condition

* improve code-style

* polish ticks & tooltip of simulator

* remove unused import

* fix minor error of daysSinceFirstLearn

* filter out revlog entries from before the reset

https://forums.ankiweb.net/t/anki-24-10-beta/49989/63?u=l.m.sherlock

* use Math.ceil for windowSize

* fill currentColor for legend text

* remove mix-blend-mode: multiply

* tune the position of legend
2024-10-01 00:22:30 +10:00
Taylor Obyen
0a33c9742a Fix incorrect canvas bounds calculations (#3457)
* Fix incorrect canvas bounds calculations

* Fix contributors

* Set variables to be constant
2024-10-01 00:03:38 +10:00
Voczi
7c06d0b621 Fix error when closing deck options (#3454) 2024-09-30 23:44:20 +10:00
Jarrett Ye
ce51170149 Fix/keep the same-day reviews for training & optimized parameters should be consistent if the inputs are consistents (#3450)
* keep the same-day reviews in feature

* Update to FSRS-rs v1.2.3

* format

* don't remove short-term reviews if not training

* Update to FSRS-rs v1.2.4
2024-09-30 23:43:26 +10:00
a.r
2f31f9fec5 lazy_static → once_cell → stabilized versions (#3447)
* Anki: Replace lazy_static with once_cell

Unify to once_cell, lazy_static's replacement. The latter in unmaintained.

* Anki: Replace once_cell with stabilized LazyCell / LazyLock as far as possible

Since 1.80: https://github.com/rust-lang/rust/issues/109736 and https://github.com/rust-lang/rust/pull/98165

Non-Thread-Safe Lazy → std::cell::LazyCell https://doc.rust-lang.org/nightly/std/cell/struct.LazyCell.html

Thread-safe SyncLazy → std::sync::LazyLock https://doc.rust-lang.org/nightly/std/sync/struct.LazyLock.html

The compiler accepted LazyCell only in minilints.

The final use in rslib/src/log.rs couldn't be replaced since get_or_try_init has not yet been standardized: https://github.com/rust-lang/rust/issues/109737

* Declare correct MSRV (dae)

Some of our deps require newer Rust versions, so this was misleading.

Updating the MSRV also allows us to use .inspect() on Option now
2024-09-30 23:35:06 +10:00
a.r
a63f5f7b73 typeanswer: [type:nc] – ignores combining characters (#3422)
* typeanswer: fix cleanup

Fix: Add prepare_expected back in for the 'nothing typed' & 'correctly typed' cases. This also makes expected_original redundant again.

Style: %s/provided/typed/g

Style: rename one ch → c

Testcase: whitespace_is_trimmed: added a check for the "correctly typed" path and renamed it to tags_removed (there's no whitespace?)

Testcase: empty_input_shows_as_code: changed to also check that tags get trimmed

* [type:nc] – ignores combining characters

Adds a comparison variant to [type] which ignores when combining characters of the expected field are missing from the provided input. It still shows these characters in the 'expected' line for reference.

It's useful for languages with e.g. diacritics that are required for reference (such as in dictionaries), but rarely actually learned or used in everyday writing. Among these languages: Arabic, Hebrew, Persian, Urdu.

The bool 'combining' controls it as new final parameter of both relevant compare_answer functions. On the Python side, it's set to true by default.

Use on the note templates: [type:nc:field] (only the front needs to include :nc)

This also removes the need to have both variants of words/sentences present as separate fields, to show them redundantly, etc.

* typeanswer: simplify by using nfkd throughout

Requires adjusting two testcases, but both render exactly the same in Anki itself.

On NFC vs. NKFD: https://stackoverflow.com/a/77432079

* typeanswer: 'simplify' by removing normalize_typed (requiring a bool parameter)

I'd prefer to keep this extra method.

* typeanswer: micro-optimize vectors

Should get rid of most relocations, at the expense of over-allocating.

On Vec's (String's) behavior: https://stackoverflow.com/a/72787776

* Mark `combining` as private

typeCorrect is not marked as private either, but we can at least do
the right thing for newly-added code.

* Revert "typeanswer: micro-optimize vectors"

This reverts commit 9fbacbfd19.

* Revert "typeanswer: 'simplify' by removing normalize_typed (requiring a bool parameter)"

This reverts commit df2dd3394e.
2024-09-30 23:11:51 +10:00
Damien Elmes
af07f40bb6 Pin setuptools to 0.69 in binary builds
Newer versions break 'import pkg_resources' from a bundled build,
due to Pyoxidizer.

https://forums.ankiweb.net/t/anki-24-10-beta/49989/66

I've had to jiggle around the requirements files so that our dev
environment continues to use the latest setuptools, as there have
been security issues with old versions.
2024-09-30 22:36:42 +10:00
Damien Elmes
b745e0b632 Revert "Pin setuptools to 0.69"
This reverts commit 61700edd52.

This reintroduces a security warning, so we'll need a different
approach.
2024-09-30 22:19:27 +10:00
Damien Elmes
bd07e6b1ae Pin sass to quieten warnings
https://github.com/ankitects/anki/issues/3462
2024-09-30 22:10:59 +10:00
Damien Elmes
61700edd52 Pin setuptools to 0.69
Newer versions break 'import pkg_resources' from a bundled build,
due to Pyoxidizer.

https://forums.ankiweb.net/t/anki-24-10-beta/49989/66
2024-09-30 21:55:30 +10:00
Damien Elmes
b4d92b66c7 Add missing distro lock
By regenerating requirements on a Linux machine
2024-09-30 21:54:41 +10:00
Damien Elmes
c56b2be557 Install n2 in release entrypoint 2024-09-27 20:22:16 +10:00
Damien Elmes
ce57af79a9 Update translations 2024-09-27 19:38:16 +10:00
Damien Elmes
ff6cc341f6 Backup warning needs a new string
We need a new key, as we've introduced a variable. Missed this in
the PR review.
2024-09-27 19:36:58 +10:00
Damien Elmes
c8dc1e522d Bump version number 2024-09-27 19:33:44 +10:00
Jarrett Ye
d64f83d2ee Feat/forgetting curve in card info (#3437)
* add elapsed time into revlog-table

* add stability into revlog-table

* add Graph of forgetting curve

* fix eslint

* add radio buttons of timeRange

* add revlog filter && return [] for new card

* format

* translatable string & disable if using SM-2

* elapsedTime should skip manual or filtered review

* add HoverColumns

* fix eslint

* add stability to tooltip & use timeSpan

* reuse translatable strings

* distinguish daysSinceFirstLearn and elapsedDaysSinceLastReview

* Date x-axis & toLocaleString

* Temporarily hide elapsed/stability columns (dae)

https://github.com/ankitects/anki/pull/3437#issuecomment-2378851900
2024-09-27 19:32:40 +10:00
Damien Elmes
767edab94a Revert "Fix pasting from the primary selection (#3413)"
This reverts commit b6dc5a3793.

Closes #3435
2024-09-25 20:59:10 +10:00
Taylor Obyen
95ffeb5d6d Add revert to backup option to file menu (#3434)
* Add revert to backup context item

* Fix contributors a new way

* Change relative time to filename

* Update ftl/qt/qt-accel.ftl (dae)
2024-09-25 20:21:59 +10:00
a.r
9dfc8c2efc typeanswer: cleanups (#3415)
* typeanswer: cleanups

no functional change

* typeanswer: disambiguate

no functional change

* typeanswer: reorder

* typeanswer: skip DiffContext if nothing typed

No use to run all that code without input.

* typeanswer: skip tokenization if input is correct

No use in this case.

* typeanswer: make repo check happy (.map → .fold)

Either a new check or the call was too complex previously for it to trigger?

* Add to contributors

* typeanswer: remove slice_* functions

They're used only once in to_tokens. Easier to read this way IMHO, anyway.
2024-09-25 20:15:16 +10:00
Damien Elmes
581ee823c2 Revert "Fix occlusion rounding bug (#3400)"
This reverts commit 441f62f656.

This change broke adding of new occlusions on desktop:

JS error /_anki/js/editor.js:100016 Uncaught TypeError: Cannot read properties of undefined (reading 'getBoundingRect')
2024-09-25 20:04:35 +10:00
Damien Elmes
05a5799b4b Fix header/extra fields being collapsed on mobile
+ use a class, since this element is repeated
2024-09-25 19:51:19 +10:00
Damien Elmes
34c2dcf466 Fix Back Extra field not being added 2024-09-25 19:51:19 +10:00
Damien Elmes
0f460f3ae0 Fix inability to save occlusions on mobile 2024-09-25 19:51:18 +10:00
Abdo
a4744f2ed9 Update to Svelte 5 (#3292)
* Update to Svelte 5

* Fix `<tr> is invalid inside <table>`

* Update sveltekit-svg to match svelte version

Fixes deck options failing to load, and a bunch of warnings with
./yarn dev

* Fix graph tooltips

* Fix editor loading

* Fix MathJax editor not loading

* Formatting

* Fix new formatting errors

* Merge remote-tracking branch 'origin/main' into svelte5

* Remove slot inside EditorToolbar

I think this is just stray code left over from a refactor, but I'm
not 100% sure.

Fixes
Error: Object literal may only specify known properties, and 'children' does not exist in type '{ size: number; wrap: boolean; api?: Partial<EditorToolbarAPI> | undefined; }'. (ts)
<div class="note-editor">
    <EditorToolbar {size} {wrap} api={toolbar}>
        <slot slot="notetypeButtons" name="notetypeButtons" />

* Fix component typing error

* Comment out svelte/internal exports, so editor loads

* Fix image occlusions in editor

* Revert "Remove slot inside EditorToolbar"

This reverts commit b3095e07ac,
which prevented the Preview button from showing in the browser.

This will break our tests again.

* Update vite

* Disable routes/tmp for now

* Fix references issue in routes/tmp
2024-09-25 18:49:07 +10:00
Damien Elmes
320f434a4c Update translations 2024-09-22 19:01:20 +10:00
Jarrett Ye
710d444157 Feat/true retention stats (#3425)
* Feat/true retention stats

* ./ninja fix:minilints

* use translatable strings & update style

* remove card couts & add more translatable strings

* Update statistics.ftl

Co-authored-by: user1823 <92206575+user1823@users.noreply.github.com>

* add Estimated total knowledge (cards)

---------

Co-authored-by: user1823 <92206575+user1823@users.noreply.github.com>
2024-09-22 19:00:27 +10:00
Damien Elmes
2c2500db02 Fix formatting 2024-09-22 18:36:01 +10:00
Expertium
c5d80e85df Recall rate -> retention rate (#3433)
Let's keep the terminology consistent
2024-09-22 18:24:52 +10:00
Ben Nguyen
007eb3c476 Bug with “A 100 day interval will become X days.” (#3432)
* add name to about page

* use two decimal retention for calculations

* Update CONTRIBUTORS

* format

* Update CONTRIBUTORS

* Update CONTRIBUTORS

* Update CONTRIBUTORS
2024-09-22 18:24:32 +10:00