* 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.
* Fixed: Chat crashing due to Twitch's new introduction feature. This is currently done with a patch that converts such messages to the old style 'First Time Chat'.
* Changed: The rich embed testing tool now supports automatic refresh when using a local development server.
* Fixed: Reduce the amount of re-rendering that happens when a mass gift sub happens in chat.
* Fixed: Do not display stream latency metadata when watching non-live content.
* Fixed: Add support for user name overrides to clips and video chat.
* Fixed: Badge tooltips on the clips subdomain.
* API Added: `ffz_user_class`, `ffz_user_props`, and `ffz_user_style` on chat messages for customizing the display of usernames on messages in chat.
* Fixed: Clicking on Twitch emotes to open an information card about the emote not working for emotes at 50% or further down the screen height.
* Fixed: Improve support for the Twitch WYSIWYG chat input experiment.
* Fixed: Apply a maximum height to the ban reason pop-up to avoid long lists from going off screen.
* API Added: `removeTokenizer(type)` and `removeRichProvider(type)` methods for the chat module.
* API Changed: Chat tokenizers no longer need to return a token list, if tokens have not changed.
* Fixed: Infinite loop bug with the `<markdown />` Vue component.
* Fixed: Bug with the method that calculates the chat input height causing chat input to disappear completely.
* Changed: When an add-on fails to enable, a slightly better message will be logged to console.
* Added: Option for displaying larger embeds in chat for supported sources. This won't do anything until the link service is updated with support.
* Added: Support for v6 rich content for embeds, tool-tips, and the rich content debugger.
* Changed: Limit the width of rich content embeds in portrait mode.
* Fixed: Clicking badges not working correctly.
* Fixed: Rich embeds being rendered when an unsupported version is returned from the embed server.
* Fixed: The month being off by one in the default filename when saving a settings backup.
* Fixed: The Chat Identity entry not appearing in the chat settings menu when appropriate.
* API Added: `Mutex()` class for limiting something to a certain number of accessors at once.
This release cleans up some English strings, and moves us to a new back-end for translation. Now, translations are cached in our CDN which should reduce resource usage and allow clients to properly cache things. Translations are also split into chunks so clients can minimize what they need to request at any given time.
* Fixed: Detection of the subscriber button.
* Fixed: Remove references of non-standard ICU format `en_plural`. Use proper `plural` tags.
* API Added: `i18n.loadChunk(name: string) => Promise<void>` for requiring a new chunk.
* API Fixed: Allow settings to have a `null` i18n key to disable translation.
This update includes a dependency update to version 2 of PopperJS, the library we use for tool-tips. Hopefully this fixes flickering issues with tool-tips. Some tool-tips may have issues after the update. If something doesn't look right, please ask.
* Fixed: Chat lines not showing replies.
* API Fixed: `setChildren` now supports variables that are not `Node`s or `string`s, and does so by casting other types to `string`s. Makes it easy to include numbers and other variables when using JSX.
* Maintenance: Update to PopperJS v2.
* Start using the [pnpm](https://pnpm.io/) package manager rather than npm.
* Replace `node-sass` with `sass`.
* Update versions of many dependencies
* Didn't yet update webpack to v5, since that'll be a mess.
* Clean some old build scripts out of package.json
* Added: Setting to hide the "Discover Luna" link in the top navigation.
* Changed: Hide blocked categories from the directory's category list.
* Fixed: Stream up-times not appearing in the directory.
* Fixed: Error in error handler for PubSub.
* API Added: `Dialog` now supports prepending its element to its container, rather than appending.
* API Added: `tip.add_class` for adding additional classes to rich tooltips that may now have had their element created yet.
* Fixed: Initialization problems in pop-out chat.
* Changed: Set a default size for emoji, to prevent rendering issues in any future cases where initialization breaks.
* Changed: Apply the full width clips page setting to the create new clip page.
* Fixed: Issue with Apollo failing to initialize breaking multiple parts of FFZ.
* API Changed: Support `sfw_images` when rendering rich tokens.
* Added: Support for OpenDyslexic and Google Fonts. Font Family settings now provide a list of fonts to choose from, in addition to allowing a custom font to be entered.
* Changed: When saving a settings backup, the current date will be included in the filename by default. (Closes#1084)
* Added: Setting to hide Drops messages in chat.
* Fixed: Chat Colors not being applied to chat in Mod View.
* Fixed: The color of the search input not being affected.
* Changed: Add a disclaimer to the `Show Overlay Extensions` setting to clarify that it does not prevent extensions from loading.
* Changed: Wait up to a full minute for add-on scripts to load.
* API Added: The `<react-link />` Vue component now has a `state` prop for passing state data with links, necessary for navigating to certain Twitch pages.
* Fixed: Current channel detection, both on channel pages and on mod view. (Closes#1099)
* Fixed: Clicking the stream latency metadata not toggling the video stats display.
* Fixed: Portrait mode not correctly positioning page content, notably breaking portrait mode with chat on top.
* Fixed: Whisper messages not rendering correctly and logging error messages.
* Fixed: Clip messages not rendering correctly and logging error messages, on the clips subdomain.
* Fixed: Use `/3.0` URLs for Twitch's emote CDN rather than `/4.0` to prevent 404 errors. Kappa will look smaller to some users, but it's a price I'm willing to pay and entirely Twitch's fault anyways.
* Fixed: Volume control not being hidden when gain control has replaced the default volume control.
This is a temporary, quick fix while a proper fix is developed.
* Fixed: Include necessary CSS for FrankerFaceZ that was recently removed from Twitch's own CSS bundle.
* Fixed: Exclude the player settings menu from theming when using a light theme to avoid rendering issues.
* API Added: `addNotice(room, message)` method for the module `site.chat`.
* API Fixed: Add `addNotice()` and `sendMessage()` stubs to the `site.chat` module in clips flavor.
* Added: Setting to display a system message on chat messages that contain bits, enabled by default.
* API Added: Expose `filtering` utilities.
* API Added: Events `chat:mod-user` and `chat:clear-chat`.