[Userscript]: Double-Check (Version 2.x)

Yeah, that’s the one feature I haven’t re-implemented since the big WK change. I’m not sure when, but I do plan to re-add it.

2 Likes

I’m seeing a minor misbehaviour caused by Double-Check (it doesn’t happen if I turn the script off).

At the end of a review session, WaniKani redirects back to the homepage. The homepage loads, with 1 review still showing as todo. This appears to be a race condition between sending the answer to the last review back to the server, and loading the front page, as a simple page refresh corrects this.

My guess is that without Double-Check, WaniKani would have already sent success or failure back to the server when displaying a red or green result, so there’s a natural delay before the user presses enter a 2nd time to exit reviews - but with Double-Check, committing to success or failure doesn’t occur until the same keypress that triggers navigation back to the home page.

I’m not sure what can be done about this, short of adding a short delay in the script.

1 Like

i’ve also been consistently having this issue. i just tested some reviews with only double check disabled and it didn’t occur.

I posted an update about an hour ago. It adds a 0.5s delay after submitting the final review. Let me know if that helps.

(Also… @woeroboros)

4 Likes

Seems to have solved the ghost “1 review left” issue for me.

Reviving this for the question at the end because I needed that extra 1 review, it’s the only thing that keeps me from having to refresh the page just to start reviews

1 Like

also seems to have sorted it out for me! thanks so much for fixing it (and all your hard work)

1 Like

If you haven’t already, I’d suggest at least submitting a feature request to WK. That would be the ideal solution.

Beyond that, though, this would be better as a standalone script for the dashboard. I’d suggest putting in a request in the [script request] thread.

2 Likes
4 Likes

Classic!

Side note and shameless flame bait: The continued popularity of Emacs and VIM as primary editors astounds me. I’m quite aware of how powerful they are, and they’re great ubiquitous tools for when you’re on some random terminal… but as part of an everyday workflow?? No… I’ve got much better tools at hand.

4 Likes

I’m not sure they’re all that popular with people who weren’t already using them. My impression is that most younger devs are using VSCode these days. Personally I use emacs because I’ve used it for over 25 years and I’m used to how it works. (Also it’s comforting to think it’s likely to still be around for the next 25 years :-))

2 Likes

Maybe use a bookmark to the review URL? https://www.wanikani.com/subjects/review

1 Like

That’s the main use case that makes sense to me. I’ve had the same email address longer than many of the younger generation of programmers has been alive, so I understand using old-but-great tools when you’ve been using them so long that they’ve become borg prosthetics. :grin:

1 Like

Reject IDE bloat, embrace monke the zen of simple tools.

The IDE vs vim/Emacs debate is also not particularly new, Visual Studio (née Visual C++) started in the early 90’s, Delphi in 1995 and Eclipse in the early 2000’s.

Most devs who use vim/Emacs nowadays don’t do it because there was no choice when they started, in fact I’d wager that most of us tried IDEs early on and eventually decided that we preferred simpler, composable tools. At least that’s how it went for me.

That’s not to say that I have anything against IDEs, who cares as long as the code is good. Most of my colleagues use VSCode these days.

2 Likes

Thanks for reminding me I’ve had my gmail for 18 years… since I was 18 :joy:

Would it be possible to show current specific SRS level (and/or potential promotion/demotion levels) before entering the answer?

This isn’t really in Double-Check’s wheelhouse, but it relates closely to the way I use Double-Check, so I’m asking here. Maybe there’s an existing userscript (modified for the new interface) that does this, but if so I haven’t found it. (There was one, the Wanikani Review SRS/Level Indicator mentioned earlier in the topic, but it stopped being maintained years ago, and from what I gleaned from the topic now requires at least three manual edits to get working now, if it does at all.)

tl;dr: The reason for my question and how it relates to Double-Check may be unclear. So I’ll explain in (sorry, kind of excruciating) detail below. Feel free to skip, if you already know what I’m asking for.

One of my main use-cases is getting stricter with myself before there’s a major step-up in delay time if I choose to consider an answer correct. The three biggies (with detailed examples if you care to read them) are:

I. Getting the wrong verb in a verb pair

Getting the right verb in a verb pair: for most kanji + okurigana doublets (or, in some cases, triplets), there are one or more answers that will be considered correct for all of them. For instance, take :

  • る is the transitive or “active”: オーブンで固めましたI hardened it in the oven.
  • る is the intransitive: オーブンで固まりましたIt hardened in the oven.

You can only answer “to harden something” for the first one, but you can answer just “to harden” for both, and WK will consider that correct.

