I'm not seeing them getting overwritten automatically, even when an id is passed. It looks like that only happens as part of `show_api_messages`, not when calling `show_message` directly. I think it would be a nice behavior, though -- what do you think, should I move:

    if (msg_id) {
        clear_message(msg_id)
    }

from `show_api_messages` to `show_message`? Since the former uses the latter, it will still continue overwriting API error messages, but it will avoid duplicates elsewhere as well.