Skip to content

Merge upstream AnkiDroid main (2026-10-29) - #69

Merged
float3 merged 18 commits into
ankiquestfrom
merge-upstream-2026-10-29
Oct 29, 2026
Merged

float3 merged 18 commits into
ankiquestfrom
merge-upstream-2026-10-29

Conversation

@float3

@float3 float3 commented Oct 29, 2026

Copy link
Copy Markdown
Owner

Merges the 17 commits on upstream AnkiDroid main since #67.

Merged cleanly. Upstream moved VersionUtils and ClipboardUtil into anki-common and added appName, which is read from R.string.app_name. No AnkiQuest code uses the moved files.

criticalAY and others added 18 commits October 28, 2026 21:11
DeckSelectionDialog's layouts and menu use keyline_1,
deck_picker_right_padding, ActionBarStyle, ActionBar.Popup and
ic_search_white, so these move first. The dimens keep their sw600dp
values. Layouts that use them are unchanged, and DeckAdapter,
DeckHierarchyLinesDecoration and DeckSelectionDialog read the dimens
through CommonR.

Assisted-by: Claude Opus 5.5
Saving a note now reports progress from InstantEditorViewModel, so back
is ignored until the save finishes instead of closing the editor
halfway through.

Assisted-by: Claude Opus 5.5
The editor is a dialog, so Save could still be tapped while a note was
saving. The second tap added the same note again, which failed in the
backend and broke the collection until the app restarted.

Save is now ignored while a note is saving or the editor is closing,
both in the editor and in the no-cloze warning. The check runs before
the fields are read, so an ignored Save can't change the note being
saved, and confirming the warning saves the fields that were checked.

Assisted-by: Claude Opus 5.5
For the reminders to fire, there needs to be at least one card
due.

But: this allowed two states for when our test
on review history filtering could suppress the notification:

* 0 cards due
* cards reviewed

by adding a second card, we ensure that the notifications are suppressed
because a review occurred.

Part of 22814

Assisted-by: GPT-6.1-Sol xhigh
Fixes 22814

Assisted-by: GPT-6.1-Sol xhigh
AnkiDroidApp sets it on startup, so VersionUtils no longer looks it
up or falls back to AnkiDroidApp.TAG.

Assisted-by: Claude Opus 5.5
It needs :compat.

Assisted-by: Claude Opus 5.5
AndroidUtils and ClipboardUtil no longer need anything from the app.

Assisted-by: Claude Opus 5.5
* launches CSV importer for text
* enqueues a message for *pkg

Assisted-by: GPT-6
Assisted-by: GPT-6-Astra xhigh
apkg/csv now take the same route:
`TEXT_IMPORT` => `FILE_IMPORT`

This is prep for better import handling, we have been misidentifying
`apkg` files as text based on a faulty MIME type, having a single place
to accept a file, and determine its actual contents will resolve this.

A `prepareImport` => `openImport` call chain is used for handling.

Also allows us to move it to a background thread in a later commit.

Prep for 21430

Assisted-by: GPT-6
Assisted-by: GPT-6-Astra xhigh
Rather then a separate CSV import.

Assisted-by: GPT-6
Assisted-by: GPT-6-Astra xhigh
Assisted-by: GPT-6
Assisted-by: GPT-6-Astra xhigh
Assisted-by: GPT-6.1-Sol xhigh
Assisted-by: GPT-6
Assisted-by: GPT-6-Astra xhigh
We have cases where `apkg` is `text/plain`, which was previously
imported as a failed CSV ('stream did not contain valid UTF-8').

Now, we check to see if a file has an apkg extension before falling
back to UTF-8

Fixes 21430

Assisted-by: GPT-6
Assisted-by: GPT-6-Astra xhigh
Assisted-by: GPT-6.1-Sol xhigh
A [a/col]pkg MIME type is a signal, whereas `text/plain` is more ambiguous.
So treat *pkg MIME types as a stronger signal than filenames/MIME hints.

Filenames are still used for deck vs collection detection.

Part of 21430

Assisted-by: GPT-6-Astra xhigh
When the release smoke build failed while packaging, the log hid the
cause. Pass --stacktrace to both smoke steps so it shows. The run step
needs it too: lint takes the flag as an input, so leaving it off makes
that step redo lint.

Part of 22741

Assisted-by: Claude Opus 5.5
The release smoke build sometimes ran out of heap while packaging the
APKs. Raise the emulator job's Gradle heap from 3 GB to 4 GB. All the
job's Gradle steps share one daemon, so they all get it.

Fixes 22741

Assisted-by: Claude Opus 5.5
@github-actions

Copy link
Copy Markdown

Snapshot diff report vs ankiquest. Open screenshot-diff for diffs.

  • AnkiquestHomeScreenshotTest: 1 change
  • CardBrowserScreenshotTest: 3 changes
  • CustomStudyScreenshotTest: 2 changes
  • DeckPickerScreenshotTest: 5 changes
  • DeckPickerTabletScreenshotTest: 1 change
  • NavigationDrawerScreenshotTest: 1 change
  • PreferencesScreenshotTest: 2 changes
  • ReviewRemindersScreenshotTest: 5 changes
  • StandardSearchFragmentScreenshotTest: 1 change
  • TextInputDialogScreenshotTest: 4 changes
All 25 changed screenshots

AnkiquestHomeScreenshotTest

  • today_320dp_compare.png

CardBrowserScreenshotTest

  • long_cells_collapsed_again_compare.png
  • long_cells_collapsed_compare.png
  • long_cells_expanded_compare.png

CustomStudyScreenshotTest

  • tablet_unavailable_deck_compare.png
  • unavailable_deck_compare.png

DeckPickerScreenshotTest

  • bottom_navigation_keyboard_open_scrolled_to_bottom_compare.png
  • deck_list_after_dismissing_create_deck_dialog_compare.png
  • hierarchy_lines_collapsed_compare.png
  • hierarchy_lines_many_siblings_compare.png
  • keyboard_open_scrolled_to_bottom_compare.png

DeckPickerTabletScreenshotTest

  • keyboard_open_compare.png

NavigationDrawerScreenshotTest

  • navigationDrawer_compare.png

PreferencesScreenshotTest

  • TimeboxSettingsFragment_compare.png
  • TimeboxSettingsFragment_disabled_compare.png

ReviewRemindersScreenshotTest

  • studyOptionsFragmentHost_scheduleReminders_compare.png
  • studyOptionsFragmentHost_systemBars_compare.png
  • studyOptionsFragmentHost_systemBars_scrolledToEnd_compare.png
  • studyOptionsFragmentHost_troubleshooting_compare.png
  • studyOptionsFragmentHost_troubleshooting_systemBars_compare.png

StandardSearchFragmentScreenshotTest

  • large_saved_search_previews_compare.png

TextInputDialogScreenshotTest

  • add_profile_empty_light_compare.png
  • add_profile_valid_light_compare.png
  • large_text_short_window_input_light_compare.png
  • large_text_short_window_title_light_compare.png

@float3
float3 merged commit 5969ab7 into ankiquest Oct 29, 2026
24 of 27 checks passed
@float3
float3 deleted the merge-upstream-2026-10-29 branch October 30, 2026 08:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants