Changes

⚠ After using the latest version, if you wish to open your collection with an earlier Anki release, please go to the File>Switch Profile menu item, and click on "Downgrade & Quit". If you skip this step, you may get an error message when opening your collection in an older Anki version, and you will need to return to this version, downgrade, then try again.

Changes in 23.12+

Change notes have moved to GitHub:

https://github.com/ankitects/anki/releases

Changes in 23.10

Release: 2023-11-01

Notable changes

  • Anki's version numbering scheme has changed to year.month(.patch).
  • Quite a few add-ons will need updates to support this release. Some porting notes are available.
  • Support for FSRS (which improves upon the scheduling provided by SM-2) is now integrated into Anki. You can compute the model weights directly inside Anki, and no longer need to use custom scheduling. If you have previously used FSRS, please delete the text in the custom scheduling section before enabling FSRS, and ensure the helper add-on has been updated to the 23.10 version if you are using it. By @L-M-Sherlock with help from @dae and @asukaminato0721 in https://github.com/ankitects/anki/pull/2633, #2654 and https://github.com/open-spaced-repetition/fsrs-rs.
  • Anki now has built-in support for creating image occlusions. Select the automatically-added "Image Occlusion" notetype in the add screen to use it. Glutanimate intends to update his add-on soon to work with the new system. By @krmanik, with help from @glutanimate, @hikaru-y, @abdnh and @dae in #2367, #2485, #2600, #2602, #2649, #2689, #2705 and more.
  • .apkg imports are able to merge changed notetypes, and can exclude scheduling data. By @RumovZ in https://github.com/ankitects/anki/pull/2612
  • Performance improvements to things like browser loading in the official builds.
  • You can now customize the video driver in Qt6 in the preferences, which can help to work around graphical issues. @abdnh in https://github.com/ankitects/anki/pull/2643
  • Add an option to stop the timer on answer by @abdnh in https://github.com/ankitects/anki/pull/2673
  • Allow searching for missing custom data properties by @abdnh in https://github.com/ankitects/anki/pull/2626
  • Support searching for custom data strings by @abdnh in https://github.com/ankitects/anki/pull/2634
  • Support for the v2 scheduler has been dropped.
  • .apkg exports now default to the new format.
  • New cards can now be gathered by deck then random note.

Smaller tweaks/fixes

  • Check DB now fixes invalid UTF-8 in tags.
  • Create Python entry points for creating and editing IO notes by @glutanimate in https://github.com/ankitects/anki/pull/2598
  • Add a backend method to add notes in bulk by @abdnh in https://github.com/ankitects/anki/pull/2659
  • Add ability to tab to DuplicateLink by @SteelColossus in https://github.com/ankitects/anki/pull/2646
  • Add profile name in profile deletion confirmation message by @chandraiyengar in https://github.com/ankitects/anki/pull/2722
  • Add Sphinx documentation generation functionality by @gsingh93 in https://github.com/ankitects/anki/pull/2720
  • added Translator by @platynowy in https://github.com/ankitects/anki/pull/2653
  • Allow full screen mode on new Qt6 drivers by @abdnh in https://github.com/ankitects/anki/pull/2660
  • Allow saving window position when window fullscreen on Qt 6
  • Better error messages when csv file is in the wrong format
  • Change “Delete Note” shortcut to cmd+backspace by @montyevans in https://github.com/ankitects/anki/pull/2614
  • Close import log page on error by @abdnh in https://github.com/ankitects/anki/pull/2639
  • Display a more friendly message when one or more add-ons fail at startup
  • Do not show [object Object] in import log by @abdnh in https://github.com/ankitects/anki/pull/2636
  • Don't rely on the presence of revlogs to decide whether deck configs should be imported.
  • Fix a11y issues with Badge component by @adeleke5140 in https://github.com/ankitects/anki/pull/2721
  • Fix an error when repositioning tags (thanks to @abdnh)
  • Fix an issue caused by adding a colon to the start or end of a deck name by @swektr in https://github.com/ankitects/anki/pull/2748
  • Fix answer button tooltips not reflecting configured shortcuts by @abdnh in https://github.com/ankitects/anki/pull/2657
  • Fix error when closing Find Duplicates screen early by @abdnh in https://github.com/ankitects/anki/pull/2669
  • Fix intermittent browser error triggered by an early resize event by @abdnh in https://github.com/ankitects/anki/pull/2671
  • Fix misleading warning when changing notetype from/to cloze by @abdnh in https://github.com/ankitects/anki/pull/2744
  • Fix ModuleNotFoundError: No module named 'distutils' by @virinci in https://github.com/ankitects/anki/pull/2723
  • Fix pasting from external programs not working after copying text inside the editor.
  • Fix reversed float left/right icons
  • Fix some issues with undo/redo in mask editor by @hikaru-y in https://github.com/ankitects/anki/pull/2649
  • Fix typo: notetypeId → noteId by @glutanimate in https://github.com/ankitects/anki/pull/2615
  • Fix unable to save field dialog if certain fields are deleted by @swektr in https://github.com/ankitects/anki/pull/2663
  • Fix unescaped HTML in type-in-the-answer by @abdnh in https://github.com/ankitects/anki/pull/2658
  • Implemented support to audio_did_seek_relative by @evandrocoan in https://github.com/ankitects/anki/pull/2632
  • Reduce shaking of bottom bar by @abdnh in https://github.com/ankitects/anki/pull/2734
  • Rework media syncing to make it a little faster, and avoid duplicate errors when your password has changed. https://github.com/ankitects/anki/pull/2647
  • Skip template checks in Fields screen by @abdnh in https://github.com/ankitects/anki/pull/2670
  • Support AVIF by @nihil-admirari in https://github.com/ankitects/anki/pull/2630
  • Support Qt.TextFormat.MarkdownText in aqt.utils by @abdnh in https://github.com/ankitects/anki/pull/2675
  • The "edit current card" window is now a main window, which fixes some shortcut keys on macOS. By @abdnh in https://github.com/ankitects/anki/pull/2732
  • Tooltips for CSV import and import page refactoring by @RumovZ in https://github.com/ankitects/anki/pull/2655
  • Tweak browser column labels to card type, note type by @Gustaf-C in https://github.com/ankitects/anki/pull/2751
  • Update to Qt 6.5.3 on Windows/Mac

Notes for devs

  • If you wish to build Anki and have installed n2 in the past, please run tools/install-n2 before building.

New Contributors

  • @montyevans made their first contribution in https://github.com/ankitects/anki/pull/2614
  • @nihil-admirari made their first contribution in https://github.com/ankitects/anki/pull/2630
  • @SteelColossus made their first contribution in https://github.com/ankitects/anki/pull/2646
  • @platynowy made their first contribution in https://github.com/ankitects/anki/pull/2653
  • @swektr made their first contribution in https://github.com/ankitects/anki/pull/2663
  • @meliache made their first contribution in https://github.com/ankitects/anki/pull/2684
  • @martinetd made their first contribution in https://github.com/ankitects/anki/pull/2703
  • @CarloQuick made their first contribution in https://github.com/ankitects/anki/pull/2718
  • @virinci made their first contribution in https://github.com/ankitects/anki/pull/2723
  • @chandraiyengar made their first contribution in https://github.com/ankitects/anki/pull/2722
  • @gsingh93 made their first contribution in https://github.com/ankitects/anki/pull/2720
  • @user1823 made their first contribution in https://github.com/ankitects/anki/pull/2741
  • @Gustaf-C made their first contribution in https://github.com/ankitects/anki/pull/2751

Changes in 23.10.1

Release: 2023-11-10

General:

  • Update all platforms to Qt 6.6. This change fixes Japanese input on macOS.
  • Fix Anki failing to run on older macOS versions.
  • The Linux Qt6 build requires a newer glibc, so older distros like Debian 11 won't work with it.
  • Fix syncserver failing to run in macOS packaged build.
  • Fix some potential security issues.
  • Fix 'creating backup' showing for longer than necessary.
  • Add tooltip to mask editor button.
  • Allow creation of empty filtered decks by @Gustaf-C in https://github.com/ankitects/anki/pull/2788
  • Add confirmation for upload when AnkiWeb collection determined empty.
  • Fix add-ons screen showing 'requires Anki >= 2.1.231000'.
  • Fix overflowing filenames displacing import button by @RumovZ in https://github.com/ankitects/anki/pull/2806
  • Fix Anki closing before 'your clock is wrong' message appears.
  • Hide "toggle masks" in "Hide One, Guess One" mode by @abdnh in https://github.com/ankitects/anki/pull/2817
  • Change tooltip strings for image occlusion center alignments by @snowtimeglass in https://github.com/ankitects/anki/pull/2815
  • Check video tags in media check.

FSRS:

  • Prompt user to save preset changes before they compute FSRS weights.
  • Fix panic when enabling FSRS with add-on-rescheduled cards.
  • Add an info box so the non-linear nature of desired retention can be seen
  • Improve presentation of log loss and RMSE by @user1823 in https://github.com/ankitects/anki/pull/2805
  • Rename FSRS weights to parameters
  • Handle stability < 0.5 in stability graph

Changes in 2.1.60 to 69

Changes in 2.1.66

  • Windows and Mac builds have been updated to the latest toolkit version, which will hopefully fix some crashes/bugs.
  • The v3 scheduler is now the default for new users.
  • When imports complete, a summary window is now shown (thanks to Abdo).
  • Use a different approach for detecting copy+paste from Anki fields, which may fix some crashes.
  • The minimalist/reduce motion toggles should no longer affect card content.
  • Media check now automatically extracts images that have been embedded in fields.
  • Handle importing of legacy AnkiDroid backups.
  • The built-in sync server can now be built without Python if you prefer.
  • Add keyboard shortcut for legacy stats (thanks to Luc).
  • Accessibility improvements (thanks to Derek and Kenny).
  • Fix addon update dialog showing twice (thanks to Rumo).
  • Fix bold toggle not working in certain circumstances (thanks to mmjang).
  • Align code blocks to left (thanks to shunlog).
  • Make weekday font smaller for Chinese locale (thanks to mmjang).
  • Improve performance of invalid ID fix in DB check.
  • Fix main window geometry/state not being restored in some cases (thanks to Abdo).
  • Handle invalid float mtimes in DB check.
  • Fix total note count not being logged in apkg import.
  • Report actual error when DbError occurs.
  • Fix two issues with MathJax editor (thanks to Hikaru).
  • Don't fail silently when an empty csv is imported.
  • Fix two issues that can cause editor fields to behave incorrectly (thanks to Hikaru).
  • When cards are in intraday learning queue, don't use original due.
  • Fix "Add-ons possibly involved" message never appearing on Windows (thanks to Abdo).
  • Add partial support for Hangul keyboard shortcuts during review (thanks to Christopher).
  • Disable add-on buttons when no field is focused by default (thanks to Abdo).
  • Fix toggleable editor button styles (thanks to Abdo).
  • Fixed a sporadic error in the review screen (thanks to mjuhanne).
  • Fixed an error that could occur when syncing between newer and older clients.
  • Fixed tab order in find&replace screen (thanks to Gabriel).
  • Various other minor fixes and behind-the-scenes changes.

Dev related:

  • Fix incorrect handling of locals in debug console (thanks to Rumo).
  • Add did-add-field-hook analogous to did-delete-field (thanks to 3ter).
  • Fix run-qt5.15.bat (thanks to Hikaru).
  • Support more mime types for add_extension_based_on_mime (thanks to BenYip).
  • Make set_config_help_action work with submodules (thanks to Abdo).
  • Exclude Fabric's large canvas dependency (thanks to Kavel).

Changes in 2.1.65

  • Default to current deck in csv import if settings allow it.
  • Disable Toggle Bury when nothing is selected (thanks to Abdo).
  • Fix broken window styling when installation path includes certain Latin1 chars on Windows.
  • Fix illegible tooltips when system in dark mode on some Linux installs.
  • Fix incorrect font sizes on X11 when fractional scaling in use.
  • If the old Anki uninstaller fails, allow installation to proceed.
  • Improve phrasing in dialog that asks which deck's options should be shown (thanks to chrissy0).
  • Fix some add-on installation errors not being reported (thanks to Abdo)
  • Add add-on installation hooks (thanks to Abdo).

Changes in 2.1.64

Functional changes:

  • The Windows installer no longer requires admin access (thanks to Martin). The first time you update, you'll need to run the installer again after uninstall completes.
  • Allow the user to configure answer keys in the preferences, fixing conflicts (thanks to Ren).
  • Preload embedded fonts to prevent flicker, and tweak wait time for image preloading (thanks to Hikaru).
  • Add the ability to search for FSRS scheduling properties, eg. prop:cdn:d>0.5 to search for the difficulty > 0.5.
  • Window positions, state and browser headers are now reset each time the Qt version changes, which should fix a number of crashes that users were reporting.
  • Add-on shortcuts will now override Anki defaults (thanks to Ren).

Fixes:

  • Fix media files being imported incorrectly when importing an .apkg file exported without support for older Anki versions.
  • Increase the number of supported fields in the editor (thanks to Hikaru).
  • Attempt to work around intermittent color setting failures in Qt6.5 on macOS.
  • Fix ugly text rendering on Wayland when using fractional scaling.
  • Fix inability to import csv when path contains single quote.
  • Show an error pop-up when csv import screen fails to load.
  • Don't disable animations on card templates when reduce motion is on.
  • Fix an error in the console when resizing windows (thanks to Austin)
  • Fix a panic when user sets a huge learning step.
  • Fix page scrolling when input box loses focus (thanks to Hikaru).
  • Fix failure to start on Windows when path contains non-Latin text.
  • Fix due/ivl prop queries not working in filtered decks.
  • Make some collection methods public in the Rust API (thanks to Joel).

Changes in 2.1.63

  • Add alternative review shortcuts (h,j,k,l,u) (thanks to Ren).
  • Add an option in the preferences to stop spacebar from rating card (thanks to Ren).
  • Prevent change in image aspect ratio in editor when images have an explicit size set (thanks to Matthias).
  • Fix custom sync URL not working with subpaths (thanks to XeR).
  • Fix fcitx5 failing to work in Linux Qt6 build.
  • Fix some buttons in the deck options screen being illegible when hovering.

Changes in 2.1.62

  • Update macOS/Linux builds to Qt 6.5, and update Windows build to Qt 6.4.3.

    • The minimum macOS version for the Qt6 build is now macOS 11.

    • If you are on Linux and don't have ANKI_WAYLAND set, you may need to install libxcb-cursor or Anki will fail to start. Eg on Debian/Ubuntu:

      sudo apt install libxcb-cursor0

  • Add an option to fully randomize reviews in the V3 scheduler.

  • Add a new option to the card templates screen to restore a notetype to the default fields/templates/styling.

  • Add clearer tooltip to hourly breakdown graph (thanks to Rumo).

  • Fix focus loss when closing HTML editor (thanks to Hikaru).

  • Prevent MathJax editor from closing when you selected text with the mouse and released the mouse button outside the window (thanks to Hikaru).

  • Pass original deck name to custom scheduling code, instead of filtered deck name.

  • When importing an .apkg where notetypes have changed, display a clearer message, and only if the notes in the incoming collection are newer.

  • Fix MathJax editor not being sized correctly (thanks to Hikaru).

  • Fix a flicker when dropdowns shown with reduce motion on (thanks to Hikaru).

Changes in 2.1.61

Improvements to the V3 scheduler:

  • Added a global option to stop the review limit from limiting new cards (thanks to Rumo).
  • You can now enable review burying without new burying again (thanks to Rumo). There are some caveats - please see the bury tooltips in the deck options.
  • Ensure good is at least previous+1 even if low hard factor set.

Other features/improvements:

  • You can now exclude certain fields from unqualified searches via the Fields screen (thanks to Abdo).
  • The tag area in the editor is now shown with a dropdown instead of a splitter (thanks to Matthias).
  • You can now adjust the current deck in the stats screen (thanks to yellowjello).
  • Add a button in the preferences to reset window sizes (thanks to Abdo).
  • Passing an invalid profile name on the commandline will now show profile picker instead of an error.
  • You can shift-click on a deck to select it as the current deck (thanks to Tobias).
  • You can now import decks with broken timestamps - they'll automatically be fixed on import (thanks to Rumo).
  • A DB check will now fix broken timestamps (thanks to Rumo).
  • Add time of date to browser date.
  • Allow Shift+Tab to move focus from tag area to last field (thanks to Hikaru).
  • Custom schedulers now have the deck name and random seed passed in to them, so they don't need to extract the info from the DOM (thanks to Rumo).
  • Improve debug console (thanks to Rumo).

Fixes:

  • Fix stats calendar incorrect due to daylight savings time (thanks to Kieran).
  • Prevent the top bar from hiding in the stats page as you scroll down (thanks to Fabricio).
  • Reduce motion is now on by default, as it fixes an issue with the bottom bar failing to appear for some users.
  • Fix new limit in v3 decreasing more than it should (thanks to Rumo).
  • Fix current tag text not being saved when changing note via shortcut key (thanks to Hikaru).
  • Fix tags popover becoming separated from the tags field (thanks to Fabricio).
  • Ensure the bottom buttons aren't displayed until the custom scheduling code has finished running (thanks to Rumo).
  • Refresh study screen if the user toggles the v3 scheduler (thanks to Rumo).
  • Fix notetypes screen not being closable after adding a notetype on Mac.
  • Check for division by zero when calculating browser aspect ratio, which fixes an issue with i3 (thanks to Ben).
  • Fallback to Wayland if X11 is not available (thanks to Ingemar).
  • Tweaks to the build scripts to make packaging in distros easier (thanks to Euan).
  • Fix silent file save failures and bad default save path in Flatpak (thanks to Jack).
  • Fix HTML editor sometimes not properly sized when opening editor (thanks to Hikaru).
  • Fix error showing if user clicks in sidebar before it's rendered.
  • Fix backup creation for collections > 1 GiB (thanks to Rumo).
  • Fix black on grey minimalist buttons in Qt5 (thanks to Daniel).
  • Fix black on grey deck options on Qt5 (thanks to Daniel).
  • Export static references from sound tags (thanks to Rumo).
  • Fix packaged audio tools path on Windows (thanks to Abdo).
  • Fix a case where 'reduce motion' and 'minimalist mode' were switched (thanks to Daniel).
  • Fix panic with invalid sync server URL with port (thanks to Daniel).
  • Fix double scrollbars in deck options (thanks to Fabricio).
  • Fix images with non-Latin text and commas failing to display.
  • Fix editor text possibly being transfer to different notetypes (thanks to Fabricio).
  • Improve hover appearance of buttons (thanks to Matthias).
  • Fix inability to activate search in graphs screen on Android (thanks to yellowjello).
  • Fix an issue building on Windows (thanks to Kieran).

Changes in 2.1.60

If updating from 2.1.57 or earlier, please see the important note in the 2.1.58 change notes.

  • Add button to tag notes with missing media (thanks to Rumo).
  • Fix slow editor startup for users with lots of fields (thanks to Hikaru).
  • Fix a regression in 2.1.58 that broke TTS add-ons (thanks to Rumo).
  • Fix HTML editor hiding when shown by default (thanks to Fabricio).
  • Fix some widgets not indicating they're disabled (thanks to Matthias).
  • Fix deck options selector not updating the current entry sometimes (thanks to Fabricio).
  • Fix type box losing focus when switching IMEs (thanks to Hikaru).
  • Fix 'toggle bury' not updating for automatically-buried cards.
  • Improvements to lifecycle handling for add-ons accessing Svelte components (thanks to Matthias).

Changes in 2.1.50 to 59

Changes in 2.1.59

Due to a packaging problem, this release was yanked.

Changes in 2.1.58

This release fixes an issue in 2.1.57 that caused cards and deck presets to be reset to the default ease, if you exported a .colpkg with compatibility with older clients enabled, or used the downgrade and quit option, then opened the collection again. For the former issue, this occurred to the collection you were exporting from, and not just the .colpkg file. If you were affected by this, running the following in the debug console after updating should restore your cards to the ease they were at when you last reviewed them, if they were not reviewed after the problem occurred. Please make a backup before proceeding.

updated = 0
for cid, old, new in mw.col.db.all("select id, factor, (select factor from revlog where cid=cards.id order by id desc limit 1) as factor2 from cards where type=2"):
  if new and old != new:
    card = mw.col.get_card(cid)
    card.factor = new
    mw.col.update_card(card)
    updated += 1
print("updated", updated)

It will print the number of updated cards.

https://docs.ankiweb.net/misc.html#debug-console

Other changes in this update:

Custom sync server

  • You can now customize the network timeout in the sync settings, which may be required if you have a large collection and/or a slower device.
  • Maximum sizes are no longer enforced when downloading from custom sync servers.

Type in the answer

  • Fix type answer comparison being collapsed when extra characters in input.
  • Revert to blanking out missed chars in provided text, like older releases.
  • Wrap expected text in code block when no answer provided.

Importing

  • When importing csv files, you can now limit duplicate matching to the deck cards are in (thanks to Rumo).
  • Support UTF-8-BOM when importing CSV (thanks to Rumo).
  • Duplicate handling policy can be specified in the csv file header (thanks to Rumo).

Scheduling

  • It is no longer possible to enable burying of reviews without also burying new cards, as Anki excludes buried cards up front, and needs to do so in a particular order to avoid errors during review.
  • Fix v3 deck-specific limits affecting the deck list/study screen in v2 mode.
  • Show custom data from third-party schedulers in stats screen.
  • Allow burying cards in the browser (thanks to Kaben).

Fixes

  • Switch to a new Windows TTS implementation, which unblocks future upgrades, and should perform better (thanks to Rumo).
  • Work around a startup error some users were receiving on Windows.
  • Fix currently-selected preset not being indicated in deck options (thanks to Fabricio).
  • Fix error shown after toggling full screen.

Changes in 2.1.57

More UI improvements/fixes thanks to Matthias, including:

  • The top toolbar area can now take on the color/background of the main window.
  • The top toolbar appears more subtle during review.
  • A new option in the preferences to automatically hide the top and bottom bar during review.
  • A new option in the preferences to enable a "minimalist" mode that makes the UI more compact/less fancy.
  • A new option in the preferences to switch between native styling and the Anki theme (on Mac/Linux).
  • The preferences screen has been redesigned to be easier to navigate.

Syncing has also been updated:

  • Tweaks to the sync protocol that should be transparent when syncing with AnkiWeb, but that will break syncing with third-party servers that haven't been updated yet.
  • The sync server bundled with Anki has been updated, and now supports syncing media as well. More information is available on https://docs.ankiweb.net/sync-server.html.

Other changes:

  • Switch to a different library for handling type-in-the-answer comparisons, which should give more reliable results, and not crash with certain inputs (thanks to Rumo).
  • Fix introduced:x not working correctly when negated (thanks to Rumo).
  • Fix ctrl+enter not working when importing screen first opened.
  • Fix image dimensions not being correctly constrained (thanks to Hikaru).
  • Fix incorrect total/average in added graph.
  • Fix newlines not appearing when importing a csv file with HTML disabled.
  • Fix quotes preventing field descriptions from showing.
  • Fix spaces not handled properly when entering text around MathJax (thanks to Hikaru).
  • Fix toolbar add-on breakages and introduce toolbar tray layout & API (thanks to Aristotelis).
  • Fix type-in-the-answer not supported nested cloze deletions.
  • Increase delay when adjusting clipboard, which may improve compatibility on some systems.
  • Update Windows/Linux builds to Qt 6.4.2.
  • Fix non-Latin text wrapping in deck options dropdown (thanks to Fabricio).
  • Fix outer whitespace not being trimmed in type answer.
  • Fix the future due graph counting learning cards on the wrong day.
  • Fix deck options screen allowing invalid/blank input.
  • HTML is now escaped in the deck list.

Dev related:

  • Make it easier to override node/protoc binaries during a build (thanks to Mani)

Changes in 2.1.56

Released 2023-01-09.

If updating from Anki 2.1.49 or below, please see the 2.1.50 change notes first.

New features/improvements:

  • Cloze deletions can now be nested inside other cloze deletions (thanks to TRIAEIOU).
  • Inactive cloze deletions can now be styled with .cloze-inactive (thanks to TRIAEIOU).
  • Graphs in large collections now load approximately twice as quickly.
  • Add-on config help is now shown in a webview (thanks to Abdo).

Fixes:

  • Fix error popping up 12 hours after starting Anki on macOS and some Linux machines.
  • Fix unreadable text when searching in sidebar.
  • Fix fcitx not working on Linux Qt6 package.
  • Fix old graphs failing to appear.
  • Fix dark mode display issues on macOS/Qt5.
  • Don't display a 'timestamps in the future' message after a bulk import.
  • Fix cloze buttons being disabled in MathJax editor.
  • Fix images not being constrained to window width when image shrinking disabled.
  • Fix incorrect macOS minimum version in Qt5 build.
  • Fix lack of highlight for marked cards in day mode.
  • Fix pop-up menu in editor sometimes flashing (thanks to Hikaru).
  • Fix some issues entering text via IME around MathJax area (thanks to Hikaru).
  • Fix some regressions with the graphs when saving to a PDF.
  • Fix truncated text on some buttons.
  • Fix two mpv issues on Windows (thanks to Kelciour).
  • Tweak focus highlight of some widgets (thanks to Abdo).

For devs:

  • Improve web building/reloading experience (thanks to Aristotelis).
  • Fix an issue building the code with the latest git version.
  • Fix aqt type completion not working with PyPI wheel.

Changes in 2.1.55

Released 2022-12-16.

Known issues:

  • The old shift+click graphs screen is broken in this release. The regular graphs screen works correctly.

Lots of UI improvements, thanks to Matthias:

  • The theme has been reworked, especially on Windows/Linux.
  • A number of screens like the deck list, editor, deck options and graphs have been re-styled.
  • Added an option for fields to show the HTML editor by default.
  • Fields can now be collapsed/expanded. The animation can be disabled in the preferences.
  • HTML tag auto-close can now be toggled via settings button in editor.
  • Improve layout for RTL languages.
  • The editor in the browse screen can now be shown on the right.
  • The tags area can now be collapsed/expanded (thanks also to Henrik).
  • On macOS, dark mode now uses the default macOS styling; you can optionally force behavior like the other platforms with the following in the debug console: mw.pm.set_force_custom_styles(True).
  • Many other small tweaks.

V3 scheduler improvements, thanks to Rumo:

  • Custom scheduling now supports per-card data, enabling things like FSRS.
  • Decks can now specify daily limits independently of the deck preset. You can either specify a permanent override, or one that will reset when the next day comes around.
  • The Hard button on the first step is now capped to a maximum of 1 day greater than Again.
  • You should no longer see strange behavior when changing learning steps while cards are in learning.

Import/export improvements, thanks to Rumo:

  • The new import/export code is now the default.
  • When scheduling is included, filtered decks are no longer converted to normal decks.
  • When a deck is specified in a CSV import, it's now created if missing.
  • Keep content of unmapped fields when importing CSV.
  • Various other fixes.

Other improvements:

  • introduced:x now ignores manual reschedulings (thanks to Rumo).
  • Anki now opens to the previously-active profile (thanks to Sam).
  • Card info now refreshes as a card is reviewed (thanks to Rumo).
  • Close MathJax editor when Esc is pressed (thanks to Abdo).
  • Double-click on an editor pane to equally split the two sides (thanks to Aristotelis).
  • Improve Anki's error handling, including some more informative error messages (thanks to Rumo).
  • Improvements to the MathJax editor (thanks to Henrik).
  • Make dvipng use transparent background by default (thanks to gnnoh).
  • Preload images on the front side of a card to reduce pop-in (thanks to Kelciour).
  • Remember previous choices in reposition dialog (thanks to Sam).
  • The build system now uses ninja instead of bazel.
  • The MathJax preview can now be turned off.
  • The maximum answer time can now be set below 30 seconds.
  • The way your typed text is compared with the correct answer has been tweaked.
  • The zoom level is no longer reset when moving between screens.
  • Updated to Qt 6.4 on Windows/Linux.
  • You can now control whether images are automatically shrunk or not in the editor.

Fixes:

  • Add screen can be closed with Cmd+W on macOS (thanks to Sam).
  • Add tooltip to More button (thanks to Hikaru).
  • Cmd+Shift+C cloze shortcut should be more responsive on macOS now.
  • Fix {{CardFlags}} not working with flags 5-7
  • Fix an error showing when making network connections on macOS after leaving Anki open for a few days.
  • Fix browser sidebars appearing in wrong order in RTL mode (thanks to Abdo).
  • Fix certain installed TTS voices on Windows causing errors.
  • Fix daily counts being included in apkg import.
  • Fix fields sticking in add screen when they shouldn't (thanks to Henrik).
  • Fix flicker when remapping imported notetype field (thanks to Rumo).
  • Fix font size not being removed when pasting between fields.
  • Fix incorrect header text alignment in Qt 6.3.1 (thanks to Rumo).
  • Fix non-admin users having trouble with Anki on macOS.
  • Fix reviewer shortcuts being inaccessible due to IME
  • Fix scheduler change not reflected after normal sync.
  • Fix scrolling with keys/keyboard event listeners not working on answer side (thanks to Hikaru).
  • Fix sidebar appearing as small window in some cases (thanks to Hikaru).
  • Fix slow field pin/unpin with large notetype (thanks to Rumo).
  • Fix styling of pop-over arrows (thanks to BlueGreekMagick).
  • Fix the UI getting stuck at startup when multiple pop-ups appear (thanks to Sam).
  • Fixed an issue with the night theme class (thanks to BlueGreenMagick).
  • Fixed indent/outdent shortcuts not working properly.
  • Fixed inverted ctrl+right/left handling in RTL fields again (thanks to Abdo).
  • Fixed shortcuts to select all/delete tags not working (thanks to Hikaru).
  • Fixed some issues with dragging tags/decks onto other tags/decks (thanks to Abdo).
  • Improve handling of invalid UTF-8 in DB check.
  • Improve the appearance of the note/card switch toggle (thanks to Aristotelis).
  • Make it easier to read add-on errors (thanks to Abdo).
  • Possible fix for error when copying text in editor
  • Preserve background color when copy+pasting between fields.
  • Preserve background-color when pasting external content in light mode.
  • Suppress the "Unknown error" message that the web toolkit can output on Windows.
  • Various other fixes.

