Thanks for your bug report. The reason for this quirk is that the hotlink feature works in two ways: the first is the built-in hotlink feature, the second is the HOTLINK event.

The built-in hotlink feature can pick out and match nicknames on channels even if they are surrounded by non-alphanumeric characters. When you move the mouse over them, the hotlink will only appear when over the nickname part of the word.

The HOTLINK event, on the other hand, is designed to pick out words. Since the HOTLINK event does not have an option that says "only hotlink on nicknames", it just reports words. With the recent update to HOTLINK, I extended it to store nicknames in $hotlink(match) if it finds them inside the current word, but even when it does this, its primary purpose is to pick out words for scripts to use and everything in the code is designed around this.

When in the HOTLINK event, moving the mouse over "nickname)" from left to right will make the mouse a hotlink cursor because it is on a word but it will still try to find a nickname inside it and will trim ")" if necessary and will store it in $hotlink(match). However, notice that the moment you move your mouse over the ")" part, it reports the whole word as match. The same applies from right to left.

So the question is, can $hotlink(match) be made to report "nickname", along with the correct .pos, even if your mouse cursor is over the ")" part of "nickname)". In other words, can it work both ways at the same time?

I was able to implement a change that seems to work, however it is a kludge, is not pretty, and it is hard to tell if there are any side-effects. This change will be in the next beta. If it does have side-effects, I will need to undo it and we will have to live with the current behaviour until the hotlink feature is re-designed.