Anki for desktop computers

Related tags

Miscellaneousanki
Overview

Anki

Build status

This repo contains the source code for the computer version of Anki.

If you'd like to try development builds of Anki but don't feel comfortable building the code, please see https://betas.ankiweb.net/#/

For more information on building, please see Development.

Comments
  • Is Anki too hard to build? (Or, make life easier for packagers.)

    Is Anki too hard to build? (Or, make life easier for packagers.)

    Our package maintainer decided to drop anki (having been stuck at 2.1.35 for months) from the official Arch Linux repos to the AUR, with the reasoning:

    Dropping since they completely redid the build system yet again, but this time replaced it with bazel, which appears to be a rather unreasonable build system that no other TU seemed to understand either.

    If you look at the anki packages in different distros, the majority are badly out of date.

    The only exception is FreeBSD games/anki, whose maintainer is particularly tenacious; but if you look at the build files, and the packager's comments, it appears awfully tedious.

    Edit: In the case of NixOS, they provide two versions of the package: the default build-from-source one stuck at 2.1.15 and anki-bin at 2.1.47 (= no building & uses official binaries & larger installation size).

    So, is Anki too hard to build? Are packagers held back because of it?

    opened by ropery 63
  • Add apkg import/export on backend

    Add apkg import/export on backend

    This is pretty much untested. My plan is to do the apkg import part next, then add extensive roundtrip tests and fix it up. What do you think so far? Should I do anything differently?

    opened by RumovZ 46
  • Introduce new color palette using Sass maps

    Introduce new color palette using Sass maps

    This is a continuation of #1704.

    Re https://github.com/ankitects/anki/pull/1989#issuecomment-1200142622: I followed your idea of lumping everything together in _vars.scss - the $vars map contains CSS properties and color themes - but it will still generate two separate output files (props.py and colors.py).

    The gray tones I hand-picked myself:

        gray: (
            0: #fcfdfe,
            1: #f2f5f8,
            2: #dde1e7,
            3: #aeb5be,
            4: #7a818a,
            5: #4a5058,
            6: #2d3138,
            7: #181b1f,
            8: #101215,
            9: #0b0c0e,
        ),
    

    They reach much further into the dark end of the spectrum. The window background is tone 7 in dark mode, so we can have darker borders and shadows.

    image

    The other colors are from the Tailwind CSS v3 palette. There are some extra colors included that aren't currently in use.

    As I've mentioned in the other PR, I'm not comfortable picking a fine range of colors myself, but maybe someone in the forum is up for the task - if it's even needed (Tailwind CSS is licensed under MIT). I would recommend sticking to that palette and just curating the colors from there.

    Useful info from the Tailwind docs:

    If you’re wondering how to automatically generate the 50–900 shades of your own custom colors, bad news — color is complicated and despite trying dozens of different tools, we’ve yet to find one that does a good job generating color palettes like this automatically.

    We picked all of Tailwind’s default colors by hand, meticulously balancing them by eye and testing them in real designs to make sure we were happy with them.

    Two useful tools we can recommend are Palettte and ColorBox — they won’t do the work for you but their interfaces are well-designed for doing this sort of work.

    If you're wondering how this would look with future editor changes, here I cherry-picked this PR into my fresh-fields branch and removed the button borders:

    image image

    The fusion buttons look out of place and would need changing, of course.


    Known issue:

    • [x] Tooltips of hovered items with a title attribute do not adjust to dark mode properly.
    opened by kleinerpirat 38
  • Deck Options refactoring

    Deck Options refactoring

    This is a WIP about refactoring the deckoptions.

    Some points which should be improved by this:

    • (?) Should look better on wider viewports
    • [x] Have components dynamically adapt to wider viewports
    • [x] Extension API

    Some points of interest:

    • I rewrote the layout using Bootstrap Grid system (which uses CSS Flexbox, not CSS Grid, despite its name) with its .container, .row, and .col classes.
    • I factored out HelpPopup, the label handling, and RevertButton from the individual components. Making it obvious, that these are individual components, and can stand on their own. Of course this creates a lot of verbose code like this:
    <Row>
        <Col size={7}>
            {tr.schedulingMaximumInterval()}
            <HelpPopup html={marked(tr.deckConfigMaximumIntervalTooltip())} />
        </Col>
        <Col size={5}>
            <SpinBox
                min={1}
                max={365 * 100}
                bind:value={$config.maximumReviewInterval}
            />
            <RevertButton
                defaultValue={defaults.maximumReviewInterval}
                bind:value={$config.maximumReviewInterval}
            />
        </Col>
    </Row>
    

    I could wrap these up into their own respective components, let's say SpinBoxRow, CheckBoxRow, etc., as to avoid boilerplate.

    • I'm not sure yet about the CSS I removed from deckoptions-base.scss, will have to check after #1202 is merged. (EDIT: was tested on mobile)
    opened by hgiesel 37
  • Svelte Editor Toolbar

    Svelte Editor Toolbar

    First of all, I'm sorry for opening yet another PR. After the Tag Editor, and potential worries about extensibility, I thought that the Toolbar would be a better target for trying out ways to make Svelte components extensible.

    • The toolbar code resides in /ts/editor-toolbar.
    • There is no longer left / right buttons, but rather I added support for button groups.
    • Not all functionality I implemented, would currently be used by the toolbar, but could be used by add-ons
    • I added the following kinds of buttons:
      • IconButton for buttons which have a big icon
      • CommandIconButton for icon buttons, which are based on document.execCommand (they support the notion of being active)
      • LabelButton for buttons, which have a text label (like "Fields...")
      • SelectButton, which have a <select> menu.
    • I added the following two kinds of menus:
      • DropdownMenu, which is a menu with text items (like the More button currently on AnkiDesktop)
      • ButtonDropdown, which can contain a set of buttons, like the Mathjax button on AnkiMobile currently.

    Showing off the toolbar, with two unused features: SelectButton and ButtonDropdown: Screenshot 2021-04-01 at 19 26 00

    • The buttons can be dynamically adjusted, which would allow for removing the cloze button on non-Cloze note types
    • The toolbar can be turned into a scrollable toolbar, just by changing flex-flow in ButtonGroup. This could also be turned into a parameter for the whole toolbar.
    • The buttons rely on a single input variable for resizing, here is an example of the resized toolbar:
    Screenshot 2021-04-01 at 19 15 15

    The Toolbar exposes its API in two ways:

    1. editorToolbar is a new global in the editor. It contains the Svelte components which were used to create the buttons, and it also methods updateActiveButtons, and clearActiveButtons, which are exposed via the Module Context of CommandIconButton.svelte.
    2. The toolbar element, accessible with document.getElementById("editorToolbar"), exposes the buttons and menus as Svelte stores, which can be used to update the buttons and menus reactively. This way you can even listen to changes to the toolbar.

    Todos (feel free to edit):

    • [x] Remove all unnecessary uses of bridgeCommand. I think only the fields, cards, attachment, and record button will actually still need it. Does that sound right?
    • [x] Turn flex-flow into a input parameter for EditorToolbar, similiar to size.
    • [x] Remove cloze button on non-cloze notetypes
    • [x] Remove the @ts-ignore. Currently Bazel will not recognise methods which were exposed via the Module context (e.g. in CommandIconButton.svelte). (Exchanged with @ts-expect-error)
    • [x] RawButton / passing string as button
    • [x] group identifiers
    • [x] Create individual components for BoldButton etc. (I instead used dynamicComponent which is more a reiteration on withLazyAttributes with better type support)
    • [x] Night mode adjustments
    • [x] The colorpicker is still somewhat ugly / too present
    • [x] Make "depressed" state of buttons look cleaner (more minimal)
    • [x] Linux / Low dpi issue
    • [ ] Set forecolor on opening editor
    • ~Remove the png icons~
    • ~Shortcut API~

    Unknowns:

    • How much of the code in editor.py can be removed
    • Should shortcuts be dealt with in Qt or in JS? Qt allows for multi-key shortcuts. For JS, I'd probably turn this into a small library (similar to html-filter, which would then be used within editor-toolbar).

    Updates:

    • Fixed the picture
    opened by hgiesel 33
  • Plaintext import/export

    Plaintext import/export

    As discussed, this implements rudimentary CSV and JSON (Mnemosyne) importing. I've also explored CSV metadata encoding, because it's tightly coupled with the import GUI. Below is a list of questions/todos that will need an answer at some point, but for some it probably makes sense to collect more information first. I will keep updating this list. I wonder what makes the most sense to implement next. The GUI? Exporting? Or polish up the existing routines first?


    General

    • [x] It now seems to me that a unified import screen isn't really necessary: colpkg and JSON can probably do without one, and the requirements for apkg, and CSV are pretty different. So I guess we will need two separate ones.
    • [x] Currently, the import routine is chosen by looking at the file ending. As we have at least two different plaintext formats now, this might be a bit too naive. I see two alternatives:
      1. Ask first what the user wants to import. Then the file picker window could filter out files without the expected ending, but also allow to show all files.
      2. Analyse the chosen file on the backend. The response could already contain the meta information required by the apkg, or CSV import screens.

    JSON

    • [ ] Nesting over references? Currently, cards are nested inside notes, and notes reference their notetypes. The former is unambiguous (an id may refer to a source, or a target object), and 'parents' are guaranteed to exist by design. However, it would require a different approach for 'children' that are to be imported with an already existing parent, and isn't always possible (cards can't be nested in notes and decks).
    • [ ] Insert and/or update. How can the user decide if a potentially existing object should be updated? Alternatively, they may want to insert a unique object, or skip the conflicting one. Options I see:
      1. Only allow a decision for the whole file.
      2. Accept an enum variant/integer for every object.
      3. Update objects with an id field, import everything else uniquely. For notes, I assume we also need to preserve the old behaviour that looks at the first field.
    • [ ] Validation checks. I guess we want to be as thorough as possible, which will require a lot of logic.
    • [ ] Error handling. How forgiving do we want to be? Should we use a reasonable default for an invalid value, skip the object, or abort the whole process?
    • [ ] Error messages. Depending on the two issues above, there may a be a lot of different errors. Then maybe we'll have to compromise, and use either unlocalised, or very generic messages ("invalid value 'x' for 'y'").
    • [x] ~Skip serialising default values? Would allow for much smaller files, but maybe explicitness is to be preferred if JSON exports are mainly used for external modification.~
    • [ ] Support importing new cards (https://github.com/ankitects/anki/pull/1850/files#r869037548.

    CSV

    • [x] Is there any use case for arbitrary delimiters? Aren't space, comma, semicolon, and tab enough?
    • [ ] Preview for first few records.
    • [x] Notetype, and deck columns.
    • [ ] Optionally export notetype and deck columns. (Let user decide if by name or id?)
    • [ ] Handle failures in GetCsvMetadata.
    • [ ] Support note id/guid column.
    • [x] Cleanup tag editors.
    • [ ] Report unmapped columns.
    • [ ] Maybe add tooltip to import options.
    opened by RumovZ 31
  • Move away from Bazel

    Move away from Bazel

    Bazel brought a lot of nice things to the table, such as rebuilds based on content changes instead of modification times, caching of build products, detection of incorrect build rules via a sandbox, and so on. Rewriting the build in Bazel was also an opportunity to improve on the Makefile-based build we had prior, which was pretty poor: most dependencies were external or not pinned, and the build graph was poorly defined and mostly serialized. It was not uncommon for fresh checkouts to fail due to floating dependencies, or for things to break when trying to switch to an older commit.

    For day-to-day development, I think Bazel served us reasonably well - we could generally switch between branches while being confident that builds would be correct and reasonably fast, and not require full rebuilds (except on Windows, where the lack of a sandbox and the TS rules would cause build breakages when TS files were renamed/removed).

    Bazel achieves that reliability by defining rules for each programming language that define how source files should be turned into outputs. For the rules to work with Bazel's sandboxing approach, they often have to reimplement or partially bypass the standard tools that each programming language provides. The Rust rules call Rust's compiler directly for example, instead of using Cargo, and the Python rules extract each PyPi package into a separate folder that gets added to sys.path.

    These separate language rules allow proper declaration of inputs and outputs, and offer some advantages such as caching of build products and fine-grained dependency installation. But they also bring some downsides:

    • The rules don't always support use-cases/platforms that the standard language tools do, meaning they need to be patched to be used. I've had to contribute a number of patches to the Rust, Python and JS rules to unblock various issues.
    • The dependencies we use with each language sometimes make assumptions that do not hold in Bazel, meaning they either need to be pinned or patched, or the language rules need to be adjusted to accommodate them.

    I was hopeful that after the initial setup work, things would be relatively smooth-sailing. Unfortunately, that has not proved to be the case. Things frequently broke when dependencies or the language rules were updated, and I began to get frustrated at the amount of Anki development time I was instead spending on build system upkeep. It's now about 2 years since switching to Bazel, and I think it's time to cut losses, and switch to something else that's a better fit.

    The new build system is based on a small build tool called Ninja, and some custom Rust code in build/. This means that to build Anki, Bazel is no longer required, but Ninja and Rust need to be installed on your system. Python and Node toolchains can be automatically downloaded like in Bazel.

    This new build system should result in faster builds in some cases:

    • Because we're using cargo to build now, Rust builds are able to take advantage of pipelining and incremental debug builds, which we didn't have with Bazel. It's also easier to override the default linker on Linux/macOS, which can further improve speeds.
    • External Rust crates are now built with opt=1, which improves performance of debug builds.
    • Esbuild is now used to transpile TypeScript, instead of invoking the TypeScript compiler. This results in faster builds, by deferring typechecking to test/check time, and by allowing more work to happen in parallel.

    As an example of the differences, when testing with the mold linker on Linux, adding a new message to tags.proto (which triggers a recompile of the bulk of the Rust and TypeScript code) results in a compile that goes from about 22s on Bazel to about 7s in the new system. With the standard linker, it's about 9s.

    Some other changes of note:

    • Our Rust workspace now uses cargo-hakari to ensure all packages agree on available features, preventing unnecessary rebuilds.
    • pylib/anki is now a PEP420 implicit namespace, avoiding the need to merge source files and generated files into a single folder for running. By telling VSCode about the extra search path, code completion now works with generated files without needing to symlink them into the source folder.
    • qt/aqt can't use PEP420 as it's difficult to get rid of aqt/init.py. Instead, the generated files are now placed in a separate _aqt package that's added to the path.
    • ts/lib is now exposed as @tslib, so the source code and generated code can be provided under the same namespace without a merging step.
    • MyPy and PyLint are now invoked once for the entire codebase.
    • dprint will be used to format TypeScript/json files in the future instead of the slower prettier (currently turned off to avoid causing conflicts). It can automatically defer to prettier when formatting Svelte files.
    • svelte-check is now used for typechecking our Svelte code, which revealed a few typing issues that went undetected with the old system.
    • The Jest unit tests now work on Windows as well.

    If you're upgrading from Bazel, updated usage instructions are in docs/development.md and docs/build.md. A summary of the changes:

    • please remove node_modules and .bazel
    • install rustup (https://rustup.rs/)
    • install rsync if not already installed (on windows, use pacman - see docs/windows.md)
    • install Ninja (unzip from https://github.com/ninja-build/ninja/releases/tag/v1.11.1 and place on your path, or from your distro/homebrew if it's 1.10+)
    • update .vscode/settings.json from .vscode.dist
    opened by dae 30
  • closing webview windows causes crashes on some machines

    closing webview windows causes crashes on some machines

    Appears to be an issue on both Windows and Mac. I've tried two different Windows 10 machines, a Windows 11 machine, an Intel Mac, and an ARM Mac, but have not been able to reproduce it on any of those devices.

    Presumably it's occurring in deferred_delete_and_garbage_collection() or the subsequent timer firing. If a dev is able to reproduce the issue on their machine, they could try experimenting with manually destroying specific properties such as _page/assigning a new blank page to see if that makes any difference.

    The first linked report above says they're only seeing this in 6.3.0, though there have been reports in previous Anki versions of similar issues that I could not reproduce either. So it's not clear whether this is a new bug introduced in 6.3.0, or whether it's a race condition that has just started affecting other users due to changes in timing.

    Qt are only going to release 6.2.5 to commercial customers, which means we're stuck on 6.3.x now if we want the pasting/IME fixes coming in 6.3.1.

    qt6 
    opened by dae 30
  • Add comments to Sass variables and tweak main window

    Add comments to Sass variables and tweak main window

    The main purpose of this PR is to make descriptive comments available to theme authors.

    E.g.:

      colors: (
          fg: (
              ...
              subtle: (
                  "Placeholder text, icons in idle state",
                  (
                      light: palette(darkgray, 6),
                      dark: palette(lightgray, 3),
                  ),
              ),
              ...
        ),
    ),
    

    Results in: image

    Add-on authors will also be able to access these descriptions with color.comment, as the colors are now dictionaries instead of tuples in Python. I imagine it would be practical for theme-editing GUIs.

    Other improvements

    • Previously the whole set of variables was included for each Svelte component that imported them. I removed those imports and added them to the base stylesheet of the webview.
    • The main window got some visual improvements to bridge the gap to the real main window rework.
    opened by kleinerpirat 29
  • Svelte Tag Editor v2

    Svelte Tag Editor v2

    Take 2. Closes #1079. Disclaimer: This is not supposed to go with 2.1.45. So be free to ignore it, while .45 is not out yet.

    Screenshot 2021-06-29 at 13 13 25

    Notes:

    1. I tried to emulate the visuals of the tag editor on iOS, and the functionality of the tag editor on Desktop. Two ways you can see this is using arrows keys, to navigate between the tags, and using backspace (or delete) to delete beyond tags.

    2. WithAutocomplete is a very general component, that could also be reused in a wide variety of scenarios. I actually thought it could be useful, when we implement the NoteType / Deck selector in Svelte, and we don't go with a modal.

    3. The Tag badge (same icon as in browser) is clickable, and replaces exposes the "Focus Tags" shortcut. Clicking the badge behaves slightly different from the shortcut. Clicking the badge will always focus the new tag input, whereas the shortcut toggles it.

      • On a small screen, when we set the buttons nowrap, we could also set the tags nowrap, and make the "AddTag" icon sticky, that way users could still easy add new tags, even thought the end of the tags is beyond the viewport.
    4. The autocomplete currently has one randomly generated item. This shows you when the suggestions would update.

    5. Instead of Ctrl+Tab, just Tab will navigate the menu. Ctrl+Tab is reserved on macOS (App switcher).

      1. This allows for two alternative ways to navigate the autocomplete. First is Tab + Shift-Tab + Enter. However Up + Down + Right works just as well. Selecting an autocompletion item will move the caret to the end of the tag, and pressing right will open a new tag to the right (if the tag is the last one).
    6. The autocomplete navigates bottom to top when it is a dropup (most relevant item will be at the bottom).

    7. Entering a duplicate will highlight the old one and discard the new one.

    Todos:

    • [x] Finalize a Space behavior
    • [x] Deal with cases when the autocomplete happens to be a dropdown (row instead of row-reverse) (Autocomplete for the tag editor will always be a dropup now)
    • [x] Connect tag suggestions API endpoint in Rust. Any pointers here are welcome.
    • [x] Implement nowrap version.
    • [x] Collapsing tags behavior
    • [x] Copy-paste behavior
    • [x] Clicking on tag suggestions
    opened by hgiesel 28
  • Field redesign

    Field redesign

    This is pretty much finished, except the CSS rules of PlainTextBadge, where positions are not yet fully calculated, but hard-coded.

    image

    I'm off for the next three days, so I wanted to put this out there quickly for you to test.

    opened by kleinerpirat 27
  • anki doesn't support semi space

    anki doesn't support semi space

    I'm using anki Version ⁨2.1.54 (b6a7760c) and it doesn't support semi space character (ZERO WIDTH NON-JOINER) with uni code U+200C it's an important part of my language ( persian ). is there a way to use it or can it be added in future ?

    opened by Ajax9039 1
  • Add Qt widget gallery for testing design changes and forcing styles via GUI

    Add Qt widget gallery for testing design changes and forcing styles via GUI

    This adds a gallery similar to this one to the debug dialog.

    image

    image

    It allows users to change the styling approach across the application via a dropdown and see the effects immediately on various Qt widgets.

    There are three choices:

    • Anki (new code path with custom stylesheets)
    • Fusion (code path of 2.1.54 and below)
    • Native (same code path as current macOS Qt6)

    If the "Force Style" box is checked, the style will be kept across profiles.


    @tatsumoto-ren I don't know how much of the GTK theme Anki should pick up. Please tell me if the "Native/Fusion" options are working for you. The UI looks the same as on 2.1.49 for me. Missing styles for the "Anki" option will be added in future PRs.

    opened by kleinerpirat 6
  • Tweak toolbar styles to fix previous regressions

    Tweak toolbar styles to fix previous regressions

    This PR fixes a regression with the toolbar that occurred in 2.1.55.

    Main problems with the current look:

    • It has grown noticeably taller.
    • There’s a gap between the end of the shadow and the upper edge of the card

    notch

    New version (screencast):

    https://user-images.githubusercontent.com/69171671/209826215-75684d24-4811-4353-b02a-7d1a1a7b2e9f.mp4

    The toolbar buttons behave more similarly to what was in 2.1.54 and earlier. Because add-ons often print on the toolbar, it is important to keep it compact, so the paddings were reduced.

    I have seen a PR that makes it possible to hide the toolbar. I think it's fine for someone who don't use any addons that add extra buttons to the toolbar. However, without this PR those who want the toolbar to stay visible would have to accept its intrusive look.

    There are probably alternative ways to fix the issue, but I would assume they require more work. For example, the toolbar could be moved to a completely different location.

    opened by tatsumoto-ren 29
  • improve confirmation screen when closing add dialog

    improve confirmation screen when closing add dialog

    Yes/no buttons would be clearer as eg. "Discard" and "Keep Editing", and the prompt will probably need to be changed to something like "Discard current input?". This will probably require adding some new translation strings.

    https://forums.ankiweb.net/t/saving-changes-to-evaluation-exit/25546

    opened by dae 1
  • Text copied from QTextEdit/QPlainTextEdit contains PS characters instead of LF/CR

    Text copied from QTextEdit/QPlainTextEdit contains PS characters instead of LF/CR

    Text copied from QTextEdit/QPlainTextEdit widgets (e.g. in the card layouts, add-on config, deck description screens) contains Paragraph Separator characters instead of line feeds/carriage returns.

    This can be reproduced in the 2.1.55 and the latest main. It's a Qt bug (QTBUG-107004). I'm just creating this issue to bring it to attention.

    qt6 
    opened by abdnh 1
Releases(2.1.55)
  • 2.1.55(Dec 16, 2022)

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

    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.
    Source code(tar.gz)
    Source code(zip)
    anki-2.1.55-checksums.txt(2.18 KB)
    anki-2.1.55-linux-qt5.tar.zst(120.19 MB)
    anki-2.1.55-linux-qt6.tar.zst(141.13 MB)
    anki-2.1.55-mac-apple-qt6.dmg(153.62 MB)
    anki-2.1.55-mac-intel-qt5.dmg(151.98 MB)
    anki-2.1.55-mac-intel-qt6.dmg(159.46 MB)
    anki-2.1.55-windows-qt5.exe(124.09 MB)
    anki-2.1.55-windows-qt6.exe(142.68 MB)
  • 2.1.54(Jun 24, 2022)

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

    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.
    Source code(tar.gz)
    Source code(zip)
    anki-2.1.54-checksums.txt(2.18 KB)
    anki-2.1.54-linux-qt5.tar.zst(120.41 MB)
    anki-2.1.54-linux-qt6.tar.zst(142.31 MB)
    anki-2.1.54-mac-apple-qt6.dmg(153.28 MB)
    anki-2.1.54-mac-intel-qt5.dmg(151.99 MB)
    anki-2.1.54-mac-intel-qt6.dmg(159.46 MB)
    anki-2.1.54-windows-qt5.exe(119.35 MB)
    anki-2.1.54-windows-qt6.exe(133.25 MB)
  • 2.1.53(May 28, 2022)

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

    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.
    Source code(tar.gz)
    Source code(zip)
    anki-2.1.53-checksums.txt(2.18 KB)
    anki-2.1.53-linux-qt5.tar.zst(121.50 MB)
    anki-2.1.53-linux-qt6.tar.zst(139.81 MB)
    anki-2.1.53-mac-apple-qt6.dmg(152.89 MB)
    anki-2.1.53-mac-intel-qt5.dmg(151.72 MB)
    anki-2.1.53-mac-intel-qt6.dmg(158.97 MB)
    anki-2.1.53-windows-qt5.exe(119.25 MB)
    anki-2.1.53-windows-qt6.exe(132.92 MB)
  • 2.1.52(May 13, 2022)

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

    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.
    Source code(tar.gz)
    Source code(zip)
    anki-2.1.52-checksums.txt(2.18 KB)
    anki-2.1.52-linux-qt5.tar.zst(118.99 MB)
    anki-2.1.52-linux-qt6.tar.zst(141.01 MB)
    anki-2.1.52-mac-apple-qt6.dmg(152.89 MB)
    anki-2.1.52-mac-intel-qt5.dmg(151.73 MB)
    anki-2.1.52-mac-intel-qt6.dmg(159.00 MB)
    anki-2.1.52-windows-qt5.exe(119.22 MB)
    anki-2.1.52-windows-qt6.exe(132.87 MB)
  • 2.1.51(Apr 25, 2022)

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

    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>.
    Source code(tar.gz)
    Source code(zip)
    anki-2.1.51-checksums.txt(2.18 KB)
    anki-2.1.51-linux-qt5.tar.zst(140.01 MB)
    anki-2.1.51-linux-qt6.tar.zst(152.12 MB)
    anki-2.1.51-mac-apple-qt6.dmg(142.86 MB)
    anki-2.1.51-mac-intel-qt5.dmg(151.68 MB)
    anki-2.1.51-mac-intel-qt6.dmg(147.91 MB)
    anki-2.1.51-windows-qt5.exe(119.17 MB)
    anki-2.1.51-windows-qt6.exe(123.53 MB)
  • 2.1.50(Apr 9, 2022)

    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.27 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).
    Source code(tar.gz)
    Source code(zip)
    anki-2.1.50-checksums.txt(2.18 KB)
    anki-2.1.50-linux-qt5.tar.zst(139.90 MB)
    anki-2.1.50-linux-qt6.tar.zst(151.83 MB)
    anki-2.1.50-mac-apple-qt6.dmg(142.79 MB)
    anki-2.1.50-mac-intel-qt5.dmg(151.66 MB)
    anki-2.1.50-mac-intel-qt6.dmg(147.90 MB)
    anki-2.1.50-windows-qt5.exe(119.15 MB)
    anki-2.1.50-windows-qt6.exe(123.52 MB)
  • 2.1.49(Oct 26, 2021)

    • 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.
    Source code(tar.gz)
    Source code(zip)
    anki-2.1.49-checksums.txt(1.79 KB)
    anki-2.1.49-linux.tar.bz2(136.58 MB)
    anki-2.1.49-mac.dmg(144.22 MB)
    anki-2.1.49-windows.exe(108.45 MB)
  • 2.1.48(Sep 21, 2021)

    • 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.
    Source code(tar.gz)
    Source code(zip)
    anki-2.1.48-checksums.txt(1.79 KB)
    anki-2.1.48-linux.tar.bz2(136.58 MB)
    anki-2.1.48-mac.dmg(144.22 MB)
    anki-2.1.48-windows.exe(108.45 MB)
  • 2.1.47(Aug 29, 2021)

    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.
    Source code(tar.gz)
    Source code(zip)
    anki-2.1.47-checksums.txt(1.79 KB)
    anki-2.1.47-linux.tar.bz2(136.37 MB)
    anki-2.1.47-mac.dmg(144.14 MB)
    anki-2.1.47-windows.exe(108.46 MB)
  • 2.1.46(Aug 4, 2021)

    • 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.
    Source code(tar.gz)
    Source code(zip)
    anki-2.1.46-checksums.txt(1.79 KB)
    anki-2.1.46-linux.tar.bz2(136.34 MB)
    anki-2.1.46-mac.dmg(144.17 MB)
    anki-2.1.46-windows.exe(108.42 MB)
  • 2.1.45(Jul 30, 2021)

    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.

    Source code(tar.gz)
    Source code(zip)
    anki-2.1.45-checksums.txt(1.79 KB)
    anki-2.1.45-linux.tar.bz2(136.35 MB)
    anki-2.1.45-mac.dmg(144.17 MB)
    anki-2.1.45-windows.exe(108.42 MB)
  • 2.1.44(May 12, 2021)

  • 2.1.43(Apr 3, 2021)

    • 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.
    Source code(tar.gz)
    Source code(zip)
    anki-2.1.43-checksums.txt(1.79 KB)
    anki-2.1.43-linux.tar.bz2(134.67 MB)
    anki-2.1.43-mac.dmg(142.00 MB)
    anki-2.1.43-windows.exe(107.73 MB)
  • 2.1.42(Mar 10, 2021)

    • 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).
    Source code(tar.gz)
    Source code(zip)
    anki-2.1.42-checksums.txt(1.79 KB)
    anki-2.1.42-linux.tar.bz2(134.67 MB)
    anki-2.1.42-mac.dmg(142.17 MB)
    anki-2.1.42-windows.exe(107.72 MB)
  • 2.1.41(Mar 7, 2021)

    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.
    Source code(tar.gz)
    Source code(zip)
    anki-2.1.41-checksums.txt(1.79 KB)
    anki-2.1.41-linux.tar.bz2(134.68 MB)
    anki-2.1.41-mac.dmg(142.17 MB)
    anki-2.1.41-windows.exe(107.70 MB)
  • 2.1.40(Feb 7, 2021)

  • 2.1.39(Feb 2, 2021)

    • 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.
    Source code(tar.gz)
    Source code(zip)
    anki-2.1.39-checksums.txt(1.79 KB)
    anki-2.1.39-linux.tar.bz2(133.95 MB)
    anki-2.1.39-mac.dmg(140.23 MB)
    anki-2.1.39-windows.exe(107.17 MB)
  • 2.1.38(Dec 26, 2020)

    • 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!)
    Source code(tar.gz)
    Source code(zip)
    anki-2.1.38-checksums.txt(1.79 KB)
    anki-2.1.38-linux.tar.bz2(133.93 MB)
    anki-2.1.38-mac.dmg(132.68 MB)
    anki-2.1.38-windows.exe(99.39 MB)
  • 2.1.37(Dec 12, 2020)

    • 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.
    Source code(tar.gz)
    Source code(zip)
    anki-2.1.37-checksums.txt(1.79 KB)
    anki-2.1.37-linux.tar.bz2(133.91 MB)
    anki-2.1.37-mac.dmg(132.69 MB)
    anki-2.1.37-windows.exe(97.12 MB)
  • 2.1.36(Dec 9, 2020)

    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/

    Source code(tar.gz)
    Source code(zip)
    anki-2.1.36-checksums.txt(1.79 KB)
    anki-2.1.36-linux.tar.bz2(133.69 MB)
    anki-2.1.36-mac.dmg(132.53 MB)
    anki-2.1.36-windows.exe(96.95 MB)
  • 2.1.35(Oct 2, 2020)

    This is the last Anki version that supports 32 bit Windows machines, and macOS 10.12 and older. If you use either of those, please pick the -alternate version.

    • 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).
    Source code(tar.gz)
    Source code(zip)
    anki-2.1.35-checksums.txt(1.99 KB)
    anki-2.1.35-linux-amd64.tar.bz2(148.19 MB)
    anki-2.1.35-mac-alternate.dmg(95.12 MB)
    anki-2.1.35-mac.dmg(136.27 MB)
    anki-2.1.35-windows-alternate.exe(82.67 MB)
    anki-2.1.35-windows.exe(101.41 MB)
  • 2.1.34(Sep 24, 2020)

    • 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.
    Source code(tar.gz)
    Source code(zip)
    anki-2.1.34-checksums.txt(1.99 KB)
    anki-2.1.34-linux-amd64.tar.bz2(148.00 MB)
    anki-2.1.34-mac-alternate.dmg(95.04 MB)
    anki-2.1.34-mac.dmg(138.09 MB)
    anki-2.1.34-windows-alternate.exe(82.64 MB)
    anki-2.1.34-windows.exe(102.99 MB)
  • 2.1.33(Aug 30, 2020)

    • 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.
    Source code(tar.gz)
    Source code(zip)
    anki-2.1.33-checksums.txt(1.99 KB)
    anki-2.1.33-linux-amd64.tar.bz2(147.83 MB)
    anki-2.1.33-mac-alternate.dmg(95.06 MB)
    anki-2.1.33-mac.dmg(136.40 MB)
    anki-2.1.33-windows-alternate.exe(82.63 MB)
    anki-2.1.33-windows.exe(101.43 MB)
  • 2.1.31(Aug 23, 2020)

    • 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.
    Source code(tar.gz)
    Source code(zip)
    anki-2.1.31-checksums.txt(1.99 KB)
    anki-2.1.31-linux-amd64.tar.bz2(147.90 MB)
    anki-2.1.31-mac-alternate.dmg(95.01 MB)
    anki-2.1.31-mac.dmg(136.24 MB)
    anki-2.1.31-windows-alternate.exe(82.58 MB)
    anki-2.1.31-windows.exe(101.37 MB)
  • 2.1.30(Aug 9, 2020)

    • 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.
    Source code(tar.gz)
    Source code(zip)
    anki-2.1.30-checksums.txt(1.99 KB)
    anki-2.1.30-linux-amd64.tar.bz2(147.81 MB)
    anki-2.1.30-mac-alternate.dmg(94.93 MB)
    anki-2.1.30-mac.dmg(136.09 MB)
    anki-2.1.30-windows-alternate.exe(82.56 MB)
    anki-2.1.30-windows.exe(101.38 MB)
  • 2.1.29(Jul 28, 2020)

    • 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.
    Source code(tar.gz)
    Source code(zip)
    anki-2.1.29-checksums.txt(1.99 KB)
    anki-2.1.29-linux-amd64.tar.bz2(147.66 MB)
    anki-2.1.29-mac-alternate.dmg(94.96 MB)
    anki-2.1.29-mac.dmg(137.45 MB)
    anki-2.1.29-windows-alternate.exe(81.71 MB)
    anki-2.1.29-windows.exe(100.45 MB)
  • 2.1.28(Jul 20, 2020)

    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.

    2.1.27 was reserved for a bugfix update that did not eventuate.

    Source code(tar.gz)
    Source code(zip)
    anki-2.1.28-checksums.txt(1.99 KB)
    anki-2.1.28-linux-amd64.tar.bz2(147.76 MB)
    anki-2.1.28-mac-alternate.dmg(94.98 MB)
    anki-2.1.28-mac.dmg(137.45 MB)
    anki-2.1.28-windows-alternate.exe(82.56 MB)
    anki-2.1.28-windows.exe(102.39 MB)
  • 2.1.26(May 8, 2020)

    • 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.
    Source code(tar.gz)
    Source code(zip)
    anki-2.1.26-checksums.txt(1.99 KB)
    anki-2.1.26-linux-amd64.tar.bz2(134.18 MB)
    anki-2.1.26-mac-alternate.dmg(93.57 MB)
    anki-2.1.26-mac.dmg(117.42 MB)
    anki-2.1.26-windows-alternate.exe(80.42 MB)
    anki-2.1.26-windows.exe(95.15 MB)
  • 2.1.25(Apr 30, 2020)

    (build tag on 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).
    Source code(tar.gz)
    Source code(zip)
    anki-2.1.25-checksums.txt(1.99 KB)
    anki-2.1.25-linux-amd64.tar.bz2(134.13 MB)
    anki-2.1.25-mac-alternate.dmg(93.56 MB)
    anki-2.1.25-mac.dmg(117.44 MB)
    anki-2.1.25-windows-alternate.exe(80.41 MB)
    anki-2.1.25-windows.exe(95.14 MB)
Owner
Ankitects
Ankitects
Powering up Apache JMeter with Streamlit and opening the door for machine learning.

Powering up Apache JMeter with Streamlit Overview Apache JMeter is an open source load testing tool written in 100% pure Java. JMeter supports umpteen

NaveenKumar Namachivayam ⚡ 16 Aug 24, 2022
Empresas do Brasil (CNPJs)

Biblioteca em Python que coleta informações cadastrais de empresas do Brasil (CNPJ) obtidas de fontes oficiais (Receita Federal) e exporta para um formato legível por humanos (CSV ou JSON).

BR-API: Democratizando dados do Brasil. 8 Aug 17, 2022
Simple card retirement plugin for Anki

Anki Retirement Addon Allow users to suspend, tag, delete, or move cards that reach a specific retirement interval Supports Anki version 2.1.45 Licens

3 Dec 23, 2022
Курс "Искусственный интеллект и машинное обучение"

Искусственный интеллект и машинное обучение О курсе Данный репозиторий содержит в себе сопроводительный учебный материал для курса "Искусственный инте

Dmitry Aladin 19 Dec 04, 2022
Simple project to assist in tracking/logging my working hours

Fill working hours Basic script to assist in the logging/tracking of my working hours How it works Create a file called projects.json in this director

Robin Kennedy-Reid 2 Oct 31, 2022
Hypothesis strategies for generating Python programs, something like CSmith