Changes in 2.1.54

Released 2022-06-24.

A new CSV importer & exporter, thanks to Rumo:

  • Shows a preview based on the selected field separator.
  • Column mapping includes field text for reference.
  • Multiple decks and notetypes can now be imported/exported at once, as columns can be mapped to deck or notetype name.
  • Supports exporting and importing a unique identifier for a note, to use instead of a matching first field. This removes the need for the 'add note id' add-on.
  • Extends the header syntax so that files can specify metadata such as the desired field separator, and the mapping of fields.
  • The new functionality is not enabled by default, and can be enabled with a checkbox in the preferences screen. This also enables the new apkg import/export code introduced in 2.1.52. If you use the Special Fields add-on, you will need to disable this option in order to use the add-on.

Update to Qt 6.3.1:

  • Fixes complex-language input (eg Japanese, Hindi, etc) on macOS being flaky.
  • Fixes unwanted text when copying from the review screen on Windows.
  • Fixes a startup failure with certain Linux keyboard configurations.
  • Due to a change in Qt, you will need to reconfigure your columns in the browse screen after updating.

Fixes & improvements:

  • Accept .zip extension when importing add-ons (thanks to Abdo).
  • Add support for getting light/dark mode status with latest freedesktop standard (thanks to Bart).
  • Editor API improvements (thanks to Henrik).
  • Field descriptions in the editor are now shown inline, instead of in a tooltip (thanks to Matthias, Henrik and Hikaru).
  • Fixed a rounding issue when describing time intervals of a year or more.
  • Fixed an error that occurred after a one-way download fetched a collection with a different scheduler version enabled.
  • Fixed desktop hanging when attempting to add a new notetype in KDE (kwin).
  • Fixed flag names not updating after sync until Anki restarted.
  • Fixed inability to enter underscore in tags area on some keyboard layouts (thanks to Henrik).
  • Fixed undo history being cleared and error showing when double-tapping delete in Browse screen.
  • Provide a way for the review screen to support drop events (thanks to Abdo).
  • Other minor fixes and improvements.

Changes in 2.1.53

Released 2022-05-28.

Editor Improvements

  • Rework image resizing (thanks to Henrik). Images expand to the editor width by default now, and images that are resized for the editor will remain that way if you switch fields, or navigate to a different note and back.
  • Existing height constraints on images are stripped when resizing (thanks to BlueGreenMagick).
  • The MathJax editor now provides buttons/shortcuts to cloze-delete selected text (thanks to Henrik).
  • MathJax preview now hides cloze markers.
  • Style tags are no longer stripped when editing (thanks to Henrik).
  • <br> tags in MathJax are now handled correctly (thanks to Henrik).
  • MathJax in the review screen now supports mathtools, and available packages in editor and review screen match (thanks to Henrik).
  • Move focus into HTML editor when hiding normal editor (thanks to Henrik).
  • Image tags now have the alt property preserved when pasting.

Other Improvements

  • Fixed the Qt6 version crashing on some machines.
  • Custom study no longer includes child decks in available card count in v3 scheduler.
  • Fixed an error sometimes appearing in the browser when deleting notes (thanks to Rumo).
  • Fixed automatic backups popping up progress window when Anki minimized.
  • Fixed cards not being generated after template edits.
  • Fixed deck options top bar disappearing as you scroll down.
  • Fixed duplicate Anki icons appearing in dock on macOS.
  • Fixed duplicate first character in certain ibus configurations (thanks to wisherhxl).
  • Fixed future due graph incorrectly including new cards.
  • Fixed initially-incorrect tooltip position in graphs (thanks to BlueGreenMagick).
  • Fixed some MathJax directives failing to render in editor.

Changes in 2.1.52

Released 2022-05-13.

Editor Improvements

  • Ctrl/Cmd+A in tag editing area now selects all tags (thanks to BlueGreenMagick).
  • Fixed backspace sometimes removing multiple images at once (thanks to Henrik).
  • Fixed copying and pasting MathJax on Windows (Qt6).
  • Fixed handling of < and > symbols in MathJax (thanks to Henrik).
  • Fixed intermittent editor loading failures when add-ons have injected a large amount of code.
  • Fixed pasting of local files of unsupported types that contain spaces (thanks to Abdo).
  • Fixed some formatting being lost when copying between fields on Windows (Qt6).
  • Fixed various issues with tag editing (thanks to BlueGreenMagick and Henrik).
  • Pressing tab on the last field now moves focus to tag area (thanks to Henrik).
  • Reduce size of editor buttons on Windows/Linux (thanks to Henrik).
  • Tags copied from the tag editor are no longer joined together when pasted into the add tags/remove tags dialogs (thanks to Henrik).
  • The Qt5 Mac build now caps tag autocomplete matches to 10, as showing more is extremely slow in the old toolkit version.

Other Improvements

  • Update Qt to 6.3.0, which fixes slow loading of large images, and inertial scrolling on macOS.
  • Fixed an error when previewing cards and selecting multiple cards (thanks to Rumo).
  • Fixed Anki needing to close when invalid modification times encountered by the browser on Windows.
  • Fixed colpkg imports not being cancellable (thanks to Rumo).
  • Fixed current working directory changing on apkg export.
  • Fixed custom browser font not being honored (Qt6).
  • Fixed custom study applying the previously-input limit, instead of the current one.
  • Fixed due graph showing wrong date for review cards in a filtered deck with rescheduling disabled.
  • Fixed grey background in type answer text + dark mode (thanks to Matthias).
  • Fixed v3 scheduler allowing one extra card when review limit reached (thanks to Rumo).
  • Lists on cards are now aligned to the left by default (thanks to Matthias).
  • Removed the highlight on the Show Answer and Good buttons.
  • Reset page zoom when moving between different screens.
  • The Qt6 Linux build now defaults to X11/XWayland instead of Wayland due to some remaining issues; you can force-enable Wayland with ANKI_WAYLAND=1.

For Developers

  • The field_filter hook can now check if it's running for the question or answer side (thanks to Abdo).
  • Added a av_player_will_play_tags hook (thanks to Abdo).
  • Make it easier to search in fields programmatically (thanks to Abdo).

New Apkg Import/Export

This build also includes a new implementation of apkg importing and exporting, thanks to Rumo. Some advantages:

  • Undo/redo is now supported.
  • Faster imports (especially for decks with a lot of note content).
  • Support for older clients can be optionally disabled, which results in smaller apkg files, and faster imports.
  • Flags are removed when scheduling is excluded.

The new functionality is hidden behind a feature flag, and not active by default. You can try it out by using mw.pm.set_new_import_export(True) in the debug console. To revert to the old behaviour, replace True with False.

Things to note:

  • This is new code that has received limited testing so far, so please use File>Create Backup before trying it out. Any testing/feedback you can provide would be appreciated.
  • While active, it is not currently possible to import/export files other than apkg/colpkg.
  • The Special Fields add-on will not work while this functionality is enabled.

Changes in 2.1.51

Released 2022-04-25.

Changes:

  • Reviews in the V3 scheduler can now optionally be sorted by relative overdueness (thanks to Abdo).
  • Remember original card position when using 'set due date' on a card (thanks to Rumo).
  • Improve editor startup time, especially with many fields (thanks to Henrik).

Fixes:

  • Fixed compatibility with older macOS versions.
  • Fixed an issue that was breaking some add-ons when running on Windows without using anki-console.bat
  • Anki now closes the Browse screen before full sync or colpkg import/export, so it doesn't show errors.
  • Automatically re-enable disabled add-ons when user explicitly reinstalls them, and improve conflict handling (thanks to Aristotelis).
  • Fixed an issue with the search history when clicking on items in the sidebar (thanks to Rumo).
  • Fixed card layout screen opening too wide if card template name was long (thanks to Sam).
  • Fixed compatibility with 'card info during review' and similar add-ons.
  • Fixed formatting being turned off when pressing shift (thanks to Henrik).
  • Fixed full sync not being triggered when changing sort field.
  • Fixed illegible calendar buttons in dark mode on Mac/Linux.
  • Fixed stats PDF being illegible when saving in dark mode after scrolling down (thanks to Luka).
  • Use <b> and <i> formatting tags, instead of <strong> and <em>.

Changes in 2.1.50

Released 2022-04-09.

Platform-Specific Changes

Windows:

  • Windows 10 or 11 is required. If you are still using Windows 7 or 8, 2.1.49 is the last build that will install on your system.

macOS:

  • Anki now supports Apple Silicon natively. If you're on a newer Mac with an M1 processor, pick the qt6-apple download for better performance and battery life.
  • The Qt6 x86 build requires macOS 10.14.4
  • The Qt5 x86 build requires macOS 10.13.4.

Linux:

  • The Linux builds need zstd to decompress, eg:
sudo apt install zstd
tar xaf anki-2.1.50-linux-qt6.tar.zstd
  • The packaged version requires glibc 2.28 or later.
  • A wheel is now provided for ARM64 Linux, and requires glibc 2.31 or greater. See this page for instructions on using it.
  • Both Fcitx4 and Fcitx5 support is now bundled.

Qt6

Please see the notes for your platform:

Scheduler Changes

The V1 scheduler is no longer supported. If you have not yet updated to V2 or V3, you will be prompted to update when you attempt to review cards in 2.1.50.

This release includes a number of improvements to the V3 scheduler, mostly thanks to Rumo:

  • Intermediate deck limits now affect their children. Please see the scheduler page for more info.
  • When new cards are answered, Anki now records their original position. When you later export a shared deck without scheduling, the original positions will be restored.
  • The Forget action now gives you options to restore the original card position, and to reset the card's lapse and repetition counters.
  • The gathering and sorting of new cards has been reworked, trading a little performance for more intuitive behaviour:
    • It is now possible to sort notes or cards randomly at gather time, ensuring a random selection is taken from all available new cards.
    • The gather order and sort order options have been simplified, but should offer the same functionality as before. Please check your deck options after upgrading, as some users may need to adjust their display order settings to match what they were using before.
  • The overview screen now shows how many cards will be buried.
  • Added a separate option to control burying of interday learning siblings.
  • Fixed interday learning siblings not being buried during review, causing them to reappear later after actions like an edit.
  • If you have more than 2 learning steps, after the first step, Hard repeats the previous delay, instead of being the average of the previous and next step.
  • When a Hard learning step exceeds a day, it is now rounded to a full day, so the delay does not vary depending on the time of day you answer.
  • Fuzz is applied more evenly now, especially with smaller intervals.
  • Fixed new cards not decrementing the review limit, which could lead to more new cards appearing after the review limit was reached.
  • Review cards and new cards are now interspersed more evenly.
  • When using Custom Study to extend deck limits in the V3 scheduler, parent/child limits of the selected deck are no longer adjusted.

Editor Changes

Most of these changes are thanks to Henrik.

  • A redesigned editing area, and a redesigned tag editor.
  • MathJax has a live preview.
  • HTML source and rendered text can be viewed at the same time.
  • The HTML editor now matches the current Anki theme.
  • Images can be resized within the editor.
  • Fields can now have an optional description/tooltip assigned to them (thanks to Matthias, Henrik & Rumo).
  • The "remove formatting" button now offers a choice of what to remove.
  • Adjust color picker shortcut, and apply color when different color selected.
  • Reduced editor button size on Windows/Linux (thanks to Matthias).
  • Fixed IME input after pressing tab.
  • Fixed media files not being inserted at cursor position on Windows.
  • Cloze shortcut correctly positions cursor.
  • Added a separate cloze button to repeat the current cloze.
  • Lots of behind-the-scenes changes and fixes. Because of the extensive changes, some add-ons that modify the editing screen will have broken (see the developers section below)

New Features

  • Anki will now switch to day or night mode automatically depending on your system settings. You can force day or night mode in the Preferences screen. (thanks in large part to Rumo).
  • Reworked backup handling (mostly thanks to Rumo):
    • Backups are created much faster than they were previously.
    • Anki can now create backups periodically. The default is every 30 minutes; you can adjust this in the preferences screen.
    • There are new options in the preferences to control the number of daily, weekly and monthly backups you'd like to retain.
    • The File menu now has an option to create a backup immediately.
    • Because the backup storage format has changed, backups created with 2.1.50 will not be importable into older Anki versions.
  • Reworked .colpkg import/export (thanks to Rumo):
    • When exporting, you can optionally target Anki 2.1.50+. When doing so, imports and exports are faster, and media files will be compressed, but the resulting .colpkg will not be readable by older Anki clients.
    • Collections are now checked for corruption when importing.
  • An option to ignore accents in searches by default has been added to preferences screen (thanks to Abdo).
  • The Card Info screen now updates automatically as you change to a different card (thanks to Rumo).
  • Added a View menu to the main window and browse window (thanks to Rumo). The view menu provides options to zoom in and out, and to toggle a full screen mode. Due to technical issues, the full screen mode is not currently available on Windows when graphics acceleration is enabled.
  • A new TTS tag format that allows you to combine extra text and multiple fields, such as [anki:tts lang=en_US]Here is {{Field1}} and {{Field2}}[/anki:tts] (thanks to Rumo). There are no plans to deprecate the old TTS syntax - either can be used.
  • Added an option to add/remove sidebar tag to selected notes (thanks to Rumo).
  • Be smarter about mapping existing text to new fields when switching notetypes in the Add screen (thanks to Abdo).
  • Apkg files can now be dragged on the main window to import them (thanks to Abdo).
  • Added a "Create Copy" option in the browse screen and review screen, to copy selected note's contents into the Add window (thanks to Rumo).
  • You can now search for tags by regular expression (thanks to Rumo). One use for this is locating notes that are tagged with a parent tag, while not matching ones tagged with parent::child: tag:re:^parent$.
  • When switching Anki versions, an add-on update check is run on startup (thanks to Rumo).
  • Make links with target=_blank work (thanks to Danish).
  • Added "Forget Card" action to review screen (thanks to Araceli).
  • Added Belarusian and Odia to available languages in the preferences.
  • Added a silent option (/s) for the Windows uninstaller (thanks to Patric).
  • Added tooltips to some browser columns (thanks to Rumo).

