* Fixed: Do not scroll context-menus with chat.
* Fixed: After repositioning a tool-tip, check that its host element is still within the page. If it's not, hide the tool-tip.
* Added: Chat > Actions > User Context. Define custom actions that appear in a context menu upon right-clicking a username in chat.
* Fixed: Custom color for chat highlights in dark theme with alternating chat background colors enabled.
* Fixed: Option to hide `LIVE` indicators on live channel pages.
* Fixed: Option to hide Recommended Channels from the Following page.
* Fixed: Error when attempting to import a single profile from a full data backup.
* Fixed: Incorrect profile names and descriptions being displayed in the profile selector of the FFZ Control Center.
* Fixed: Incorrect styling being applied in the profile selector of the FFZ Control Center, making it impossible to determine which profile is currently selected.
* Fixed: Enable the babel object rest spread transformation for continued support of certain older web browsers.
* Fixed: Tool-tips of certain in-line chat actions not displaying information such as the target user's name or the duration of a timeout.
* Fix tab-complete menu styling
Twitch has a Y-padding next to their X-padding, too, which was missing up until now
* Undo removal of `tw-relative`
Needed for the favorite star, whoops
* Added: Option to set a default custom color for highlighted messages, overriding the default red color.
* Added: Recent Messages for Chat Input. Press up and down to recall previously sent messages.
* Added: Option to prioritize favorited emotes and emoji in tab-completion.
* Fixed: Extensions not being hidden correctly.
* Fixed: Change tab-completion sorting to act more similarly to vanilla Twitch.
* Fixed: Color inputs in settings updating too frequently, causing performance issues.
* Fixed: Chat-related code breaking on popped out viewer cards and spamming the automated error reporting service with errors.
* Start working on chat-history (up / down arrow)
* Revamp history "scrolling"
Also store input as a temp variable when at the beginning of the history
* Implement favorite prioritization and fix sorting once and for all
* Use favorites array instead of single call per emote
No idea about provider-specific emotes yet
* Fix sorting and rendering of emote / emoji suggestions
* Fixed: Leaky name matching when the user has listed more than one name to highlight or block.
* Fixed: Blacklist several Twitch errors that were being captured by automatic error reporting.
* Fixed: The optional FFZ Emote Menu icon not displaying properly when the menu is open.
* Changed: Styling of FFZ entries added to the chat settings menu to match the updated aesthetics.
* Changed: Update dependencies.
* Fixed: Sort emotes in the tab-completion list using similar logic to vanilla Twitch.
* Changed: When the tab-completion list is limited to 25 entries, stop looking up further entries if we already have 25 or more.
* Added: Custom Chat Commands now have an option to paste their output into chat input rather than immediately sending the message.
* Added: The option to tab-complete emotes without the use of a colon (:). Please note that this feature still has limitations due to limitations in how Twitch's tab-completion system is implemented, and may not work as you expect.
* Added: The number of results from emote tab-completion will now be limited to 25 by default to mitigate its performance impact. This may be disabled in settings.
* Fixes tab-completion for emotes added by FFZ
* Implement tab-completion of emotes without the need of the colon
If enabled this will prevent username tab-completion without the @ in-front of the name, but will allow emotes to be tab-completed without the need of the colon in-front
* Implement result limit of 25 with setting
* Added: Synchronize applicable settings to `clips.twitch.tv` pages using an iframe.
* Fixed: Issue with chat replay disappearing on `clips.twitch.tv` pages.
* Changed: Pull the FFZ version number from `package.json`.
The Great Maintenance Update. No new features here. Instead, we've updated the build system to webpack 4, updated all our dependencies, and cleaned up a lot of linting issues.
* Update to version 4 of webpack.
* For that matter, update *every dependency* to the latest available version.
* Remove the babel build target for Edge, as it doesn't seem to be necessary with webpack 4 and tenser.
* Add support for optional chaining and nullish coalescing via Babel transformations.
* Update the clips domain version to work better. Or at all, really.
* Remove unused code from i18n.
* Remove the last `<style>` from vue component files. They don't work that way now anyways.
* Fix a bug in Raven's report handler.
* Fix a bug with the menu button in browsers that don't understand `:scope` within `querySelector()`.
* Added: Setting to hide the "New Settings" badge that displays on the FFZ Control Center button when there are new settings.
* Fixed: Incorrect locale detection causing Algolia queries to fail when loading auto-completion for tags.
* Added: Option to automatically opt-out of getting redirected to a Squad Stream page when viewing a channel using Squad Streaming.
* Added: Option to automatically pin the chat message that allows you to share a re-subscription.
* Added: Setting to hide the "LIVE" indicator on live channel pages.
* Added: Setting to invert portrait mode, placing chat at the top rather than the bottom.
* API Added: New icons to the default icon set: `user`, `clip`, `sort-down`, `sort-up`, `sort-alt-up`, `sort-alt-down`, and `language`.
* API Added: All Vue components now have access to a `getReactURL(route, ...)` method for building URLs.
* API Fixed: `<react-link />` will not attempt a React navigation if given a non-relative link.
* API Fixed: Issue with `getTagImmediate` throwing an exception when not given a callback function.
* Changed: Use the new Twitch Data module for fetching stream up-time when it isn't known, rather than forcing queries to re-fetch.
* Changed: Add a method to Twitch Data for looking up stream up-time.
* Fixed: The autocompletion component should not swallow key-presses when modifier keys are being held.
* Fixed: Issue when comparing against `null` with `deep_equals`.
* Added: `Current Channel` rule for profiles, to match all pages associated with a certain channel without needing many page rules.
* Fixed: Unreadable text in light theme when importing a profile.
* Changed: Display a matching page URL in the `Current Page` rule for profiles.
* Changed: Do not display an inactive profile warning on the Add-Ons settings page, since those are not affected by profiles.
* Changed: Update Vue to a more recent version.
* Maintenance: Update the chat types enum based on the latest version of Twitch.
* API Added: `TwitchData` module (`site.twitch_data`) for querying Twitch's API for data.
The Profile Update! Now, it's possible to create custom settings profiles. The important thing about profiles is that you can have different profiles run according to different rules. Want some settings to only apply on your dashboard? Use a Current Page rule set to Dashboard. Want your chat wider in theater mode? Create a profile for Theater Mode.
* Added: Profile Editor.
* Added: Ability to import and export specific profiles.
* Added: Ability to update profiles from JSON files for more advanced users.
* Fixed: Update `sortablejs` dependency to fix issue with sorting behavior.
* Fixed: Several issues in the settings profile system which never came up because custom profiles weren't available.
* Fixed: Hotkeys freezing chat when they shouldn't, up until the first time the mouse hovers over chat.
* API Added: `deep_equals(object, other, ignore_undefined = false)` method of `FrankerFaceZ.utilities.object` for comparing two objects, deeply.
* API Changed: `<setting-check-box />` controls can now display their indeterminate state.
* API Fixed: `deep_copy()` eating Promises and Functions.
* Fixed: Maintain the mouse hover state for chat when moving the mouse over the context menu from an in-line chat action.
* Fixed: Do not allow mouse interaction with the notice at the bottom of chat when chat if frozen, ensuring that users can interact with the bottom chat line.
* Fixed: Block and Hide Thumbnails buttons not appearing on Directory pages.
* API Fixed: `deep_copy()` converting `null` into `{}`.
* API Changed: Tooltips can now emit hover events.
* Fixed: Unable to see in-line chat action context menus in theater mode.
* Changed: Add a new socket server to the list to take pressure off the others.
* API Added: `debounce` method in `FrankerFaceZ.utilities.object`.
* API Added: `<autocomplete>` Vue component for implementing text fields with auto-completion.
* API Changed: Update localized Vue strings immediately when the i18n debug transformation changes.
* API Changed: `<icon-picker />` now has a closed and open state. It doesn't always show the drawer of icons.
* API Changed: Include the `vue-clickaway` mixin in everything.
* Added: Setting to hide the "Not Live" bar beneath videos and clips that appears when the channel is currently live.
* Fixed: Handling of `https://www.twitch.tv/<channel>/clip/<slug>` urls for rich chat embeds and rich link tool-tips.
* Fixed: Lower the priority of custom highlight terms so they will not break links.
* Fixed: Holding multiple modifier keys to display in-line chat actions.
* Fixed: Clean up out-dated avatar display setting for the directory.
* API Added: Allow add-ons to access the Popper JS library via `FrankerFaceZ.utilities.popper`.
* API Added: `<icon-picker />` Vue component for selecting an icon.
* API Added: `<react-link />` Vue component for creating links that cause the React app to navigate without a page load.
* API Added: `<t-list />` Vue component for translating text including Vue elements.
* API Added: `maybeLoad(icon)` function for font awesome to only load the font if the icon is from font awesome.
* API Added: `generateUUID()` function to `FrankerFaceZ.utilities.object`
* API Added: The `vue-observe-visibility` module is now loaded with Vue and made available in all Vue contexts.
* Add setting to hide live notification when watching a clip / video
* Also move Event, Rerun and Squad Streaming Bar settings from the Player to the Channel section
* Fixed: Update Switchboard to allow FFZ to load normally on Twitch's latest update, which updated their version of React Router.
* Fixed: Apply the setting to hide Recommended Channels from the sidebar to Popular Channels as well.
* Fixed: Words being highlighted as mentions incorrectly when they start with the user's name.
* API Changed: New `<react-link>` and `<aspect>` global Vue components.
Fixed: Issue with Recommended Channels query.
Changed: Add information on loaded add-ons to generated logs.
API Changed: Add the missing utility modules to `FrankerFaceZ.utilities` exports, for use in add-ons.
API Changed: Make the Dialog class a bit more flexible.
Fixed: Hide the red dot added to chat by the `gem_gem_gem_gem` experiment.
Changed: Attempt to read the stream start time from a new property for directory cards.
This is a fairly hefty update, behind the scenes. We've rewritten all code that deals with chat scrolling in order to integrate with Twitch's last batch of changes that made chat pausing accessible for moderators. This update also enables the Add-Ons System for all users.
* Added: Setting to allow you to pause chat with a hot key, even when the mouse isn't hovering over chat.
* Added: Setting to control how long chat remains paused due to move movement.
* Fixed: Chat row backgrounds changing when messages are removed from chat.
* Changed: Integrate with Twitch's own chat pausing code, where it makes sense.
* Changed: Remove the experiment locking down access to the Add-Ons Loader.
* Changed: When using the current time as a cache buster, truncate it to the nearest 5 second interval.
* Fixed: Mentions not appearing in bold font.
* Fixed: Highlighting messages in chat when opening a viewer card by clicking a mention that wasn't all lower-case.
* Fixed: Detection of External add-ons when there is a name collision.
* Changed: Do not report name collision errors.
* Changed: Allow for multi-line add-on descriptions.
I finally got tired of putting `-rc` in my version numbers. It's time for normal numbers.
* Added: The Add-On Loader System. This is in, however, until the add-ons are ready it's going to remain disabled. There is an Experiment to enable it for those who find themselves curious.
* Fixed: Round avatars in Theater Mode.
* Fixed: Minor string formatting issues in the Experiments menu.
Implements an Add-on Loader so that other add-ons, such as the FFZ Add-on Pack, can be loaded directly by FFZ without requiring the user to install multiple extensions into their browser.
* Added: Option to highlight messages from a user when their viewer card is open.
* Fixed: Every word in whisper messages being highlighted as a mention.
* Fixed: Square avatars in the left sidebar.
* Fixed: Rich tooltips for `i.stack.imgur.com` images.
* Changed: Priority of socket servers for connection.
* Added: Option to open viewer cards when clicking a mention in chat.
* Fixed: Mention matching in chat. (Now using the same regular expression as vanilla Twitch.)
* Added: Setting to remove rounding applied to avatars.
* Fixed: New settings not being marked as seen when you see them.
* Fixed: Position of the FFZ Control Center icon in the navigation bar.
* Fixed: Position of the Whisper button when in theater mode with a custom Chat Width.
* Fixed: Hiding Recommended Channels from the Following Directory.
* Fixed: Rendering of badges in slot zero.
* Added: Button to mark all settings as seen to the main menu, only visible when there are new settings.
* Fixed: Formatting of metadata.
* Fixed: Custom Chat Width and Theater Mode.
* Fixed: Scrolling issue with the FFZ Control Center when using certain controls.
* Fixed: Visibility checkboxes in the In-Line Chat Actions editor not working correctly when multiple actions are in edit mode.