Skip to content

Merge upstream AnkiDroid - #52

Closed
float3 wants to merge 43 commits into
ankiquestfrom
main
Closed

float3 wants to merge 43 commits into
ankiquestfrom
main

Conversation

@float3

@float3 float3 commented Sep 29, 2026

Copy link
Copy Markdown
Owner

43 new commits from ankidroid/Anki-Android main.

Merge with a merge commit, never squash or rebase, so ankiquest keeps upstream's history. Keep the main branch after merging: it mirrors upstream.

If this conflicts, merge main into a branch from ankiquest, resolve there, and merge that branch instead. Never commit to main: it mirrors upstream.

sanjaysargam and others added 30 commits September 27, 2026 18:54
Adds a checkable "Show preview" action to the note editor
overflow menu.
Prep for Anki 26.09

Part of 21926

Assisted-by: GPT-6
ActivityLaunchLoggerTest was broken due to async logs from AnkiDroidApp.

Fix by using `EmptyApplication`

Fixes 22132

Assisted-by: GPT-6
Read the version code and ensure it never increases by more than 100,000
 (and never decreases).

Assisted-by: GPT-6
Specifically added to `release.sh` so non-CI publishes are tested.

Fetch 2 commits so HEAD and its parent are available.

Assisted-by: GPT-6
Ensure it doesn't jump by over 100k from the base commit

Assisted-by: GPT-6
Previously, a disconnect had stopped `logcat` before tests began
 we use this log for `@Ignore` tests, so although the tests passed
 it broke reporting.

To fix: add an event reporter and keep logcat running.

Preserve the exit status, and terminate the capture when gradle exits.

Fixes 22115

Assisted-by: GPT-6
Just a sample 1+1 for now as a smoke test.

Assisted-by: GPT-6
Like runCatchingWithReport, but only logs the exception instead of also
sending a crash report. The upcoming directory picker scans storage, where
failures are routine and not worth reporting.

Co-authored-by: ShaanNarendran <shaannaren06@gmail.com>
Checks whether a directory contains a named file, resolving the canonical
path first to guard against path traversal. The upcoming directory picker
uses it to spot existing collections. Comes with a JVM test covering the
edge cases.

Co-authored-by: ShaanNarendran <shaannaren06@gmail.com>

Assisted-by: Claude Opus 5
Scans the storage roots for AnkiDroid directories and lists them for one
tap selection, so an SD card can be chosen without knowing its path. A
neutral button still accepts a custom path, which is normalized, created
and checked for writability before being applied.

Co-authored-by: ShaanNarendran <shaannaren06@gmail.com>
Replaces the free text AnkiDroid directory field in Advanced settings
with the picker.

Fixes ankidroid#3114

Co-authored-by: ShaanNarendran <shaannaren06@gmail.com>
Scaffolding asked for in review: opens the dialog and checks the default
and current directories are offered, and that every entry has a label.

Written as a Robolectric test rather than androidTest: the instrumented
suite runs against the release variant, where the host activity used by
launchFragmentInContainer is missing, as it ships in a debug only manifest.

Co-authored-by: ShaanNarendran <shaannaren06@gmail.com>
Related to 22126

Assisted-by: GPT-6
NoteIds and NoteTypeIds need to be strings, because
JS needs them as BigInteger.

This was previously handled by the code in 26.05, now
we need to handle this for 26.09.

Backwards compatible as `BigInt` accepts a `BigInt`

https://github.com/ankitects/anki/blame/643187a050abc36525dedd6f714c6a1260ef54a7/ts/routes/image-occlusion/lib.ts#L17

Part of 21926

Assisted-by: GPT-6
Prep for 20497

Assisted-by: GPT-6
Fixes 22095

Assisted-by: Opus 5.5
criticalAY and others added 13 commits September 28, 2026 05:19
Forward slashes are used to the tests pass on Windows.

Part of 21926

Assisted-by: GPT-6
Anki 26.09 requests this file, previously:

* Vendored MathJax (/_anki/js/vendor/mathjax) was handled
* mathjax.js sat outside this directory

Part of 21926

Assisted-by: GPT-6
Part of 22136

Assisted-by: GPT-6
'1' was already in the list, so it was appended twice

Assisted-by: GPT-6
Completes `androidTest`: 13 files.
One remains due to mixed licenses

AnkiDroid is standardizing licenses to SPDX.

I removed my copyright lines from the files as-per
docs/contributing/copyright-headers.md

Issue 20954

This change was not performed using LLMs and I have verified that it is
correct
Typealiases for R.string/R.plurals support references to CrowdIn
resources that can move modules with their alias definitions. Plain
imports can be inserted automatically by the IDE.

Part of 21500

Assisted-by: Claude Fable 5
Assisted-by: GPT-6 - rename to Common[String/Plurals]
Convert CrowdIn string and plural references, including usages added
since this branch was created. These resources are about to move to
:common:android; other strings will remain in :AnkiDroid.

Part of 21500

Assisted-by: Claude Fable 5
Assisted-by: GPT-6 - de-conflicted and added more references
The widget configuration layout uses start/end attributes

We will add `checkDependencies = true` for 21500
`supportsRtl` will be needed when lint checks this dependency.

Part of 21500

Assisted-by: Claude Fable 5
Switching tabs never sent a screen view, since no activity resumes.
Report each tab when it opens and when you come back to it.

Assisted-by: Claude Opus 5 [helped with tests]
Bumps [undici](https://github.com/nodejs/undici) from 6.28.0 to 6.29.0.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](nodejs/undici@v6.28.0...v6.29.0)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 6.29.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants