The add_tag function adds the text, but the task editor overwrites it. Then the next time the task editor is open, the code at editor.py:158 sees that the text is blank and adds the "@tag" text. That code is not typically triggered anymore, since add_tag should take care of it, and then the text is no longer blank. Though, IIRC, the quick add still uses the old tag_added and thus this code path.
I don't think it's a regression.
The add_tag function adds the text, but the task editor overwrites it. Then the next time the task editor is open, the code at editor.py:158 sees that the text is blank and adds the "@tag" text. That code is not typically triggered anymore, since add_tag should take care of it, and then the text is no longer blank. Though, IIRC, the quick add still uses the old tag_added and thus this code path.