Other Improvements

  • Added a "Learn" label to the learning counts in the deck list.
  • Added shortcut keys for creating lists and indentation (thanks to Rumo).
  • Allow longer maximum answer times in the deck settings (thanks to Bruce).
  • Behind-the-scenes improvements to the deck and notetype selectors (thanks to Sam).
  • Change cards/notes toggle to Ctrl/Cmd+Alt+T to avoid conflict on macOS.
  • Changed the "Previous Card Info" shortcut to avoid a conflict with language input.
  • Colpkg imports now always require a full sync.
  • Deck creation in the custom study screen has been reworked, and now supports undo properly (thanks to Rumo).
  • Don't show error when gsettings exists but does not have a GNOME theme set (thanks to Spooghetti420).
  • Don't show error when Windows color scheme setting is missing (thanks to qxo).
  • Fall back on regular file deletion when no recycling bin/trash folder is available on Linux.
  • Filtered decks in 'order added' now sort by card template.
  • Fix deck name not updating after deck/notetype renamed (thanks to Hikaru).
  • Fixed "tag duplicates" possibly operating on stale data (thanks to Ren).
  • Fixed a number of issues with the preview window (thanks to Hikaru).
  • Fixed AltGr triggering Ctrl+Alt shortcuts on Windows (thanks to Rumo)
  • Fixed an error loading the old deck options screen when using Python 3.10.
  • Fixed an error that could appear when clicking on the sidebar (thanks to qxo).
  • Fixed an error that could occur in the browser when switching profiles (thanks to Hikaru).
  • Fixed an error when an installed TTS voice on Windows supported multiple languages (thanks to Rumo).
  • Fixed an error when exporting a collection with media files in it with very old modification dates (thanks to gnnoh).
  • Fixed an intermittent error when building on Windows.
  • Fixed error shown when double-tapping answer buttons on the v3 scheduler.
  • Fixed errors and display issues when flagging and undoing in the review screen.
  • Fixed external scripts being executed out of order (thanks to Hikaru).
  • Fixed field content sometimes spilling outside container (thanks to Hikaru).
  • Fixed flicker in review screen when referencing external js, and preload css files (thanks to Hikaru).
  • Fixed incorrect card count in timebox after undo (thanks to Abdo).
  • Fixed new card position appearing as a date when cards were in preview (thanks to Abdo).
  • Fixed newly-added deck not being selected in the Add screen (thanks to Hikaru).
  • Fixed quotation of "and" and "or" in search (thanks to Rumo).
  • Fixed some parts of the media handling code matching more HTML tags than it should have (thanks to Brayan).
  • Fixed sound failing to play after exporting a collection (thanks to Rumo and Kelciour).
  • Fixed the deck list showing up blank in collections with many expanded decks.
  • Fixed the main window sometimes failing to load properly when Anki starts (which could lead to blank windows, a giant sync icon, etc).
  • Fixed unwanted <div> being left behind when deleting field contents (thanks to Hikaru).
  • Fixed various memory leaks (thanks to Rumo and Hikaru).
  • Flip sidebar location in RTL mode (thanks to Abdo).
  • Hide "open new window" action in GNOME (thanks to Fusion future & Felipe)
  • Improve search highlight color in templates screen (thanks to Abdo).
  • Improved display of the card info screen (thanks to Rumo).
  • Improved localization of large numbers in the graphs, and various layout tweaks (thanks to Vova).
  • Improved performance with large selections in the Browse screen (thanks to Rumo).
  • Improvements to the Change Notetype screen (thanks to Matthias).
  • Performance improvements for searching through many fields with a wildcard search (thanks to Rumo).
  • Randomized card positions now start at 1, which avoids a corner case in filtered deck scheduling.
  • Reduced flicker when opening browser in night mode (thanks to Rumo).
  • Report correct count in timebox screen with v2 scheduler (thanks to Abdo).
  • Rows with database inconsistencies in the browse screen now prompt you to use "check database" instead of saying they were deleted (thanks to Rumo).
  • Some behind-the-scenes code improvements (thanks to Sam).
  • Support autoplay in audio tags again (thanks to Andreas).
  • Support Markdown inside HTML tags in config.md (thanks to Abdo).
  • The 'future due' graph no longer shows learning cards in a filtered deck as being due a long time ago.
  • The note: and card: searches no longer do a substring match (thanks to Rumo).
  • The Add Cards screen will no longer allow accidental triggering of main window shortcuts when it is open on a Mac (thanks to Rumo).
  • The calendar graph uses consistent coloring as years are changed (thanks to Ryan).
  • The custom study screen no longer (sometimes incorrectly) limits the amount you can extend the daily limits by.
  • The top and bottom bars will no longer zoom in/out, but the main area and editors can be zoomed in and out (thanks to Rumo).
  • Truncate deck names in the deck list if they are too long (thanks to Sachin).
  • Tweaks to the sidebar icons (thanks to Henrik).
  • Updated translations - thanks as always to all the translators.
  • Use white menubar on Windows (thanks to Rumo).
  • Various behind-the-scenes fixes (thanks to Arthur).
  • Various improvements to right-to-left display (thanks to Abdo).
  • When Anki encounters an issue with a card template, it now provides a link to a help page with more information (thanks to Rumo).
  • Numerous other fixes and contributions, thanks to Rumo, Henrik, Abdo, Matthias, Evandro, Arthur, Soren, BlueGreenMagick, Yoshi, Jakub, Gesa, blue-putty, stopendy, TheFeelTrain and zjosua.

For Developers

  • Anki now requires Python 3.9.
  • Anki contains some compatibility shims that should allow many add-ons written for PyQt5 to work with PyQt6 as well (thanks to Aristotelis). These shims will not remain forever, so it is recommended that you update your add-ons to be compatible with Qt6 without shims. The two main breakages are the renaming of PyQt5 to PyQt6 (you can support both by importing from aqt.qt instead), and the requirement that enums are qualified.
  • If you’re using Qt Designer to generate UI files, the Qt5 and Qt6 versions need to be generated and bundled separately if you want to support both at once.
  • PyQt6 does not support the Qt resource system (pyrcc was removed), so Anki now uses a different approach, and urls like :/icons/foo.jpg should become icons:foo.jpg.
  • Henrik has spent a lot of time working out how to smoothly provide an API for the editor, and investigating how we can provide types to make targeting the API easier. This has required a number of refactorings, and some add-ons that were accessing the editor will have broken in this update. While the code is not set in stone yet, hopefully we're getting there. An example of using the latest API is available here: https://github.com/hgiesel/anki_new_format_pack/commits/master
  • The way Anki is packaged has changed. Most of the standard library should be available now. If you notice any problems importing standard libraries that previously worked, please let us know.
  • The aqt package no longer depends on PyQt, as either version 5 or 6 is supported. You can specify the major version you want when installing - eg pip install 'aqt[qt6]'
  • manifest.json now supports a 'homepage' argument (thanks to Abdo)
  • mw.progress.timer() should now be passed a parent argument, as the previous default of using mw prevents the timers from being freed after they are no longer active. If you want a permanent timer, pass mw in as the parent.
  • Improved Python code completion/type handling in VS Code (thanks to Rumo).

Changes in 2.1.40 to 49

Changes in 2.1.49

Released 2021-10-26.

  • Fixed cards not being automatically unburied when v3 scheduler enabled.
  • Fixed incorrect learning count in v3 scheduler when interday learning cards were queued (thanks to Rumo).
  • Work around an AnkiDroid inconsistency causing deck config to be reset if options edited on AnkiDroid.
  • Fixed a memory leak in the Preview screen (thanks to Hikaru).
  • Fixed an issue copying filenames from the Check Media screen (thanks to Abdo).
  • Fixed deck changing when toggling sticky fields (thanks to Abdo).
  • Fixed invalid default column in notes mode in the Browse screen (thanks to Abdo).
  • The bury command ignores suspended cards now (thanks to Rumo).
  • Anki no longer migrates any files from the old ~/Documents/Anki and ~/Anki folders.
  • Increased number of card templates shown in card templates screen dropdown (thanks to Evando).
  • Added a new example Dockerfile (thanks to Jakub).
  • Handle spaces in Linux install location (thanks to lolilo).
  • Work around a PyQt error on Python 3.10.
  • Other minor changes.

Changes in 2.1.48

Released 2021-09-21.

  • Add "Previous Card Info" action to review screen (thanks to Evandro).
  • Fix flag names not updating on profile switch (thanks to Rumo).
  • Hide "Rename with Parents" for top-level items (thanks to Rumo).
  • "Add Field" action now correctly handles multi-word font names.
  • Fix newline being added when coloring text (thanks to Henrik).
  • Fix incorrect system font when running Anki in some non-English languages.
  • Fix learning count sometimes jumping to a large number in the v3 scheduler.
  • Another fix for Reposition command not working on buried/suspended cards.
  • Preserve focus when changing notetype in the Add screen.
  • Wayland can now be optionally enabled with an env var in the packaged builds, but remains off by default due to a number of bugs.
  • Fix an error message that could appear when deleting notes (thanks to Rumo).
  • The card templates screen no longer defaults to filling empty fields when opened from the Add screen (thanks to BlueGreenMagick).
  • Miscellaneous other fixes.

Changes in 2.1.47

Released 2021-08-29.

Changes to the v3 scheduler:

  • Interday learning cards are included in the learning count again, instead of the review count.
  • Interday learning cards are still affected by the review limit. Interday learning cards are fetched first, then reviews, and finally new cards.
  • Filtered decks with rescheduling disabled now log reviews, so the reviews will appear in your graphs.
  • Added an option to sort reviews by ascending/descending ease.
  • Fixed an issue where an error message could appear after undoing/redoing a mix of reviews and other changes.
  • Fixed custom scheduling not working.

Other changes:

  • The "timebox finished" message is now shown on card answer, instead of after revealing the next card. This should also address an issue where the message popped up outside of review.
  • Added shortcut for Forget in the Browse screen.
  • Fixed an error being shown when there was no current deck.
  • Fixed incorrect quoting in duplicate search (thanks to Abdo).
  • Fixed deck options inverting the "replay question when showing answer" option.
  • Fixed an issue with ampersands in the Add Cards history button (thanks to Arthur).
  • Fixed handling of audio/video tags (thanks to Hikaru).
  • Fixed errors playing audio when computer was slow to respond (thanks to Kelciour).
  • Fixed preferences screen not updating undo menu, and causing an error when subsequently reviewing a card in the v3 scheduler.
  • Fixed case changes being ignored in tag rename.
  • Fixed error shown when DB check run on corrupt collection.
  • Fixed deck options prompt showing the default deck, instead of the correct one.
  • Fixed reposition command ignoring suspended cards.
  • Fixed answer button highlight on Windows (thanks to Henrik).
  • Fixed calendar graph day labels showing incorrectly in some timezones.
  • Improved validation of add-on package names (thanks to BlueGreenMagick for the report and initial fix).

For add-on developers:

  • The Svelte components Anki exports should now work correctly in add-ons, provided they exclude Svelte when bundling.
  • WithShortcut is now also available.

Changes in 2.1.46

Released 2021-08-04.

  • Fix duplicate text when pasting with Ctrl+Shift+V (thanks to Henrik).
  • Remember last colors in editing window (thanks to Henrik).
  • Show flag and mark icons in preview window (thanks to Hikaru).
  • Center first match when searching in sidebar (thanks to Abdo).
  • Added F9/Shift+F9 shortcuts for sticky fields, and increase opacity (thanks to Henrik).
  • Fixed starting ease specified in deck options not being used by v3 scheduler.
  • Fixed learning cutoff not updating during review, and some learning cards remaining at the end of review in the v3 scheduler.
  • Fixed Change Notetype not mapping fields correctly when count differed.
  • The congrats screen now updates periodically again.
  • Fixed Redo menu item showing Undo action name.
  • Fixed notetype selection in the import screen.
  • Fixed error in overview/congrats screen when there is no current deck.

Changes in 2.1.45

Released 2021-07-30.

Undo handling:

  • Most actions now support multiple undo steps. You can change a card template, delete some notes, bury a card, then undo each of those steps if you wish.
  • Actions that support multiple undo steps will now save the changes immediately, meaning that if Anki crashes, the changes you made in the last few minutes will no longer be lost.
  • Most undoable actions can now be redone, so you can undo an accidental undo.
  • Actions that don't support the new undo handling (eg, Check Database), will clear the undo history.
  • Add-ons will clear the undo history if they modify the database directly, or use routines that don't support undoing. There are some new routines available to add-ons to make operations undoable, but add-ons may need to be updated to use them.

Scheduling changes:

  • A new scheduler is available, with a number of improvements. Please see the 2021 scheduler page for more information.
  • The deck list now shows the learning count separately.
  • On new collections, the v2 scheduler is now the default.
  • Set due date uses the deck's configured starting ease (thanks to cyphar).

Browser changes, mostly thanks to Rumo:

  • The sidebar now has two modes. The default allows clicking on items to search for them. The other mode allows you to select multiple items at once, so you can drag & drop or delete multiple items.
  • The browse screen can now be toggled between showing cards, and showing notes.
  • When showing notes, some columns will show an aggregate over all the cards of a note.
  • Added an introduced:x search to locate cards first studied in the last x days.
  • Column rendering has been moved into the backend, and will be faster than before (but is still limited by the speed of the graphics toolkit).
  • A fair bit of the browser code has been changed, and some add-ons like the "Advanced Browser" add-on will need to be updated to support the new approach.
  • New tag icons and associated backend work (thanks to Henrik).
  • Added an option in the Preferences screen to customize the starting search text (eg, to start with "deck:current").
  • More reliably scroll to the current card.
  • When opening the Browse screen with an active study card, the whole deck is now shown.
  • Added 3 new flag colours.
  • Flags can now be renamed in the sidebar.
  • Horizontal scrolling in the browse screen is less jumpy.
  • Sidebar items can be dragged onto the Saved Searches area to add them as a favourite.

Editor changes, mostly thanks to Henrik:

  • A new editor toolbar implementation, with improved icons and handling.
  • The editor now provides bullet and numbered list buttons.
  • The editor now provides buttons to control text alignment and indent.
  • Sticky fields can now be toggled on/off from the editing screen.
  • A new API is available for add-ons, and the existing API should continue to work.
  • The HTML editor is now shown inline, and supports syntax highlighting, and showing opening/closing tags.
  • Warn user when they attempt to use cloze markers inappropriately (thanks to Rumo).

State handling:

  • When you make changes, the user interface should update more consistently now. Adding a new tag to a note will update the sidebar in the Browse screen for example, and when you review a card that is shown there, the columns will update.
  • The Browse screen no longer refreshes a search automatically. When you make a change, the column text may update, but the number of rows will not change. Deleted cards show "(deleted)" until you search again.
  • The main window no longer shows a "waiting for editing to finish" screen. When you make changes such as editing a note, the main window will dim, and will automatically refresh when you return to it.

