ToranSharma / Duo-Strength

Browser extension to add back the strength for each individual skill, and other useful hidden statistics.
MIT License
35 stars 6 forks source link

V1.3.1 review #62

Closed alexseyk closed 2 years ago

alexseyk commented 4 years ago
  1. add ver number to options title

    Screen Shot 2020-04-13 at 10 24 46
  2. Strength bar & words & practice buttons some times loads ONLY after page RELOAD :( not a big thing but certainly it causes some confusion.

  3. Languages with 0 XP should not be displayed in language table. IMHO

  4. Flags border appeared only after a particular language was activated. I understand it's feature. May be it's time to make a FAQ page, so many features :))

  5. I did not know that bonus skills can crack

  6. I am disabling league by making my profile private - may be "grey-out" hide leagues in the options in such case?

  7. You did not added redo checkpoint & test-out to the shining owl :(

  8. Words are great ! have a look at this script. may be you can add translations too ? https://github.com/x-inkfish-x/DuolingoUserscripts/wiki/Userscript:-Skill-Vocabulary-Viewer

  9. Duolingo site is down or slow or acting strangely ... that it for now... I was not able to make extension work for Uk => En and don't see checkpoints prediction ... more on that later.

Cheers !

ToranSharma commented 4 years ago

1) Good idea, will be easier to ask user what version they are on if they are having issues.

2) Do you mean after an options change, or just in general when the tree loads?

3) Sure, I can remove 0XP langues, It isn't very useful and the user probably doens't care about that language if they have never done a lesson!

4) Yeah I need to work on the documentation of the extension. A wiki and an FAQ post on the forums would probably be useful. I also need to write some of community recommended stuff, like Issue & Pull Request templates and contributing guidelines.

5) I don't know if they can! I could not find any sources reporting one way or the other at the time so I have just assumed it is possible and added the option to hide bonus skills from the cracked skills list just in case.

6) If I can find a way of detecting if a user has set their profile in that way then I will try to do this.

7) An oversight, I didn't know that the Golden Owl at the bottom of a finished tree replaced the last checkpoint. I think when I finished my Swedish tree, it didn't have checkpoints. Would you like

8) I did look at that script at the time of adding the words list. Unfortunately you have to send further requests to duolingo's dictionary API to retrieve the translation and I decided at the time that I didn't want to do that immediately. I will look into it and see if it is going to cause more requests than I am happy with, I don't want to slow down anything more than I can.

9) Interesting, keep me updated. Note that the checkpoint predictions are only there for unfinished trees. Are you not seeing them on any tree?

Thanks,

Toran

ToranSharma commented 4 years ago

1) Version number has now been added to the end of the heading in the options. This change was 7131f2d.

ToranSharma commented 4 years ago

3) I have removed these now as of 1e60020.

ToranSharma commented 4 years ago

Those two changes are included in v1.3.3 which has now been released

alexseyk commented 4 years ago

2. This happens on language change, after i change a course with different base languages. I can reproduce it . After a while it takes too long to switch to a different course

www.duolingo.com-1586833451172.log

7. Yes please add checkpont & bigtest to the golden owl.

9. I think for prediction to work it needs some recent history... On the unfinished trees i don't see crown level prediction either. But i do see it on the tree that i am currently using :) May be say "you passed all checkpoints"? like you do for XP after level 25. also in the options may be rename "Crown Level Prediction" to "Tree Level Prediction" since you're forecasting for next Tree Level

ToranSharma commented 4 years ago

7) This has been added in 7438915. It looks like this: image

ToranSharma commented 4 years ago
  1. This happens on language change, after i change a course with different base languages. I can reproduce it . After a while it takes too long to switch to a different course

www.duolingo.com-1586833451172.log

I have added a check in beeca01 that should prevent that error.

However I cannot reproduce this myself. When I change languages with different base languages, such as from En->Es to Es->Sv, everything works fine, without the need to refresh the page. What happens for me is that the tree changes, but all the other UI elements remain in the original base language. Then after about a second, the page automatically refreshes and the UI elements are now displayed in the new base language.

There is the change that is is language dependent. Maybe one of the base languages doesn't have the languages property in the user data file. If this is the case then it potentially would cause an error to display, much like the one you posted. If this what caused the page not to change to the new UI language then this should be fixed by the previously mentioned change to be released in v1.3.7.

