- Search term matches that don't meet any priority criteria are now called SUBSTRING_MATCH.
- Simplified the sortEmotes logic when prioritizing emotes that start with the search term.
* Added: Initial re-implementation of emote information cards. These have been broken for a while due to changes in Twitch's website preventing us from accessing them.
* Added: Setting to hide charity progress elements in chat.
* Changed: Emote tool-tips now display emote artists.
* Changed: The `Chat Command` chat action can now optionally be sent in another channel. Note that when doing so, you will not receive feedback from your sent message.
* Fixed: The 'Viewer Count' tool-tip duplicating itself.
* Fixed: Emote menu repeatedly requesting FFZ data.
* API Added: Ephemeral profiles can now be created by passing `ephemeral: true` in the options when creating a profile. These profiles are temporary and read-only.
* Added: Automatically reprocess chat messages when loading a channel for the first time. (Closes#1333)
* Fixed: Random emotes being insert into chat when using the emote menu in some situations. (Closes#1337)
* Fixed: When tokenizing messages, ignore fake emotes injected into Twitch's chat handler for the purpose of auto-completion and WYSIWYG support.
* Changed: Switch to a better method for how to get `require` from webpack.
* Changed: Update the logic used to calculate the container size when overlaying emotes.
* API Added: `load_tracker` module for waiting for multiple events to finish. This is used to reprocess chat lines once every data source has finished loading to avoid multiple unnecessary updates.
* API Added: Add-ons can now set a `load_events` array in their manifest to have the add-on loader register them with `load_tracker`, ensuring events don't fire before the add-on is able to execute.
* Added: Setting to disable the Emote Effects tab in the emote menu.
* Fixed: Issue with emotes appearing in the wrong place when combining certain emote effects.
* Fixed: Issue with emoji not appearing when used with emote effects.
* Fixed: Issue with the Large Emotes setting not working correctly when used with emote effects.
* Fixed: Do not display the Emote Effects tab in the emote menu if there are no visible sets with effects.
* Changed: When clicking an emote effect from the emote menu when there is no existing emote in chat, and thus previewing with a random emote, insert that emote into the chat input as well.
* Changed: Do not display random emotes that the user cannot use when previewing emote effects.
* Changed: Do not use 'Display and Send' for the emoji joiner workaround by default as it is no longer necessary.
* Fixed: Navigating between channels with the audio compressor enabled (or having previously been enabled) causing the player to become stuck loading infinitely. (Closes#1317)
* Fixed: Features on the `clips` and `player` subdomains not working correctly. (Closes#1336)
* Changed: Finish implementing the initial emote effects.
I'm almost finished implementing a replacement for emote cards, but they aren't quite ready yet. Please wait just a bit longer.
* Added: Support for modifier emote effects, as well as settings to disable them.
* Changed: Update the chat types enum to match changes to Twitch's internals.
* Changed: Implement a new data structure for more efficiently storing bulk user to emote set mappings.
* Changed: Implement support for loading data from staging.
* Experiments: Push the new chat line rendering experiment to 20%. Let's see if it works properly.
* Added: Chat actions for modding and un-modding users.
* Fixed: Settings not being removed when an add-on is unloaded.
* Changed: Add a few new icons.
* API Added: Add support for header backgrounds for rich token documents.
* API Added: Methods for adding/updating emotes to and removing emotes from an emote set.
* API Added: Context flag to disable FFZ's chat message processing.
* API Changed: Add-ons can now be hot reloaded for development purposes. This feature may be somewhat unstable.
* Added: Option to change the size of Message Hover actions.
* Added: New chat action appearance type "Emote" that makes it easy to use an emote image for an action.
* Changed: Do not show the "Pin" action on messages with no message body.
* Changed: Use Twitch's API for embeds/tooltips of Twitch URLs. This now makes use of clip embed data being sent via PubSub, notably.
* Fixed: Multiple emotes with the same name being listed in tab-completion.
* Experiment: There's a new chat line render method available. This is not currently enabled for any users, but it will be enabled after more internal testing. The new method is not necessarily faster, though it should not be slower. The main purpose of the rewrite is code de-duplication and making the renderer easier to maintain.
* API Added: `chat.addLinkProvider(provider);` to register a handler for link data.
* API Fixed: Do not allow duplicate registration of tokenizers or rich embed handlers for chat.
* Fixed: The Audio Compressor incorrectly being disabled due to changes in Twitch's player causing FFZ to incorrectly assume a clip is being played.
* Fixed: Twitch emote cards failing to open when clicking an emote. (Hilariously, this is because we were searching for the component that opens emote cards up to 200 entries up the stack. It is now, as of the time of this update, 201 entries up the stack.)
* API Fixed: When adding a new chat action definition or renderer, invalidate message hover, user context, and room actions as well and not only inline.
srcObjects can be defined by webworkers, amazon has pushed support for webworkers setting videos processed by a separate worker thread now that chrome has shipped support in Chrome 108.
Compressor still works if video is defined in this way, so we can check for and allow this.
* Fixed: Certain chat actions (Pin, Reply) not working correctly when assigned as a User Context action.
* Fixed: When editing a setting using the filter editor, settings are saved correctly.
* Changed: When editing chat actions, you can now choose to have a profile not inherit values from other profiles or the default values.
* Added: Options to hide the "Chat Highlight Settings" and "Shield Mode" buttons in the chat input.
* Added: Option to fade the video player when paused or buffering. (Closes#1289)
* Added: Message Hover chat actions! Now you can add custom actions in the style of Twitch's native "Pin Message" and "Reply to Message" buttons. This change also adds default actions for those that behave similarly to Twitch's native behavior. (Note: The Pin Message action is, by default, only visible if you have your mod icons displayed.) (Closes#1284. Closes #1293.)
* Changed: Remove the Reply action from the defaults for In-Line chat actions.
* Fixed: Duplicate words in *in* certain localized strings with human friendly relative times. (Closes#1292)
* Fixed: Bug where the link testing debug component would not collect its event source when being destroyed.
* Fixed: Popup UI elements not appearing with the correct colors. (Closes#1285)
* Fixed: Elements in the FFZ Control Center sometimes failing to display scroll-bars correctly after a Twitch update.
* Fixed: The mouse cursor not hiding correctly when positioned over the player with controls not visible.
* Fixed: Tab-completion sometimes failing to include emotes from add-ons due to improperly cached data. (Closes#1299. Thanks cfinegan)
* Fixed: Rich token rendering not setting alt text or width and height on images.
* Added: "Pin This Message" chat action to allow moderators to pin messages as a quick fix until I can implement the normal vanilla pin button.
* Fixed: FrankerFaceZ failing to load correctly on moderation view pages.
* Added: "Copy Message" chat action for copying a message to your clipboard.
* Added: Setting to pause the player by clicking on it. This is disabled by default, and the pause happens after half a second to avoid pausing as part of a double-click.
* Added: Setting to clear the emote menu's search when closing it.
* Added: Setting to hide the "Elevate Your Message" button in the chat input field.
* Changed: Remove code related to channel hosting.
* Fixed: Do not attempt to load FFZ on `gql` or `passport` subdomains.
* Fixed: Channel leader-boards not being hidden on channels within a specific experiment.
* Fixed: Channel Metadata not appearing over the player in theater mode when hovering with the relevant setting enabled.
* Fixed: Chat on Videos not appearing correctly for some videos due to incorrect channel IDs associated with messages.
* Fixed: When in theater mode, hide the secondary player controls that Twitch displays by mistake.
* Fixed: Certain Twitch badges not appearing correctly for users with high-DPI displays or increased zoom levels. (Note that this may require you to perform a hard refresh due to browser caching.)
* Removed: Don't display a message about the Audio Compressor preventing playback rate changes for Firefox users. Firefox fixed that issue a while back and no users should experience it at this time.
* Added: Setting to hide specific chat token types from rendering in chat, in case you for some reason don't want to see cheers / emotes / whatever.
* Added: Support for the Artist, No Audio, and No Video badges in different badge styles.
* API Added: The `site.player` module now exports CSS rules for the player control containers, so that FS Chat (and maybe other add-ons) won't need updates in the future if the CSS rule changes slightly.
* Added: Option to hide channels from the directory based on their title.
* Fixed: Issue with FrankerFaceZ failing to initialize correctly due to a change in Twitch's JS layout.
* Added: Setting to force the use of legacy audio API constructors for browsers with compatibility issues.
* Changed: Add support for Twitch's inline chat highlights.
* Fixed: Locales failing to load due to missing `day.js` support.
* Fixed: Locales failing to load due to capitalization.
* Changed: Use a slightly newer API for constructing an audio compressor object for better compatibility.
* Added: Formatters for chat action variables. (Closes#1199)
* Changed: By default, open the user card to a badge when clicking a badge in chat. (Closes#1195)
* Fixed: The settings bridge functioning incorrectly for users without a set storage provider, causing pages that rely on the settings bridge including the Stream Dashboard to never correctly load FFZ.
* Fixed: The new announcement feature not rendering correctly in chat.
* Fixed: Metadata failing to render correctly with certain Twitch experiments active.
* Fixed: Some promoted streams appearing when users have chosen to hide promoted streams.
* Fixed: The FFZ Control Center button being positioned incorrectly on streamer dashboard pages.
* Fixed: Profile rules for the current category/title not working on certain pages.
* Fixed: Swap Sidebars causing rendering issues when in theater mode, with the chat below the player, when not using FrankerFaceZ's Portrait Mode option.
* Fixed: The placeholder text being positioned wrong when using Twitch's WYSIWYG chat input.
* Fixed: The entire extension loading when viewing an embedded clip, causing undue load.
* Changed: Add a link to YouTube's Privacy Policy to the legal page.
* Fixed: FFZ no longer working correctly for Safari users owing to poor regex support. Safari users will be unable to use the Emoji Joiner Workaround introduced in 4.32.0.
* Added: Support for combined emoji using a workaround that compensates for Twitch chat eating unicode it shouldn't. (See #1147 for more details)
* Added: Setting to change how emotes are sorted when using tab completion. Applies to the In-Line Tab Completion add-on as well as the default tab completion.
* Added: Setting to disable a browser's "automatic dark theme" features when supported. This primarily applies to Chromium browsers.
* Added: Ability to make emoji larger in addition to emotes using the "Larger Emotes" setting.
* Fixed: Better handling of community introduction messages.
* Fixed: Catch more chat line rendering errors to prevent chat from breaking entirely.
* Fixed: Chat on Videos not appearing with the chat background color.
* API Changed: Rich Tokens now support `ref` tokens in `header` tokens.
* API Changed: Rich Tokens now support `link` tokens with no content, automatically setting their content to their URLs.