The New And Improved List Of API and Third Party Apps

Hmm, there seems to be broken scripts here that can be fixed with some tweaks. I believe it would be beneficial to tag them to give a heads up to people that it won’t work right off the bat, what do you folks think?

Currently I found:

I think we’d never keep up with the changes to that status. As much as I may like the idea.

Is the original post still editable? I get an error when I try. In case anyone is able to edit it, I was wanting to remove my “Tofurky edition” of “Wrap-up Button Enhancement” since it’s unmaintained whereas @Inserio’s “Jerky edition” is working just fine. No point confusing folks

1 Like

I suspect if you tried tagging Inserio in the OP, it won’t let you save the edit because only 10 unique users can be tagged in one post. The ones already tagged can be tagged again, but new ones can’t be tagged. That’s why some script authors have been linked to their profiles instead. Just my hypothesis.

Nah I’m just trying to delete some text, not add any tags. This is what the error I see when I try to edit the post, and the text input is blank. I’ve tried discarding draft and trying again, but I get the same. Also tried in a private browser winder and in a different browser and get the same result.

In the browser console I can see the following error stack trace appear alongside this:

Stack trace
Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'type')
closeNode @ index.js:210
parse @ index.js:333
convert @ parser.js:43
convertFromMarkdown @ prosemirror-editor.gjs:242
_join @ index.js:788
join @ index.js:605
p @ index.js:152
(anonymous) @ index.js:250
convertFromValue @ prosemirror-editor.gjs:258
_join @ index.js:788
join @ index.js:605
p @ index.js:152
(anonymous) @ index.js:250
setup @ prosemirror-editor.gjs:234
installModifier @ did-insert.js:57
(anonymous) @ index.js:573
Z @ index.js:430
install @ index.js:573
(anonymous) @ index.js:2347
X @ index.js:416
commit @ index.js:2347
commit @ index.js:2400
eX @ index.js:2416
_renderRoots @ index-BCp6wOJU.js:4914
_renderRootsTransaction @ index-BCp6wOJU.js:4962
_revalidate @ index-BCp6wOJU.js:4995
invoke @ index.js:262
flush @ index.js:180
flush @ index.js:334
_end @ index.js:762
end @ index.js:565
_run @ index.js:806
_join @ index.js:783
join @ index.js:605
(anonymous) @ index-BCp6wOJU.js:4728
_trigger @ index.js:860
_end @ index.js:775
(anonymous) @ index.js:499
Promise.then
(anonymous) @ index.js:18
flush @ index.js:29
_scheduleAutorun @ index.js:928
_end @ index.js:768
(anonymous) @ index.js:499
Promise.then
(anonymous) @ index.js:18
flush @ index.js:29
_scheduleAutorun @ index.js:928
_end @ index.js:768
(anonymous) @ index.js:499
Promise.then
(anonymous) @ index.js:18
flush @ index.js:29
_scheduleAutorun @ index.js:928
_end @ index.js:768
(anonymous) @ index.js:499
Promise.then
(anonymous) @ index.js:18
flush @ index.js:29
_scheduleAutorun @ index.js:928
_end @ index.js:768
(anonymous) @ index.js:499
Promise.then
(anonymous) @ index.js:18
flush @ index.js:29
_scheduleAutorun @ index.js:928
_end @ index.js:768
(anonymous) @ index.js:499
Promise.then
(anonymous) @ index.js:18
flush @ index.js:29
_scheduleAutorun @ index.js:928
_end @ index.js:768
(anonymous) @ index.js:499
Promise.then
(anonymous) @ index.js:18
flush @ index.js:29
_scheduleAutorun @ index.js:928
_end @ index.js:768
(anonymous) @ index.js:499
Promise.then
(anonymous) @ index.js:18
flush @ index.js:29
_scheduleAutorun @ index.js:928
_end @ index.js:768
(anonymous) @ index.js:499
Promise.then
(anonymous) @ index.js:18
flush @ index.js:29
_scheduleAutorun @ index.js:928
_end @ index.js:768
(anonymous) @ index.js:499
Promise.then
(anonymous) @ index.js:18
flush @ index.js:29
_scheduleAutorun @ index.js:928
_end @ index.js:768
(anonymous) @ index.js:499
Promise.then
(anonymous) @ index.js:18
flush @ index.js:29
_scheduleAutorun @ index.js:928
_end @ index.js:768
(anonymous) @ index.js:499
Promise.then
(anonymous) @ index.js:18
flush @ index.js:29
_scheduleAutorun @ index.js:928
_end @ index.js:768
(anonymous) @ index.js:499
Promise.then
(anonymous) @ index.js:18
flush @ index.js:29
_scheduleAutorun @ index.js:928
_ensureInstance @ index.js:919
ensureInstance @ index.js:731
scheduleRevalidate @ index-BCp6wOJU.js:3609
dirtyTag @ index.js:229
P @ index.js:287
setter @ index.js:447
l @ cache-fCezwMOy.js:1886
o @ property_set-2JtwI-ab.js:47
r @ property_set-2JtwI-ab.js:42
(anonymous) @ set_properties-CAos5Wl4.js:94
ec @ cache-fCezwMOy.js:802
o @ set_properties-CAos5Wl4.js:88
setProperties @ observable.js:30
(anonymous) @ composer.js:998
await in (anonymous)
k @ rsvp-ziM3qQyS.js:412
(anonymous) @ rsvp-ziM3qQyS.js:468
invoke @ index.js:264
flush @ index.js:180
flush @ index.js:334
_end @ index.js:762
end @ index.js:565
_runExpiredTimers @ index.js:869
setTimeout
setTimeout @ index.js:39
_installTimerTimeout @ index.js:912
_later @ index.js:823
later @ index.js:652
T @ index.js:562
_triggerAction @ d-button.gjs:135
click @ d-button.gjs:93