alexseyk commented 4 years ago

HI It seems to be working ok now. Thanks

ToranSharma commented 4 years ago

Just to keep track for myself:

  1. add ver number to options title

  2. Strength bar & words & practice buttons some times loads ONLY after page RELOAD :( not a big thing but certainly it causes some confusion.

  3. Languages with 0 XP should not be displayed in language table. IMHO

  4. Flags border appeared only after a particular language was activated. I understand it's feature. May be it's time to make a FAQ page, so many features :))

On the to do list to make a wiki with feature and technical details.

  1. I did not know that bonus skills can crack

Still no further information to suggest that they can, I think I'll leave the option to hide them from the cracked skills list, in case duolingo add this. I may change my mind in the future though.

  1. I am disabling league by making my profile private - may be "grey-out" hide leagues in the options in such case?

Still haven't seen a way of detecting this for sure. I thought that maybe this option would be in the privacy_settings property object of the user data. The only difference between our settings here is the disable_stream property that you have as true, while mine is false. I think this is probably unrelated and a vestige from how friends used to work with the activity stream long ago.

7. You did not added redo checkpoint & test-out to the shining owl :(

  1. Words are great ! have a look at this script. may be you can add translations too ? https://github.com/x-inkfish-x/DuolingoUserscripts/wiki/Userscript:-Skill-Vocabulary-Viewer

Still need to look into this. It should be possible, but I don't now how much the performance of the words list would suffer as a result. I could perhaps have the translate be requested when the word is hovered over, sort of like when in a lesson it could show up in a bubble below the word.

  1. Duolingo site is down or slow or acting strangely ... that it for now... I was not able to make extension work for Uk => En and don't see checkpoints prediction ... more on that later. \ Then later: I think for prediction to work it needs some recent history... On the unfinished trees i don't see crown level prediction either. But i do see it on the tree that i am currently using :) ...

The prediction does indeed need some recent history to work. Again this is something I will write a full explanation of in the wiki. In summary, there are two methods for calculating the predictions for both tree level ups and reaching checkpoints.

The first is using the history of how much XP has been earned over the last 3 weeks, which is stored in the calendar object of the user data file.

The second is using the progress history that Duo Strength stores for each tree, which is a list of dates and the total number of lessons remaining for skills that are at the lowest crown level (your tree level).

The first method is only used when there isn't enough data stored in the progress history to use the second method. However, if there haven't been any XP earning events in the last 3 weeks for a particular tree, then there is no data for the first method either.

In this case nothing is shown, as there can be no meaningful prediction made.

  1. ... May be say "you passed all checkpoints"? like you do for XP after level 25. also in the options may be rename "Crown Level Prediction" to "Tree Level Prediction" since you're forecasting for next Tree Level

I will rename that option to "Tree Level Prediction", the terms have been a bit mixed over time as a lot of these are not official things, just abstractions of the data.

I could add in a message to about saying that all the checkpoints have been passed, and even that you are at the highest tree level if it is at L5. I'm not sure the checkpoints completed message adds much though, checkpoint progress becomes irrelevant once they are all passed so think it would just clutter the crowns information a little. I think I'll add the message for the L5 tree though as it is fairly big accomplishment, more so than passing the checkpoints.

ToranSharma commented 4 years ago

I think I'll add the message for the L5 tree though as it is fairly big accomplishment, more so than passing the checkpoints.

This has been added in 00609a6.

I will rename that option to "Tree Level Prediction", the terms have been a bit mixed over time as a lot of these are not official things, just abstractions of the data.

This has been changed in e24e311.

I think this addresses point 9.

alexseyk commented 4 years ago

Sounds like if there is more than 3 weeks b/w checkpoints then the prediction will not work.

I was suggesting a message since you do one for XP after Level 25. I agree both clog the view.

ToranSharma commented 4 years ago

Sounds like if there is more than 3 weeks b/w checkpoints then the prediction will not work.

The prediction won't work if there is no data for the current language in the calendar, this only goes back three weeks. Note this is also why the XP graph on duome only goes back three weeks too. image
The calendar is filled with all XP earning events. This includes lessons, tests outs, stories etc. For there to be no data in the calendar, you will have to have not done any of these for the current language in the last three weeks.