hypothesmith Hypothesis strategies for generating Python programs, something like CSmith. This is definitely pre-alpha, but if you want to play with i

Zac Hatfield-Dodds 73 Dec 14, 2022
This repository requires you to solve a problem by writing some basic python code.

Can You Solve a Problem? A beginner friendly repository that requires you to solve familiar problems with python. This could be as simple as implement

Precious Kolawole 11 Nov 30, 2022
Url-check-migration-python - A python script using Apica API's to migrate URL checks between environments

url-check-migration-python A python script using Apica API's to migrate URL chec

Angelo Aquino 1 Feb 16, 2022
Very Simple 2 Message Spammer!

Very Simple 2 Message Spammer!

Syntax. 4 Dec 06, 2022
We are building an open database of COVID-19 cases with chest X-ray or CT images.

🛑 Note: please do not claim diagnostic performance of a model without a clinical study! This is not a kaggle competition dataset. Please read this pa

Joseph Paul Cohen 2.9k Dec 30, 2022
Functions to analyze Cell-ID single-cell cytometry data using python language.

PyCellID (building...) Functions to analyze Cell-ID single-cell cytometry data using python language. Dependecies for this project. attrs(=21.1.0) fo

0 Dec 22, 2021
An AddOn storing wireguard configuration

Wireguard Database Connector Overview Development Status: 0.1.7 (alpha) First of all, I'd like to thank Jared McKnight for wireguard who inspired me t

