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.