oakkitten / anki-delay-siblings

https://ankiweb.net/shared/info/1369579727
MIT License
12 stars 2 forks source link

Delay all at once #6

Closed markhavemann closed 2 years ago

markhavemann commented 3 years ago

This isn't an issue, not really anyway.

My "issue" is that I don't want to use Ankidroid anymore because seeing sibling cards on the same days is frustrating.

Is there anyway to be able to run the addon in the PC version of Anki, for all the cards due today. This way it's possible to sync to Ankidroid for reviewing later.

I guess it won't be as efficient as doing it as each card is answered because I assume that it calculates according to how you answer each card, but it will still be way better than nothing.

oakkitten commented 3 years ago

while i think this is definitely doable, perhaps it's worth asking AnkiDroid devs (they've got a Discord) if they would be willing to incorporate this functionality into the app somehow? what this addon does is technically very simple, and they already support some custom things like chess notation, so perhaps they would do it

markhavemann commented 3 years ago

Thanks for the feedback!

I've made a feature request on the Ankidroid github here.

oakkitten commented 3 years ago

note to self; some suggestions from the chat:

Your code change due date but not the interval. Which mean that when a card is reviewed, maybe the interval since the last review was 70 days ago, but the .ivl value is still 60. Which mean when scheduling the next review, the scheduler is going to compute a date that is sooner than what should be used according to spaced repetition theory. Obviously, the theory is based on the false assumption that cards are independant, so I'm not stating that current anki scheduler is better without your add-on than with it. Only that your add-on does not consider the importance of interval since last review in the computation.

Also you can import constant from anki/consts.py instead of redefining them

I'd note however that with review log, you have all informations needed to postpone the cards on the computer, once the data are synced from ankidroid to anki. So if you care about it, you can ensure that after each sync, if there are new reviews in the log, they are checked, and siblings of reviewed cards get postponed as needed

anki desktop can bury reviews now, so if ankidroid gets (maybe it already has?) this option, which hopefully helps to remove siblings from the review queue, a more reasonable approach would be as suggested above, delaying siblings on desktop after syncing changes from the phone.

i like this solution a lot, but i'm not sure if i'll have the opportunity to work on it any time soon

duncrob99 commented 3 years ago

I wanted this as well, so added a function that bulk delays future reviews based on either due date or latest review of siblings, rather than just a current review. I've made a pull request (#8) with the changes, so if either or both of you could check it over, that would be great. I haven't touched either of the other suggestions in the previous comment, though.

oakkitten commented 2 years ago

Sorry @duncrob99 I didn't have the time or energy to review your PR at the time, and then I kind of, uh, well, sorry.

Anyway, since I wanted the addon to make the minimum possible impact, I want it to only touch cards that were modified. I put some changes into https://github.com/oakkitten/anki-delay-siblings/tree/delay-after-sync, which is based on updated master that also has a few changes, including a few tests.

If enabled (on by default), after sync, the addon will now show a list of cards that it wants to delay, and ask the user if they want to proceed or not. Aaand that's it. (I guess I'll add a “don't show this again” setting, and perhaps the dialog could show something (Browser?) if you double-click a card.)

Thoughts? Most of the interesting stuff is in the ##### delay after sync section in ___init__.py.

Edit: added a setting to not show the confirmation dialog, and also a way to not reschedule siblings of cards that had their last review done manually. some crazy sql! https://github.com/oakkitten/anki-delay-siblings/commit/6035d81154a80bc451536fb0bbff5a8946a91468

markhavemann commented 2 years ago

Thank you so much for putting time into this!

Unfortunately, after updating today, it now says that the add-on requires Anki <= 2.1.48. Mine's updated to 2.1.49 which is the latest stable release on the anki website.

Is the lower version required because of the new functionality, or just Anki being weird? I don't mind downgrading if necessary, but I'll wait to see what @oakkitten says.

oakkitten commented 2 years ago

This is weird. Your Anki version is 2.1.49, right? . Does the message appear after updating the addon, or before trying to do it? Could you please show me the contents of your meta.json? You can find it in Tools → Add-ons → select Delay siblings → View Files.

When I updated the add-on, since I decided to not test on Anki < 2.1.49, I uploaded another “branch”. So users on Anki 2.1.48 and below would get the old branch, and the users on Anki 2.1.49 and beyond would get the new branch.

image

So I expect that users on Anki 2.1.48 and below would not get an update, and users on Anki 2.1.49 would get the update from the new “branch”. Something weird is going on!

Edit: If you updated your Anki to 2.1.49, try selecting Tools → Add-ons → Check for Updates.

markhavemann commented 2 years ago

Does the message appear after updating the addon, or before trying to do it? It appeared after updating the addon. image

If you updated your Anki to 2.1.49, try selecting Tools → Add-ons → Check for Updates. I should also add that I didn't update my anki. As far as I know, it's been 2.1.49 for quite a while. image

This is the content of my meta.json file: {"name": "Delay siblings", "mod": 1598530090, "min_point_version": 0, "max_point_version": -48, "branch_index": 0, "config": {"version": 0, "0": {"enabled": false, "quiet": false}, "1629330939934": {"enabled": true, "quiet": false}, "1610976842062": {"enabled": true, "quiet": false}, "1586073886164": {"enabled": true, "quiet": false}}, "disabled": false, "conflicts": [], "update_enabled": true}

oakkitten commented 2 years ago

Aha. Could you please try selecting Tools → Add-ons → Check for Updates? It should offer to update Delay siblings.

markhavemann commented 2 years ago

image

It seems to think everything is updated

oakkitten commented 2 years ago

Thanks for detailed replies!

Well, this is weird. I put your meta.json into my Anki 2.1.49, and it does offer to update. Hold on, I'll report this on the Anki support forum.

image

oakkitten commented 2 years ago

Here's the thread on the support forum. The author of Anki also thinks this is weird. If you are willing, we can move there. They are suggesting to check the output of fetch_update_info(), you can do so by opening Anki, pressing Ctrl-Shift-;, pasting the following code:

from anki.httpclient import HttpClient
pp(aqt.addons.fetch_update_info(HttpClient(), [1369579727]))

and pressing Ctrl-Enter. It would help if you paste the output of this on the support forum in that thread.

If you don't want to go through with this, you can try deleting the add-on and downloading it again maybe?

markhavemann commented 2 years ago

Yesterday my Anki popped up saying there is an update for the add-on. I updated and it works fine now.

I am using a VPN sometimes so I'm not sure if this messed things, but I was getting updates for other plugins at the same time so it doesn't seem like it would.

oakkitten commented 2 years ago

Yeah I'm not sure what's going on. In any case this probably isn't a problem with the add-on. At least, I didn't do anything with it in the past few days 😛 Glad it's working!

markhavemann commented 2 years ago

Thanks for putting in all the effort and spending time on this!