* Added: Option to display rich embeds in chat for all links and not just those to Twitch Clips and Videos. (Closes#554)
* Added: Option to only display rich embeds for links posted by users of a certain level. (Broadcaster, VIP, etc.)
* Fixed: Implement logic for determining if embedded chat is dark or not, since embedded chat is a special snowflake. (Closes#557)
* Fixed: Emote Alignment setting broke due to DOM changes in last update. (Closes#555)
* Fixed: Clicking Stream Latency metadata not toggling the visibility of the player's playback statistics.
* Fixed: The Turbo landing page being inappropriately darkened. (Twitch forgot to add the "base text color" class to anything so text becomes invisible against the background.)
* Fixed: More emote menu fixes. Check that emote data from Twitch doesn't contain null values, because apparently it can.
* Fixed: Chat width in portrait mode using Microsoft Edge.
* Fixed: `no_invert` not applying to badges correctly. (Closes#547)
* Added: Setting to force the tags/metadata bar to the top of information pane beneath the player.
* Fixed: Some users, somehow, have their emote menu sorting setting set to an invalid value, breaking the player when it tries to sort. Fall back to the default if there's no valid sorting setting.
* Changed: Make the changelog properly handle commits with versions starting with a `v`.
* Added: Debug Log generation and easy uploading for issue reports.
* Fixed: Bug with chat lines not having a state causing rendering to crash.
* Fixed: Add an error boundary around the custom FFZ Emote Menu to catch errors, displaying feedback and sending error reports rather than silently failing.
* Fixed: Typo in Fine when logging errors.
* Changed: Update chat types with the latest values from Twitch's source.
* Changed: Update the GitHub issue template with instructions on uploading logs from v4.
* Fixed: Loading errors in the Browse Popular directory due to a renamed query field.
* Fixed: Block and Hide Thumbnail buttons not appearing in Game directories. (Fixes#538)
* Fixed: Custom chat width applying when portrait mode is active. (Fixes#540)
* Fixed: FrankerFaceZ not properly detecting the dark theme when theater mode is enabled and then not using appropriate colors. (Fixes#541)
* Fixed: Override badges appearing invisible with certain badge styles.
* Maintenance: Update the chat types enum to match current Twitch values.
* Fixed: Game directory pages not loading.
* Changed: Rewrite GraphQL query merging logic to hopefully perform in a more robust manner less likely to break in the future.
* Added: Initial support for the `/delete` command. Only specific messages will be removed from chat when one is received, now, and there's an easy to add action for In-Line Chat Actions to let moderators perform the action.
* Added: Custom timestamp formats for chat messages.
* Fixed: Hook the correct load event for video elements in rich link tool-tips.
* Fixed: Display Block and Hide Thumbnail buttons on the new game directory pages.
* Changed: Use markdown for rendering item descriptions in the settings menu rather than HTML.
* Fixed: Rename all references to `tw-c-background` to `tw-c-background-base` and `tw-c-text` to `tw-c-text-base` to fix rendering issues with FrankerFaceZ's custom UI due to Twitch CSS changes.
* Fixed: Merge User and Room objects when ID and login are both known at once.
* Fixed: Spacing and sorting of metadata beneath the player. (Closes %520)
* Fixed: Update the settings menu when new settings are added while the menu is open. (Closes#523)
* Fixed: Do not maximize or minimize the settings window when double-clicking in the search box. (Closes#521)
* Fixed: Force Apollo queries to reload if there is missing data in the cache. This should fix the loading errors.
* Fixed: Use `Tier 1`, `Tier 2`, `Tier 3`, etc. in the emote menu when the price is not available for a subscription product.
* Added: Setting to disable player auto-play. (Closes#515)
* Fixed: Cheers not appearing in chat messages.
* Fixed: Reasons not working for timeouts / bans in in-line actions. (Closes#513)
* Fixed: Typo in chat code fixes causing message deletion setting to not work correctly.
* Fixed: Remove request causing following directory to crash, until such time as we can figure out why it's happening.
* Not Fixed: Directory stuff.
* Fixed: Chat handling.
This is an initial release to add support for Twitch's changes to how chat works internally. Everything should be working. I'm not entirely happy with the code though, so I'll be reviewing this in the future when I have time to clean things up.
I haven't had a chance to go over directory features yet, and likely won't for several days because of my job.
* Fixed: Twitch changed the internal structure of their dynamically loaded component system, preventing FrankerFaceZ from being able to force a new chunk to load to grab the internals of webpack.
* Fixed: Issue where settings context was not being set up correctly in pop-out chat.
* Fixed: Chat Width setting on various channel sub-pages on the old layout.
* Changed: Limit emote menu subscription benefit requests to 75 items per request due to issues with Twitch's GraphQL API periodically returning errors when requesting 100 items.
* Changed: Set the API stress testing experiment to 100% roll-out.
* Changed: Add a mouse hover event handler for emote menu sections to force emotes to display in the event that the IntersectionObserver fails to update correctly.
* Changed: Display gift icons in the emote menu next to gifted subscriptions.
* Changed: Force the IntersectionObserver in the emote menu to update whenever a new section is added to ensure that there's always a valid state.
* Changed: Set the API Stress Testing experiment to 35%.
* Fixed: Chat Width not applying correctly on pages like Videos on the old channel layout.
* Changed: Implement an IntersectionObserver into the emote menu in an attempt to get the menu rendering faster when there are an incredible number of emote sets.
* Changed: Roll out the new API experiment to 25%. (This is still pulling data from the old server, and merely serves to test the performance of the new server stack.)
* Fixed: Socket server not joining the correct room when using the new channel layout, causing some metadata to work incorrectly.
* Fixed: Featured Follow buttons not disappearing correctly when they are removed from a channel.
* 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.