* Added: Social media buttons to the FFZ Control Center.
* Fixed: Check boxes in settings UI.
* Fixed: Use word wrap for usernames in grouped mass gift sub messages.
* Fixed: Bug with tab completion breaking chat if Twitch's tab completion handler returns null.
* Added: New settings in Chat > Appearance for controlling Subscription notices in chat.
* Changed: Display an icon next to new subscription notices, like vanilla Twitch is doing now.
* Changed: Display in-line moderation actions on subscription notices without associated messages.
You can now merge mass gift subs, as well as completely hide subscription notices if you so choose. Please note that you will still see the messages people send with their gift regardless of these new settings.
* Added: Override chat line rendering for viewer cards (and also Rooms, as a side effect. Rooms are still a thing and people use them, right? Right? ... right.....?)
* Fixed: With Swap Sidebars enabled in Firefox, the button to expand and close chat not appearing correctly.
* Fixed: Messages being removed for moderators when they shouldn't be due to FFZ settings.
* Added: Support for clicking Twitch emotes to open information cards.
* Added: Option to allow clicking blocked terms in chat to reveal the term.
* Fixed: Twitch Experiments not being detected properly.
* Changed: By default, open a Twitch subscription page rather than TwitchEmotes when Shift-Clicking a subscriber emote.
* Changed: Add a link information provider for Pretzel Rocks.
* Fixed: Display better information for links to Twitch channels and to Twitch pages without video content.
* Fixed: Hide Rerun Bar setting incorrectly hiding video information on other channel pages.
* Fixed: Emote Menu icon not appearing correctly when the option to replace it with the FFZ logo is enabled.
* Fixed: Hide Event Bar and Hide Rerun Bar settings for the player.
* Fixed: GiftZ event emote note working correctly.
* Fixed: Unimplemented action `Gift Subscription` appearing in the available actions in the In-Line Actions editor.
* Added: Disclaimer on the Rich Embeds settings warning streamers that thumbnails *could* potentially have NSFW imagery and that they should be aware of the potential if planning on capturing chat.
* Fixed: Exception when calculating the user level for chat messages without badge data.
* 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.