* Added: Toggle the Player Stats pop-up when you click on the stream latency metadata tag.
* Fixed: Bug where the chat would not appear at full width when combining portrait mode, theater mode, and swap sidebars.
* Fixed: Subscription balloon appearing off screen with the new layout and the Swap Sidebars option.
* Fixed: Metadata not updating correctly on the legacy layout.
* Fixed: Controls to block/unblock games and hide/unhide thumbnails not appearing on the directory with the new layout.
* Fixed: Take a few more variables into account when sizing the player for Portrait Mode.
* Changed: Fade in the Host button, not responding to user interaction while it's fading to give users a chance to react to the UI change.
* Added: Portrait Mode Threshold setting for customizing at precisely which point Portrait Mode kicks in.
* Fixed: Do not automatically hide chat because of a narrow window when Portrait Mode is enabled.
* Added: Portrait Mode! Put chat beneath the player when your window is taller than it is wide to make the best use of space for both the player and chat.
* Fixed: Better route matching for when we're actually on the new channel page.
* Fixed: Unable to effectively collapse chat with a custom width on the new layout.
* Added "Chat > Behavior > Deleted Message Style" setting to customize how deleted messages appear when set to always be visible.
* Added "Chat > Filtering > Filter your own messages." setting to control whether or not your own chat messages are filtered. Defaults to disabled.
* Fixed: Channel Hosting, via better detection of new vs old channel component style.
* Changed: Do not hide the emote menu when it's taller than the whisper UI.
* Fixed: Chat features not working on the dashboard.
* Fixed: Player features not working with Twitch's new player loading scheme.
* Added: Emoji to the Emote Menu.
* Changed: Do not look up all a user's emote sets until they actually open the emote menu to reduce server load.
* Changed: Ignore a few extra useless errors with automatic error reporting.
* Fixed: Adding the Prime icon to Subscribe buttons when your free Prime sub is available.
* Fixed: Uncaught exceptions when a pop-up blocker stops us from opening a new tab.
* Fixed: Update Fine to deal with changes to how the React Root is stored in the DOM.
Behind the Scenes
* Working on the UI for Translation Editing
* Refactor some of the main menu dialog logic into a more generic Dialog class
* Added: Separate setting for hiding the Get Bits button in the site header without hiding the bits UI in chat.
* Added: Setting to hide avatars in the side navigation bar.
* Fixed: Do not inject FFZ into the Extension Testing Rig.
* Fixed: Users mentioning themselves in Chat on Videos and Clips Chat appearing to highlight the user.
* Fixed: Attempting to read Twitch experiment state from an uninitialized controller.
* Fixed: Appearance of Twitch emotes in locally displayed `/me` messages in chat.
* Fixed: Rendering of international usernames in Clips Chat.
* Changed: Tag error reports with the current site.
Fix the implementation of rate-limiting in the socket server to use data from the sealed request. Load a list of acceptable origins from the config file.
* Added: Initial support for chat on Clips.
* Fixed: Do not attempt to apply the dark theme to the Twitch Prime landing page.
* Fixed: Remove debug logging from Chat on Videos.
* Added: Initial support for Chat on Videos.
Please note that moderation features are not currently available when FFZ features for Chat on Videos are enabled. There is a setting to disable custom FFZ rendering which makes moderation tools accessible.
More work has also been done on getting custom viewer cards ready.
* Fixed: Emotes in locally echoed chat messages. (Update code for parsing emotes in locally echoed chat messages to find emote data in the new location.)
* Fixed: Automatic opting out from raids not working in pop-out chat.
* Fixed: Error causing messages in the delayed buffer to not be removed when a user is timed out.
* Changed: Add localization support for message when a clear chat is ignored.
* Added: Setting to ignore moderators clearing chat.
* Added: Setting to remove deleted messages from chat entirely.
* Added: Setting to control the delay before chat messages appear.
* Fixed: Twitch emotes not displaying in Whispers.
* Fixed: Alignment of in-line actions when using Emote Alignment: Padded.
* Changed: Display the git commit hash for the current build in the FFZ Control Center, rather than the webpack build hash.
* Changed: Begin pulling a Changelog from GitHub commits rather than loading HTML from the FFZ CDN.
Implement a Markdown Vue component for safely and easily displaying rich content.
* Added: Remove messages entirely using Blocked Terms.
* Fixed: Position of emotes in locally echoed chat messages containing emoji.
Added a `chat:receive-message` event for processing incoming chat messages before they're added to the buffer.
* Added: Whisper Support
* Fixed: UI missing hover state for a few elements added by FrankerFaceZ.
* Fixed: Handle missing badge definition when rendering FFZ badges.
* Fixed: Update static chat message type mappings.
* Fixed: Error in metadata when unable to get the proper player.
* Fixed: Incorrectly applying dark theme to products page.
A bit more work on getting enhanced viewer cards ready.
* Changed: Make usernames in chat line resub messages clickable.
* Fixed: Remove debug logging.
* Fixed: Make the code to automatically leave raids more resilient against Twitch wanting people to join raids automatically.
* Added: Smooth Scrolling for Chat. (Thanks @neuspadrin)
* Changed: Disable mouse interaction with the background of the metadata bar when it's visible over the player in theater mode.
* Fixed: All directory features except host menus.
* API Added: tList(...) method for i18n to support localizing strings with embedded links, etc.
* Update all usages of `tw-input` and `tw-select` to use the new, overly-verbose classes Twitch added.
* Add a few of the monkey faces to the local emote code to make them work.
* Override emotes when building the emote code <-> id map, to let emotes from higher sets override global emotes.
This adds a new module called switchboard that abuses the root React Router instance to forcibly load a chunk, letting us grab `require()` quickly rather than waiting potentially forever for another chunk to be loaded due to user action, etc.