Anki is a smart spaced repetition flashcard program
Find a file
Damien Elmes ce243c2cae Simplify note adding and the deck/notetype choosers
The existing code was really difficult to reason about:

- The default notetype depended on the selected deck, and vice versa,
and this logic was buried in the deck and notetype choosing screens,
and models.py.
- Changes to the notetype were not passed back directly, but were fired
via a hook, which changed any screen in the app that had a notetype
selector.

It also wasn't great for performance, as the most recent deck and tags
were embedded in the notetype, which can be expensive to save and sync
for large notetypes.

To address these points:

- The current deck for a notetype, and notetype for a deck, are now
stored in separate config variables, instead of directly in the deck
or notetype. These are cheap to read and write, and we'll be able to
sync them individually in the future once config syncing is updated in
the future. I seem to recall some users not wanting the tag saving
behaviour, so I've dropped that for now, but if people end up missing
it, it would be simple to add as an extra auxiliary config variable.
- The logic for getting the starting deck and notetype has been moved
into the backend. It should be the same as the older Python code, with
one exception: when "change deck depending on notetype" is enabled in
the preferences, it will start with the current notetype ("curModel"),
instead of first trying to get a deck-specific notetype.
- ModelChooser has been duplicated into notetypechooser.py, and it
has been updated to solely be concerned with keeping track of a selected
notetype - it no longer alters global state.
2021-03-10 11:53:27 +10:00
.buildkite build wheels in Linux CI 2020-12-21 19:31:15 +10:00
.github/ISSUE_TEMPLATE add issue template config.yml 2021-02-19 14:11:21 +10:00
cargo add strum crate 2021-03-10 11:53:27 +10:00
docs contributing.md update 2021-02-03 16:06:34 +10:00
ftl make flag changes in the reviewer undoable 2021-03-10 11:53:27 +10:00
pip winrt packaging bug has been fixed 2021-02-03 13:34:44 +10:00
platforms add linux_arm64 platform 2020-12-29 18:40:39 +10:00
pylib Simplify note adding and the deck/notetype choosers 2021-03-10 11:53:27 +10:00
qt Simplify note adding and the deck/notetype choosers 2021-03-10 11:53:27 +10:00
rslib Simplify note adding and the deck/notetype choosers 2021-03-10 11:53:27 +10:00
scripts accept args in scripts/runopt 2021-01-12 18:47:08 +10:00
ts Fix another import 2021-03-09 14:02:41 +01:00
.bazelignore initial Bazel conversion 2020-11-01 14:26:58 +10:00
.bazelrc turn top bar dark when night mode enabled on macOS 2021-02-04 19:19:56 +10:00
.bazelversion update pinned Bazel version to 4.0 release 2021-01-21 19:58:41 +10:00
.gitattributes try again to improve GitHub's language stats 2021-01-20 13:20:45 +10:00
.gitignore Gitignore root target folder 2021-01-13 12:17:00 +01:00
bazel.bat initial Bazel conversion 2020-11-01 14:26:58 +10:00
BUILD.bazel simplify wheel building 2020-12-10 20:27:21 +10:00
Cargo.lock add strum crate 2021-03-10 11:53:27 +10:00
Cargo.toml remember last input for 'set due'; add string config; nest config types 2021-02-08 14:10:05 +10:00
CONTRIBUTORS Update CONTRIBUTORS 2021-03-07 11:05:41 +01:00
defs.bzl bump version 2021-03-10 11:11:45 +10:00
late_deps.bzl move aqt_data into source folder; implement wheel building 2020-11-04 12:14:03 +10:00
LICENSE move aqt_data into source folder; implement wheel building 2020-11-04 12:14:03 +10:00
pkgkey.asc add public key for release signing 2018-09-18 10:40:45 +10:00
protobuf.bzl add linux_arm64 platform 2020-12-29 18:40:39 +10:00
python.bzl use PYTHON_SYS_EXECUTABLE for setting path to Python 2020-12-23 21:53:13 +10:00
README.md minor doc updates 2020-12-11 22:37:12 +10:00
repos.bzl update translations 2021-03-10 10:46:34 +10:00
run proper fix for __pycache__ folders preventing remove on ./run 2021-01-12 18:47:08 +10:00
run.bat enable Python warnings when running 2020-12-16 14:59:04 +10:00
WORKSPACE packages.bzl -> repos.bzl; update rules_rust 2020-11-05 14:22:45 +10:00

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.