* Fixed: Remove console debugging.
* API Added: Link embeds and tooltips now support markdown.
* API Fixed: Bug when setting raw HTML while using `createElement`.
* Changed: Better formatting for link embeds with no image.
* Fixed: Date formatting issue in the emote menu. (What do you mean your sub didn't expire 51 years ago?)
This release implements a massive change to how link tool-tips and embeds work. They might act up a bit while we get the new back-end installed and tweaked.
* Added: Options to use custom formats for dates and times, under `Appearance > Localization`.
* Added: Options to change the colors of tool-tips.
* Changed: Completely rewrite how link information is formatted together with a complete rewrite of the link information service.
* Changed: The FFZ Control Center now remembers you previously open settings if you reload the page.
* Fixed: Update chat lines when i18n data loads.
* Fixed: i18n not correctly formatting certain numbers.
* Fixed: Theater mode automatically enabling on user home pages. (Closes#866)
* Fixed: Theater metadata overlapping chat with Swap Sidebars enabled. (Closes#835)
* API Added: New icons: `location`, `link`, and `volume-off`
* API Fixed: `createElement` not properly handling `<video>` related attributes.
* Changed: Show the verified badge on rich chat embeds for Twitch partner channels.
* API Added: More flexible support for tokens when building chat embeds.
* API Added: Experiment for using the API to look-up links, rather than the socket cluster.
* Changed: Update the styling for rich chat embeds to match modern vanilla Twitch.
* Fixed: Do not display FFZ's Alternative Viewer Count if the stream is not live.
* Fixed: Automatically opening the chat when accessing a channel. (Now using route state instead of page elements.)
* Fixed: Dual channel points redemption messages when FFZ is rendering them.
* Fixed: Stopping the host video player when accessing a user's home page.
* Removed: The old, unfinished logviewer module. Logviewer is a dead project.
* API Changed: Add support for rich formatting in rich chat embeds.
* API Changed: `fine-router` can now check state when determining the current route.
* Added: Setting to apply username colors to chat mentions. (Closes#753)
* Changed: Stream links now use a darker color.
* Changed: Make the icon for FFZ's Alternative Viewer Count slightly larger.
* Fixed: Crazy flickering when disabling hosting.
* Fixed: Stream links showing up on the home page and not just the live page.
* Fixed: Better detection for channels where the Host button should appear.
* Fixed: FFZ's Alternative Viewer Count metadata not updating correctly when FS Chat is in use.
* Changed: Metadata now uses the global FFZ tool-tip handler when rendering tool-tips.
* Fixed: Metadata pop-ups not appearing when an element is open fullscreen.
* API Added: Callback for changing popper options before opening a tool-tip.
* API Added: Timing for module loading. WIP.
* Changed: Implemented FFZ rendering of Channel Points redemption notices with no associated messages. (Experiment, 50% roll-out)
* Fixed: Channel not properly detecting the current channel's branding color.
* Fixed: Unable to delete the profile 0 (Default Profile)
* Fixed: Twitch prevented viewer cards from appearing when moved out of the chat area.
* Fixed: `addons` should not block loading while its data loads.
* Fixed: Issue accessing `i18n` before `settings` has fully loaded.
* Fixed: `main_menu` tries to use `i18n` before `i18n` is ready.
* Fixed: Main menu throws error if profiles are changed while main menu is open.
* Fixed: `site` should not block loading waiting for `settings`
* Maintenance: Updated dependencies.
* API Added: Initial support for using IndexedDB to store settings rather than localStorage
* API Added: Messages now have a `highlights` object if they've matched filters, describing which filters they matched.
* Fixed: The Channel Title settings profile not working.
* Fixed: Remove an unnecessary import that VS Code *helpfully* forced into the channel module last commit.
* Changed: Only load the `safe-regex` module on demand, it's kind of hefty.
* Added: Setting to disable Channel Hosting.
* Added: Setting to hide streams tagged as Promoted from the directory.
* Fixed: Tool-tips not appearing when an element is open in fullscreen.
* Fixed: Bug when destroying a tool-tip instance.
* Fixed: Directory cards not updating with FFZ features on the front page.
* API Added: `Subpump` module for manipulating Twitch PubSub events.
* API Changed: Add-Ons can now define custom settings profile filters.
* Added: Option to only hide side navigation when the page is in portrait mode.
* Added: Option to reveal hidden thumbnails after a short delay.
* Changed: Hidden thumbnails are now blurred by default, rather than replaced with a generic live thumbnail.
* Fixed: Directory features.
* Fixed: Position of theater metadata when in portrait mode.
* Added: Settings for replacing the native Twitch viewer count with a custom display that doesn't animate when changing. (Closes#841)
* Fixed: Replace rendering for the Chat Paused footer so that we can render the correct text and disable mouse interaction when appropriate.
* Fixed: Hiding Recommended Channels causing the Online Friends section of the side navigation bar to disappear. (Closes#482)
* Added: Chat Action for editing a user's displayed name and color. Only applies to chat.
* Changed: Re-enable the setting for hiding offline channels from the side-bar.
* Changed: Updated dependencies.
* Fixed: Issue with multiple copies of FFZ emotes appearing in tab-completion.
* Fixed: Issue with tab-completion crashing sometimes in mod view. (Closes#839)
* Fixed: Support for swapping sidebars with the latest Twitch changes.
* Fixed: Hiding Recommended Channels from the sidebar. (Closes#840)
* Removed: Setting for hiding Recommended Friends from the sidebar, since that section no longer exists.
* Added: Setting to automatically open chat when navigating to an offline channel.
* Added: Support for multi-month gift sub messages.
* Fixed: The FFZ Control Center, when maximized, disappearing beneath chat on channel pages. (Closes#833)
* Fixed: Metadata appearing in theater mode when hovering over the player.
* Fixed: Automatic theater mode enabling theater mode when navigating back to a channel's landing page.
* Added: Option to hide Twitch's native stream uptime. Enabled by default when using FFZ's own stream uptime.
* Fixed: Implement stream metadata for the new Twitch layout.
* Fixed: Display the subscription tier in badge tool-tips for Tier 2 and Tier 3 subscriber badges.
This release involves significant changes under the hood. Due to Twitch's heavy use of functional React components and effects in recent updates to their site, we need to start listening for DOM nodes rather than components in many cases. To that end, I've implemented the Elemental module to grab elements using MutationObservers. I didn't want to, but this is where we're at. In a future release I'll be using Elemental to add support back to the directory for certain features.
* Added: Emote Visibility Control for Emote Menu. You can now hide emotes you don't want from your emote menu. You still have them, and they'll still appear in chat if someone else uses them, but it helps keep the clutter down in your menu. (Closes#811)
* Added: Setting to toggle mute for the player when middle-clicking it. (Closes#812)
* Added: Setting to toggle the bold style applied to chat mentions. (Closes#816)
* Fixed: No background color being applied to Highlight My Message chat messages when using the new Twitch layout. Now, the default Twitch purple will be used when FFZ hasn't yet extracted the color for the current channel. Extracting the channel color is still broken at this time. (Closes#821)
* Fixed: The player volume resetting to 100% when changing channels. (Closes#820)
* Fixed: Chat appearing incorrectly when a custom width smaller than 340 pixels is set. (Closes#819)
* Added: Display bits emote rewards in the FFZ Emote Menu alongside subscription emotes.
* Changed: 2FA reward emotes are now labelled as such in their tool-tips.
* Changed: Update the style for the chat pause notice at the bottom of chat to match the latest Twitch style and language.
* Fixed: Disabling hosting not working on Mod View.
* Fixed: Emote sets not being sorted correctly in the FFZ Emote Menu when combining multiple sets (such as multiple subscription tiers) into one section.
* API Changed: The `setting-color-box` component now allows you to open the color picker up and not only down.
* Added: Socket debugging information, including if the client is connected, latency, ping, etc.
* Changed: Make the text for profile rules more clear about what happens if you have multiple rules for a profile.
* Added: Audio Compression for the Twitch Player. Make loud sounds quieter and quiet sounds louder for a better listening experience.
* Fixed: Player modifications not applying on the Stream Manager and Squad Stream pages.
* Changed: Replace a few unnecessary menu components that only display markdown with a generic component.
* Changed: Initial work for letting users override display names and user colors in chat.
* Changed: The FFZ menu button no longer depends on add-ons being loaded to load itself.
* Fixed: Rendering of highlighted messages in Chat on Videos.
* Fixed: Featured channels menu not working when a bad channel is in the list.
* Added: Current Title rule for settings profiles. Matches against the title of the current stream or video. Allows for regular expressions.
* API Added: Added several methods for working with polls to the Twitch data module.
* Changed: Move queries into a separate file to reduce initial load file size.
* Fixed: Remove debug logging from stream up-time metadata.
* Fixed: Display the count of new settings on the FFZ menu button when not disabled.
* Maintenance: Updated to the current version of `displacejs`, no longer using a fork.
* Added: Support for Twitch's redesigned badges.
* Added: Version selector to choose between the new vs old badge designs.
* Added: Option to adjust badge colors for visibility depending on the current background color.
* Changed: Use the channel accent color for the border on re-subscription messages and other notices.
* Fixed: Update `dayjs` dependency for upstream i18n fixes.
* Fixed: Hiding Side Navigation not functioning with a certain Twitch experiment.
* Fixed: Certain player settings, such as hiding extensions, not functioning.
* Maintenance: Update a few dependencies.
* Added: Show the FFZ menu button on new dashboard pages.
* Fixed: Synchronize settings with the `dashboard.twitch.tv` subdomain.
* Fixed: Performance issue with metadata tool-tips being calculated too frequently.
* Fixed: Metadata not appearing in theater mode when portrait mode is enabled.
* API Added: Chat Action types can now override rendering.
* Added: Changelog for Add-Ons.
* Added: Option to disable the player running at a faster rate to reduce the buffer size.
* Changed: Stream Latency metadata now shows you when the player is running at a faster rate.
* Fixed: Formatting of tool-tips for metadata.
* Fixed: Metadata tool-tips not supporting rich children when updating.
* Fixed: Metadata icons not updating when changed dynamically.
* Fixed: The current channel's accent color not being detected in pop-out chat.
* Fixed: Styles not being applied correctly to deleted messages that are part of a channel points reward or part of a re-subscription notice.
* Removed: Support for Rooms messages.
* API Added: Settings now have an `onUIChanged` method that is called when a setting is changed by a UI control, allowing for immediate feedback.
* API Added: Built-in settings components now accept a `buttons` component that is rendered before the reset and profile override buttons.
* Added: Option to display all emotes in the same tab of the emote menu. (Closes#684)
* Added: Button in the emote menu that opens the FFZ Control Center to `Chat > Emote Menu`.
* Changed: Start using Twitch for all emote information rather than the FFZ socket cluster.
* Fixed: When an emoji skin tone is set, use that skin tone for category icons if applicable.
* Fixed: When reduced padding for the emote menu is enabled, reduce the padding around the navigation buttons.
* Added: New appearance type for chat actions that includes both an icon and text.
* Changed: The emote menu now displays channel avatars rather than sub badges.
* Changed: Emotes unlocked via points or other methods will appear as unlocked on the Channel page of the emote menu, even if you aren't subscribed.
* Changed: Display the number of months someone has been subscribed on the Founder badge. (Closes#694)
* Removed: Setting to not automatically redirect to Squad Stream pages, as Twitch is no longer doing that.
* Fixed: The emote menu now correctly groups emotes with no specific source channel.
* Fixed: The emote menu should no longer display sets as `Set #Number`.
* Fixed: The emote data module constantly trying to load data for a set that does not exist rather than storing that it does not exist.
* Fixed: Cache emote set data from the emote menu for use with tool-tips.
* Fixed: Clicking buttons in the FFZ Control Center's header now prevents dragging from starting.
* Fixed: Remove several Fine instances that were not resolving to anything useful.
* Fixed: Alignment of in-line mod actions.
* Behind the Scenes: Started fresh work on custom viewer cards.
* Added: Setting to hide re-runs in the site's side navigation, or to display them faded out to more obviously differentiate them from original live content.
* Added: The `Changelog` will now only display commits with associated releases, by default. Users can optionally display all commits.
* Fixed: The error message when a tool-tip failed to render was not being localized.
* Fixed: Padding for certain metadata elements such as the `Host` button.
* Fixed: The Stream Uptime metadata pop-up not opening in Safari due to the browser's lack of modern JS features.
* Fixed: Tool-tips not working within the FFZ Control Center.
* Fixed: Tool-tip positioning when in Portrait Mode.
* Fixed: The `Current Category` rule type for profiles not matching on directory pages.
* Added: `Current Category` rule type for profile rules. (Ironically, does not currently apply when on the directory page for a category.)
* Fixed: Various chat input related features breaking, including Room Actions and tab-completion of emotes.
* Fixed: Alignment of certain chat settings menu elements.
* Maintenance: Update our copy of the `CHAT_TYPES` enum with new types from Twitch's client.
* Added: Reset Player is back. It isn't quite as robust as it was before, but it should still prove helpful when faced with certain playback issues.
* Added: Clicking the `Stream Uptime` metadata now opens a small pop-up letting the user copy a link to the archived video of the current broadcast, at the current time. Please be aware that archives are not updated in real time and the link will not work for several minutes.
* Changed: The `Playback Statistics` metadata now renders as a button to show feedback that you can, in fact, click on it. Doing so toggles the visibility of the player's statistics window.
* Fixed: Issue importing a single profile without an update URL causing no data to be imported. (Closes#645)
* Fixed: Styles for metadata buttons without borders.
* Fixed: Positioning of the PiP and Reset Player buttons.
* Fixed: The `Playback Statistics` metadata displaying numbers a bit too precisely for easy reading.
* Fixed: Rewrite our player code to support the Highwind player. This removes support for the old player, but to our knowledge everyone should be using Highwind now.
* Removed: The Reset Player button. At this time we just don't know how to properly implement it for the new player. The new player is more tightly integrated into the Twitch web application.
* Removed: Closed Captioning position settings. Twitch appears to have native position controls for closed captions now.
* Fixed: Inconsistent localized string for active profiles.
* Fixed: Hide mega-cheer recipient call-outs in chat when the relevant setting is enabled.
* Fixed: Styling of the chat settings menu modifications.
* Fixed: The FFZ menu button in the navigation bar not applying its loading state.
* Fixed: Incompatibility with BetterTTV menu options.
* Fixed: Revert the tool-tip container selector as just using `#root` causes performance issues. People will just have to live with badly positioned tool-tips in Portrait Mode for the time being.
* API Changed: Emit a `core:dom-update` event whenever we cause a React component to `forceUpdate()`. This is the first draft of a potential solution for fixing incompatibilities with BetterTTV, and should not yet be considered stable. (No, this doesn't mean it's fixed. That will require updates from both extensions and not just FFZ.)
* Added: Profiles can now be toggled on and off, rather than relying on rules to control them.
* Added: Right-clicking the FFZ menu button in the top right of the page will open a Profiles dialog, letting you quickly toggle a profile on or off.
* Added: Profiles can now be enabled or disabled based upon the time of day.
* Added: Polish and Serbian pluralization rules.
* Fixed: Ensure tool-tips work on the new dashboard.
* Fixed: Ensure the FFZ Control Center works on the new dashboard.
* Changed: Shift-Click the FFZ Control Center icon in the top navigation to open the Control Center in a new window.
* Fixed: Unnecessary localization calls for add-ons.
* Fixed: Show an in-page notification rather than an alert box if the FFZ Control Center fails to load.
* Fixed: Adding an event to an EventListener while the event firing potentially leading to an infinite loop.
* Fixed: Pluralization rules for Ukrainian.
* Changed: Improve the Translation Tester UI to make it considerably more useful.
* Changed: Load a list of known strings from the server when in Capture Mode so that we can check to see which strings are actually new or changed.
* Fixed: Drop-down menu options in the control center not being assigned localization keys.
* Fixed: Durations not being localized correctly.
* Fixed: i18n name collision for the Ban chat action.
* Added: Languages!
Not a native English speaker? We've got an option for that, too. FrankerFaceZ is translated with love by our community. Please [join our Discord](https://discord.gg/UrAkGhT) and ask about localization if you'd like to contribute. We're still new to localization, so there may be some growing pains.
If you notice any inaccuracies, confusing translations, or texts that are outright wrong or offensive, please be sure to report them. We accept reports via Discord, Twitter, or GitHub Issue.
* Fixed: The ability to disable Channel Hosting not functioning.
* Fixed: No background appearing behind channel metadata when in theater mode.
* Added: Localization Message Capture. Message capture is a developer feature intended to make it easier to add new strings to the localization project.
* Added: Translation Tester. A tool to allow translators to test translations directly in the app before submitting them to the localization project.
* Fixed: Modified emotes not appearing correctly in tool-tips.
* Fixed: The page visibility hook breaking due to a typo and stopping FFZ from fully initializing for users using other page visibility hooks.
* Fixed: The setting to hide bits UI not hiding the bits button in chat.
* Added: `npm run font` command for editing the Fontello icon font. Use it to get started, then start the development server with `npm start` and changes will automatically save when you click `Export Font` from Fontello.
* Changed: The list of Fontello icons is now extracted from our Fontello config file so that it doesn't have to be manually updated.
* Added: Preview of new theming system with custom colors.
* Changed: Start using the CSS color variables in more places.
* Fixed: Alignment of metadata in theater mode.
* Fixed: Custom chat font not applying to chat input.
* Fixed: Do not attempt to fetch uptime when there is no channel ID.
* Fixed: Hover state of emote menu section buttons.
* Fixed: Re-add pill rendering for FFZ menu button.