Learning interval messed up after update

Hi there. I have been having repeating cards come up right after finishing them (and pressing easy which is 4 days) and its extremely frustrating.

Essentially, I was messing around with some of the delay add ons yesterday to see if I could delay my cards bc i usually have about a thousand a day. I also updated to the new version of anki. After deleting the delay add on and doing my decks, I will finish all my cards and then the same cards that I had just seen (and pressed easy for) will show up again a couple of minutes later.

I spend so much of my time using anki and really need to fix this. I attached a pic below of what it says after I finish my deck. Any help would be extremely appreciated.

Are these new cards that you are seeing again?

In your deck Options window, in the New Cards section, what do you have for the Learning Steps field?

Was it the same outdated “Delay” add-on that is giving this other user trouble with inconsistent due dates and intervals?

1 Like

This is similar to the problem I’m facing.

I opened an issue in the said addon repository .

I hope we can really fix this cause I seriously need that addon to function properly

This does seem like one of the worst ways to deal with a backlog though. It’s an entirely cosmetic fix to a real problem.

It would be bad enough that it just allows you to avoid dealing with your overdue cards, but it actually compounds the problem by pushing the rest of your cards to be overdue as well. For a day here or there, at least it is probably only detrimental to short-interval cards. But for weeks or months? This must hurt you more than it helps you.

Even if the add-on can be fixed, I hope both of you will consider better methods.

1 Like

I know, but I think it’s the best compromise there is to solve the backlog. I’m preparing for an exam and each subject has potentially thousands of cards to study. If I don’t push them back, then there will be no way to keep everything on track though :frowning:

Also, here are the codes of the addon for refernce

from aqt import mw
# import all of the Qt GUI library
from aqt.qt import *

from anki.cards import Card
from aqt.utils import askUser, getOnlyText, showWarning, tooltip
from anki.hooks import addHook

import time
import datetime

DUE = 2
SUSPENDED = -1


def onDeckBrowserDelayCards(did):
    deckManager = mw.col.decks
    deck_name = deckManager.name(did)
    cids = deckManager.cids(did, children=True)
    if not cids:
        tooltip("Deck contains no cards.")
        return
    cards = [Card(mw.col, cid) for cid in cids]

    days_to_delay = calculate_delay(did, cards)
    days_text = "days"

    if days_to_delay == 1:
        days_text = "day"

    confirm_response = askUser("The oldest card is {0} {1} overdue."
                               " Delay all cards by {0} {1}?"
                               "<br><br>If you press 'No' you will be able to manually enter"
                               " how many days to delay by.".format(days_to_delay, days_text),
                               defaultno=True, title="Confirm Delay")

    if not confirm_response:
        days_to_delay = getOnlyText("How many days would you like to delay? (Negative numbers will bring days forward)")

        if not days_to_delay:
            return
        try:
            days_to_delay = int(days_to_delay)
            if type(days_to_delay) != int:
                raise ValueError('Not a valid int')
                return
        except:
            showWarning("Please only enter whole numbers")
            return

    delay_cards(did, deckManager, cards, days_to_delay)


def calculate_delay(did, cards):
    today_date = datetime.date.today()
    collection_creation = mw.col.crt
    collection_creation_date = datetime.date.fromtimestamp(collection_creation)
    difference = (today_date - collection_creation_date).days
    max_days_due = 0
    for card in cards:
        if card.type == DUE and card.queue != SUSPENDED and card.due <= difference:
            days_due = difference - card.due
            if days_due > max_days_due:
                max_days_due = days_due

    return max_days_due


def delay_cards(did, deckManager, cards, days_to_delay):
    for card in cards:
        if card.type == DUE:
            adjusted_due_date = card.due + days_to_delay
            card.due = adjusted_due_date
            card.flush()
    deck = deckManager.get(did)
    mw.col.decks.save(deck)
    mw.col.decks.flush()
    mw.deckBrowser.refresh()

    main_text = "Delayed deck by:"
    days_text = "days"

    if days_to_delay == 1 | days_to_delay == -1:
        days_text = "day"
    if days_to_delay < 0:
        main_text = "Deck brought forward by:"
        days_to_delay *= -1

    tooltip("{0} {1} {2}".format(main_text, days_to_delay, days_text))


def onDeckBrowserShowOptions(menu, did):
    a = menu.addAction("Delay Overdue")
    a.triggered.connect(lambda _, did=did: onDeckBrowserDelayCards(did))


addHook('showDeckOptions', onDeckBrowserShowOptions)

I hear what you’re saying. I just disagree.

When you have a 1, 2, 3-day backlog – wouldn’t it be better to cull those overdue cards off the top and bring them back into your studying gradually, while keeping everything else on schedule? They are already overdue, so isn’t it better to limit that damage to just those cards?

You’re right, but only if we confine it to cards that are overdue by only a couple of days.
It actually helps to not delay them because it puts pressure on you to go through the materials.

But it gets a bit tough when a month worth of cards get built up in your backlog.

I guess the optimum solution would be to find a balance between the number of cards to add each day and the number of review cards and delaying them should be the last resort.

But haven’t the wheels come off entirely at that point? That seems like a situation that needs a major intervention, not a throw-a-blanket-over-it-and-no-one-will-notice bandaid. I suppose I am suggesting that with a good plan in place for dealing with a backlog quickly, you won’t have to get to that point.

It goes without saying (does it?) that while you have a backlog, you should stop adding new cards. But yes, I agree – delay should be the last resort.

nope. they are cards I have seen 3-4 times (or more). and I have 25m, 1 day for the new cards learning interval, but I never press the hard or again buttons.

Yes!!! I think i’m just going to downgrade to the older version. Hoping they can fix this soon!

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.