Anki 24.04 beta/RC

rc1 is now available:

The wheels for this build should be on pypi. If you encounter any issues with them or the packages above, please let me know.

2 Likes

:pray: :raised_hands: :raised_hands:

Dae, do you recommend optimizing FSRS parameters after this FSRS update.

There is no harm in doing so because they canā€™t get worse. Also, this update includes an FSRS update. So, you might get better parameters.

1 Like

Are any problems to be expected when using Anki 24.04 with updated FSRS in parallel with Ankidroid 2.17? I read that Ankidroid 2.18 will have the same version of FSRS as Anki 24.04.

Windows 10 qt6, no add-ons. The new Consolas monospace font used in the HTML editor does not seem to work correctly on my Anki?

Consolas monospace (current default):

image

Changing it to Consolas, as a comparison:

Why is it not called 24.03? Isnā€™t it march and not april?

The new Consolas monospace font used in the HTML editor does not seem to work correctly on my Anki?

I have the same issue on Windows 11. The font is clearly not monospace:
image

Changing it to Consolas , as a comparison:

How did you change it manually?

I would assume because itā€™s planned to be released next month.

I used add-ons. For testing purposes, I changed the font-family using AnkiWebView Inspector (see also the manual for an alternative method that doesnā€™t require an add-on).

Currently, Iā€™m using CSS Injector and I added this rule to editor.css:

.code-mirror.svelte-1w01nus .CodeMirror {
    font-family: "Consolas";
    font-size: 0.97em;
}
1 Like

@L.M.Sherlock the bug with parameters not changing AND no pop-up being shown has been fixed.
Unrelated, I suggest adding the number of reviews to the ā€œEvaluateā€ window. Currently, when the number of reviews is very small, you canā€™t even see it while the optimizer/evaluation is running.

I found that the progress goes backwards sometime when the collection has tons of reviews.

1

The main problem is I cannot reproduce it via running ./tools/runopt from the source code.

This code seems to work better:

.CodeMirror pre.CodeMirror-line, .CodeMirror pre.CodeMirror-line-like {
    font-family: Consolas;
}
1 Like

This is likely a typo. The font-family property should be a list of prioritized fonts and a general pattern is to list a specific font family and then a generic fallback. There is probably supposed to be a comma between the family and the generic name, and it should instead be font-family: Consolas, monospace;

1 Like

Thatā€™s a little surprising - performance should be similar. You can try changing RELEASE=1 to RELEASE=2 in tools/runopt to see if that makes a difference.

A fix will be in the next build.

I hope there is feedback in the next update. Many people will be optimizing too often.

It was happening in 23.10.1: FSRS "Optimize" shows review # in progress indicator incorrectly

Thanks! I reproduce it successfully. Here is the log:

2024-03-10 16:44:05,228:DEBUG:aqt.mediasrv: POST /_anki/latestProgress
[rslib/src/scheduler/fsrs/weights.rs:85] guard.total() = 3715390
[rslib/src/scheduler/fsrs/weights.rs:85] guard.current() = 3334296
2024-03-10 16:44:05,332:DEBUG:aqt.mediasrv: POST /_anki/latestProgress
[rslib/src/scheduler/fsrs/weights.rs:85] guard.total() = 3715390
[rslib/src/scheduler/fsrs/weights.rs:85] guard.current() = 3390104
2024-03-10 16:44:05,428:DEBUG:aqt.mediasrv: POST /_anki/latestProgress
[rslib/src/scheduler/fsrs/weights.rs:85] guard.total() = 3715390
[rslib/src/scheduler/fsrs/weights.rs:85] guard.current() = 3439768
2024-03-10 16:44:05,528:DEBUG:aqt.mediasrv: POST /_anki/latestProgress
[rslib/src/scheduler/fsrs/weights.rs:85] guard.total() = 3715390
[rslib/src/scheduler/fsrs/weights.rs:85] guard.current() = 3490968
2024-03-10 16:44:05,628:DEBUG:aqt.mediasrv: POST /_anki/latestProgress
[rslib/src/scheduler/fsrs/weights.rs:85] guard.total() = 3715390
[rslib/src/scheduler/fsrs/weights.rs:85] guard.current() = 3544216
2024-03-10 16:44:05,728:DEBUG:aqt.mediasrv: POST /_anki/latestProgress
[rslib/src/scheduler/fsrs/weights.rs:85] guard.total() = 3715390
[rslib/src/scheduler/fsrs/weights.rs:85] guard.current() = 3607704
2024-03-10 16:44:05,832:DEBUG:aqt.mediasrv: POST /_anki/latestProgress
[rslib/src/scheduler/fsrs/weights.rs:85] guard.total() = 3715390
[rslib/src/scheduler/fsrs/weights.rs:85] guard.current() = 3658133
2024-03-10 16:44:05,930:DEBUG:aqt.mediasrv: POST /_anki/latestProgress
[rslib/src/scheduler/fsrs/weights.rs:85] guard.total() = 3715390
[rslib/src/scheduler/fsrs/weights.rs:85] guard.current() = 3669909
2024-03-10 16:44:06,031:DEBUG:aqt.mediasrv: POST /_anki/latestProgress
[rslib/src/scheduler/fsrs/weights.rs:85] guard.total() = 3715390
[rslib/src/scheduler/fsrs/weights.rs:85] guard.current() = 3684757
2024-03-10 16:44:06,131:DEBUG:aqt.mediasrv: POST /_anki/latestProgress
2024-03-10 16:44:06,227:DEBUG:aqt.mediasrv: POST /_anki/latestProgress
[rslib/src/scheduler/fsrs/weights.rs:85] guard.total() = 3715390
[rslib/src/scheduler/fsrs/weights.rs:85] guard.current() = 3695509
2024-03-10 16:44:06,329:DEBUG:aqt.mediasrv: POST /_anki/latestProgress
[rslib/src/scheduler/fsrs/weights.rs:85] guard.total() = 3715390
[rslib/src/scheduler/fsrs/weights.rs:85] guard.current() = 3712917
2024-03-10 16:44:06,428:DEBUG:aqt.mediasrv: POST /_anki/latestProgress
[rslib/src/scheduler/fsrs/weights.rs:85] guard.total() = 3715390
[rslib/src/scheduler/fsrs/weights.rs:85] guard.current() = 3715390
2024-03-10 16:44:06,528:DEBUG:aqt.mediasrv: POST /_anki/latestProgress
[rslib/src/scheduler/fsrs/weights.rs:85] guard.total() = 4644240
[rslib/src/scheduler/fsrs/weights.rs:85] guard.current() = 3726142
2024-03-10 16:44:06,628:DEBUG:aqt.mediasrv: POST /_anki/latestProgress
[rslib/src/scheduler/fsrs/weights.rs:85] guard.total() = 4644240
[rslib/src/scheduler/fsrs/weights.rs:85] guard.current() = 3741502
2024-03-10 16:44:06,728:DEBUG:aqt.mediasrv: POST /_anki/latestProgress
[rslib/src/scheduler/fsrs/weights.rs:85] guard.total() = 4644240
[rslib/src/scheduler/fsrs/weights.rs:85] guard.current() = 3765054
2024-03-10 16:44:06,828:DEBUG:aqt.mediasrv: POST /_anki/latestProgress
[rslib/src/scheduler/fsrs/weights.rs:85] guard.total() = 4644240
[rslib/src/scheduler/fsrs/weights.rs:85] guard.current() = 3786558
2024-03-10 16:44:06,928:DEBUG:aqt.mediasrv: POST /_anki/latestProgress
[rslib/src/scheduler/fsrs/weights.rs:85] guard.total() = 4644240
[rslib/src/scheduler/fsrs/weights.rs:85] guard.current() = 3800894
2024-03-10 16:44:07,028:DEBUG:aqt.mediasrv: POST /_anki/latestProgress
[rslib/src/scheduler/fsrs/weights.rs:85] guard.total() = 4644240
[rslib/src/scheduler/fsrs/weights.rs:85] guard.current() = 3825470
2024-03-10 16:44:07,130:DEBUG:aqt.mediasrv: POST /_anki/latestProgress
[rslib/src/scheduler/fsrs/weights.rs:85] guard.total() = 4644240
[rslib/src/scheduler/fsrs/weights.rs:85] guard.current() = 3843902
2024-03-10 16:44:07,228:DEBUG:aqt.mediasrv: POST /_anki/latestProgress
[rslib/src/scheduler/fsrs/weights.rs:85] guard.total() = 4644240
[rslib/src/scheduler/fsrs/weights.rs:85] guard.current() = 3858238
2024-03-10 16:44:07,328:DEBUG:aqt.mediasrv: POST /_anki/latestProgress
[rslib/src/scheduler/fsrs/weights.rs:85] guard.total() = 4644240
[rslib/src/scheduler/fsrs/weights.rs:85] guard.current() = 3878718
2024-03-10 16:44:07,428:DEBUG:aqt.mediasrv: POST /_anki/latestProgress
[rslib/src/scheduler/fsrs/weights.rs:85] guard.total() = 4644240
[rslib/src/scheduler/fsrs/weights.rs:85] guard.current() = 3898686
2024-03-10 16:44:07,528:DEBUG:aqt.mediasrv: POST /_anki/latestProgress
[rslib/src/scheduler/fsrs/weights.rs:85] guard.total() = 4644240
[rslib/src/scheduler/fsrs/weights.rs:85] guard.current() = 3901160
2024-03-10 16:44:07,628:DEBUG:aqt.mediasrv: POST /_anki/latestProgress
[rslib/src/scheduler/fsrs/weights.rs:85] guard.total() = 4644240
[rslib/src/scheduler/fsrs/weights.rs:85] guard.current() = 3901160
2024-03-10 16:44:07,732:DEBUG:aqt.mediasrv: POST /_anki/latestProgress
[rslib/src/scheduler/fsrs/weights.rs:85] guard.total() = 4644240
[rslib/src/scheduler/fsrs/weights.rs:85] guard.current() = 3901160
2024-03-10 16:44:07,832:DEBUG:aqt.mediasrv: POST /_anki/latestProgress
[rslib/src/scheduler/fsrs/weights.rs:85] guard.total() = 4644240
[rslib/src/scheduler/fsrs/weights.rs:85] guard.current() = 3901160
2024-03-10 16:44:07,931:DEBUG:aqt.mediasrv: POST /_anki/latestProgress
[rslib/src/scheduler/fsrs/weights.rs:85] guard.total() = 4644240
[rslib/src/scheduler/fsrs/weights.rs:85] guard.current() = 3903720
2024-03-10 16:44:08,032:DEBUG:aqt.mediasrv: POST /_anki/latestProgress
[rslib/src/scheduler/fsrs/weights.rs:85] guard.total() = 4644240
[rslib/src/scheduler/fsrs/weights.rs:85] guard.current() = 3920104
2024-03-10 16:44:08,131:DEBUG:aqt.mediasrv: POST /_anki/latestProgress
[rslib/src/scheduler/fsrs/weights.rs:85] guard.total() = 4644240
[rslib/src/scheduler/fsrs/weights.rs:85] guard.current() = 3939560
2024-03-10 16:44:08,232:DEBUG:aqt.mediasrv: POST /_anki/latestProgress

The main problem is the guard.total() increases. It should be constant. Normally, CombinedProgressState should have 5 splits. But sometime it only has 4 splits at first. I guess one thread is blocked.

fixed in:

1 Like

After zoom/pan the shapes tool seem to not working.
I am working on fix.
Edit:
Done

1 Like

After optimizing FSRS parameters with Anki 24.04rc1, failed reviews always cause the cardā€™s stability to increase rather than decrease. In fact, ā€œAgainā€ often produces a higher stability than ā€œGoodā€!

This is apparently because Anki 24.04rc1 chooses a much lower w12 and higher w13 than Anki 23.12.1, when optimized on the same review history (with about 100,000 reviews).

Anki 23.12.1:

  • [2.2573, 6.3409, 11.7184, 31.1897, 4.8139, 0.7134, 2.8423, 0.0373, 1.7048, 0.1420, 1.0502, 2.5131, 0.0828, 0.6538, 1.9352, 0.0415, 4.0000]

Anki 24.04rc1:

  • [2.2558, 6.3447, 11.6977, 31.1863, 5.3388, 0.7013, 2.9094, 0.0047, 1.5643, 0.1306, 0.9509, 2.5273, 0.0147, 0.8895, 1.8237, 0.0409, 6.0000]

Plugging the Anki 24.04rc1 params into the post-lapse stability formula shows that stability increases 75ā€“80% after lapse. (With the Anki 23.12.1 params, stability decreases 40ā€“50% after lapse.)

I donā€™t think my review history is that weird, and previous versions of FSRS did not produce such suprising results. Iā€™m happy to provide more data or do additional testing. (I am a Rust developer and can build/run the fsrs-rs code locally, if it helps.)

3 Likes

@L.M.Sherlock thatā€™s the exact opposite of what I would expect, since we recently added a fix to make sure that PLS cannot be greater than S.