* Fixed: Scrolling to adjust volume not falling back to built-in volume when gain control is bound to the same input but not currently enabled.
* Fixed: Badges not appearing correctly in Firefox with high-DPI displays or page zoom.
* Added: Setting to toggle the Audio Compressor with a shortcut key.
* Added: Gain Control for the Audio Compressor. Gain Control is an additional volume control that runs after the compressor, as an alternative to the built-in volume control which happens before the compressor.
* Changed: Use case-insensitive string comparison for the `Current Page` profile rule.
* Fixed: The current channel not being detected correctly on user pages.
* API Added: Standardized input processors for settings. So far, there are `to_int` and `to_float` with support for bounds.
* Added: Notice when FFZ fails to save settings because `localStorage` is full.
* Added: Setting to move "Chat Identity" from the chat input box to the chat settings menu. (Closes#1025)
* Fixed: Actually hide links when "Hide matching links for rich content." is enabled. (Closes#1019)
* Fixed: Open the control center when clicking a markdown settings link without the control center open.
* API Added: Toasts displayed by the `site.menu_button` module now support markdown.
* Added: Support for custom VIP Badge images.
* Fixed: Certain emotes breaking when `Large Emotes` is combined with `Fix bad Twitch emotes`. (Closes#1020)
* Fixed: Remember the Compressor state, if it was toggled, when resetting the player. (Closes#1024)
* API Added: The `chat` module has two methods for maintaining a list of possible message highlight reasons, for use populating UI. Accessible via methods `addHighlightReason(key, data)` and `getHighlightReasons()`.
* API Added: `basic_array_merge` setting type.
* API Added: Logs now include the initial URL that the script was loaded into.
* API Changed: `<select>` settings can now support multiple selected values.
* Added: Setting to display timestamps on additional types of chat messages. (Closes#983)
* Changed: Do not set a Chat Width by default.
* Changed: Have WebMunch dump a list of possible webpack bundle names when failing to find webpack.
* Fixed: Appearance issues caused by Twitch's continual migration to procedural CSS class names, requiring duplicate CSS to achieve a native look.
* Fixed: Ambiguous input field names in some FFZ Control Center widgets. (Closes#1017)
* Fixed: Stop using Algolia for tag search.
* Fixed: Error in the main menu when a setting has a null search term.
* Dev Added: Profile rules for running development builds.
* Dev Added: The Link Service testing tool now supports loading example URLs from a local testing service.
* Added: Option to display modified Twitch emotes in the emote menu.
* Fixed: Use parenthesis counting to ensure links surrounded in `)` don't include the `)`, matching Twitch behavior. Closes#1015
* Fixed: Issue with Native Sorting for the emote menu where the first emote is sent to the end of the list.
* Fixed: Emote Menu not appearing correctly in whispers.
* Fixed: Favorites section not appearing in the Emote Menu when emoji are disabled.
* Fixed: The Stream Latency and Up-time metadata unnecessarily changing width due to Twitch's default font.
* Fixed: Case-sensitive blocked terms not functioning correctly.
* Fixed: Settings in the FFZ Control Center not reverting to a default appearance when reset.
* Fixed: Current Channel and Channel Color not being properly detected in the mod view, channel pages, and dashboard.
* Fixed: The channel points reward queue not functioning correctly.
* Changed: Allow highlighting and blocking by add-on badge, not just Twitch badge.
* Changed: Don't allocate `user.badges` and `user.emote_sets` until they're actually used to save on memory.
* Changed: Don't default the `Chat > Bits and Cheering >> Display animated cheers.` setting to the `Animated Emotes` setting.
* API Added: `badges.setBulk`, `badges.deleteBulk`, and `badges.extendBulk` for setting badges on users in bulk using an optimized data structure.
* API Added: Tokenizers can set `msg.ffz_halt_tokens = true` to prevent further tokenizers running. Useful when just discarding a message.
* Added: Display a one-time notice to BetterTTV users with FFZ Emotes enabled in that extension that they can disable the setting.
* Changed: Allow users to find `Animated Emotes` by searching for `gif`.
* Changed: Detect BetterTTV and use its `GIF Emotes` setting as the default for `Animated Emotes` if it is installed.
* Fixed: Animated Emotes not displaying animated images in the standalone "Twitch Emotes Menu" extension (which is also packaged with BetterTTV).
* Added: Setting to control whether or not emoji are listed in the emote menu.
* Added: Setting to force the emote menu to stay loaded when not open, which may lead to better performance for some users when the menu has a lot of content.
* Fixed: The new quick navigation bar in the emote menu not fitting the full height of its container.
* Added: Setting to control the display of animated emotes. Before you all get excited, this is for better integration with the `BetterTTV Emotes` add-on as well as any future add-ons with animated emotes.
* Added: Support for "Native Sort" for the emote menu, which uses the order from the API response.
* Added: Quick Navigation for the emote menu, which places a list of emote sets along the right side.
* Fixed: Skin tone picker for emoji in the emote menu not appearing correctly.
* Fixed: Center the FFZ Control Center correctly when opening it.
* Fixed: Modify the DOM we're emitting on clips pages for chat lines. Fixesnight/betterttv#4416
* API Added: Support for animated images for emotes.
* Changed: Allow sorting by add-on created date in the [Add-Ons](~add_ons) list.
* Changed: Allow filtering by only enabled add-ons in the [Add-Ons](~add_ons) list.
* Changed: Display created dates in the [Add-Ons](~add_ons) list.
* Fixed: Properly parse dates from the add-ons manifest file.
* Changed: The FFZ Control Center's home page now displays a list of new settings when you have new settings, as well as recently updated add-ons. A GitHub link was added as well. The Twitter embed will properly use light theme when appropriate.
* Changed: [Add-Ons](~add_ons) now supports sorting by update time, as well as name.
* Changed: The FFZ Control Center will now appear larger depending on your window size.
* Fixed: The [Add-Ons](~add_ons) list not being properly searchable in the FFZ Control Center.
* Fixed: Appearance of unread counters in the FFZ Control Center's navigation.
* Fixed: Messages not highlighting correctly when a viewer card is open.
* Fixed: Color picker for chat filtering opening up and going out of view. (Can still go *down* out of view, but it's a start.)
* Fixed: Square Avatar and hide LIVE indicator not working on the channel page.
* Fixed: Modify `webmunch` and `switchboard` to better handle the latest webpack update, adding checks to make sure we don't accidentally break state by requiring an unloaded module.
* Added: Better options for highlight / block terms, letting you make rules case sensitive, match whole words, and highlight in chat or not.
* Added: Documentation of glob syntax.
* Changed: Split `Chat > Filtering` into several sub-categories to make it easier to find specific options.
* Changed: Display seconds with the up-time metadata by default, matching Twitch.
* Fixed: The Unfollow button not hiding on the standalone player.
* Fixed: Loading issue for graphs on the dashboard.
* API Added: Allow add-ons to target the `player` flavor.
* Fixed: Bug when switching storage providers causing the provider to not change.
* Fixed: Revert changes to file picker while investigating some users being unable to select a file.
* Added: Option for changing the chat timestamp font size.
* Changed: Allow chat room actions to be spread across multiple lines.
* Fixed: The chat action editor not properly displaying spacers.
* Fixed: Make `switchboard` wait for `web_munch` before trying to load a route.
* Added: Setting to change the height of chat actions.
* Added: Profiles can now be toggled via hotkey.
* Added: Profiles can now be imported from URL as well as File.
* Added: Profiles with update URLs can have automatic updates disabled.
* Fixed: Support for the `clips.twitch.tv` domain.
* Fixed: Badges that make use of foreground text are no longer white in light themes.
* Fixed: Mod Icons appearing smaller than normal.
* Changed: Allow several types of actions, unrelated to moderation, to be used on a person's own chat messages.
* Changed: Better warn users in the Control Center when the current profile is set to automatically update.
* Changed: Make the FFZ Control Center remember which profile is selected when re-opening / refreshing.
* API Added: Add-ons can now target specific supported flavors. Choices thus far are `main` and `clips`.
* API Added: The `site.menu_button` now has `addToast(...)` and can display multiple toasts. Toasts can also time out.
* API Fixed: `openFile(...)` never resolving if the user closes the dialog without selecting a file.
* Changed: Refactor player code to be shared between the embed/popout player and the main player.
* Changed: Place metadata above the player controls in embed/popout player to better handle very narrow players.
* Changed: Support clicking Stream Uptime metadata in the embed/popout player to copy a link to the past broadcast at the current time.
* Fixed: The player being an incorrect height in portrait mode in some cases.
* Fixed: Schedule data disappearing when FFZ boots while viewing the Schedule page due to how we send layout update events.
* Fixed: Popout Chat from the dashboard and mod view not working correctly. Please note there is still a race condition on the dashboard popout chat. It may require several refreshes or not work at all depending on your Internet connection.
* Fixed: Only load the chat types from Twitch once. Ignore any future module loads.
* Fixed: Hide the empty bar at the bottom of Twitch pages due to incorrect styles being applied to the new snackbar container element.
* Fixed: Apollo should only clear the query cache if it makes changes to a query. Likewise, Apollo should only fetch the `gql-printer` module upon demand.
* Fixed: Remove debug logging from `utilities/dom::createElement`
* Changed: Slightly delay tool-tip repositioning when rich content is loaded, hopefully reducing flicker events.
* Changed: Refactor WebMunch, adding compatibility for a future webpack update and reducing the number of modules checked when scanning for modules.
* Changed: Allow Switchboard to keep trying to load routes if the one it tries fails to actually populate `require()`.
* API Added: `EventEmitter::hasListeners(event)` method for determining if there are any listeners for a specific event.
* API Added: `localStorage.ffzLogLevel` can be set to override the global log level.
* API Added: `log.verbose(...)` as an even weaker logging level than `debug(...)`
* API Changed: Allow Tooltip instances to add tool-tips to the DOM under a different element than the parent element used for events.
Nice.
* Changed: Warn users that they have `Show Mod Icons` disabled within [Chat > Actions](~chat.actions).
* Changed: Blocked Badges, Highlight Badges, and Blocked Types within [Chat > Filtering](~chat.filtering) no longer have a default item. This will hopefully minimize user confusion.
* Changed: Blocked Badges also has a new description telling users that it isn't for hiding badges, with a link to the correct place to change badge visibility.
* Changed: Remove the New Link Tokenization experiment, making it enabled for all users.
* Changed: When navigating within the FFZ Control Center in a pop-out window, update the URL so that it can be shared to link to a specific settings page.
* Changed: Disable the websocket connection for users in the API Links experiment to reduce load on the socket cluster.
* Fixed: Bug with the FFZ Control Center failing to load if experiments haven't been populated correctly.
* Fixed: Badge Visibility not being populated when opening the FFZ Control Center on a page without chat.
* API Added: `<markdown />` now supports a link syntax for navigating to a new section of the FFZ Control Center.
* API Fixed: Better tokenization for settings paths. Brackets can now be used safely in embedded JSON.
* API Fixed: `deep_equals` and `shallow_object_equals` returning false when objects were otherwise equal but had keys in a different order.
* Fixed: Subscribe and Follow buttons not using the theme accent color. (Twitch replaced the class name `.tw-accent-region` with the procedural name `.gocjHQ`)
* Fixed: Add `Search` to the list of known pages for Profile rules.
* Fixed: The FFZ Control Center not maximizing correctly on Team and Deck add-on pages.
* Fixed: Tool-tips becoming impossible to dismiss after updating their contents.
* API Added: `data-tooltip-type="markdown"` for `ffz-tooltip` elements.
* API Added: `ffz-tooltip` elements can now specify `data-tooltip-side` and `data-tooltip-align` attributes for guiding the position of tooltips.
* Added: Warning on the Profile Manager about profiles not matching when viewing the FFZ Control Center in a pop-out.
* API Added: Badges can now have custom CSS.
* API Added: Badges can now have a `click_handler()` method for running JS when clicked.
* Added: Option to only adjust the player volume by scrolling when holding the right-mouse button. (Closes#954)
* API Added: Support for rendering badges with non-image content.
* Changed: Re-enable Smooth Scrolling, with a warning that it may not work well.
* Changed: Display the current FFZ version in the embed/popout player's menu.
* Fixed: Recreate more of Twitch's CSS, since they're using more and more dynamic, procedural class names.
* Added: Setting to make emotes twice as big in chat.
* Added: Setting for hiding Prediction banners in chat.
* Fixed: Current channel, category, and title not being detected correctly on the Stream Dashboard page.
* Fixed: Tweak the clip URL regex again to support more possible characters.
* Fixed: Cyclic dependency error with the CSS Tweaks module.
* Fixed: Cyclic dependencies in modules not being detected due to how the enable/load/disable/unload promises work.
* Changed: In Switchboard, try finding a route with no parameters first to minimize errors in the log.
* Changed: Attempt to detect Firefox with `InstallTrigger` for users that change their User-Agent.
The Embedded Player Update! Adds support for the Compressor, Reset Button, and metadata to the embedded / pop-out player using a minimal build of FFZ.
* Added: Support for the embedded player.
* Fixed: Update the regex for clip URLs to match new extended slugs.
* Fixed: Bugs in `experiments` and `raven` when the `site` module cannot be loaded or does not provide `getCore()`.
* Fixed: Bug in the main menu where the menu may sometimes become unresponsive when opening to a page with no settings.
* Fixed: Attempting to initialize the Compressor when a user has not yet interacted with a page may result in a broken audio stack.
* Fixed: Setting Profile filters that are unknown would always match, rather than always failing. This is problematic if an add-on that provides a filter type has not yet loaded.
This was a small update until Twitch ripped out half their CSS.
* Added: Cross-Origin Storage Bridge for settings, better synchronizing settings on sub-domains with support for binary blobs at the cost of slightly increased start-up time.
* Fixed: Rendering issues caused by missing CSS.
* Fixed: FFZ Control Center button not appearing on dashboard pages, and appearing in the incorrect place.
* Changed: Work towards splitting modules into their own JS files for a faster, more asynchronous startup.
* API Added: Methods for serializing and deserializing Blobs for transmission across postMessage.
* Added: Backup and Restore now supports backing up any binary data stored in FFZ settings, creating a `zip` file rather than a `json` file.
* Fixed: Remove dead code from the `clear-settings` menu component.
* Changed: Update the theme mapping to include missing elements.
* Changed: Data Management > Storage >> Provider now indicates if a provider supports storing binary data.
* Changed: Update the link-parsing regex to match Twitch. Currently under limited roll-out while ensuring the implementation is bug-free.
* API Added: `setting-hotkey` now functions as would be expected and can be used.
* API Changed: A setting's `onUIChange` method now has the Vue component as its second argument, for getting any necessary state from the settings UI.
* API Changed: Providers now sanity check the format of Blobs before storing them.
* Added: Support for different settings providers, including IndexedDB.
* Fixed: Alignment of descriptions with check box settings.
* Fixed: Settings being added multiple times to the Control Center UI when registered multiple times.
* API Added: Providers now support blobs, and emit events when blobs change.
* Maintenance: Update dependencies. Add a babel plugin.
* Added: Metadata rendering for Mod View, including stream latency, the host menu, etc. Certain metadata such as up-time is not supported due to Mod View already displaying that information. Closes#984. Closes#950. Closes#862.
* Added: Setting to disable the "Hide Stream Info Stripe" button in Mod View to avoid metadata elements moving during interaction.
* Added: Re-enable the setting to disable the player speeding up. The new implementation overrides a property on the underlying `<video>` rather than directly interacting with Twitch's player code.
* Fixed: Channel Points UI getting cut off when chat width is set smaller than the default. Closes#965
* API Added: Metadata definitions now have a `modview` attribute for opting into inclusion on mod view pages.
* Added: Setting to hide viewer counts from the side bar.
* Changed: Allow use of time formats when creating a timeout action. (Closes#978)
* Changed: Highlight My Message highlights can now be displayed in either Twitch style or FFZ style, in addition to disabling the highlight. FFZ Style remains the default. (Closes#972)
* Fixed: Current Channel profile rules not functioning, either on normal channel pages or on mod view pages. (Closes#957)
* Fixed: Current Category and Title profile rules not working on mod view.
* Fixed: Channel color not being detected correctly. (Also Closes#972)
* Fixed: Download Clip not displaying on clip pages. (Closes#960)
* Fixed: Remove debug logging from `resizeInput`
* Fixed: Popups, including channel rules, not rendering correctly in portrait mode. (Closes#979)
* Fixed: Rendering for certain elements using `tw-pill`
* Fixed: Vue balloon elements not rendering correctly.
* Fixed: Spacing of the `Watch in Squad Mode` button when the un-follow button is hidden.
* Fixed: Hiding channels in the sidebar based on being offline, a re-run, or streaming a blocked game.
* Fixed: Overly specific CSS selector causing thumbnails to not be hidden in the Deck add-on.
* Added: New UI for clearing FrankerFaceZ settings (Data Management > Storage).
* Fixed: Do not display duplicate bot badges in tool-tips when a bot has both a global bot badge and a channel-specific bot badge.
* Fixed: Do not add click URLs for FFZ badges to add-on badges.
* Fixed: Remove `debugger;` from automatic error reporting method.
* Fixed: IndexedDBProvider not synchronizing settings correctly.
* Fixed: Change a CSS class name used when changing emote visibility to avoid bad UX due to misbehaving third-party extensions.
* Fixed: Color calculations for chat messages, including highlight colors. (Closes#947)
* Changed: Use rounded images from the CDN for FFZ badges in tool-tips.
* Changed: Use Twitch IDs rather than usernames for assigning channel-specific badges to users.
* API Added: `settings.addClearable(key, definition)` for adding new UI to `Data Management > Storage >> Clear`.
* Fixed: Bug with room API handling that prevented the application of channel-specific user badges.
* Fixed: Issue applying username color adjustments with certain background colors. (Closes#945)
* Fixed: Automatic Theater Mode applying incorrectly on user sub-pages. (Closes#942)
* Added: Settings for independently changing the colors of chat on Twitch.
* Fixed: Incorrect color being applied to Stream Chat.
* Changed: Style of in-line message reply tags.
* Changed: Set more users to request link info from the API than the socket service. (75% vs old 50%)
* Added: Override the "Identity" rendering in Twitch's chat settings menu to apply FFZ badge settings and name color correction.
* Added: Insert a "FrankerFaceZ Badge" section within the "Identity" editor. Currently, this only directs users to the website to change their badge.
* Fixed: Bugs with corrupt settings causing the emote menu not to function correctly for certain users.
* Changed: Rename `Twitch Prime` to `Prime Gaming` in several strings.
* Changed: Disable the API stress testing experiment ahead of the server maintenance tomorrow.
* Fixed: Player sizing issue for Firefox users.
* Fixed: Errors rendering tool-tips for chat actions.
* Changed: Tweak parameters for automatic error reports to filter out more invalid error reports.
* Changed: More fixes to hopefully fix player sizing issues on certain browsers in combination with certain settings.
* Changed: Send automatic error reports to our new server.
* Removed: Option to disable Twitch player speedup. Currently broken with no signs of Twitch fixing the player internals to make it work again.
* Changed: Add a notice to the Player Statistics metadata when an unexpected player type (non-`site`) is detected, which may indicate tampering by third-party software such as ad blockers. This notice is only intended to serve as a debugging tool for users, allowing them to easily determine whether or not a player type modification has been used.