I know I have difficulty keeping these apart (especially when they go against the common “え-sound ones are intransitive, あ-sound ones are transitive” pattern—like 固まる, 上がる, 下がる). Especially if you haven’t gotten the other one because it’s higher-level or not on WaniKani’s vocab list at all.

So I try to type the “to … something from the start to get used to it, but in Apprentice 1–3 I don’t care if I answer “to harden something” for 固まる; I just make a note of my mistake and use Double-Check to mark it right. But as that word gets higher in level, I want to be sure I have the difference down.

As for the intransitive, in most cases there is no displayed meaning without “something/someone/somewhere/somebody/etc.” that will get counted correct for the intransitive and not the transitive. You could go look (in a third-party app that shows all the allowed responses, not just the ones displayed on WaniKani) to find words that will only work for the intransitive version (like, in this case, “to solidify”), but often that’s not a primary meaning, it’s a pain to track down, and it’s hard to remember a specific synonym to always use—you’re most likely going to just enter “to harden” after 4 months since last seeing it.


II. Being shaky on just reading or meaning, vs. being shaky on both

Take 場合. If I type じょうごう (no, it’s ばあい), but the moment I see it marked wrong I remember “oh, right, it’s a funny one” and retype it correctly without having to look, I’m likely to allow it. Then if I type “conditions” for meaning, that’s not counted right (in WK it’s “Case, Circumstance, Situation”)—but it’s pretty close, so I’m likely to mark it right, too.

But if I did both in the same session?

  • If it were Apprentice 1–4, I’d let it be promoted anyway—I’ll see it again within the week and hopefully will remember my mistake.
  • If it were Guru I, I wouldn’t correct the second card; I’d let it come back around for a demotion.
  • If it were at Guru II, though, I wouldn’t let the wrong reading go, regardless of whether I got the meaning right or not. (The meaning, I’d have to decide based on whether I felt I was getting the wrong idea stuck in my head or not.)

III. Right English word, wrong meaning

Back to 場合: If I think it’s “conditions”, that’s really close, but as it progresses I need to stop thinking of “conditions”—which is why I wouldn’t add it as a synonym, even if I were marking it correct for, say, Apprentice 2 and 4. The word 場合 wouldn’t be correct for “Her family conditions are complicated” (that would be 事情) or “he agreed to the conditions of the contract” (that would be 条件).

Wrong part of speech, wrong usage or sense—to me, these are all allowable earlier on and not later. (And, again—the intransitive verbs!)


But Double-Check lets me mark things wrong or right already after I see the new level. So why do I care about seeing SRS level before I answer? For three reasons:

  1. If I have a lot of reviews backed up, I sometimes go fast and don’t worry so much about these details—a missed verb-transitivity recall, a じ/ぢ mixup, or even a “oh, silly, I thought I was looking at 字 when I was looking at 学 (or mixed up which pair of a 下/上 or 外/内 I was looking at, etc.)—I know both words, so I’ll still mark it right” I’ll just let slide. But seeing a specific SRS level would make me take longer on some higher-ranked entries to be sure, and give me reassurance about going quickly for lower-ranked ones.
  2. Sometimes I don’t want to decide how strict I should be until after I see the level—which currently requires I see both the reading and meaning cards before deciding, when I’d like to decide at the time of the flub on the first card.
    At low levels, if I slightly flub both the meaning and the reading—sometimes because I have a wire crossed that has made me, say, replace 恋人 and 変人 in my brain wholesale, but I see the issue—I’ll let it go. Same for a correction on a lower-ranked vocab entry earlier in the session giving me help on higher-ranked items with the same character.
    This can be fine with Double-Check—I just need to remember, “oh, I flubbed 変人 and typed ‘boyfriend’ and fixed it, but now I just flubbed 恋人 by typing へんじん, so when the reading for 変人 comes back around I need to mark it wrong even though I’ll get it now because I was just reminded of it”. But sometimes I don’t remember, especially if I have a particularly long review session. (And sometimes if I switch to another tab, the review invisibly reloads, so I’ll get the card thinking it’s the second time but as far as the app is concerned, it’s the first.)
    And since WK keeps stats on reading vs. meaning recall, I’d prefer not to mark the second card wrong just because I corrected the first card and have now changed my mind about allowing it.
  3. After I get feedback, I can convince myself a ‘lucky guess’ was actually in the back of my brain somewhere. No, I didn’t “almost forget it”—I’ve fully internalized it, thank you very much!
    Or, that my reasoning out a kanji’s sound by radical breakdown (which is much chancier than meaning) was legitimate. But if I see ahead of time this is higher-level—say, around Guru II—I’ll be more honest about whether I’m guessing or not. Above Guru, I’ll just enter “wuh” or “を” rather than a guess.