The deck options screen has been reimplemented:

  • (Re)learning steps are now shown with units, eg 10m or 4d.
  • Deck options are now shown on one scrollable page.
  • Extra help is available for most options.
  • It is easy to see at a glance which options have been changed from the default, and individual options can be reverted to the default setting.
  • Warnings will be shown for some common issues (eg, review limit too low compared to new cards).
  • Some of the more advanced options have been moved to a separate "Advanced" section.
  • The old options can be accessed with a Shift+click, since it will take a while for add-ons to be updated to support the new screen. A new API is available, thanks to Henrik.
  • The deck description is now accessible via a button in the overview screen, instead of via the deck options.

Other features:

  • An updated Change Notetype implementation, that can match fields by name, and allows you to map a source field to multiple destination fields in order to clone a field.
  • Pre-load images on answer side (thanks to Hikaru).
  • The [...] in cloze deletions is now read as "blank" by TTS (thanks to Rumo).
  • The Find&Replace option in the Browse screen can now be used on tags as well.
  • Added a Card Info option to the review screen.
  • When opening deck option from the study screen, you'll now be asked which deck you want if the card is in a subdeck.
  • You can now choose which add-ons you want to update (thanks to BlueGreenMagick).
  • Support system SSL certs on Linux.
  • Extra checks are now done when updating a card template, such as detecting when a cloze notetype is missing a cloze directive, or two templates have identical question sides (thanks to Rumo).
  • Support Ctrl+Numpad Enter to add cards.
  • Added night mode styling to 'type in the answer' box, and improve legibility of comparison.
  • Sidebar search now scrolls to first match (thanks to Abdo & Rumo).
  • F3/F4 in card layout screen go to next/previous template (thanks to Evandro).

Fixes:

  • Custom study now limits the tag selection to 100 tags or fewer, to prevent errors caused by exceeding database limits.
  • Fixed an issue compiling on recent Python 3.9 installs.
  • Fixed audio getting stuck when pausing near end (thanks to kelciour).
  • Fixed building on linux-arm64 (thanks to qubist-pixel-ux).
  • Fixed Card Info screen not ignoring manual rescheduling when calculating the average time.
  • Fixed crash when pressing the copy shortcut with no active selection.
  • Fixed current review card sometimes changing when making edits.
  • Fixed deck options tooltip appearance (thanks to Matthias).
  • Fixed escaping of hyphens in searches (thanks to Rumo).
  • Fixed field pin status being forgotten when opening Cards screen (thanks to Henrik).
  • Fixed incorrect card count when removing multiple templates.
  • Fixed incorrect font on Windows (thanks to Kelciour).
  • Fixed resource leak in sound code (thanks to Kelciour).
  • Fixed some instances of a flash when revealing answer on cards with images.
  • Fixed text with single quote not being escaped in export (thanks to Ryan).
  • Fixed various links to the manual (thanks to cherryblossom000).
  • Fixed red duplicate background being included in copy+paste (thanks to Hikaru).
  • Fixed flags not being excluded on export (thanks to Alex).
  • Force x11 mode when the packaged build is run on a system that tells Qt to use Wayland, as Wayland is not currently supported by the packaged build.
  • Numerous behind-the-scenes improvements from Henrik and Rumo.
  • Other fixes and improvements, thanks to Abdo, Glutanimate, Arthur, Shaun, hkr and others.
  • Strip invalid unicode from filenames in media check.
  • Performance improvements and other miscellaneous fixes.

A big thank you to everyone who contributed, including people who contributed translations, and those who helped test out the beta releases and provided feedback.

Add-on authors, there are some notes on porting add-ons to 2.1.45 available.

Changes in 2.1.44

Released 2021-05-04.

  • Search text is no longer automatically quoted/interspersed with ANDs.
  • Fix two backslashes being treated as one in MathJax.

Changes in 2.1.43

Released 2021-04-03.

  • The reviewing screen will now wait for up to 100ms for images to load before showing, and waits until images have been loaded before scrolling to the answer.
  • The default fade-in on the review screen has been removed.
  • Fix DB check incorrectly identifying an issue after lapsing a card with a non-zero interval % in the V1 scheduler.
  • Fix editing toolbar being initially active (thanks to Henrik).
  • Fix some error messages (thanks to Rumo).
  • Fix expand/collapse triggering click in sidebar (thanks to BlueGreenMagick).
  • Update translations, thanks to the translators.
  • Fix "Forgot Card" message.
  • Fix deck list not updating after deleting.

Changes in 2.1.42

Released 2021-03-10.

  • Fix sync downloads failing when temp folder on separate partition.
  • Fix RTL fields (thanks to Abdo).
  • Fix issues with field focusing and caret positioning (thanks to Henrik).
  • Strip comments when pasting HTML (thanks to Abdo).
  • Don't forget CSV delimeter when canceling dialog (thanks to Benjamin).
  • Fix stale caches after rolling back to a checkpoint (thanks to Rumo).

For build hashes, please see the GitHub releases page.

Changes in 2.1.41

Released 2021-03-07, build 312fa278.

Browser improvements:

  • Tags now show in a tree (thanks to Abdo).
  • Added a search bar to the sidebar (thanks to Abdo).
  • New context menu actions to rename or remove tags and their children, rename decks, manage notetypes, and rename/remove saved searches (thanks to Abdo and BlueGreenMagick).
  • The preview button in the browse screen has moved into the editing area (thanks to Henrik).
  • With the improved sidebar, a number of options have been removed from the Filter button.
  • The remaining items in the Filter button have been moved into the sidebar, and the Filter button removed.
  • Tags and decks can now be dragged and dropped in the sidebar.
  • Each section can now be expanded/collapsed.
  • "Due" now shows only cards due that day.
  • Added "Overdue" item.
  • Click on Decks to show whole collection.
  • Click on Flags to show any flag.
  • Click on Tags to show all non-empty tags.
  • Added "Untagged" under Tags.

Editing improvements:

  • <br> tags will now be used by default instead of the previous <div> tags, which solves some issues with multiple lines in cloze deletions and MathJax (thanks to Henrik).
  • The tags field in the editor now autocompletes from anywhere in a tag name, not only the start.
  • Invalid field content can no longer spill out into the editing area (thanks to Henrik).

Search improvements:

  • Searches are now rewritten into a canonical format (eg one two becomes "one" AND "two") (thanks to Rumo).
  • Search error messages are now much more specific (thanks to Rumo).
  • is:learn, is:due and prop:due now handle more cases, such as suspended cards (thanks to Henrik).
  • Added prop:pos search to search for new card position (thanks to Abdo).
  • Added a shortcut to replace part of a search with a different search (eg changing the selected deck) (thanks to Rumo).
  • Support resched:x for searching for cards that were manually rescheduled in x days (thanks to Henrik).
  • Support prop:rated/resched to search for rated/rescheduled cards over specific time periods (thanks to Henrik).
  • Filtered decks can now be created from a browser search, and vice versa (thanks to Rumo).
  • Filtered deck screen now has a link to show cards not matched by search (thanks to Rumo, Abdo).
  • Better ergonomics for developers (thanks to Rumo).

Graph improvements:

  • A number of the graphs can now be clicked on to search for the cards displayed by the graph (thanks to Henrik).
  • The starting day of week can now be altered in the Calendar graph (thanks to Henrik).
  • The Card Counts graph now supports toggling separate suspended/buried counts (thanks to Henrik).
  • The intervals and ease graphs now covers more cases, such as suspended cards (thanks to Henrik).
  • Place less emphasis on outliers in the Calendar graph (thanks to Henrik).
  • Ignore manually scheduled cards in hour graph.

Scheduler improvements:

  • The V2 scheduler no longer applies parent review limits to child decks. Previously the limits were inconsistently applied, which could lead to the deck list not reflecting the actual number of cards you'd receive when you clicked on a deck. AnkiMobile and AnkiWeb have been updated to match this behaviour, and AnkiDroid will also be updated soon. Using 2.1.41 in conjunction with older clients will not cause any problems when syncing, but you may find the deck list/review counts do not match.
  • The V1->V2 upgrade process no longer resets cards that are in learning, or removes cards from filtered decks.
  • Users on the old scheduler will now see a message at the top of the deck list prompting them to update to the Anki 2.1 scheduler.
  • There is no option to downgrade to the V1 scheduler anymore, though you can still do so by downgrading to an older Anki version first.

Reworked the Reschedule tool:

  • Split into separate "Forget" and "Set Due Date" actions
  • "Set Due Date" defaults to not adjusting the card interval.
  • Changed the "Delete Tags" shortcut; Ctrl+Shift+D now changes the due date.
  • Added the action to the review screen as well.
  • Input now remembered.

Other changes:

  • A basic sync server is now built into Anki. It does not yet support media. Docs are in the docs/ folder of the source tree.
  • The title bar on Macs will now turn dark when night mode is activated.
  • Deck descriptions of the congratulations screen can be enabled by turning markdown on in the deck options, but only 2.1.41+ will be able to render the markdown.
  • Add opus to media list in editor.
  • Edit/More buttons auto-hide when window is small (thanks to Henrik).
  • Support Alt+number to switch between clozes in the card layout screen (thanks to Abdo).
  • Use monospace font in HTML editor.
  • Improve error message when trying to nest under a filtered deck (thanks to Rumo).
  • Reposition dialog's "shift cards" option now defaults to off.
  • Other fixes and improvements thanks to Henrik, Rumo, Abdo, Arthur, Maksim, Guillem, stayingpeachy, Daniel, khonkhortisan and Kerrick.

Fixes:

  • Fix the Reposition command not preserving the browser sort order.
  • Fix some issues causing the sync indicator to show unnecessarily (thanks to Rumo).
  • Fix slowdown after large "check media" report.
  • Fix a spurious warning about a full sync when renaming card templates.
  • Fix a freeze when answering a card with a missing parent deck.
  • Fix Anki not working after installing on Linux over a previous install.
  • Don't log card resets when exporting.
  • Fix congrats screen not showing when learning cards were due soon.
  • Updated bundled lame and mpv on Windows and Mac builds.

