25.07

ankitects/anki25.07Jul 4, 2025by dae

AI Summary

A major release introducing a new launcher system, Python 3.13, and FSRS-6 algorithm updates, marking the end of Qt5 support.

Key Highlights

  • Introduction of a new launcher for version management
  • Python 3.13 support
  • FSRS-6 updates with 'Grade Now' action and load balancing
  • Removal of Qt5 compatibility code
  • Intel Mac builds now require macOS 12+

Breaking Changes

  • New launcher system (Tools>Upgrade/Downgrade)
  • Qt5 builds are no longer provided
  • Minimum macOS version increased to 12.0
  • Linux builds now require glibc 2.36+

New Features

  • New Launcher
  • FSRS-6 updates (Grade Now, load balance)
  • Python 3.13 support
  • Card ID special field

Full Release Notes

## What's Changed

### New Launcher

The way Anki is packaged and distributed has changed:

- You can use the launchers below to download the latest Anki version, and update to newer versions/downgrade to old ones.
- You'll find a Tools>Upgrade/Downgrade menu item inside Anki to return the launcher.
- The oldest supported Anki version to install is 2.1.50.
- The Mac and Linux launchers support both AMD64 (Intel) and ARM64 (Apple Silicon) machines. The Windows installer is AMD64-only, but will run in emulation mode on ARM Windows.
- On Linux, glibc 2.36 or later is now required.
- Anki now ships with Python 3.13 (but has not yet bumped the minimum Python from 3.9).
- The new launcher still [has room for improvement](https://github.com/ankitects/anki/issues?q=state%3Aopen%20label%3A%22launcher%22).



### Notable FSRS/Scheduling changes

* FSRS-6 brings further algorithm improvements by @L-M-Sherlock in https://github.com/ankitects/anki/pull/3929. Updated mobile clients should be ready shortly.
* Add "grade now" action by @L-M-Sherlock in https://github.com/ankitects/anki/pull/3840 and @iamllama in https://github.com/ankitects/anki/pull/4055
* Support load balance and easy days when rescheduling by @L-M-Sherlock in https://github.com/ankitects/anki/pull/3815
* Support load balance and easy days in FSRS simulator by @L-M-Sherlock in https://github.com/ankitects/anki/pull/3829
* Add a 'max interval too low' warning. by @Luc-Mcgrady in https://github.com/ankitects/anki/pull/3847
* The optimizer uses a better approach for evaluating optimizations by @L-M-Sherlock in https://github.com/ankitects/anki/pull/3962
The Evaluate button has been replaced with an optional health check that runs during optimization by @Luc-Mcgrady in 
https://github.com/ankitects/anki/pull/4068 and https://github.com/ankitects/anki/pull/4047. If you wish to keep using the old evaluate, you can show the button with a debug console command: https://github.com/ankitects/anki/pull/4149. 
* Calculate accurate retrievability in card info by elapsed seconds by @L-M-Sherlock in https://github.com/ankitects/anki/pull/4034
* Desired retention warning improvements by @Luc-Mcgrady in https://github.com/ankitects/anki/pull/3995
* Set Due Date: Set interval to actual elapsed days when FSRS is enabled by @L-M-Sherlock in https://github.com/ankitects/anki/pull/4035
* Feat/Card ID special field by @Luc-Mcgrady in https://github.com/ankitects/anki/pull/4046
* Limit study time to hours in reviews graph by @user1823 in https://github.com/ankitects/anki/pull/4086
* Add search keyword to strip clozes beforehand by @iamllama in https://github.com/ankitects/anki/pull/4145


### Other Notable Changes

* Add IO mask colour fill tool by @iamllama in https://github.com/ankitects/anki/pull/4048
* Allow rotating IO masks by @iamllama in https://github.com/ankitects/anki/pull/3987
* Add an option to disable middle click to paste on Linux by @derivativeoflog7 in https://github.com/ankitects/anki/pull/3904
* Allow drag-dropping into plaintext editor by @iamllama in https://github.com/ankitects/anki/pull/3902
* Cache rendered mathjax to avoid stalling when editing plaintext by @iamllama in https://github.com/ankitects/anki/pull/3828
* Consider leeches in FSRS simulator by @Luc-Mcgrady in https://github.com/ankitects/anki/pull/3837
* Copy card debug info by @Luc-Mcgrady in https://github.com/ankitects/anki/pull/3801
* Improve handling of 'ignore cards before' by @Luc-Mcgrady in https://github.com/ankitects/anki/pull/3910
* Improve performance of nested clozes and increase limit to 10 levels by @iamllama in https://github.com/ankitects/anki/pull/3886
* Replace some means in Stats with medians by @user1823 in https://github.com/ankitects/anki/pull/3900

### Other Improvements

* Add a warning when there is a cloze in "back extra" and "text" is empty  by @rreemmii-dev in https://github.com/ankitects/anki/pull/3912
* Add Cmd+W close shortcut (on Mac) to more dialogs by @beyondcompute in https://github.com/ankitects/anki/pull/3905
* Add help modal to TR table by @GithubAnon0000 in https://github.com/ankitects/anki/pull/3874
* Add hook for day rollover by @jakeprobst in https://github.com/ankitects/anki/pull/3817
* Add hooks for comparing answers by @chel-ou in https://github.com/ankitects/anki/pull/3855
* Add min-height to fields by @GithubAnon0000 in https://github.com/ankitects/anki/pull/3922
* Add title for some dialogs and avoid hardcoding the text of the discard changes dialog by @BrayanDSO in https://github.com/ankitects/anki/pull/3846
* Add-ons Dialog: disable View Config/Page/Files buttons when clicking them would not lead to useful result by @beyondcompute in https://github.com/ankitects/anki/pull/3869
* Added translation contributor by @Danika-Dakika in https://github.com/ankitects/anki/pull/3820
* Center align rows in FSRS simulator by @GithubAnon0000 in https://github.com/ankitects/anki/pull/3882
* Chore/Simulator modal i18n by @Luc-Mcgrady in https://github.com/ankitects/anki/pull/3927
* Cleanup old TODO by @GithubAnon0000 in https://github.com/ankitects/anki/pull/3903
* Cloze button get disabled outside of cloze field by @Arthur-Milchior in https://github.com/ankitects/anki/pull/3879
* Comment for translators for "Daily load" by @sommerluk in https://github.com/ankitects/anki/pull/3887
* Comment for translators for statistics-total by @sommerluk in https://github.com/ankitects/anki/pull/3880
* Comments for translators about sort order by @sommerluk in https://github.com/ankitects/anki/pull/3831
* Debounce mathjax rendering to avoid stalling by @iamllama in https://github.com/ankitects/anki/pull/3827
* Don't recalculate remaining steps, conditionally by @graves in https://github.com/ankitects/anki/pull/3849
* feat: add title to some of the sync dialogs by @BrayanDSO in https://github.com/ankitects/anki/pull/3838
* Feat/simplified relearning steps logic with updated FSRS training API by @L-M-Sherlock in https://github.com/ankitects/anki/pull/3867
* Fine-tune load balancer by @Expertium in https://github.com/ankitects/anki/pull/3864
* Fix autoplay not being stopped on editor close if it interrupted another by @iamllama in https://github.com/ankitects/anki/pull/3915
* Fix broken window decorations on unpackaged GNOME instances by @krischerven in https://github.com/ankitects/anki/pull/3858
* Fix card layout editor crash when editing while reviewing  by @iamllama in https://github.com/ankitects/anki/pull/3814
* Fix cargo ignoring lockfile when building syncserver image by @iamllama in https://github.com/ankitects/anki/pull/3856
* Fix deck day limits incorrectly being carried over when importing by @iamllama in https://github.com/ankitects/anki/pull/3878
* Fix drag/drop breaking when editor is zoomed by @iamllama in https://github.com/ankitects/anki/pull/3916
* Fix error when middle clicking in editor on systems w/o global mouse selection by @iamllama in https://github.com/ankitects/anki/pull/3923
* Fix fields with `\n` being ignored when searching all fields w/o regex by @iamllama in https://github.com/ankitects/anki/pull/3943
* Fix flashing when opening the stats, empty cards or find dupes dialogs by @iamllama in https://github.com/ankitects/anki/pull/3928
* Fix panic when clearing today limits on the day collection was made by @iamllama in https://github.com/ankitects/anki/pull/3877
* Fix superfluous message when a deck is dragged to its parent by @krischerven in https://github.com/ankitects/anki/pull/3859
* Fix: Cloze cards missing "copy card info" button by @Luc-Mcgrady in https://github.com/ankitects/anki/pull/3811
* Fix: correct typo and adjust indentation in docstring by @babofitos in https://github.com/ankitects/anki/pull/3920
* fix: Task manager exception handling by @RisingOrange in https://github.com/ankitects/anki/pull/3839
* Fix/Calculate missing memory states on simulate by @Luc-Mcgrady in https://github.com/ankitects/anki/pull/3940
* Fix/incorrect initialization of SchedTimingToday in graphs/retrievability.rs by @L-M-Sherlock in https://github.com/ankitects/anki/pull/3857
* Fix/index out of bounds exception in Card Stats Data by @L-M-Sherlock in https://github.com/ankitects/anki/pull/3872
* Hide AverageForDaysStudied when studiedPercent = 100 by @user1823 in https://github.com/ankitects/anki/pull/3888
* Improve natural unit conversion for a time b/w 360 to 365 days by @user1823 in https://github.com/ankitects/anki/pull/3901
* Improve performance of stats revlog entries with memory state by @L-M-Sherlock in https://github.com/ankitects/anki/pull/3866
* Increase font size in mathjax preview for accessibility by @GithubAnon0000 in https://github.com/ankitects/anki/pull/3832
* Loosen csv metadata parsing by @iamllama in https://github.com/ankitects/anki/pull/3862
* Modify card rendering output to specify if rendered card is empty by @iamllama in https://github.com/ankitects/anki/pull/3890
* Move TR table upwards by @GithubAnon0000 in https://github.com/ankitects/anki/pull/3873
* NF: explaining the bridge between languages by @Arthur-Milchior in https://github.com/ankitects/anki/pull/3572
* NF: sligthly optimize cards.py by @Arthur-Milchior in https://github.com/ankitects/anki/pull/3870
* Persist tags when refetching csv metadata while importing by @iamllama in https://github.com/ankitects/anki/pull/3938
* Prevent accidental dragging of audio playback buttons and hint links by @beyondcompute in https://github.com/ankitects/anki/pull/3844
* Refactor: Make Load Balancer Optional Throughout Codebase by @YukiNagat0 in https://github.com/ankitects/anki/pull/3860
* Remove use of createClassComponent in mathjax-element.ts by @iamllama in https://github.com/ankitects/anki/pull/3919
* Return a copy of note type in ModelManager.get() by @abdnh in https://github.com/ankitects/anki/pull/3865
* Show "and others" at the end of the contributor list in the About dialog by @krischerven in https://github.com/ankitects/anki/pull/3863
* Some documentation and reduce copy/paste by @Arthur-Milchior in https://github.com/ankitects/anki/pull/3917
* Style: add shadow to graph tooltip by @ikkz in https://github.com/ankitects/anki/pull/3891
* Style: use consistent input styles in deck options by @ikkz in https://github.com/ankitects/anki/pull/3894
* Update FsrsOptions.svelte to add margin / gap between simulator buttons by @GithubAnon0000 in https://github.com/ankitects/anki/pull/3822
* Update my name in Anki's credits by @vtenfys in https://github.com/ankitects/anki/pull/3852
* Update NoteEditor.svelte to swap sticky pin and html view. by @GithubAnon0000 in https://github.com/ankitects/anki/pull/3821
* Update uninstall.sh to give feedback to the user by @GithubAnon0000 in https://github.com/ankitects/anki/pull/3834
* Use default flag name when flag is renamed to empty string by @mumtazrifai in https://github.com/ankitects/anki/pull/3826
* Use tilted (filled and unfilled) sticky icons in the cards editor by @GithubAnon0000 in https://github.com/ankitects/anki/pull/3825
* Update to FSRS-rs v3.0.0 (fix historic memory state) by @L-M-Sherlock in https://github.com/ankitects/anki/pull/3946
* Fix/FSRS-6 doesn't give <1d intervals & use log loss instead of RMSE(bins) by @L-M-Sherlock in https://github.com/ankitects/anki/pull/3948
* Update sorting by R for FSRS 6 by @user1823 in https://github.com/ankitects/anki/pull/3949
* Fix/No memory state cards have revlogs in reverse order on card stats screen. by @Luc-Mcgrady in https://github.com/ankitects/anki/pull/3951
* Fix/incorrect fallback of decay by @L-M-Sherlock in https://github.com/ankitects/anki/pull/3954
* Fix/missing-simulator-decay-for-FSRS-5 by @L-M-Sherlock in https://github.com/ankitects/anki/pull/3956
* Feat/CMRR uses simulate config by @Luc-Mcgrady in https://github.com/ankitects/anki/pull/3947
* Add a way to pass information from browser_will_search to browser_did_search without having it going to the backend by @JSchoreels in https://github.com/ankitects/anki/pull/3945
* Fix docs of note_fields_check to match changes made in PR #3912 by @rreemmii-dev in https://github.com/ankitects/anki/pull/3944
* add toggle for browser sidebar by @JL710 in https://github.com/ankitects/anki/pull/3953
* Close only “child” window (e.g. Preview) inside Browser on Cmd+W by @beyondcompute in https://github.com/ankitects/anki/pull/3913
* Add ellipsis to Grade Now by @L-M-Sherlock in https://github.com/ankitects/anki/pull/3970
* Add left margin to browser when sidebar is closed by @iamllama in https://github.com/ankitects/anki/pull/4040
* Add myself to about.py by @GithubAnon0000 in https://github.com/ankitects/anki/pull/4026
* Bump vite from 5.4.18 to 5.4.19 by @dependabot in https://github.com/ankitects/anki/pull/4018
* Change collection size too large error to add MB values and info about compressed vs. uncompressed. by @GithubAnon0000 in https://github.com/ankitects/anki/pull/3981
* Check if self.card.reps>0 before substracing 1 by @JSchoreels in https://github.com/ankitects/anki/pull/3966
* Clarify field separator being a guess when importing csv by @iamllama in https://github.com/ankitects/anki/pull/3996
* Clear notetypes cache on import by @abdnh in https://github.com/ankitects/anki/pull/3969
* Docs: correct reference for linux dockerfile by @thedroiddiv in https://github.com/ankitects/anki/pull/3982
* Don't use intraday relearning step as starting memory state by @mbrubeck in https://github.com/ankitects/anki/pull/3959
* Expose decay of Card object in Python by @L-M-Sherlock in https://github.com/ankitects/anki/pull/3985
* Fix "Open Image" being broken for filenames with certain reserved characters by @iamllama in https://github.com/ankitects/anki/pull/3986
* Fix broken support link by @GithubAnon0000 in https://github.com/ankitects/anki/pull/4019
* FIX diacritics being cutoff in input card templates by @GithubAnon0000 in https://github.com/ankitects/anki/pull/4049
* Fix DR not being in percent in the forgetting curve by @GithubAnon0000 in https://github.com/ankitects/anki/pull/4024
* Fix existing IO mask borders getting scaled by @iamllama in https://github.com/ankitects/anki/pull/3991
* Fix invalid rust-analyzer option by @abdnh in https://github.com/ankitects/anki/pull/3972
* Fix IO masks not saving when scaled by @iamllama in https://github.com/ankitects/anki/pull/4021
* Fix IO undo logic error by @iamllama in https://github.com/ankitects/anki/pull/4027
* Fix mathjax images erroneously appearing enlarged by @iamllama in https://github.com/ankitects/anki/pull/3957
* Fix mpv cleanup by @dae in https://github.com/ankitects/anki/pull/4042
* Fix new card sort order not reacting to changes in gather order by @abdnh in https://github.com/ankitects/anki/pull/4039
* Fix polygons closing when clicking existing masks while editing IO by @iamllama in https://github.com/ankitects/anki/pull/3990
* Fix pressing Ctrl+Shift+N in browser editor potentially discarding field changes by @iamllama in https://github.com/ankitects/anki/pull/4001
* Fix searching for non-blank adjacent wildcard fields by @iamllama in https://github.com/ankitects/anki/pull/4009
* Fix syncserver docker image build by bumping Dockerfile rust version by @KolbyML in https://github.com/ankitects/anki/pull/3993
* Fix unescaped deck names missing from tooltips when deleted by @iamllama in https://github.com/ankitects/anki/pull/3960
* Fix URL schemes translation by @sommerluk in https://github.com/ankitects/anki/pull/4004
* Fix/CMRR button style by @Luc-Mcgrady in https://github.com/ankitects/anki/pull/4043
* Fix/Invalid parameter counts saveable by @Luc-Mcgrady in https://github.com/ankitects/anki/pull/4052
* Fix/Layout shift on Card Counts button hover by @Luc-Mcgrady in https://github.com/ankitects/anki/pull/3971
* Fix/Leech suspended tooltip by @Luc-Mcgrady in https://github.com/ankitects/anki/pull/3992
* Fix/Prevent manual resize of params input by @Luc-Mcgrady in https://github.com/ankitects/anki/pull/4008
* Fix/remove incorrect invalid input check by @L-M-Sherlock in https://github.com/ankitects/anki/pull/3963
* Fix/SQL retrievability underflow by @Luc-Mcgrady in https://github.com/ankitects/anki/pull/3980
* Fix/stability doesn't increase after pressing good by @L-M-Sherlock in https://github.com/ankitects/anki/pull/3975
* Improve an Error Message by @brishtibheja in https://github.com/ankitects/anki/pull/3964
* improve the accuracy of the expected workload calculation by @L-M-Sherlock in https://github.com/ankitects/anki/pull/4056
* Include reset entries in dataset exported for research by @user1823 in https://github.com/ankitects/anki/pull/3998
* Make IO polygon markers centred and transparent by @iamllama in https://github.com/ankitects/anki/pull/3989
* Offload mpv callback registration to background thread to avoid UI bl… by @marvinkopf in https://github.com/ankitects/anki/pull/4038
* Optimize All -> Optimize All Presets by @Expertium in https://github.com/ankitects/anki/pull/4050
* Properly align label and radio input in the stats window by @GithubAnon0000 in https://github.com/ankitects/anki/pull/3977
* Remove dead code in reviews_for_fsrs by @mbrubeck in https://github.com/ankitects/anki/pull/3958
* Remove incorrect "double-click to expand" overlay label on small images in editor by @iamllama in https://github.com/ankitects/anki/pull/4030
* Remove percentages of x-axis in the answer buttons graph by @GithubAnon0000 in https://github.com/ankitects/anki/pull/3952
* Resize fsrs params input to fit content by @iamllama in https://github.com/ankitects/anki/pull/3999
* Resolve Python regex library warnings by @emmanuel-ferdman in https://github.com/ankitects/anki/pull/4012
* Restore richtext editor focus on mathjax overlay close event by @iamllama in https://github.com/ankitects/anki/pull/4016
* Style the fsrs params input by @iamllama in https://github.com/ankitects/anki/pull/3997
* Update backup restore message by @brishtibheja in https://github.com/ankitects/anki/pull/4005
* Update sync.ftl by @sommerluk in https://github.com/ankitects/anki/pull/4003
* Upgrade esbuild versions by @spiritualfather in https://github.com/ankitects/anki/pull/4011
* Use correct debug scripts folder by @abdnh in https://github.com/ankitects/anki/pull/3973
* Use non breaking spaces for names on about page by @Luc-Mcgrady in https://github.com/ankitects/anki/pull/4025
* Update default styles by @brishtibheja in https://github.com/ankitects/anki/pull/4060
* Fix/remove the lower limit of interval when set due date by @L-M-Sherlock in https://github.com/ankitects/anki/pull/4063
* Delay retention workload info display after FSRS optimization alerts by @Sunrongguo2008 in https://github.com/ankitects/anki/pull/4066
* style hr element by @brishtibheja in https://github.com/ankitects/anki/pull/4067
* Feat/Message at 100% progress for optimize by @Luc-Mcgrady in https://github.com/ankitects/anki/pull/4069
* Use abbreviations for days of week by @brishtibheja in https://github.com/ankitects/anki/pull/4077
* Fix/Missing CardID special field by @Luc-Mcgrady in https://github.com/ankitects/anki/pull/4078
* update to fsrs-rs 4.1.1 by @L-M-Sherlock in https://github.com/ankitects/anki/pull/4080
* Fix IO text labels' fill attr being saved even if default colour by @iamllama in https://github.com/ankitects/anki/pull/4083
* Comments for translators by @sommerluk in https://github.com/ankitects/anki/pull/4075
* Fix unescaped deck names potentially missing from overview by @iamllama in https://github.com/ankitects/anki/pull/4084
* Clear desired retention and decay when changing decks by @user1823 in https://github.com/ankitects/anki/pull/4095
* Update the default value of FSRS-6 decay in forgetting curve by @user1823 in https://github.com/ankitects/anki/pull/4096
* The remaining Qt5 compatibility code has been removed.
* include decay in ComputeMemoryStateResponse by @L-M-Sherlock in https://github.com/ankitects/anki/pull/4102
* Upgrade to nom 8.0.0 by @iamllama in https://github.com/ankitects/anki/pull/4105
* Fix/set due date on intraday learning card by @L-M-Sherlock in https://github.com/ankitects/anki/pull/4101
* Save dr and decay in card even if item is None by @user1823 in https://github.com/ankitects/anki/pull/4106
* Fix repeated ticks in reviews graph by @user1823 in https://github.com/ankitects/anki/pull/4108
* Fix arrow keys not working in tag editor on qt 6.8 by @iamllama in https://github.com/ankitects/anki/pull/4114
* Fix tag editor's focus outline appearing cut off by @iamllama in https://github.com/ankitects/anki/pull/4115
* Adjust top toolbar height on body class update by @iamllama in https://github.com/ankitects/anki/pull/4120
* Refactor FSRS data clearing into Card::clear_fsrs_data by @L-M-Sherlock in https://github.com/ankitects/anki/pull/4123
* Fix/Optimize button alignment by @Luc-Mcgrady in https://github.com/ankitects/anki/pull/4117
* Fix/unapplied scss by @Luc-Mcgrady in https://github.com/ankitects/anki/pull/4103
* Make PYTHONPYCACHEPREFIX point to an absolute path by @abdnh in https://github.com/ankitects/anki/pull/4111
* Fix/Add check_output_timestamps to PythonEnvironment by @Luc-Mcgrady in https://github.com/ankitects/anki/pull/4113
* Remove newline: 'Restore to default confirmation' by @david-allison in https://github.com/ankitects/anki/pull/4128
* Fix/update card.decay in card_state_updater by @L-M-Sherlock in https://github.com/ankitects/anki/pull/4127
* Fix deck options page being scrollable while simulator modal is open by @iamllama in https://github.com/ankitects/anki/pull/4133
* CHANGE right-click in the editor to show option to open folder in linux by @GithubAnon0000 in https://github.com/ankitects/anki/pull/4125
* FIX: Margin between icon was selectable but shouldn't be by @GithubAnon0000 in https://github.com/ankitects/anki/pull/4122
* Switch to Ruff by @abdnh in https://github.com/ankitects/anki/pull/4119
* Revert "Fix/unapplied scss" by @dae in https://github.com/ankitects/anki/pull/4136
* Add disclaimer to workload tooltip by @Luc-Mcgrady in https://github.com/ankitects/anki/pull/4131
* Followup to #4122 (make text selectable) by @GithubAnon0000 in https://github.com/ankitects/anki/pull/4132
* Only run "empty_filtered_deck" on filtered decks by @mbrubeck in https://github.com/ankitects/anki/pull/4139
* Add "Copy Debug Info" to `show_exception`'s dialog by @iamllama in https://github.com/ankitects/anki/pull/4146
* Comments for translators by @sommerluk in https://github.com/ankitects/anki/pull/4137
* Use system font for webviews instead of bootstrap font stack by @GithubAnon0000 in https://github.com/ankitects/anki/pull/4147
* Feat/Add globe to help tooltip by @Luc-Mcgrady in https://github.com/ankitects/anki/pull/4148
* Fix unique blank decks being created per row with empty deck column when importing csv by @iamllama in https://github.com/ankitects/anki/pull/4150

## New Contributors
* @mumtazrifai made their first contribution in https://github.com/ankitects/anki/pull/3826
* @RisingOrange made their first contribution in https://github.com/ankitects/anki/pull/3839
* @graves made their first contribution in https://github.com/ankitects/anki/pull/3849
* @beyondcompute made their first contribution in https://github.com/ankitects/anki/pull/3844
* @chel-ou made their first contribution in https://github.com/ankitects/anki/pull/3855
* @ikkz made their first contribution in https://github.com/ankitects/anki/pull/3891
* @rreemmii-dev made their first contribution in https://github.com/ankitects/anki/pull/3912
* @babofitos made their first contribution in https://github.com/ankitects/anki/pull/3920
* @derivativeoflog7 made their first contribution in https://github.com/ankitects/anki/pull/3904
* @JSchoreels made their first contribution in https://github.com/ankitects/anki/pull/3945
* @JL710 made their first contribution in https://github.com/ankitects/anki/pull/3953
* @mbrubeck made their first contribution in https://github.com/ankitects/anki/pull/3958
* @xuanyue202 made their first contribution in https://github.com/ankitects/anki/pull/3976
* @thedroiddiv made their first contribution in https://github.com/ankitects/anki/pull/3982
* @KolbyML made their first contribution in https://github.com/ankitects/anki/pull/3993
* @spiritualfather made their first contribution in https://github.com/ankitects/anki/pull/4011
* @emmanuel-ferdman made their first contribution in https://github.com/ankitects/anki/pull/4012
* @marvinkopf made their first contribution in https://github.com/ankitects/anki/pull/4038
* @Sunrongguo2008 made their first contribution in https://github.com/ankitects/anki/pull/4066

**Full Changelog**: https://github.com/ankitects/anki/compare/25.02.7...25.07