Markus Neubauer 3 Dec 30, 2021
An alternative app for core Armoury Crate functions.

NoROG DISCLAIMER: Use at your own risk. This is alpha-quality software. It has not been extensively tested, though I personally run it daily on my lap

12 Nov 29, 2022
Implementation of the MDMC method to search for magnetic ground state using VASP

Implementation of MDMC method ( by Olga Vekilova ) to search for magnetic ground state using VASP

Utkarsh Singh 1 Nov 27, 2021
An async API wrapper for Dress To Impress written in Python.

dti.py An async API wrapper for Dress To Impress written in Python. Some notes: For the time being, there are no front-facing docs for this beyond doc

Steve C 1 Dec 14, 2022
Implementation of the Folders📂 esoteric programming language, a language with no code and just folders.

Folders.py Folders is an esoteric programming language, created by Daniel Temkin in 2015, which encodes the program entirely into the directory struct

Sina Khalili 425 Dec 17, 2022
samples of neat code

NEAT-samples Some samples of code and config files for use with the NEAT-Python package These samples are largely copy and pasted, so if you

Harrison 50 Sep 28, 2022
Import some key/value data to Prometheus custom-built Node Exporter in Python

About the app In one particilar project, i had to import some key/value data to Prometheus. So i have decided to create my custom-built Node Exporter

Hamid Hosseinzadeh 1 May 19, 2022
Node editor view image node

A Blender addon to quickly view images from image nodes in Blender's image viewer.

5 Nov 27, 2022
Lightweight and Modern kernel for VK Bots

This is the kernel for creating VK Bots written in Python 3.9

Yrvijo 4 Nov 21, 2021