I was suggesting a message since you do one for XP after Level 25. I agree both clog the view. Yeah I suppose I wasn't very consistent, as I said, I have now added the message for L5 trees, but once passed all the checkpoints, the prediction will just not be added.

alexseyk commented 4 years ago

So I mentioned that extension does not load sometime .. here is one of those :

Open Duo ... say Learn En -> Es . Go to Stories. Change Language to Es -> En. Go back to Learn

Extension not loaded V1.3.10 . Same for Es -> En and consecutive change to En -> Es in stories

ToranSharma commented 4 years ago

Yeah this is something I am aware of, and is on my list of things to fix. The way I found it was by changing language on the forums, then going to learn. The languages you change between don't matter, they can be using the same base language or different.

Until I can make a fix you can refresh the page to get the extension to load.

Toran

ToranSharma commented 4 years ago

@alexseyk I was just looking into fixing the language change on the stories/discussion page then going back the the learn page. I can no longer reproduce this issue.

Would you be able to test this again, and see if the problem still persists?

There is a chance that duolingo has changed some of the underlying behaviour that means this is no longer an issue.

alexseyk commented 4 years ago

the "problem" is still here for me Extension loads only after page re-load using Chrome

ToranSharma commented 4 years ago

So I mentioned that extension does not load sometime .. here is one of those :

Open Duo ... say Learn En -> Es . Go to Stories. Change Language to Es -> En. Go back to Learn

Extension not loaded V1.3.10 . Same for Es -> En and consecutive change to En -> Es in stories

the "problem" is still here for me Extension loads only after page re-load using Chrome

Testing this again now specifically using the En/Es switch combination you mentioned. I have tried it in both directions and I still cannot reproduce it, the extension loads as expected when returning to the learn page.

alexseyk commented 4 years ago

Strange. Here is a video for courses Ru -> En & En -> Es. Note that extension does NOT work ONLY when changing from 1st to 2nd via discussion and not in reverse order.

https://yadi.sk/i/uOy_BOnPs2nR0Q

ToranSharma commented 4 years ago

Thanks for the video, it is strange that it is only breaking in one direction of change.

I have just managed to reproduce it my self and can see what is going on. The code is getting stuck in a loop as it has detected the language change that happens very quickly when the page first loads, but then the data it requests has not changed so it tries again waiting for the data to change.

I will see what I can do to make this more robust.

ToranSharma commented 4 years ago

I think I have sorted this out now. I have changed to logic that determines what to do with any new data responses. This is the sort of thing that I need to write out in the wiki.

Here is a side by side comparison of the old version on the left and thew new on the right. Side by side of fix

I am now catching the case that there was a language change before we send the first request. In this case I am ignoring any data received and asking for some new data, which we will then use. Any responses that aren't to the most recent request are now always ignored and never processed.

Here is some debugging log that might explain some of the processes involved:

duoStrength.js:4261 Changing language

duoStrength.js:3526 Sending requestID 0
duoStrength.js:3526 Sending requestID 1

duoStrength.js:3675 Got responseID 0 last request sent had ID 1
duoStrength.js:3678 Not using this response as it is out dated

duoStrength.js:3675 Got responseID 1 last request sent had ID 1
duoStrength.js:3687 processing responseID: 1

duoStrength.js:3566 newDataLanguageCode: "es", newDataUICode: "en", newDataLanguageString: "Spanish"        
                    languageCode: "", UICode: "", language: ""      
                    languageChangesPending: 1, languageChanged: true

duoStrength.js:3592 ignoring this data, setting the language flags to "unknown"
                    requesting some data more to use

duoStrength.js:3526 Sending requestID 2

duoStrength.js:3675 Got responseID 2 last request sent had ID 2
duoStrength.js:3687 processing responseID: 2

duoStrength.js:3566 newDataLanguageCode: "es", newDataUICode: "en", newDataLanguageString: "Spanish"        
                    languageCode: "unknown", UICode: "unknown", language: "unknown"     
                    languageChangesPending: 1, languageChanged: true

duoStrength.js:3629 Adding Features Now

These changes have been made in 3005780.

ToranSharma commented 4 years ago

v1.3.22 has now been released with this change.

This leaves points 4, 6 & 8 to address.