* Added: Initial support for the `/delete` command. Only specific messages will be removed from chat when one is received, now, and there's an easy to add action for In-Line Chat Actions to let moderators perform the action.
* Fixed: Rename all references to `tw-c-background` to `tw-c-background-base` and `tw-c-text` to `tw-c-text-base` to fix rendering issues with FrankerFaceZ's custom UI due to Twitch CSS changes.
* Fixed: Typo in chat code fixes causing message deletion setting to not work correctly.
* Fixed: Remove request causing following directory to crash, until such time as we can figure out why it's happening.
* Not Fixed: Directory stuff.
* Fixed: Chat handling.
This is an initial release to add support for Twitch's changes to how chat works internally. Everything should be working. I'm not entirely happy with the code though, so I'll be reviewing this in the future when I have time to clean things up.
I haven't had a chance to go over directory features yet, and likely won't for several days because of my job.
* Fixed: Issue where settings context was not being set up correctly in pop-out chat.
* Fixed: Chat Width setting on various channel sub-pages on the old layout.
* Changed: Limit emote menu subscription benefit requests to 75 items per request due to issues with Twitch's GraphQL API periodically returning errors when requesting 100 items.
* Changed: Set the API stress testing experiment to 100% roll-out.
* Fixed: Take a few more variables into account when sizing the player for Portrait Mode.
* Changed: Fade in the Host button, not responding to user interaction while it's fading to give users a chance to react to the UI change.
* Added "Chat > Behavior > Deleted Message Style" setting to customize how deleted messages appear when set to always be visible.
* Added "Chat > Filtering > Filter your own messages." setting to control whether or not your own chat messages are filtered. Defaults to disabled.
* Fixed: Channel Hosting, via better detection of new vs old channel component style.
* Fixed: Appearance of Twitch emotes in locally displayed `/me` messages in chat.
* Fixed: Rendering of international usernames in Clips Chat.
* Changed: Tag error reports with the current site.
Fix the implementation of rate-limiting in the socket server to use data from the sealed request. Load a list of acceptable origins from the config file.
* Fixed: Emotes in locally echoed chat messages. (Update code for parsing emotes in locally echoed chat messages to find emote data in the new location.)
* Fixed: Automatic opting out from raids not working in pop-out chat.
* Fixed: Error causing messages in the delayed buffer to not be removed when a user is timed out.
* Changed: Add localization support for message when a clear chat is ignored.
* Added: Setting to ignore moderators clearing chat.
* Added: Setting to remove deleted messages from chat entirely.
* Added: Setting to control the delay before chat messages appear.
* Added: Remove messages entirely using Blocked Terms.
* Fixed: Position of emotes in locally echoed chat messages containing emoji.
Added a `chat:receive-message` event for processing incoming chat messages before they're added to the buffer.
* Added: Whisper Support
* Fixed: UI missing hover state for a few elements added by FrankerFaceZ.
* Fixed: Handle missing badge definition when rendering FFZ badges.
* Fixed: Update static chat message type mappings.
* Fixed: Error in metadata when unable to get the proper player.
* Fixed: Incorrectly applying dark theme to products page.
A bit more work on getting enhanced viewer cards ready.
* Changed: Make usernames in chat line resub messages clickable.
* Fixed: Remove debug logging.
* Fixed: Make the code to automatically leave raids more resilient against Twitch wanting people to join raids automatically.
* Update all usages of `tw-input` and `tw-select` to use the new, overly-verbose classes Twitch added.
* Add a few of the monkey faces to the local emote code to make them work.
* Override emotes when building the emote code <-> id map, to let emotes from higher sets override global emotes.
This adds a new module called switchboard that abuses the root React Router instance to forcibly load a chunk, letting us grab `require()` quickly rather than waiting potentially forever for another chunk to be loaded due to user action, etc.
Add an option to hide the mouse over the player. This doesn't work well in Chrome. Oh well, we tried.
Add an option to not automatically join raids for that comfy falling asleep experience.
Fix in-line actions not rendering when they should.
Fix detokenizeMessage for changes to Twitch's message format.
Don't try to preview the `create` clip URL.
Start using functional components where possible for performance.
Stop logging GraphQL errors to save our Sentry quota.
Begin implementing chat rendering on top of Vue. For now, we've got functional components for every type of chat token. We've got a lot of work ahead of us. This will eventually be used for mod card history, chat panes, and maybe even pinned rooms.
Add an event to clean orphan tooltips. Useful for when we click something we know will change DOM elements with active tooltips, like a Close button for example.
* More work on mod cards
* More work on mod cards!
Some sort of dynamic component thingy madoohickey
* Change up implementation of tabs
* Implement focus and tabindex
* Remove unused GQL queries / mutations
* Implement user info
* Only show use rlogin if an international name was detected
Also attempt to fix line height
* Remove testing memes
* Remove derps... whoops
Look up the room login from the ID when rendering a chat line if we don't have the login already.
Add color validation to the color picker component.
If room is null, don't even try sending a message.
Allow sending messages to any room and not just the current room.
Swallow errors when processing colors and return null.
* Add extensible actions system.
* Add extensive UI for configuring the actions system.
* Add setting to disable channel hosting.
* Fix the stupid Rooms thing popping up every time you open a channel.
* Fix how we grab chat types from React.
* Refactor how we handle incoming chat messages.
* Add a hook for outgoing chat messages.
* Fix emoji appearing squished with baseline emote alignment.
* Display arrows on balloons.
* Fix an issue generating emoji URLs.
* Do not use the default values for settings with merge strategies if profiles have those settings, just empty.
* Display a message in the chat settings menu if we tried opening FFZ's settings and failed.
* Wait a bit for webpack's loader if it's not immediately there for some reason.
* Probably other stuff.
* Not mod cards. Yet.
* Add automatic error reporting with Sentry.io
* Filter a bunch of bad errors from showing up on Sentry
* Add module.hasModule method.
* Fix deep_copy
* Fix disallow mouse interaction with extensions
* Add some new icons to the icon font for mod cards
* Allow Ctrl-Shift-Clicking emotes.
* Rarity sorting for experiments and unset display for unused experiments.
* Add the emote menu.
* Add an option to replace the emote menu icon with the FFZ icon.
* Add icons to the icon font.
* Add a basic human duration formatting method to i18n.
* Add methods to the emotes module to get sets including the providers.
* Add a method to the emotes module to load an arbitrary set.
* Add a map to the emotes module for identifying providers.
* Add new events for when emote sets change.
* Add support for loading featured channel emotes.
* Add an option to suppress source sets in emote tooltips.
* Add an option to display a sellout line in emote tooltips.
* Remove emote menu from the WIP section of the home page of the menu.
* Fix a typo in rich content.
* Remove a bit of logging from fine.
* Add helper methods for set comparison and basic debouncing to utilities/object.
* Add constants for the emote menu.
* Add methods to show/hide a tooltip to the tooltip data object.
* Configure the project to allow the use of JSX in .jsx files.
* Add linting for JSX.
* Rewrite most existing code that uses `createElement` to use JSX syntax.
* Stop importing `createElement as e`. That's what the minifier is for. And we don't have to write it manually so much now because of JSX syntax.