`state.chat.room` is not changed when moving to a pm, so when returning back to a channel, it remains unchanged. When the room id doesn't change, it doesn't trigger `fetchMessages` so the messages remain on the pm instead of the channel.
Anything that directly changed chatrooms via changeRoom() would cause messages to be fetched twice. Change code so that they change the `state.chat.room` target instead, which triggers the function without causing duplicate requests.
For some reason, alpinejs triggers this even though the property doesn't change. Probably some bug. I looked into alpinejs, which itself uses vue's reactivity package, but I couldn't figure it out.
This is no longer a tab, but can be shown whenever, so we no longer need logic to check if it's the current user tab and to hide buttons if the user tab is currently displayed.
It causes a flash of content disappearing and reappearing. It looks far better for the old messages to remain on the screen for an extra half second then to hide the messages when switching chatbox tabs. It also looks better when first loading the home page to have no messages at first and have a blank chatbox window for half a second instead of the chatbox window disappearing. When this happens, the featured torrents flash in to fill up the empty space which looks glitchy.
This attribute was used to prevent chatbox scrolling while hovering over it and new messages are received back when JS was used to prevent this. In 7487869, it was changed from JS to a combination of HTML and CSS, so it's no longer needed.
This functionality never worked in the vue.js chatbox and personally would rather chatbox not function like this. This functionality truncates the chatbox to the latest 100 messages every time you send a message.
We already clamp the font size when converting the bbcode to html. Also, we don't validate this anywhere else such as forum posts or torrent descriptions.