Add-on: "Anki Time Warp"

Hi,

I felt there is need for an add-on that allows re-scheduling of current review timelines, based on individual study needs, time constraints and review-free intervals.
Therefore, I came up with “Anki Time Warp”, which allows time-streching and time-shifting of complete decks under review or of cards filtered by individual tag combinations.

The manipulated review timeline is displayed within the GUI through a bar-graph, changes in the review timeline can be directly written to the cards within the deck, or a filtered deck is created though which cards can be brought into the new review scope.
Anki Time Warp [Github]

Hope you find this useful, any feedback is welcome!

2 Likes

This is pretty nice. I’ve been using a customized version of the Postpone feature from the FSRS helper addon for this kind of stuff but what I’ve really been needing is the stretch feature you’ve made here.

Some feedback:

Custom undo entry (!)

This pretty important, so I made a PR on your repo that adds this.

You’re not using a custom undo entry for the whole edit op. Having one would allow undoing the changes to due dates which would make the addon much safer to use.

Currently, you’re calling mw.col.update_card which by default creates a single single undo entry for each call. So, if you edit 5000 cards you get 5000 undo entries and you’d have to click through all those to undo the whole op (also, I think there’s a limit to the number of undo ops, so undoing it all actually isn’t possible in that case).

An additional annoyance of not having a custom undo entry for the time warp op is that after applying changes and getting hundreds of “Undo update card” undo entries, it becomes effectively impossible to undo any action the user did just before the time warp.

Scrollable QDialog

I think the graph should be fixed height and instead the whole QDialog ought to be scrollable when the screen height isn’t large enough. Currently, when you resize the QDialog window to fit the screen (on a small screen), the graph can end up resized to a 0px height.

Examples:

Allow querying cards in any way, instead of only tags?

I’m not sure why you wanted to limit the query in the dialog to just tags when it’d actually be simpler to just feed a user-inputted query as-is to mw.col.find_cards(query) in the fetch_cards function? This would let the user filter their target cards with the full features of the Anki card browser.

Minor stuff

You can open the Time warp dialog multiple times

I actually like that you can move focus away from the QDialog and, for example, open the Card browser to check the cards you’re about to edit. But there should be some check for whether one time warp dialog is already open and switch focus to that if the user clicks the menu to open time warp again.

3 Likes

Thank you very much for the detailed feedback, that is greatly appreciated!
The undo feature makes indeed sense. In my current thinking, the creation of a filtered deck should serve as a safe net, but from the perspective of a user who just wants to tryout the plugin functionality, undo is a much better option.
I’ll take care of your pull request, thank you.

The other issues are also on my list now. I thought the graph size, one of the major annoyances in the past, was not an issue anymore, but I will do an explicit format.
Using a 1:1 browser query bar should not be a problem, I myself never saw the necessity for it…
Cheers