For developers:

  • Add-on authors, please see https://forums.ankiweb.net/t/add-on-porting-notes-for-anki-2-1-41/7390
  • Almost all of the Python codebase now has type hints. 🎉
  • JS libraries like jQuery have been updated (thanks to Henrik).
  • Add (untested) support for ARM64 Linux.
  • orjson is turned back into an optional requirement (though is still recommended, as it's faster).
  • The sidebar code has been moved from from browser.py into sidebar.py, which may break some add-ons.

Changes in 2.1.40

Released 2021-02-07, build cf446733.

  • Fixed backup not being made when choosing "Download" when syncing.
  • Fixed a slowdown after importing.

Changes in 2.1.30 to 39

Changes in 2.1.39

Released 2021-02-02, build 576f0043.

  • Fix the Reposition command not preserving the browser sort order.
  • Fix some issues causing the sync indicator to show unnecessarily (thanks to Rumo).
  • Fix a spurious warning about a full sync when renaming card templates.
  • Fix Anki not working after installing on Linux over a previous install.
  • Don't log card resets when exporting.
  • Fix congrats screen not showing when learning cards were due soon.
  • Updated bundled lame and mpv on Windows and Mac builds.
  • Other fixes and improvements, with thanks to Henrik, Rumo, Abdo, Arthur, Guillem, Meredith, Gustavo, and Daniel.

Changes in 2.1.38

Released 2020-12-26, build 355e4cd5.

  • Use a new approach for recording audio. If you encounter any issues, the old PyAudio driver can be selected in the Preferences screen. The old driver will likely be retired in the future, so please let us know if the default system does not work for you.
  • All built-in Windows TTS voices should now be supported on recent Windows 10 releases (thanks to Ryan).
  • Fix the Reposition tool in the Browse screen not following the sort order.
  • Reduce the default fade time in the review screen.
  • The ANGLE video driver can now be selected in the Preferences on Windows.
  • Fix some instances of the sync indicator remaining on after sync (thanks to Rumo).
  • Work around --text-fg appearing in fields.
  • Fix link in about screen (thanks to Abdo).
  • Fix '1' being shown instead of the correct number in some Russian translations.
  • Fixed invisible characters when adding new card templates (thanks to Henrik).
  • Fixed duplicate check getting confused by non-breaking spaces (thanks to abdo).
  • Don't throw error when computer hostname is invalid.
  • Other minor changes (thanks to Henrik & k12sh)

For developers:

  • Protobuf binaries are now used to speed up the initial build.
  • Fixed Python code completion, and added some info to docs/development.md
  • ./run now runs Anki with Python warnings enabled - PRs that fix any that come up would be welcome (thanks cecini for the first!)

Changes in 2.1.37

Released 2020-12-12, build 6d596c8f.

  • Fixed filtered decks not honoring sort order.
  • Fixed review screen not automatically scrolling to answer (thanks to Henrik).
  • The deck options screen now limits minimum ease to 131%.

For developers:

  • Added a scripts/build command to build the redistributable wheels.
  • The Rust worker is disabled by default, as some users had trouble building with it.

Changes in 2.1.36

Released 2020-12-09, build c505894b.

Notable changes:

  • Alternate builds have been discontinued. If you are using a 32 bit system, or a macOS version older than 10.13, Anki 2.1.35 is the last release you will be able to update to.
  • MathJax has been updated to version 3, thanks to Henrik. It should render faster than before. If you were customizing the MathJax configuration using Javascript, you will need to use a new method.
  • A separate mpv process is now used to play videos on Windows, which should solve issues with playing getting stuck, thanks to Kelciour.
  • The handling of wildcards and escape characters in search has been reworked to be more consistent, thanks to Rumo.
  • Early startup messages are now translable, thanks to Abdo.
  • When cards are rescheduled in the browse screen, a review entry log is now created.
  • The main card area is now focused instead of the bottom area during review, which allows using the keyboard to scroll, thanks to Henrik.

Bugfixes:

  • Fixed corrupt indexes when checking database.
  • Fixed duplicate search when sort field is not first field (thanks to Abdo).
  • Fixed error when switching to note type with fewer fields.
  • Fixed invalid utf8 in notes when checking database.
  • Fixed invisible scrollbar in night mode + browser.
  • Fixed issues with "find duplicates" (thanks to Abdo)
  • Fixed some issues with adding/renaming decks (thanks to Cecini).
  • Other minor fixes.

For developers:

  • Anki is now built using Bazel. This leads to more reliable builds, and reduces the number of dependencies you need to manually install. Please see docs/ for updated build instructions, and report any issues you encounter on the user forums.
  • The minimum Python version has been updated to 3.8.
  • The wheels available on PyPI support both Python 3.8 and 3.9.
  • All translations have been migrated to Fluent.
  • Normal and night mode theming now uses CSS variables, making it easier to override in add-ons.
  • The congrats screen, burying/suspending, filtered deck building/emptying, browser sidebar, and card reposition/reset have been reworked. If you were modifying them in an add-on, your add-on may need updating. For the congratulations screen, see the new webview_did_inject_style_into_page hook

Thanks to all the people who have contributed bugfixes and code/doc updates: Abdo, Lukkea, Akshara, Kelciour, David, Henrik, Colin, Johan, Piotr, Andreas, Arthur, Alan, RumovZ, Cecini, Soren, Krish, ianki, Cyphar and kaczmarj, in no particular order.

Thanks also to all of the people who have contributed translations for this and previous releases: https://i18n.ankiweb.net/contributors/

Changes in 2.1.35

Released 2020-10-02, build 84dcaa86.

  • Fix a bug in Anki 2.1.29+ that caused excessive memory and CPU usage on long-running operations that show a progress bar, such as importing.
  • Roll back Mac and Windows builds to Qt 5.14 again, as there are still issues with 5.15.
  • Fix display issue in graphs on alternate Mac build.
  • Fix preview not updating on multiple selection (thanks to abdo).
  • Fix old content appearing when flagging immediately after typing.
  • Fix some handling of * in searches.
  • Sidebar now correctly escapes some characters (thanks to abdo).

Changes in 2.1.34

Released 2020-09-24, build 8af8f565.

  • Fix a bug in Anki 2.1.28+ where a newly created deck config would default to an ease of 130%. When updating, Anki will automatically change any deck configs with an ease of 130% back to 250%, and change any cards using those deck configs with a low ease back to an ease of 250%. Users who updated from an older Anki version and did not add new deck configurations should not be affected. If you have deliberately set an initial ease of 130%, please change it to 131% or greater prior to upgrading, so that Anki leaves your settings alone. Thanks to Aleksa for discovering the issue.
  • Update the standard builds to the latest GUI toolkit version. Please report any improvements or regressions you notice.
  • Dropped audio plays automatically again (thanks to abdo).
  • Revert to older sound playing behaviour to work around issues (thanks to kelciour).
  • is:due now stops at now+learn ahead limit, instead of end of day.
  • Various improvements/fixes, some thanks Aleksa & Henrik.

Changes in 2.1.33

Released 2020-08-30, build 3f403040.

  • Access More button in review screen with 'm' (thanks to ANH).
  • Audio no longer plays when dropped/pasted (thanks to ANH).
  • Fix bulk tag adding not adding tags if tag is a substring of an existing tag (thanks to Soren)
  • Fix cards not being unburied if leaving Anki open and the first action of a new day is a sync.
  • Fix drag&drop into existing content (thanks to ANH).
  • Fix error when add-ons tried to access note/template in card template screen.
  • Fix next learn message in congrats screen.
  • Fix nonbreaking spaces in filenames not being handled properly.
  • Fix text in export file selector (thanks to ANH).
  • Fix timeouts in full syncs and media syncs again.

Changes in 2.1.32

Released 2020-08-25, build dee7d45d.

  • Roll back a change in the previous update that could cause syncs to time out.
  • Fix sign up link in login screen.

Changes in 2.1.31

Released 2020-08-23, build 13476503.

  • Show card counts in pie graph, and other minor graph tweaks.
  • Fix sync error+lost review when undoing in v2 filtered deck with scheduling off.
  • Fix crash when dragging & dropping, thanks to ANH25.
  • Fix 'stale notetype' error after sync+add.
  • Close "edit current" when current card deleted.
  • Code improvements thanks to ANH, Arthur, Evandro, Henrik and Thomas.
  • Find&Replace completion is now case sensitive.
  • Fix crash when recovering notes with missing notetype.
  • Fix duplicate detection when input text is not normalized.
  • Fix Empty Cards not ignoring BR tags.
  • Fix Find&Replace window sizing.
  • Fix handling of nested legacy template directives.
  • Fix issues with bulk tag removal.
  • Fix mpv failing to play audio after it's restarted, thanks to Kelciour.
  • Fix some (rare) crashes.
  • Full syncs and media syncs now terminate more quickly when the connection breaks.
  • Improve support for getting proxies from Windows registry.
  • Remove embedded direction markers in RTL cloze deletions.
  • Strip nul characters from tags.

Changes in 2.1.30

Released 2020-08-09, build 06a69c25.

  • Work around a failure to start on some Windows 10 May 2020 installations.
  • Fix "show windows in tabs" not working on standard macOS build.
  • Fix move into/out of filtered decks not syncing.
  • Add right axis to graphs.
  • Add night mode and mobile class toggles in card layout screen (thanks to ANH25).
  • Card counts graph now always shows table.
  • Catch negative review times in DB check.
  • Code improvements (thanks to Matt, phwoo, Evandro and aplaice).
  • Fix a crash in the DB check when a note type was missing.
  • Fix automatic logout not working when auth failure occurs.
  • Fix deck list and graphs not including v2 scheduler cards with rescheduling disabled.
  • Fix early reviews not appearing in review graph.
  • Fix hour graph problem in timezones west of UTC.
  • Fix negated conditonals being non-negated when renamed.
  • Fix some syncing errors that could happen until Check Database was run.
  • Fix some young cards being shown as mature in reviews graph.
  • Handle multiple same-numbered clozes in cloze-only filter.
  • Refresh tag list after clearing empty tags.
  • Other minor fixes.

Changes in 2.1.20 to 29

Changes in 2.1.29

Released 2020-07-28, build bbff62bf.

  • Add cloze-only: template filter, which can be combined with TTS to speak only the elided part.
  • Fixed AltGr key handling in standard Windows build.
  • Fix some Windows performance problems by rolling back to an older Qt version.
  • Support the terminal command that enables dark mode on macOS again.
  • Start media sync after full sync finishes.
  • Fixed mpv taking time to start (thanks to Kelciour)
  • Code/build improvements (thanks to Evandro, Matt & Arthur).
  • Use right-to-left direction in some webviews when using RTL interface language.
  • Fixed card ID and note ID being flipped in card stats.
  • Don't show an error when card contains an empty URL.
  • Various fixes for deck statistics.
  • Fixed preview not updating when editing text in the Browse screen.
  • Close gracefully on SIGTERM.
  • Other minor tweaks.

Changes in 2.1.28

Released 2020-07-20, build 7d8818f8.

2.1.28 is a big update with changes in a number of areas.

  • A reworked graphs screen:

    • Rewritten with new graphing tools for more interactivity.
    • Graphs can now be displayed for arbitrary searches.
    • Added a calendar/heatmap view.
    • If you need them for add-ons, the old graphs are currently still accessible with a shift+click on the Stats button.
  • Reworked syncing:

    • Normal syncs and media syncs can operate in parallel, speeding up startup and shutdown.
    • Normal syncs no longer need to close open windows like the Browse screen, or close & re-open the collection.
    • Full syncs now show a progress bar.
    • Full syncs can now be cancelled, and both normal and full syncs cancel more quickly.
  • Card generation changes:

    • Card generation now supports negated conditionals, and a mix of required and optional fields.
    • When adding/importing, if a normal note doesn't generate any cards, Anki will now add a blank card 1 instead of refusing to add the note.
    • Please bear in mind that if you take advantage of these features, older Anki clients may report the cards are blank, or try to clean them up when you use the Empty Cards feature.
    • Cloze numbers over 499 are no longer supported.
  • Card template screen:

    • Changes are now accumulated, and can be saved or discarded when you close the screen.
    • The front, back, and styling are no longer shown at the same time. You can switch between them with ctrl+1/2/3 or cmd+1/2/3.
    • Added a search bar to search for text in the template or styling.
    • Added a dropdown to change the previewed cloze number.
    • Added a checkbox to toggle the filling of empty fields for preview.
    • You can now delete a card template even if some notes are only using that template - they will be given a blank card 1 instead.
  • Scheduling:

    • The deck list no longer caps counts to 1000.
    • The overview and study screen no longer cap counts to 1000.
    • The deck list will no longer show a parent count higher than the limit set on the parent.
  • Empty cards screen:

    • Notes will not be deleted by default.
    • Empty cards are grouped by note type.
    • Empty cards can be clicked on to reveal them in the browse screen.
  • Database check:

    • Notes with the wrong field count are now recovered instead of being deleted.
    • Notes with missing note types are now recovered instead of being deleted.
    • Notes with missing cards are now recovered instead of being deleted.
  • Unicode normalization:

    If you are studying rare CJK characters and wish to prevent them from being converted into modern equivalents, the following in the debug console will stop Anki from normalizing note text.

    mw.col.conf["normalize_note_text"] = False
    
  • The standard Windows build has troubles with the AltGr key. This is fixed in the 2.1.29 beta, or a workaround is available.

  • The standard Mac build currently does not support native dark mode. If you previously enabled it from the terminal, please either try the 2.1.29 beta, or undo the change with the following terminal command:

    defaults write net.ankiweb.dtop NSRequiresAquaSystemAppearance -bool yes
    

Other changes:

  • Performance improvements to a number of screens.
  • Fields screen now accumulates changes, which can be saved or discarded when you close the screen.
  • Updated a few screens to show progress bars instead of hanging the UI.
  • The standard builds now use Qt 5.15.
  • Audio player on Windows has been switched back to mpv. Please report any issues you have playing audio files/videos.
  • Fixed is:review not including relearning cards.
  • Scroll media log to bottom at start (thanks to Kelciour)
  • Update local media server (thanks to Evandro).
  • Use Qt colour picker on Linux (thanks to Andreas).
  • Add edited:x search for matching notes edited in last x days.
  • Improvements to mpv handling (thanks to Kelciour).
  • Windows build fix (thanks to Evandro).
  • Clearer error message on failed regex search.
  • Find & Replace remembers input (thanks to Evandro).
  • Code improvements (thanks to BlueGreenMagick, Thomas and Andrew).
  • Fixed '&' being changed in image filenames in HTML editor.
  • Fixed exports getting broken by Windows carriage returns in note fields.
  • Fixed deck deletion, and allow "deleting" the default deck (it comes back empty).
  • Card layout screen divider can now be adjusted (thanks to Evandro).
  • Fixed duplicate rendering in card layout screen (thanks to Evandro).
  • Fixed off-by-one in field drag&drop (thanks to BlueGreenMagick)
  • Various other fixes, including contributions from BlueGreenMagick, Arthur, neitrinoweb and kenden.

Changes in 2.1.27

This number was reserved for a bugfix release.

Changes in 2.1.26

Released 2020-05-09, build 70784154.

  • Fixed saving of searches in the browse screen.
  • Fixed card layout screen failing to open in the alternate Anki build.
  • Fixed .log files appearing when exporting.
  • Fixed an error appearing when undoing V2 filtered decks with scheduling disabled.
  • Fixed duplicate search when text contains formatting.
  • Improvements to the PyPI packages (thanks to Evandro).
  • Tweak the handling of changed note types in the add screen (thanks to Arthur).
  • Tolerate decks with missing modification time from third party software.
  • Support SOCKS proxies in the non-media sync.

Changes in 2.1.25

Released 2020-05-01, build 898801eb (PyPi 6046bbc7)

  • Fix a change to deck configurations that was breaking AnkiDroid.
  • Fix deck configurations not deleting.
  • Fix angle brackets inside cloze+MathJax not working properly.
  • The DB check fixes an AnkiMobile bug where tags were not searchable.
  • Revert to an earlier macOS toolchain to work around recordings not working.
  • The media check no longer fails when files with very long filenames are in the folder.
  • More gracefully handle case where deck conf is missing.
  • Don't throw an error when cards have an invalid due number.
  • {{type::Field}} now marks the card as non-empty if Field is non-empty.
  • Tweak tab width in card layout screen (thanks to BlueGreenMagick).
  • Build fixes (thanks to Evandro).

Changes in 2.1.24

Released 2020-04-28, build 359b9f5c.

Searching:

  • You can use w:something to search on word boundaries, eg:
    • w:dog
      search for "dog" on a word boundary - will match "dog", but not "doggy" or "underdog".
    • w:dog*
      will match "dog" and "doggy", but not "underdog".
    • w:*dog
      will match "dog" and "underdog", but not "doggy".
  • You can now use re:something to search via regular expression, eg:
    • "re:(some|another).*thing"
      find notes that have "some" or "another" on them, followed by 0 or more characters, and then "thing"
    • re:\d{3}
      find notes that have 3 digits in a row
    • When searching by regex, unicode case folding is used, so searching for re:über will show a card that has "Über" on it.
  • nc:something (short for "no combining (characters)") can be used to search while ignoring accents, eg nc:uber will match both "über" and "Über". This behaves the same way as the "Ignore Accents" add-on, but is about 16x faster.
  • You can now sort on the deck, card template, note type and tags columns.
  • You can now use wildcards when limiting the search to a field, eg field*:something.
  • You can now use wildcards when searching for a card template or note type by name.
  • rated:x searches are now capped to a year instead of a month.
  • You can now escaped double-quotes in a search - eg "foo\"bar"
  • Single-quote searches are no longer supported.
  • Because the searching code has been rewritten, add-ons that modify the search code will need to be updated to support 2.1.24. It is no longer possible to override the Finder class - add-ons will need to use the new hooks in the browser screen to either rewrite the search text, or perform their own lookups instead. The Advanced Browser add-on has already been updated, and can be used as an example of how to accomplish things in 2.1.24.
  • Non-wildcard searches now do full unicode case folding (eg 'tag:masse' matches 'Maße').
  • Wildcard searches do simple unicode case folding.
  • The tag list in the Browse screen now uses unicode case folding.

macOS dark mode handling:

  • Anki now solely relies on the night mode setting in the preferences to decide whether to show in light or dark mode. Some users wanted to run Anki in light mode while keeping the rest of their system dark, and there were various display problems when dark mode was changed after Anki started that couldn't be easily worked around.

  • Users who only use dark mode, and preferred the native look of widgets in dark mode, can achieve the previous appearance by running the following command in the terminal:

    :warning: This will only work if your system is permanently in dark mode! If you switch between dark and light mode, the interface will render incorrectly.

    defaults write net.ankiweb.dtop NSRequiresAquaSystemAppearance -bool no
    

    And the following in the debug console:

    mw.pm.meta["dark_mode_widgets"] = True
    

Database changes (mainly of interest to add-on developers):

  • Anki now uses Rust's sqlite libraries instead of Python's.
  • The 'db' object on the collection retains most of the same API as before, minimizing the amount of immediate code changes that are required.
  • Custom sql functions are no longer supported, and named DB arguments (eg "where id = :id") are deprecated.
  • The old database code remains in db.py, and add-ons can continue to use it for accessing their own databases.
  • The database is now behind a mutex, and can be safely accessed from a background thread.
  • Various screens like the database check have been updated to run on a background thread, so they no longer lock up the UI while they're running.
  • The database progress handler has been removed. Anki previous had sqlite call back into Python periodically during long-running DB operations so it could drain the UI queue, but this would vary in choppyness depending on the type of DB operation being performed, and it was the cause of some crashes in the past. Add-ons that perform long-running operations should instead use mw.taskman.run_in_background() or their own threading solution moving forward.

Other changes:

  • A tweak which should fix some broken add-ons from preventing the collection from being loaded.
  • Add socks support to media sync.
  • Allow dragging fields to change their position (thanks to BlueGreenMagick).
  • Allow selecting add-on config help text (thanks to ijgnd).
  • Allow the type answer arrow to be styled (thanks to Evandro).
  • Anki will now wait for a media sync to complete or be aborted before closing the collection.
  • Build improvements (thanks to Evandro).
  • Changed the way cloze deletions in RTL fields are handled, which should address some corner cases.
  • Clean up the previewing code (thanks to Arthur). Add-ons that modify the preview screen will need updating.
  • Don't force a full sync when DB check finds cards with a high due number.
  • Don't show a popup when a network error occurs while syncing media.
  • Fixed a case where decks could be sorted incorrectly (thanks to Arthur).
  • Fixed a useless log file being created when exporting.
  • Fixed add-ons with multiple branches not updating properly.
  • Fixed an error that could occur when performing an operation in the browse screen then immediately closing it.
  • Fixed Anki closing after a full sync on collection load.
  • Fixed current card sometimes not being centered when searching.
  • Fixed deck_browser_did_render hook.
  • Fixed editor buttons not being highlighted (thanks to Simone).
  • Fixed interface getting stuck when a corrupt collection was encountered.
  • Fixed media sync waiting forever when connection dropped.
  • Fixed progress dialogs failing to appear in a timely manner.
  • Fixed tag searches in custom study (thanks to zjosua).
  • Fixed the collection_did_load add-on hook.
  • Fixed the wrong language shown in the preferences screen for some languages.
  • GitHub now checks Windows and Mac builds as well (thanks to Evandro).
  • Handle renamed cloze fields when previewing (thanks to BlueGreenMagick).
  • Ignore .DS_Store files in the media trash folder.
  • Improved invalid HTML/JS error messages (thanks to Evandro).
  • Improved the handling of deck deletions (thanks to Arthur).
  • Improvements to debug console (thanks to BlueGreenMagick).
  • Left-align tags in the browser.
  • Media syncs no longer take time to abort.
  • More hooks (thanks to Arthur).
  • Moved the scheduling options in the preferences to a separate tab, so options fit on the screen even on devices with small screens.
  • Prepare for uploading releases to PyPI (thanks to Evandro).
  • The media check will now fix file references in fields that broke because a filename was shortened as part of a sync.
  • Updated config handling. While there should be no immediate breakages, if you're an add-on author and store lists or dicts in Anki's config, please see 676f4e74a.

Changes in 2.1.23

Released 2020-03-19, build de9543ff.

A macOS-only build that fixes a problem syncing media files with non-Latin filenames added by previous Anki versions on macOS.

Please see 2.1.22 below for the bulk of the changes.

Changes in 2.1.22

Released 2020-03-18, build 0ecc189a.

Media syncing improvements:

  • Media syncing now happens in the background, so you can continue using Anki while the media sync completes.
  • Aside from syncing at open and close, Anki will sync any media changes every 15-20 minutes.
  • You can click on the sync button while the spinner is active to monitor progress.
  • Long filenames and problematic characters should be handled smoothly now, instead of causing syncing errors.
  • Anki should no longer sometimes forget to download files when a media sync fails due to network errors.
  • When media files are added within Anki, Anki now marks them in the database immediately, which can make things faster for people with slower disks if they are not modifying the media folder externally.

Media check improvements:

  • The Check Media function now shows progress, and can be interrupted.
  • There is now a separate button to generate missing LaTeX.
  • If LaTeX fails to build, the problem card will be revealed in the browse screen.
  • When Anki finds files that are too long or would cause errors on some operating systems, it will automatically rename them and update your notes to point to the new filename.

Both media sync and the media check now place deleted files in a media.trash folder inside your profile, instead of placing the files in the system trash. You can use the Check Media function to either empty the trash, or restore the deleted files back to your media folder.

Other changes:

  • You can now export .apkg files with the V2 scheduler enabled.
  • Add "New #" prefix to the due column for new cards.
  • Fixed audio getting stuck on Windows.
  • Clear the audio queue when moving between cards with autoplay off.
  • Fixed play icons not appearing in browser preview when autoplay off.
  • Show next learning card due time, and count for today.
  • Restored grey styling of zeros in the deck list that got lost in the night mode changes.
  • Improvements to the readability of the scheduling code (thanks to Arthur)
  • Add-on hook improvements, thanks to Glutanimate and Arthur.
  • Fixed fields containing a filename with non-Latin text from being corrupted when editing HTML (thanks to Evandro).
  • Support for validating add-on config schemas (thanks to Arthur).
  • Removed the 'too many decks' message in the deck list screen.
  • Fix for issue playing audio from flash drive.
  • Fixed Anki getting stuck when importing an invalid file.
  • More type hints in the code (thanks to Alan).
  • Improvements to the build process and building on Windows (thanks to Evandro).
  • Support '/' separator in add-on web paths on Windows (thanks to BlueGreenMagick)
  • Fix tags that are in the wrong encoding as part of the DB check.
  • Hide the default deck in more cases (thanks to Arthur).
  • Updates to the translation infrastructure, including tweaks to the way the answer buttons and the review history screen show intervals.

Changes in 2.1.21

Released 2020-03-09, build f1734a47.

  • Fixed error messages when playing audio.
  • Fixed legacy add-on filters not working (reading generation in Japanese Support, etc).
  • The alternate Mac build works properly when macOS is in dark mode now, and can be used if you prefer light Anki in macOS dark mode.
  • Prevent UI scale from being decreased below 100%, which caused display problems.
  • Fixed Anki failing to start on some Windows 7 machines that were missing TTS support.
  • Display a more useful message when mpv/mplayer not installed.
  • Don't allow exporting into Anki folder.
  • Fixed display of AnkiMobile drawings in night mode.
  • Fixed interrupting of current audio when autoplay is turned off.
  • Night mode defaults to dark grey instead of black card background.
  • Fixed {{Deck}} showing filtered deck instead of original deck.
  • Fixed an error that could occur with very small learning steps.
  • Fixed a negative version number being shown when add-ons incompatible.
  • Fixed some invalid HTML in the review screen (thanks to BlueGreenMagic)
  • Added back missing fcntl module.

Changes in 2.1.20

Released 2020-02-14, build 47a1bf8b.

Template changes:

The way Anki combines your card templates and fields has been updated. Many users will not notice a difference, but if you encounter error messages inside the review screen and opening and closing the Cards screen from the editing area does not resolve the issue, please see this support page.

Add-ons that alter the way cards are shown may need to be updated:

The card template rendering process in Anki 2.1.20 has changed significantly under the hood, and most of the code that was in the anki/templates folder has gone away. Add-ons that were relying on hooks to modify the card rendering should continue to function, but add-ons that were using or monkey patching methods in the templates module will break, as those methods no longer exist.

I have looked through the add-ons on AnkiWeb that modify the card template, and believe most of them should be able to accomplish what they were doing before by using the new card_did_render and/or field_filter hooks. Examples of how each of them can be used are available here:

https://github.com/ankitects/anki-addons/blob/master/demos/

For add-ons that were using the furigana/hint field modifiers, they are available for copying in the template_legacy.py file.

If the hooks are insufficient for what your add-on is doing, please let me know within the next few weeks. If you're an end user and an add-on you use has broken, please let the add-on author know of this post.

In terms of user-visible changes:

The limit of 100 replacements on a template has been dropped.
The new approach allow add-ons to add fields without 'unknown field' messages appearing on mobile devices (once they've been updated)
Fields with a ':' character are no longer allowed. If you have a ':' in your fields, you can open and close the Cards screen to automatically remove the colon.
Templates that reference a field that doesn't exist will now only show an error, instead of partially rendering.
{{field}} references are ignored inside fields, so there is no risk of LaTeX/MathJax being interpreted as a field reference.
The <% %> alternate syntax is deprecated, as it is no longer necessary due to the above change.
Clearer errors when the user forgets to close a {{field}} reference, or mismatches open and close conditionals.

Audio changes:

  • Text to speech is now supported in card templates.

  • Audio buttons are now shown on the card, and can be turned off in the preferences. They will show for both regular audio and text to speech.

  • You can customize the size and colour.

  • Added shortcut keys in the review screen to pause and jump forward/backward 5 seconds.

  • Anki now starts a new copy of mplayer for each audio file on Windows, which avoids the need to create temporary files.

  • Added an option in the preferences to not interrupt the currently playing audio when answering.

  • Fix multiple spaces in filenames from getting truncated when pasting sound files.

Night mode:

  • The night mode option in the preferences screen now turns the interface dark as well.

  • On macOS, when the system is in dark mode, Anki will switch to night mode automatically.

  • Invert LaTeX in night mode (thanks to zjosua).

  • Some of the colours in areas like the graphs could be improved - pull requests with included screenshots of the changes would be appreciated.

Add-on changes:

  • Anki will now check for add-on updates automatically once a day.

  • Disabled add-ons are now included in the check as well.

  • Add-on authors can specify the minimum and maximum Anki version they support, and add-ons will be automatically disabled when running on an unsupported Anki version.

  • Add-on authors can now upload different add-on versions for different Anki versions, and Anki will download the correct one.

  • A new hook system for add-ons:

Anki 2.1.20 introduces a new hook system that allows for better code completion and type checking than the old system. For a short explanation and link to some sample add-ons, please see https://apps.ankiweb.net/docs/addons.html#new-hooks

Add-ons using the old hooks should continue to work, as the new hooks will automatically call the old hooks in most cases, and a few runHook/runFilter calls have been left in the codebase in the places where the new hooks differ significantly from the old ones.

There are a bunch of hooks that previously were called with no arguments, such as when a new deck is created. The new hooks will tend to pass the newly created item into the callback, but will not do so for the legacy hooks, to avoid breaking old code.

If anyone has feedback on the naming or the arguments of the new hooks, please let me know during the beta testing period, so they can be changed prior to add-on authors relying on them.

To go along with these changes, the policy on adding new hooks has also changed. In the past, Anki's add-on documentation suggested hooks were best left for code paths that multiple add-ons wanted to extend, but this resulted in an over-reliance on monkey patching, and has made things fragile. The add-on documentation has been updated to encourage add-on authors to submit pull requests for any hooks they need, and the hope is that the bulk of add-ons can move away from monkey patching in the future.

Other changes:

  • Added the ability to export selected notes from the Browse screen (thanks to Arthur).

  • Updated to a newer toolkit.

  • Emptying a filtered deck in the V2 scheduler no longer unsuspends suspended cards inside it.

  • Fix incorrect delay being logged when Hard is used on the first learning step in the V2 scheduler.

  • The editor no longer modifies percent-escaped text outside of image tags.

  • Fix an extra linebreak being left in a field when an image is attached to an empty field.

  • Tweaks to the 'tag updated notes' feature (thanks to Erez)

  • Fix cards being sorted in wrong order when added after the note was created (thanks to Arthur)

  • Disabled elastic scrolling in webviews to work around a Qt bug.

  • Don’t filter em/strong tags when pasting.

  • Fix error when double-clicking the open profile button.

  • Constrain image width in editor to the field width.

Changes in 2.1.10 to 19

Changes in 2.1.19

Released 2020-01-16, build 3c8690ae.

  • Fix formatting and images getting lost when creating cloze deletions.

  • Added an option to the preferences screen to strip formatting by default.

  • Fix the preview button shortcut key not working.

Changes in 2.1.18

Released 2020-01-14, build fb9d59fe.

  • Fixed Anki failing to start for some users updating from Anki 2.0.

  • Fixed the alternate Windows build failing to start on Windows 8.

Changes in 2.1.17

Released 2020-01-11, build c69ccb50.

Linux version repackaged on 2020-01-12 to fix a 'make install' issue.

  • Improved the performance of the browse screen’s sidebar for users with many decks/tags.

  • Add-ons that modify the sidebar will break when you update, and will need to be updated by the add-on author.

  • Add-ons that alter the audio handling may need to be updated, as code has moved from anki.sound to aqt.sound.

  • Changing large note types is significantly faster.

  • Added an option in the preferences screen to adjust the user interface size.

  • You can now double-click on an .ankiaddon file to install it (thanks to Glutanimate).

  • Updated GUI libraries for the standard installs and the alternate Windows install.

  • The minimum Python version is now 3.7, and the packaged versions ship with Python 3.8.

  • The alternate Linux build has been dropped - you will need to be on a Linux distro from 2016+ with systemd support to use the packaged version.

  • Source tarballs are available from the releases tab of the GitHub repo.

  • Added an option to tag updated notes when importing (thanks to Erez).

  • Automatically remove ':' from field names when opening the card templates screen, as it conflicts with the template syntax.

  • Fix a bug in the handling of MathJax+Cloze (thanks to Michal).

  • Fixed a regression in the way duplicate deck names were handled.

  • Remove help button from some Window titles.

Changes in 2.1.16

Released 2019-12-12, build 4bc33e2f.

Due to some minor issues that were found, the website was not updated to point to this release.

  • Pasting now includes formatting by default.

  • Preserve foreground/background color when pasting.

  • Preserve bold/italic/underline when pasting from Google Docs.

  • When pasting with the shift key, bold/italics/underline is also stripped.

  • Ensure learning cards in filtered decks with 'order due' show in template order.

  • Remove the 'experimental' label from the new scheduler.

  • You can now import and export decks with scheduling enabled in the new scheduler.

  • Hide empty Default deck in deck picker (thanks to Arthur).

  • Add an extra day to the interval when using Easy on a relearning card.

  • Preserve surrounding styling when making cloze deletions.

  • Draw preview screen more quickly.

  • Fix race condition in preview screen (thanks to Håkon).

  • Use --exact with dvsvgm to prevent truncated subscript/superscript in LaTeX.

  • Newly created cards could be given the wrong due number (thanks to Arthur).

  • Sticky fields were ignored when closing the add card window (thanks to Arthur).

  • Adding a note type forced a full sync (thanks to Arthur).

  • Remove shortcut keys from translations (thanks to Arthur).

  • Documentation changes for translators (thanks to Arthur).

  • Case not being preserved when changing a deck’s parent (thanks to Arthur).

  • Hide default deck in other screens when empty (thanks to Arthur).

  • Fix qtwebengineprocesses not being cleaned up when stats window closed.

  • Allow smaller window when editing current card.

  • Support pasting multiple URLs at once.

  • Add ability to force software rendering on old Macs (thanks to Mike)

  • A fix for case insensitive field name handling in find&replace (thanks to lovac42)

  • Fix non-integer intervals being imported from Mnemosyne (thanks to Blauelf)

  • Clear undo queue when changing scheduler (thanks to lovac42)

  • Default to not closing add window (thanks to Aidan)

  • Sort new cards separately when sorting by ease (thanks to Arthur)

  • Fix a bug in the V2 scheduler.

  • Properly handle backslashes in the replacement section of Find&Replace.

  • Various small fixes.

Changes in 2.1.15

Released 2019-08-22, build 442df9d6.

  • The V2 scheduler now fully randomizes review cards due on a given day.

  • Fix add-ons errors on Windows when profile path was short.

  • Fix flag changes in Browse screen not syncing.

  • Cleanup recording wav file when recording canceled.

  • Fix the window icon on Wayland (thanks to Wilco).

  • Add a progress bar to media deletion.

  • Other minor changes.

Changes in 2.1.14

Released 2019-06-27, build 7b93e985.

  • Fix a bug in the V2 scheduler that would cause partially learnt cards removed from filtered decks to revert to an earlier state.

  • Fix a bug in the handling of relearning cards when switching back to the V1 scheduler.

  • Fix lost space when pasting indented text.

  • Limit image height relative to window height, not document height.

  • Fix deck list being re-rendered unnecessarily.

  • Remove the 'unable to connect to local port' message.

Changes in 2.1.13

Released 2019-05-20, build 3ba55990.

  • Fix formatting getting lost when copying&pasting between fields on macOS.

  • Fix some issues that cause the main window to get stuck.

  • Fix an empty deck list sometimes appearing when restoring from a backup.

  • Fix Anki hanging after an error occurs during startup.

  • Fix error caused by profile with trailing space on Windows.

  • Fix error message when syncing with an unconfirmed email address.

  • Use jsonschema for add-on manifests (thanks to Erez).

  • Warn in DB check when high due numbers are encountered.

  • Improve error messages on full disk and failed add-on deletion.

  • Fix relearning cards being given learning step count in V2 scheduler.

  • Fix preview window failing to appear when 'show both sides' enabled.

  • Removing trailing BR tag when pasting into an empty field.

  • Don’t throw an error when non-Latin text in the Javascript console can’t be shown.

  • Double click on add-ons to edit their configuration (thanks to lovac42).

  • Fix the window icon in a few screens (thanks to John).

  • Don’t highlight the deck selection button in the add screen on Windows.

  • Improve the default 'type in the answer' note type.

Changes in 2.1.12

Released 2019-04-23, build eef86bf3.

  • Fix an issue that could prevent profile renaming/deletion on Windows.

  • Fix fields appearing under editor buttons.

  • Fix memory leak in card layout screen.

  • Fix some issues with previewing in the Browse screen.

  • Fix card counts not updating when a review is undone.

  • Fix an error that could occur on startup on some Windows installs.

  • The Mac build now uses the new hardened runtime on Mojave.

  • Change focus outline colour on Windows.

  • Fix an error caused by missing note types.

  • A possible workaround for the audio player getting stuck on Macs.

  • Display the installed version in the Windows uninstall screen.

  • Fix an issue checking for add-on updates (thanks to Glutanimate).

  • Disable add-on config button when not appropriate (thanks to Glutanimate).

  • Tweaks to the 'deck age' graph binning (thanks to Jian).

  • Add-ons hosted on AnkiWeb can now define conflicts in the manifest file.

  • Switch to mplayer on the alternate OS X build, as mpv was not working on some older machines.

  • Make sure mpv doesn’t attempt to load scripts from default location.

  • Other minor fixes.

Changes in 2.1.11

Released 2019-03-11, build 3cf770c7.

  • Change Undo shortcut back to Ctrl+Alt+Z/Cmd+Opt+Z in Browse screen, to prevent accidentally undoing non-text changes when editing fields.

  • Revert a previous card template optimization that could cause an error.

  • Suppress a spurious error message that could occur when editing.

Changes in 2.1.10

Released 2019-03-07, build 22d6feed.

  • Add option to strip html in export.

  • Avoid nbsp for single spaces when pasting text.

  • Fix preview screen flashing when moving between cards.

  • Improvements to the add-ons screen (thanks to Glutanimate).

  • Support .ankiaddon bundles (thanks to Glutanimate).

  • Improve subpixel antialiasing on some machines (thanks to Glutanimate).

  • Improve Japanese interface font on Windows 10, and make it possible for translators to change the font for other languages that need it as well.

  • Fix inability to start if problem occurs on first run.

  • Allow decreasing daily limits in custom study.

  • Add a button to copy debug info to about screen (thanks to Glutanimate).

  • Fix problem running from source on Windows (thanks to dlon).

  • Allow add-ons to serve files from mediasrv (thanks to Glutanimate).

  • More user-friendly error messages for some network errors.

Changes in 2.1.0 to 2.1.9

Changes in 2.1.9

Released 2019-02-20, build ae67c976.

  • Update standard build to latest toolkit version.

  • Hardware acceleration defaults to off again on Windows/Linux, due to the issues it was causing some users. If you were not experiencing any issues, turning hardware acceleration back on in the preferences screen is recommended.

  • Various statistics fixes for the V2 scheduler, including an automatic remapping of button 2/3 in the review history when moving back and forth between scheduler versions so the "answer buttons" graph displays correctly.

  • Fix BR tags being included in empty fields (thanks to David and zjosua)

  • Optimize card template repositioning (thanks to Arthur)

  • Fix a crash when copying/cutting with an empty selection (thanks to David)

  • Avoid screen flash when undoing reviews.

  • Make sure info/warning dialogs appear on top.

  • Fixed an issue with just-typed text not being saved when using the mouse to save/add a card.

  • Added support for \{{CardFlag}}, which is either empty, or in the format "flagN" where N is 1-4.

  • Fix bulk flag changes in Browse screen not syncing.

  • Fix advanced menu in editor not showing shortcut keys.

  • When UI fails to load after resuming computer from sync, show a tooltip and automatically refresh.

  • Clean up old mplayer instances after a crash so that profile renaming works.

  • Fix add-on list not refreshing when toggling enabled in latest toolkit.

  • Fix cursor jumping on first click in "Edit Current" area on Windows.

  • Preserve whitespace when pasting plain text.

  • Prevent errors caused by a timer firing after collection is unloaded.

  • Ensure a full sync is forced when restoring from a backup.

  • Ensure full window is on screen when displaying windows on a changed screen layout.

  • Improvements to the add-ons, debug console, and error screens (thanks to Glutanimate)

  • Ensure \{{Deck}} shows the correct deck when adding (thanks to Arthur)

  • Ensure windows don’t get shown off-screen.

  • Remember add-on window size and position.

Changes in 2.1.8

Released 2019-01-02, build 71e0c880.

  • Fix startup on Windows 8.

  • Fix field content appearing under editor buttons.

  • Better handle an error when recording.

  • Fix improper handling of collections with deck errors.

  • Fix duplicate deck names being created due to text encoding.

  • Fix gtk2 theme and fcitx module not being included.

  • Detect nouveau graphics drivers and automatically switch to software rendering.

Changes in 2.1.7

Released 2018-12-17.

  • Fix "QPushButton has been deleted" error messages after a problem occurs changing note types.

  • Fix errors during "Check Database" that are just a byproduct of a previous operation that failed.

  • Fix problems searching for some non-Latin text in decks/note type names.

  • Ensure cgi and uuid modules are available to add-ons.

  • Improvements to the Windows installer.

  • Automatically restart mpv if it stops responding.

  • Don’t convert non-Latin characters in add-on configuration to difficult-to-read escape codes.

  • Add a bottom border to the menubar on Windows 10.

Changes in 2.1.6

Released 2018-12-10.

Downloads are now split into a standard and alternate version.

The standard version:

  • Is built with the latest toolkit, which fixes various issues.

  • Changes the undo shortcut back to Ctrl+Z or Command+Z like Anki 2.0.

  • Includes a separate anki-console.exe executable in the Windows build that may be useful for add-on authors.

  • Includes support for the fcitx input method and a gtk2 theme in the Linux build.

You can switch between the standard and alternate 2.1.6 without problems. If you move back to a previous Anki 2.1 release, your sync login details and window positions will be lost, and will need to be set again.

The standard version has updated requirements:

  • The Windows build only supports 64 bit Windows 7 or later, and will not run on a 32 bit install.

  • The Mac build requires macOS 10.12 or later.

  • The Linux build requires a Linux distribution from approximately 2016 or later.

The alternate version is similar to previous Anki 2.1 releases, and is built with an older toolkit. It will run on some older systems that the standard version will not, but as it is not as up to date, it may be missing bugfixes and security improvements that the standard version includes.

The alternate version will run on:

  • Windows 7 32 bit or 64 bit installs

  • Mac 10.10 or later.

  • A Linux distro from around 2014 or later.

In addition to the toolkit upgrade, there have been some changes in Anki itself:

  • Improvements to the Browse screen and flagging:

    • Search text is normalized, which fixes problems searching for unicode characters with multiple possible encodings.

    • The selection is now partially transparent, allowing you to see the underyling colours of the rows.

    • The screen doesn’t scroll when performing actions that don’t change the selection count.

    • Flags now toggle on and off, and the separate clear flag action has been removed.

    • The second flag is now orange instead of purple.

    • Find&replace now only shows fields relevant to the notes you’ve selected, and is case insensitive.

    • Fix card list not updating when editing HTML.

  • Importing apkgs is now more verbose about how notes have been handled.

  • Prevent errors caused by the user adding a field reference to itself on a field.

  • Better handle issues with the deck list, such as decks that are missing a parent deck.

  • Anki should now be able to function even if a system proxy is configured for localhost connections.

  • Fix font size being copied when pasting between Anki fields with bold text.

  • Pasting a link with shift held down now creates a clickable link.

  • Fixed an issue with the bulk remove tags option where tags with similar names could be removed as well.

  • Fixed an error that occurred with very long filenames on Windows.

  • Fixed an issue running latex commands on some Linux installs.

  • The Browse screen’s sidebar now defaults to on.

  • Fixed a race condition that could cause two copies of Anki to open.

  • When adding media to cards, Anki now will automatically rename the filenames if they’re too long.

  • The experimental scheduler now regularly checks if new learning cards have become due.

  • Handle invalid add-on config (thanks to Arthur).

  • Enforce template ordering when card templates are reordered after card creation (thanks to Arthur).

  • Don’t change deck when Esc pressed in deck chooser (thanks to David).

  • Fix a problem on initial startup when English not the default language.

  • Fix busy cursor showing in import results screen.

  • Fix content overlap when add-ons have added many editor buttons.

  • Don’t change current note when reopening editor from review screen (thanks to Arthur).

  • A fix for running on Python 3.7 (thanks to Alexey).

  • Restore the tooltip for the Fields and Cards buttons in editor.

  • A possible fix for 'database is locked' errors on Windows.

Changes in 2.1.5

Released 2018-10-01.

  • Use selected answer button instead of default when enter/space pressed.

  • Change undo shortcut in browse screen to avoid conflict with editing functionality.

  • Ignore standard mpv config file location in favour of Anki data folder.

  • Fix importing of .apkg files when interface in Dutch.

  • Fix translations not working on Linux after 'make install'.

  • Support newlines in type:cloze, and treat them as spaces.

  • Add browser.rowChanged hook for add-on authors.

  • Possible fix for some 'database is locked' errors.

  • Fix errors on startup when deck given an invalid name.

  • Fix sorting not working when field contains only a media reference.

  • Fix 'access denied' error not being caught properly.

  • Fix exporting of v2 colpkg when interface in non-English language.

  • Fix conditional replacement not ignoring HTML formatting.

  • Fix question fade time being forced when hardware acceleration on.

  • Add a small margin between buttons during review.

  • V2 scheduler now respects maximum interval even if it will lead to all buttons giving the same interval.

  • Tweak margins in overview and answer button areas.

  • Ignore UI events that are received after collection has been closed.

  • Don’t try to import .anki(2) files as text.

  • Added support for Lojban (thanks to giqtaqisi)

Changes in 2.1.4

Released 2018-09-05.

  • Fix deck list getting stuck when creating filtered deck.

  • Prevent local cards being overwritten when accidentally downloading empty AnkiWeb collection.

  • Favour mark/flag colour over suspended colour in browse screen.

  • Fix new day calculation in experimental scheduler.

  • Linux theme tweaks (thanks to Glutanimate).

  • Disable view page button for locally added add-ons (thanks to upday7).

Changes in 2.1.3

Released 2018-08-30.

  • Hardware acceleration can now be toggled in the preferences screen on Windows/Linux.

  • Disable question fade-in during review when hardware acceleration is off.

  • Fix some add-ons leaving a blank space in the main window when Anki restarted.

  • Fix file associations on macOS.

  • Fix some unwanted text being included when pasting.

  • Fix shortcut keys like space from repeatedly triggering when held down.

Changes in 2.1.2

Released 2018-08-20.

  • Add missing .apkg and .colpkg file associations.

  • Improve handling of images inlined in fields.

Changes in 2.1.1

Released 2018-08-09.

  • Fixed exporting of .apkg files with regular scheduler.

  • Work around Anki failing to start on some Windows machines.

  • Fix dialogs failing to show in tabs when using macOS’s full screen mode.

  • Extract embedded images when pasting HTML.

  • Fix images copied from Finder not pasting properly.

  • When the sort field is set to RTL, display in RTL order in the browser.

  • Update toolkit version on Windows.

Changes in 2.1.0

Released 2018-08-06.

The first stable release of Anki 2.1.

Changes from the previous release candidate:

  • Don’t unmaximize when reshowing browse screen.

  • Add *.webm to attach media file selector.

  • Add shortcut key for MathJax mhchem support.

Changes in Anki 2.1

Translations

At a glance

  • Anki 2.1 uses the same scheduling, syncing and file format as Anki 2.0.x, so you can upgrade and downgrade at will.

  • It’s built with recent support libraries (Python 3.6, Qt 5.9/5.12), bringing fixes for crashes, better handling of high resolution displays, non-Latin text, and the latest web standards.

  • It requires a modern system - Windows 7+, OSX 10.10+, or a Linux distro from around 2014+.

  • Add-ons will need to be updated to work with 2.1.

Add-ons

Add-ons need to be updated to work with Anki 2.1. Some add-ons have already been updated; others have not been ported yet.

When you install 2.1, it will create a separate folder for add-ons, and not import any existing ones you have installed.

If you’re an add-on author, you can read more about the required changes on https://apps.ankiweb.net/docs/addons.html

Other changes

Anki 2.1 brings numerous bugfixes, and some quality of life improvements, such as:

  • Built in MathJax support

  • A "restore backup" option in the profiles screen

  • SVG rendering support for LaTeX

  • Improved add-on configuration, management and updating

  • Night mode for reviewing

  • Improved pasting, with less unnecessary formatting included, and better handling of media links. You can hold the shift key when pasting to allow more formatting to be included.

The Browse screen has been simplified:

  • Various shortcuts that were previously in the sidebar are now available via the Filter button. If you find yourself frequently accessing certain items, you can save the search to have them appear in the side bar.

  • The top bar with common shortcuts has been removed. You can access all actions quickly by right clicking or ctrl+clicking in the card list instead, and there is an add-on available for adding back the top bar if you still prefer it.

A full list of changes made during the alpha and beta period are documented here.

Experimental scheduler

Anki 2.1 contains an optional, experimental scheduler. The experimental scheduler is not compatible with older Anki versions.

Known Issues

Please see the notes for your platform on https://docs.ankiweb.net/platform/intro.html