Runs on any operating system, and now there is evidence for the claim.
CI on Linux, macOS and Windows
The rung's own words were "because should work is not evidence". Development
happens on WSL2, so until this job existed every statement about the other
two platforms was an assertion.
Linux covers the Python range, macOS and Windows run one version each,
because what they test is the operating system rather than the interpreter.
Five jobs, not nine.
It found a real bug on its first run. macOS passed. Windows failed five
tests in three classes, and only one of them could reach a user.
The real bug: an interrupted build left a file behind
wiktdata.py and antonyms.py both deleted the partial .building file in
their error handler while the SQLite connection was still open. POSIX unlinks
an open file happily and frees the inode when the last handle closes. Windows
refuses with WinError 32, "the process cannot access the file because it is
being used by another process", so the partial index survived for the next
run to inherit.
Both now close before unlinking.
The other four failures were tests that had only ever run on Linux: three
compared paths against POSIX literals, when str(Path) uses the native
separator, and one patched Path.resolve to a /mnt/c path, which on
Windows is a drive-relative WindowsPath the WSL regex cannot match. They
were testing the platform rather than the code.
A WSL user who clones to ~ can see what went wrong
Anki runs on the Windows side and can only open paths Windows can see.
/mnt/<drive> paths are translated; anything under /home or /tmp cannot
be, because it has no Windows equivalent. That happens to anyone who clones
to their home directory, which is the more natural place to clone.
What they saw was AnkiConnect's own file-not-found, which says nothing about
why a file that plainly exists cannot be found. It now names the cause and
both ways out: import by hand, or point OUTPUT_DIR somewhere under /mnt.
Gated on which host answered rather than on being under WSL. A WSL user can
run Anki inside WSL through WSLg, and there localhost is the right address
and POSIX paths are exactly what AnkiConnect wants. Blocking those would have
broken a setup that already works.
The CLI is the primary path
GNU make is not a reasonable requirement on Windows, and make check-os
correctly refuses to run there without Git Bash, WSL or Cygwin. Every
user-facing target already had a tango equivalent, so what changed is the
documentation: it now leads with the command a user actually has.
Upgrading
pip install --upgrade tango-ankiNothing to do to your collection. The notetype is unchanged.
Full detail in CHANGELOG.md.