* Fixed: Pages on domains other than `www.twitch.tv` failing to load due to a bug with the settings bridge introduced in the last update.
* Fixed: The standalone player's latency metadata not displaying the buffer length.
* Fixed: Replies appearing with colored usernames with the setting to have colored mentioned disabled.
This is the first release built with the updated build toolchain. Please let me know if you find anything unexpected that broke.
* Added: Setting to treat known usernames in chat as mentions even without an at sign (@) prefix.
* Added: Setting to automatically claim drops.
* Added: Setting to hide the Subtember banner.
* Changed: The stream latency metadata tool-tip now includes the buffer size value.
* Fixed: The stream latency metadata was not appearing on the new mod view layout.
* Fixed: The sub/bits leaderboard appearing in chat when it should be hidden by a setting.
* Fixed: Incorrect text color on the Subtember banner.
A recent PR changed the default behavior that was in FFZ for a few years at this point to bring it more in line with how Twitch handles its tab-completion: `Match anywhere in the emote name`
This adds a new setting to select from 3 different match types.
* Added: Setting to automatically uncheck the "Featured Clips Only" option when viewing a channel's clips.
* Added: Chat actions can now use the `urlencode` formatter. Really this should have been available from the beginning, as it makes the Open URL action much more useful.
* Fixed: An issue where certain emotes wouldn't appear in the list of available emotes during tab-completion.
* Fixed: An error in the stream latency metadata handler when the video player cannot be accessed.
* Fixed: An issue where a user's FFZ settings profiles may become corrupt and prevent the FFZ Control Center from functioning correctly.
* Fixed: An issue where ephemeral settings profiles may not initialize correctly.
* Fixed: The new Hype Chat up-sell at the top of chat not being hidden. Go away Hype Chat no one likes you.
* Changed: Add support for an updated pubsub library.
* API Added: Prefix modifier support, to make Lordmau5's life easier with the BTTV Emotes add-on.
* API Changed: Attempting to alter settings profiles before the settings module has fully initialized will throw an exception.
* Maintenance: Update the pnpm lockfile.
* Added: Setting to automatically accept content warnings when opening a stream.
* Added: Three settings to control the appearance of Hype Chat messages.
* Changed: Added a few keywords to settings entries in the `Data Management` category for better search support.
* Developer: The chat and pubsub logging utility can now inject pubsub messages for testing.
* Fixed: Certain chat-related features no longer working due to a minor change in Twitch's JS application causing FrankerFaceZ to be unable to locate a core chat component.
* Fixed: The `/ffz reload` command is now `/ffz:reload` to remove an undesirable behavior with Twitch's completion handling when backspacing.
* Fixed: Spaces being included in links when they shouldn't be.
* Fixed: Previews of emotes in chat when typing their names directly.
* Changed: Initial work on tracking the audio/video de-sync when using audio APIs for the compressor. This appears as a value in the stream latency metadata tool-tip, but currently drifts whenever the player is paused.
* Changed: Initial work on allowing the extension to be loaded from a bundled extension.
* API Changed: The load tracker now returns a list of reported loading keys when firing events.
* Added: Option to use the older, lighter input elements when using a dark theme. (Effectively reverts the recent Twitch change.)
* Fixed: Issue with the settings bridge failing to load when using a profile with a Current Monitor rule.
* Fixed: A few minor colors being applied incorrectly when using theme options.
* Fixed: No background being present behind certain elements, including most notably up-time in the directory.
* Added: `/ffz reload` command to reload emote and badge data without reloading the page. (Note: Add-ons will need to update to add support for the command.)
* Changed: Improve monitor support for Current Monitor, specifically when a user has multiple monitors with the same name.
* Fixed: Track the loaded status of global FFZ badges when loading chat data.
* Fixed: The page scrolling incorrectly when using the FFZ emote menu in some situations.
* Added: Command to manually force chat to `/reconnect`. (This was actually added in the last version, but I forgot to include it in the change log.)
* Fixed: Rich embeds for links not appearing.
* Fixed: Correctly display if a user was banned, timed out, or if their message was simply deleted. (This bug has been around for far, far too long. Sorry for the delay.)
* Removed: The legacy chat line rendering method, which was replaced by the Modular Chat Line Rendering experiment. This is not a change users should notice.
* API Added: Chat tokens can now have `allow_rich: false` set to avoid being used for rich content embeds.
* Added: Profile rule to allow profiles to only be active on a specific monitor. This currently relies on a Chromium-specific API and is not available for Firefox users. (Closes#1358)
* Added: Simple 'And' profile rule for building complex behaviors without needing a workaround.
* Changed: Update the link detection regex to match Twitch's native behavior. (Closes#1353)
* Changed: When the add-ons list is being filtered by a search term, display a notice to the user.
* Fixed: Unable to set keys for Message Hover actions. (Closes#1316)
* Fixed: The Wide emote effect not correctly being disabled.
* Fixed: Long emote names causing the favorite button on the emote card to appear incorrectly.
* Fixed: Whenever a user's last profile is removed, automatically create a new profile.
* Fixed: When scrolling the emote menu, take best efforts to ensure other page elements are not scrolled incorrectly. This notably fixes a scrolling issue on mod view.
* Fixed: If users have disabled the `document.fonts` API, do not attempt to filter the list of installed fonts for the font selector controls.
* Fixed: Performance regression due to WYSIWYG emote preview injection. This may result in the feature working less effectively while a better solution is found.
* Added: Emote cards are now at parity with vanilla Twitch emote cards when it comes to displaying Twitch emotes, including the ability to follow/subscribe to the source channel, view their other emotes, and report emotes.
* Added: Emote cards for FFZ emotes now allow you to add an emote to any collection you can manage.
* Added: Emote cards for other emotes now have an action to open the emote on the source service's webpage.
* Fixed: Effect emotes not appearing when used incorrectly in chat.
* Fixed: Rebuild the tab-completion emote array in a way more likely to cause Twitch's native input element to update when we change our emotes.
* Changed: Use a higher contrast "New" pill when displaying new items in the FFZ Control Center. (Closes#1348)
* Changed: Push the modular chat line rendering experiment to 100% roll-out.
* 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.