Migaku-Kanji-Addon icon indicating copy to clipboard operation
Migaku-Kanji-Addon copied to clipboard

[BUG] setting a custom keyword for a character doesn't update related production characters

Open izik1 opened this issue 1 year ago • 1 comments

Describe the bug Kinda a two for one in the same spot setting a custom keyword for a character doesn't update the keyword in production characters it's a primitive of/are primitives of it also, by the same effect, updating the story/keyword of a card updates all recognition cards.

To Reproduce Steps to reproduce the behavior:

  • make/already have production and recognition cards for: , ,
  • update the keyword of 音 (perhaps to おと, or, if we feel like using ascii, sounds, just, something different than the default or whatever it already is)
  • if you have a large number of recognition cards, notice the wait time
  • observe that every recognition card in the collection wants to sync (for me that's over 1000 cards in my next sync!)
  • observe that 日 and 暗 still have the old keyword for 音 when viewed through their production cards in the card browser, but when viewed the recognition card are updated.

This query filter is ~off~ incorrect: https://github.com/migaku-official/Migaku-Kanji-Addon/blob/88e01ba3ff86da2a2d7c05dfcc31db82112e65b0/addon/kanji.py#L569-L571

Expected behavior When updating a keyword / story, all related notes should update (to have the right keyword for the original note) and only those notes should update.

Desktop (please complete the following information):

  • OS and Version: Linux (NixOS, actual OS details unimportant)
  • Anki Version 23.12beta2 (presumably no related issues with Anki itself)

Additional context I'm willing to fix this (even have a partial fix ready), just want to write it down and be told "yeah, sure"

Screenshots If applicable, add screenshots to help explain your problem.

izik1 avatar Dec 11 '23 22:12 izik1

Ah, good catch! I had already fixed the 'every recognition card wants to sync' problem here ages ago in my repository but I missed including that into previous PR.
What still needs to be done is iteratively update also every child-note in the primitive_of list (function refresh_notes_for_character).

If you have time, please do contribute with your fix, test it and make a PR (I'm currently tied up with another feature I'm working on).

mjuhanne avatar Dec 12 '23 08:12 mjuhanne