Hovering over the error, it looks like it’s an issue with the prosemirror-markdown library:

image

Aha, I think I know what it is. Try clicking the A button in the corner of the post editor and try editing the post again.

Ah, that worked, thanks! Is the rich text editor buggy with large posts or posts with lots of revisions?

1 Like

Yay! :high_touch: It’s a relatively recent change, so when it first came out, I immediately switched. Dunno how buggy it is. It feels so restrictive and unpredictable when you’re used to editing all markdown and such manually, haha. But if you make a dropdown spoiler thingie and post with the spoiler open, it stays open in your post. It’s so unnecessary for example around here with lots of book clubs and you want to spare your club mates for spoilers and accidentally leave the spoiler dropdown open for everyone to see its contents.

I added a new macos menubar application https://github.com/statropy/wanikani-next-review. To install, download the dmg from https://github.com/statropy/wanikani-next-review/releases. The application is NOT signed, so you need to go through an extra step before it will run on macos.

It shows you when your next on-level review is for pre-guru radicals/kanji.
Screenshot 2025-10-25 at 4.04.01 PM

I made this for myself but thought it would be fun to create an installer and share it.

3 Likes

Hello, I have a weird add-on idea. Would it be possible to create one where on meaning review it just auto play the audio until the meaning is found ? Maybe it would help my brain associate the meaning and the prononciation of the word.

Hey everyone, just wanted to add my app to the list. https://gakugame.app It’s a full featured WaniKani client for iOS, (and all apple platforms macOS, tvOS, visionOS, watchOS) as well as Android. It’s native for each platform in Swift and Kotlin. I have another thread here about it, hope you like it!

1 Like

You can edit the top post to add your app there with all those that are already there. It is a wiki. Just click on the pencil icon at the bottom of the top post.

1 Like

ah ok! took me a while to figure out how to edit, but I saw the post above to press the “A” button to switch to the new editor and got it done; thanks!

1 Like

Is there something that auto expands the item info tab when you get a review wrong?

Double Check 2 has a setting that does this.

For browser applications I recently posted about one I made that includes alternative review games! Includes learning images for hiragana, katakana, and community made images for many review items!

SukiStudy

I have created a listening mode review for meaning vocab only.

Configuration Options

  • Voice: Select your preferred audio source.
  • Playback Delay: Adjust the timing between the audio and the reveal.
  • Repetition: Set the number of times the audio plays before the word is shown.
  • Toggle Shortcut: Use a icon to turn the script on or off quickly.

You can check it out here. [Userscript] WaniKani 'Listening Mode'

1 Like

Did you update the top topic post? It is a wiki. Anyone can update it.

2 Likes

I tried but got “An error occurred: Sorry, you can only mention 10 users in a post.”

2 Likes