What's Changed
Platform Support
- Qt 5 builds are no longer provided.
- Intel Mac builds now require macOS 12+.
- Linux builds now require glibc 2.35+.
Features
- Add "Show image in folder" and "Open image" context menu actions for IO by @iamllama in #3779
- Add drag/drop support when adding IO images by @iamllama in #3776
- Add future projection to forgetting curve by @L-M-Sherlock in #3732
- Add support for copied image files when adding IO notes by @iamllama in #3733
- FSRS updates by @L-M-Sherlock in #3737
- Recognise and check for media referenced in tags by @iamllama in #3763
- Tweaks the Dockerfile by @omarkohl in #3714, #3716, etc
- When 'add' reveals the card window, it now resets deck/notetype like close+open. By @iamllama in #3756
- Add "Copy template as markdown" button. by @Luc-Mcgrady in #3719
Fixes
- Add "No reviews to optimize" message by @Luc-Mcgrady in #3610
- Add contributor to about.py by @gregorylearns in #3738
- Add margin to the bottom of forgetting curve by @L-M-Sherlock in #3805
- Add memorized option to FSRS simulation graph by @Luc-Mcgrady in #3655
- Add percentage to FSRS spinner by @Arthur-Milchior in #3679
- Add some unit tests by @user1823 in #3678
- Add support for html comments to template syntax by @iamllama in #3662
- Add translation strings for True Retention table by @rbrownwsws in #3745
- Added "preset" to "Optimize all" and "Optimize current" by @Expertium in #3778
- Added colour to simulator tooltip by @Luc-Mcgrady in #3692
- Added: SpinnerBox percentage symbol. by @Luc-Mcgrady in #3777
- Allow choosing filtered decks in stats by @iamllama in #3687
- Allow object to move to right edge and bottom edge and allow scroll of note fields when not using IO by @krmanik in #3630
- Apply gradient effect to forgetting curve by @OuOu2021 in #3604
- avoid warning by setting SYNC_PORT as ARG in Dockerfile by @omarkohl in #3675
- Cap preview cols to prevent stall when csv is parsed with the wrong delimiter by @iamllama in #3786
- Change font of debug console to Consolas by @user1823 in #3606
- Cleanup av_player on profile close by @kelciour in #3754
- Clear memory states during bulk action if item is None by @user1823 in #3717
- Comments for translators by @sommerluk in #3729
- Deck options without bridge by @Arthur-Milchior in #3571
- Delete y-axis titles for graphs by @Luc-Mcgrady in #3789
- Don't Exclude Suspended Cards from Retreivability Graph by @brishtibheja in #3665
- Don't treat manually scheduled cards with no reps as new cards by @user1823 in #3727
- Easy days: revisited by @jakeprobst in #3661
- Ensure data is stored in a volume in anki-sync-server Docker image by @omarkohl in #3674
- Fall back to SM2 relative order when memory state missing by @dae in #3771
- Feat/support new cards ignore review limit in simulator by @L-M-Sherlock in #3707
- Fix "Create copy" for IO notes by @iamllama in #3730
- Fix "discard changes" appearing even after resetting IO note by @iamllama in #3794
- Fix "discard changes" appearing on deck options by @iamllama in #3689
- Fix "Note Types" dialog moving down each time it is opened by @rbrownwsws in #3718
- Fix "Show in folder" on windows when path has spaces by @iamllama in #3641
- Fix ∷ in tags not being converted to :: when cut by @iamllama in #3791
- Fix a build error on Yarn 4 by @mikehardy in #3752
- Fix card info failing to load with qt5 by @iamllama in #3681
- Fix CardInfoPlaceholder not showing when card id is invalid by @iamllama in #3631
- Fix changes to tags not being reflected when editing in IO mode by @iamllama in #3768
- Fix content scrolling off screen when easy days labels too long
- Fix copying pasted images when adding IO being broken if filename has reserved chars by @iamllama in #3775
- Fix csv columns potentially being numbered wrongly in the header when exporting by @iamllama in #3690
- Fix deck button not clickable in stats screen for smaller screens by @Sawansunar56 in #3602
- Fix deck options button twitching on hover by @BlueGreenMagick in #3623
- Fix discard changes randomly being a noop on certain linux systems by @iamllama in #3781
- Fix easy days causing load balancer to disproportionately schedule graduates to the furthest day by @jakeprobst in #3643
- Fix EasyDays not applying defaults correctly in deck options by @iamllama in #3691
- Fix error when right-clicking empty space in update addons dialog by @iamllama in #3780
- Fix flaky tests by @abdnh in #3724
- Fix Fsrs simulator input problems by @Luc-Mcgrady in #3642
- Fix image field not being saved if a mask is created too quickly by @iamllama in #3706
- Fix IO editor always starting in "hide all, guess one" mode by @iamllama in #3709
- Fix issue in regex for underscored CSS imports by @abdnh in #3728
- FIX lang selection resetting to en_US for some langs by @GithubAnon0000 in #3744
- Fix menubar in fullscreen by @YukiNagat0 in #3710
- Fix missing buttons on bottom bar when window is narrow by @iamllama in #3653
- Fix mpv loadfile syntax change 2 by @kelciour in #3711
- Fix newer notes incorrectly being skipped when importing successive exports by @iamllama in #3693
- Fix numeric deck and notetype names being treated as ids when importing csv by @iamllama in #3748
- Fix reuse internal clipboard for primary selection pasting by @bpnguyen107 in #3613
- Fix segfault when closing Anki on Linux with "QT_DEBUG_PLUGINS=1" by @rbrownwsws in #3620
- Fix SpinBox and ParamsInput's rounding causing "discard changes" to appear in deck options by @iamllama in #3686
- Fix True Retention table clipping on overflow by @rbrownwsws in #3735
- Fix: Simulator Ignores New Cards Already Introduced by @Luc-Mcgrady in #3760
- Fix/dataPoint index is off by one day in simulator & remove moving average by @L-M-Sherlock in #3645
- Fix/disable FSRS short-term scheduler if w[17] or w[18] is zero by @L-M-Sherlock in #3788
- Fix/fallback to non-manual entry when first_of_last_learn_entries non found by @L-M-Sherlock in #3639
- Fix/forget to update memory state during relearning by @L-M-Sherlock in #3648
- Fix/FSRS Simulator Failure: min > max by @L-M-Sherlock in #3644
- Fix/last date of existing card should not be positive in simulation by @L-M-Sherlock in #3667
- Fix/re-optimize FSRS if short-term param is weird by @L-M-Sherlock in #3742
- Hide forgetting curve radio buttons when theres only one option by @Luc-Mcgrady in #3804
- Hide progress when CMRR is done by @bpnguyen107 in #3609
- Increase font size in debug console by @user1823 in #3743
- IO: Prevent text masks from flipping by @bpnguyen107 in #3672
- Issue 2563 - remove mhchem by @Delizald in #3705
- Make the "True Retention" table pretty by @rbrownwsws in #3640
- More accurate sorting by R by @user1823 in #3747
- Only update notetype/deck when reopening add window if no changes to discard by @iamllama in #3798
- Prevent simulate button spam by @Luc-Mcgrady in #3670
- Prevent stale frames from being drawn / always ensure up-to-date contents in webview by @Lolle2000la in #3668
- Reduce use of type casting by @wackbyte in #3723
- Refactor/Small refactoring on fullscreen and comments for clarification by @YukiNagat0 in #3721
- Remove broken editor image menu when on qt5 by @iamllama in #3685
- Remove hardcoded note/card colours from switch.py by @iamllama in #3629
- Remove infinite spinning icon for reset parameters dropdown and add a question mark by @bpnguyen107 in #3603
- Remove unfinished polygon when undoing and redoing in IO mode by @iamllama in #3759
- Remove use of window.location.href in CardInfoDialog by @iamllama in #3621
- replace localhost with 127.0.0.1 in syncserver Dockerfile by @omarkohl in #3673
- Replace use of window.postMessage in card info by @iamllama in #3646
- Revert Editor.set_note's signature change with an alternative approach for #3730 by @iamllama in #3736
- Set ForceDarkMode attribute in AnkiWebView for Qt 6.7 by @louwers in #3622
- Simulator legend tooltip by @Luc-Mcgrady in #3676
- Slider easy day gui by @Luc-Mcgrady in #3605
- Snap: keep LD_LIBRARY_PATH when in snap environment by @boukendesho in #3618
- Sort FSRSItems by RevlogId for training by @L-M-Sherlock in #3660
- Stop audio playback on editor close by @iamllama in #3666
- Translation comments for actiony-all-selected and actiony-any-selected by @sommerluk in #3658
- TTS: Fix text starting with "<" being treated as XML by @bpnguyen107 in #3651
- Tweak how the True Retention stats table displays numbers by @rbrownwsws in #3677
- typeanswer: [type:nc] - use nfkd again by @twwn in #3627
- Unpin svelte and update sveltekit-svg by @wackbyte in #3722
- Update Deck Options strings to clarify Timers by @Danika-Dakika in #3792
- update docker deps and docker docs by @niclasheinz in #3671
- update error message by @brishtibheja in #3612
- Update reviewer.py to prevent custom scheduler js from commenting out py code by @GithubAnon0000 in #3795
- Update to FSRS-rs v2.0.3 (fix simulator) by @L-M-Sherlock in #3784
- Update to Yarn 4 by @dae in #3772
- Use platform-native button layout in dialogs and messageboxes by @iamllama in #3725
New Contributors
- @Sawansunar56 made their first contribution in #3602
- @boukendesho made their first contribution in #3618
- @rbrownwsws made their first contribution in #3620
- @OuOu2021 made their first contribution in #3604
- @iamllama made their first contribution in #3629
- @sommerluk made their first contribution in #3658
- @omarkohl made their first contribution in #3675
- @niclasheinz made their first contribution in #3671
- @Delizald made their first contribution in #3705
- @YukiNagat0 made their first contribution in #3710
- @wackbyte made their first contribution in #3722
- @Danika-Dakika made their first contribution in #3792
- @Lolle2000la made their first contribution in #3668
- @GithubAnon0000 made their first contribution in #3744
- @mikehardy made their first contribution in #3752
What's Changed
Full Changelog: 24.11...25.02