Skip to content

Number the heatmap's days and streaks as AnkiQuest does - #68

Open
float3 wants to merge 3 commits into
ankiquestfrom
fix/heatmap-streak-freezes
Open

float3 wants to merge 3 commits into
ankiquestfrom
fix/heatmap-streak-freezes

Conversation

@float3

@float3 float3 commented Oct 29, 2026 •

Copy link
Copy Markdown
Owner

The heatmap numbered every review's day by the device's present clock, because the revlog does not record which clock a review was studied under. Reviews made on a flight through time zones landed on a neighbouring day and left an empty one, so the heatmap's streak broke where the widget's AnkiQuest streak carried on.

  • once the collection's history is drawn, the AnkiQuest profile's heatmap is read: its per-day counts, numbered by the clock each review was made under, replace the local ones from the first day the server has reviews for up to the day before the last review it was sent
  • today, days not yet uploaded and days the server does not cover stay the collection's; offline or without AnkiQuest nothing changes
  • days the server protected with a streak freeze keep a streak going without lengthening it, have a blue outline, and say so when tapped

Known limit: "View reviewed cards" still searches Anki's own day windows, so for a day the server renumbered it can list a neighbouring day's cards.

The heatmap counted a streak from the collection's review days alone, so a day a streak freeze covered broke it, while the AnkiQuest widget, which counts the server's streak, carried on: a freeze on 28 October left the heatmap at 1 day against a longer streak on the widget. The heatmap now reads the frozen days from the AnkiQuest profile once the collection has been drawn, and counts them as the server does, keeping a streak without lengthening it. Such days have a blue outline and say so when tapped. Without AnkiQuest set up, or offline, the heatmap is as before.
The revlog records when a review happened but not under which clock, so the heatmap numbered every day by the device's present one. Reviews studied on a flight through time zones landed on a neighbouring day and left an empty one, which broke the heatmap's streak while AnkiQuest's carried on. AnkiQuest records each clock as it is reported and numbers reviews by the one in force, so its per-day counts are now used from the first day it has reviews for up to the day before the last review it was sent. Today and the days the server has not been sent stay the collection's.
@float3 float3 changed the title Count the days AnkiQuest protected in the heatmap's streaks Number the heatmap's days and streaks as AnkiQuest does Oct 29, 2026
@github-actions

github-actions Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

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

  • CustomStudyScreenshotTest: 2 changes
  • DeckPickerScreenshotTest: 7 changes
  • DeckPickerTabletScreenshotTest: 1 change
  • NavigationDrawerScreenshotTest: 1 change
  • ReviewRemindersScreenshotTest: 5 changes
All 16 changed screenshots

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_compare.png
  • hierarchy_lines_deep_nesting_compare.png
  • hierarchy_lines_many_siblings_compare.png
  • keyboard_open_scrolled_to_bottom_compare.png

DeckPickerTabletScreenshotTest

  • keyboard_open_compare.png

NavigationDrawerScreenshotTest

  • navigationDrawer_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

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.

1 participant