Beginning yesterday-ish, I began receiving a large number of complaints about the chat window being broken. Given that I haven’t updated most of these games in a while I’m led to believe this is on Roblox’s end. It doesn’t occur for everyone, I personally have yet to have it happen to myself, but it has been happening to a still significant portion of my playerbase. Apparently the chat window gets stuck like this, with the topbar button falsely indicating that the chat window is open.
Clicking the topbar button makes no difference, and chatting (while still working) doesn’t make it appear either. On top of all of this, there are no pertinent errors appearing in any outputs, so I don’t even know where to begin to look.
I can confirm this happens at my game as well. The chat window will disappear for players as soon as they join and they’ll be unable to see the chat, but oddly enough can still type and their chats can be seen by others.
@FriendlyBiscuit can confirm this as well.
No errors appear, and I changed nothing in the game. This is recent.
Unfortunately no, it’s just something that seems to happen right as you join the game. Certain people seem to usually or always experience it without any errors while others (like myself) don’t experience it at all. It’s the weirdest thing.
I was able to replicate this issue in studio and when I did it seemed that the Chat screen gui’s Enabled property was set to false. Was this also the case for this user? I am not sure how WindowResizable could be affecting this though.
So I disabled WindowResizable in my game to try to fix the bug temporarily and it did not fix it. I also have ChatOnWithTopBarOff enabled because I have the topbar disabled. (same place as I mentioned before)
I am still looking into the exact cause of this bug but I have a simple fix you can add to the chat in your own game.
In ChatScript.ChatMain.ChatWindow, where the size of the chat window is calculated (around line 285) add the following two lines.
local screenGuiParent = GetScreenGuiParent()
resizeLock = true --- Add this line.
if (deviceType == DEVICE_PHONE) then
BaseFrame.Size = ChatSettings.DefaultWindowSizePhone
elseif (deviceType == DEVICE_TABLET) then
BaseFrame.Size = ChatSettings.DefaultWindowSizeTablet
BaseFrame.Size = ChatSettings.DefaultWindowSizeDesktop
resizeLock = false --- Add this line.
The issue seems to be that ChatResizeFrame.Changed fires when absolute position changes but the value has not yet been changed, so it uses 0, 0 as the absolute position when doing the calculations rather than the new absolute position.