It costs a lot less to knock an item back to Apprentice than to let it get to Master and not realize I didn’t really know it until a month or more has gone by.

And if it’s going to be Burned, I don’t want to let either card slide if I had to stop—even a moment—to think about mnemonics. I only want to Burn items I have down cold.

I’ve been using the Tsurukame app to see my progress on words, and sometimes I’ll check that first, but it can be hard to look up an entry without spoiling the answer in the case that I really don’t have a good solution for: when I’m trying to decide whether to mark an answer on the first card of a pair right or not.

It would just be better in these cases if I knew—before entering an answer—that this is one I should be more careful about.

This might be a better feature request for WaniKani Show Specific SRS 2, but I think it belongs here because I think, for people not using Double-Check, the utility of seeing SRS level (whether specific or not) before answering isn’t really the use-case being targeted.

I agree that having the SRS level of an entry before answering is useful, it’s a standard feature in Flaming/Smouldering Durtles and I miss in on the desktop.

However as you mention I think it might be a better feature request for a script like Show Specific SRS and not this one. I actually tried to tweak the script to that end myself but couldn’t be bothered to figure out how to hook myself properly.

It's probably in this part.
let quiz_queue = await grab_queue();
let srs_manager = quiz_queue.quizQueue.srsManager;
//console.log('actual srs_manager:',srs_manager);
// swap out method with updated one below.

Then put in new questions

window.addEventListener('willShowNextQuestion', (e) => {
  const srsLevel = srs_manager.srsMap.get(e.detail.subject.id)
})

Personally I don’t care about showing SRS, but it should be nice if I can reset progress of an item (otherwise manually edit down SRS level). The current only native way is to wait until Burn, then resurrect.

WaniKani natively has review history somewhere, as long as the Review hasn’t already finished.

1 Like

Try [Reviews SRS Preview] and let me know what you think. To keep things simple, it just reuses the existing post-answer SRS popup, but without the pass/fail indicators.

image

1 Like

Thank you, I’ve been using it for several days now and I have no notes at all—fantastic!

It has occurred to me on to-be-Burned items that it gives me a bit of a hint, in that I sometimes have thought a “long-ago word” was in fact one I just learned because of similarity in shape or meaning (and also because vocab especially but occasionally kanji too get moved around in the course from a level I already learned them in to one I’m just doing now). Seeing it’s Enlightened warns me that no, it’s not the word I just learned.

OTOH, “The Week Without Double-Check” (I’m trademarking that) taught me that I was being a bit too lenient in trusting myself when I thought “oh, I just flubbed typing じ — I meant to type し, honest!”

Which does bring me to a future feature request for Double-Check: a list of inputted answers (for my purposes just for the current card in front of me; I don’t care especially about the previous time(s) I saw it and got it wrong). Here’s the use case from an actual experience last night:

  1. I got asked the reading for “虚栄心” (“vanity”). I say “kyo ei shin” to myself.
  2. I typed something. It was wrong.
  3. I tried again with “きょさかしん”. Wrong.
  4. I look at the answer—wait, it is きょえいしん! Time to mark it correct because I clearly just typo’d, Double-Check to the rescue!

Oh, wait—did I think it was きょうえいしん? Maybe I did. Once I stopped to think about it, I remembered the mnemonic about the void in Little Kyoto and was certain about 心 being read しん, but I convinced myself that “えい” used its kun’yomi here for some reason. Did I remember some mnemonic about the vanity of the light making it change readings or something?

Maybe I typed “きょうえいしん”. If I lengthened 虚 into きょう, I definitely want to mark it wrong, but if I just typo’d “きょいえしん”, I want to mark it right. Oh well, better safe than sorry, I’ll mark it wrong.

This happens to me for readings with some frequency; I make guesses after I’ve decided to mark it wrong (I’ll type - if I get it) before just looking, and every now and then I give up, look, and go “wait—that’s what I thought of already!” Or did I? Was it the first thing I tried but I typo’d? Did I type a different okurigana than the one right in front of me because I use this word in some other conjugated form more often? Who knows?

Maybe I’m the only one who uses Double-Check this way, to try multiple readings rather than just revealing them, but it would be quite useful. (I also do this for “you were a little off” meanings, or to try variant meanings to see if I remember them; it would be helpful for that, too.)

I realize this would be a pretty major addition, but I’m just throwing it out there since it would have to be part of Double-Check!