As I noted in the comments above, the root cause of this bug is that the chat search boxes don't use proper HTML5 placeholder
attributes, but instead kluge it in JavaScript by altering the content and styling of the search boxes "on the fly". This klugy implementation is prone to all sorts of bugs, of which you've found one above.
Specifically, the reason this particular problem happens on Firefox is that, when you reload the page, Firefox prefills the input boxes based on their previous values. In particular, Firefox remembers that the room search box used to contain the text "filter rooms", and prefills it with that text. The chat JavaScript then sees this prefilled text and decides that, since the box is not empty, it should not be given the pseudo-placeholder style.
(The reason it doesn't happen to the top bar search box is that, apparently, Firefox treats its pseudo-placeholder string "search" as a special case, and won't try to prefill it. I'd guess that this special case was added specifically to avoid breaking too many klugy scripts like this.)
Anyway, I've added some code to SOUP v1.10 that will replace these pseudo-placeholders with real ones. In case you're curious, here's what it looks like:
$('#searchbox, #search').off('focus blur').attr( 'placeholder', function () {
var $this = $(this);
if ( $this.closest('#roomsearch').length ) return 'filter rooms';
else if ( $this.closest('#usersearch').length ) return 'filter users';
else return 'search';
} ).filter('.watermark').val('').removeClass('watermark');
As you might note, this is really yet another kluge piled on top of the existing kluge, but it seems to work.
placeholder
attribute instead of kluging it with JavaScript.initRoomIndex()
function is being called either too early or too late. I'd figure out which if the Firefox JS debugger would cooperate with me. :-(