What's Changed
* Update Qt to 6.6.2. On macOS, this should fix issues with Japanese input.
* Update FSRS & export benchmark API by L-M-Sherlock in https://github.com/ankitects/anki/pull/3056
* Keep previous FSRS parameters if they get worse when optimizing by abdnh in https://github.com/ankitects/anki/pull/2996
* The I/O editor better preserves images quality when zooming in, and supports two-finger pinch/drag on mobile platforms. By krmanik in https://github.com/ankitects/anki/pull/3052
* Improved pan/zoom in image occlusions: middle mouse button, space, or ctrl/shift/alt with two fingers by krmanik in https://github.com/ankitects/anki/pull/3080 and #3066
* Improvements/simplifications to FSRS optimal retention feature by L-M-Sherlock in https://github.com/ankitects/anki/pull/3065 and #3072
* When updating all FSRS parameters at once, exclude suspended cards.
* Move most FSRS options into their own section of the deck options.
* Don't hide FSRS optimization section.
* Show a warning in the optimization section if all presets haven't been optimized for 30 days or longer.
* Show preset and original deck in card info by abdnh in https://github.com/ankitects/anki/pull/3055
* Use system certificate store by abdnh in https://github.com/ankitects/anki/pull/3050
* Ignore some extra chars in no-combining search by abdnh in https://github.com/ankitects/anki/pull/2929
* Add "select all" shapes tool by krmanik in https://github.com/ankitects/anki/pull/2981
* Maintain original IO cloze order in editing mode by abdnh in https://github.com/ankitects/anki/pull/2987
* Fix occasional 'failed to fetch' message popping up.
* Fix pasted images failing to download from some sites.
* Add by creation date review sort order by abdnh in https://github.com/ankitects/anki/pull/2957
* Add log-in button to preferences screen by lucasscharenbroch in https://github.com/ankitects/anki/pull/2994
* Add support for offline builds by knobix in https://github.com/ankitects/anki/pull/2963
* Add support for python logging by cav71 in https://github.com/ankitects/anki/pull/2969
* Add View Files button to Check Media screen by abdnh in https://github.com/ankitects/anki/pull/3006
* Allow > inside HTML attributes by vaxr in https://github.com/ankitects/anki/pull/2918
* Americanize "synchronisation" by hnvy in https://github.com/ankitects/anki/pull/2935
* Change default font in code editors by abdnh in https://github.com/ankitects/anki/pull/2985
* Check required review count for FSRS after filtering by abdnh in https://github.com/ankitects/anki/pull/3019
* clamp interval before fuzz_bounds by L-M-Sherlock in https://github.com/ankitects/anki/pull/3024
* Clear out old FSRS progress as new operation starts
* Default to 'Bury Card' action consistently by abdnh in https://github.com/ankitects/anki/pull/2950
* Do not reset original_due when card stays in filtered deck by abdnh in https://github.com/ankitects/anki/pull/2988
* Don't urllib.unquote when using requests by vaxr in https://github.com/ankitects/anki/pull/2943
* Fix 'ignore this update' not working.
* Fix `processEvents()` reentrancy bug in progress manager window handling by kieranlblack in https://github.com/ankitects/anki/pull/3030
* Fix a 'protocol wrong type' message sometimes popping up.
* Fix circular import in legacy importer by abdnh in https://github.com/ankitects/anki/pull/3007
* Fix code completion in Qt forms by abdnh in https://github.com/ankitects/anki/pull/2993
* Fix corner rounding of alignment buttons in editor by lucasscharenbroch in https://github.com/ankitects/anki/pull/2989
* Fix crash in Reviewer by mjuhanne in https://github.com/ankitects/anki/pull/2945
* Fix deck names differing in case being duplicated in CSV import by abdnh in https://github.com/ankitects/anki/pull/3008
* Fix error after notetype merge + downgrade.
* Fix flicker when hovering over deck list by abdnh in https://github.com/ankitects/anki/pull/2958
* Fix Image field not hidden until user selects an image by abdnh in https://github.com/ankitects/anki/pull/2960
* Fix importing of Mnemosyne due dates by dae in https://github.com/ankitects/anki/pull/2936
* Fix inconsistent count in optimize/evaluate.
* Fix MathJax editor not opening when navigating into blocks by abdnh in https://github.com/ankitects/anki/pull/2953
* Fix maybe_coalesce_note_undo_entry() by abdnh in https://github.com/ankitects/anki/pull/2992
* Fix misaligned image occlusions in RTL languages by abdnh in https://github.com/ankitects/anki/pull/3018
* Fix note id mix-up when resolving notetype conflicts by RumovZ in https://github.com/ankitects/anki/pull/2940
* Fix notetype conflict resolution by RumovZ in https://github.com/ankitects/anki/pull/2967
* Fix preset: search ignoring cards in filtered decks by abdnh in https://github.com/ankitects/anki/pull/2997
* Fix progress manager window race condition by kieranlblack in https://github.com/ankitects/anki/pull/3029
* Fix regex skipping over all src except the last by vaxr in https://github.com/ankitects/anki/pull/3021
* Fix text input custom style wiping out base user style by kieranlblack in https://github.com/ankitects/anki/pull/3031
* Fix title of Auto Advance section by abdnh in https://github.com/ankitects/anki/pull/2949
* Fix toolbar button shifting on hover by BlueGreenMagick in https://github.com/ankitects/anki/pull/2928
* Fix undo handling of group and some other IO tools by abdnh in https://github.com/ankitects/anki/pull/2931
* Fix visual behavior of modal buttons in editor by lucasscharenbroch in https://github.com/ankitects/anki/pull/3009
* Fix windows build issue by qxo in https://github.com/ankitects/anki/pull/2947
* Fix/ignore revlogs before Forget entry by L-M-Sherlock in https://github.com/ankitects/anki/pull/3002
* Flip indent/outdent buttons for RTL by abdnh in https://github.com/ankitects/anki/pull/2930
* FSRS - Ignore revlogs before date while optimizing by Luc-Mcgrady in https://github.com/ankitects/anki/pull/2922
* Honor NINJA_STATUS if already set by knobix in https://github.com/ankitects/anki/pull/2984
* Improve appearance of resize handles in I/O by krmanik in https://github.com/ankitects/anki/pull/2919
* Improve typing `deck_due_tree()` by nix6839 in https://github.com/ankitects/anki/pull/3003
* Include details on what's missing when a NotFound error is triggered.
* Increase parent limits in custom study when 'limits start from top' is enabled by RumovZ in https://github.com/ankitects/anki/pull/2971
* Initialize Browser.aspect_ratio earlier to fix AttributeError by abdnh in https://github.com/ankitects/anki/pull/2924
* Make a deep copy in addcards/set_note by lucasscharenbroch in https://github.com/ankitects/anki/pull/3013
* Make image occlusion's option buttons tabbable by PLameiras in https://github.com/ankitects/anki/pull/2966
* Make sure editor note is saved before triggering buttons by abdnh in https://github.com/ankitects/anki/pull/2995
* Make tags and tag suggestions able to be styled by add-ons by glutanimate in https://github.com/ankitects/anki/pull/2941
* More precise percent of days studied by user1823 in https://github.com/ankitects/anki/pull/2889
* Refactor text attribute button components by lucasscharenbroch in https://github.com/ankitects/anki/pull/3012
* Shift the default network timeout back to 60 seconds.
* Show message if current FSRS parameters are optimal by abdnh in https://github.com/ankitects/anki/pull/3014
* Show total review count when optimizing FSRS parameters by abdnh in https://github.com/ankitects/anki/pull/3027
* Tweak type-in-answer filter hack by lucasscharenbroch in https://github.com/ankitects/anki/pull/3010
* update FSRS to v0.2.0 by L-M-Sherlock in https://github.com/ankitects/anki/pull/2977
* Use card.reps - 1 when calculating fuzz by dae in https://github.com/ankitects/anki/pull/2933
* Use our translation of 'Discard' by abdnh in https://github.com/ankitects/anki/pull/2920
* Containerize anki-sync-server by jeankhawand in https://github.com/ankitects/anki/pull/3036
* Fix alert not appearing when FSRS parameters input is focused by abdnh in https://github.com/ankitects/anki/pull/3053
* Adjust HTML editor / add-on config editor font by abdnh in https://github.com/ankitects/anki/pull/3054
* Fix/set pretrain_only by fsrs_items by L-M-Sherlock in https://github.com/ankitects/anki/pull/3051
* Use `Card %d` for IO template names by BrayanDSO in https://github.com/ankitects/anki/pull/3049
* alert when the resp.weights is empty by L-M-Sherlock in https://github.com/ankitects/anki/pull/3061
* When cards become due on the congrats screen, switch to overview, not back into study.
* Adding a note to the import options to indicate that leech and marked tags will be removed if disabled by arbyste in https://github.com/ankitects/anki/pull/3067
* Fix full sync dialog failing to appear.
* Fix consolas not being used in editor.
* qt/aqt/__init__.py: Skip GL library workaround for FreeBSD by knobix in https://github.com/ankitects/anki/pull/3071
* fix: cloze_numbers_in_string treating `{{c0::}}` as valid by BrayanDSO in https://github.com/ankitects/anki/pull/3059
* Display deck names when deleting by escribapetrus in https://github.com/ankitects/anki/pull/3058
* Rename "Forget" to "Reset" (3078) by vasll in https://github.com/ankitects/anki/pull/3088
* Reset original id when cloning notetypes by RumovZ in https://github.com/ankitects/anki/pull/3089
* Use rmse in comparing parameters by L-M-Sherlock in https://github.com/ankitects/anki/pull/3087
* Fix summary string for notes that failed to be imported by RumovZ in https://github.com/ankitects/anki/pull/3092
* Disable ligatures in type-in highlighting by abdnh in https://github.com/ankitects/anki/pull/3093
* Sync-server: add option to store hashed passwords by laalsaas in https://github.com/ankitects/anki/pull/3083
* Refactor offline build process and add offline generation of Sphinx docs by antecrescent in https://github.com/ankitects/anki/pull/3082
* Replace deprecated method `chrono::NaiveDateTime::timestamp_millis` by ijqq in https://github.com/ankitects/anki/pull/3097
* Update optimal retention tooltip, and add a few extra translations.
* Possible workaround for sporadic toolbar height warning.
* "Full sync" -> "One-way sync".
* rename sm2 retention to historical retention by L-M-Sherlock in https://github.com/ankitects/anki/pull/3101
* Use "importing-added" string in importing detail table by snowtimeglass in https://github.com/ankitects/anki/pull/3104
* Fix mpv loadfile syntax change by kelciour in https://github.com/ankitects/anki/pull/3105
* Improve timer interval display (3096) by AntoineQ1 in https://github.com/ankitects/anki/pull/3100
* Fix incorrect search results after preset used.
New Contributors
* vaxr made their first contribution in https://github.com/ankitects/anki/pull/2918
* hnvy made their first contribution in https://github.com/ankitects/anki/pull/2935
* PLameiras made their first contribution in https://github.com/ankitects/anki/pull/2966
* knobix made their first contribution in https://github.com/ankitects/anki/pull/2963
* lucasscharenbroch made their first contribution in https://github.com/ankitects/anki/pull/2989
* cav71 made their first contribution in https://github.com/ankitects/anki/pull/2969
* nix6839 made their first contribution in https://github.com/ankitects/anki/pull/3003
* jeankhawand made their first contribution in https://github.com/ankitects/anki/pull/3036
* Foxy-null made their first contribution in https://github.com/ankitects/anki/pull/3060
* arbyste made their first contribution in https://github.com/ankitects/anki/pull/3067
* escribapetrus made their first contribution in https://github.com/ankitects/anki/pull/3058
* vasll made their first contribution in https://github.com/ankitects/anki/pull/3088
* laalsaas made their first contribution in https://github.com/ankitects/anki/pull/3083
* ijqq made their first contribution in https://github.com/ankitects/anki/pull/3097
* AntoineQ1 made their first contribution in https://github.com/ankitects/anki/pull/3100
**Full Changelog**: https://github.com/ankitects/anki/compare/23.12.1...24.04