* Added: Highlight rules now have priorities. Priorities allow for finer control over which color is used to highlight a message, as well as giving priority to specific rules when highlighting individual words. * Added: Setting to set a priority for the built-in highlighting when someone mentions you by name. * Changed: The `chat:receive-message` event no longer fires if there are no registered event listeners, to improve performance. * Changed: Attempt to more accurately display re-sub notices in Chat on Videos by parsing out the re-sub message from the start of the message. * Changed: Apply the user's selected `Action Style` to Chat on Videos. * Fixed: Messages being re-tokenized incorrectly sometimes due to an incorrect flag being passed by the chat line component. * Fixed: Update the logic for inserting a "Live Message Separator" to duplicate the logic used by Twitch. * API Added: `chat:buffer-message` event that is fired when a chat message is copied into the buffer of visible messages. If you wish to run an event when a chat message becomes visible to the user, this is what you want to use. * API Added: `FFZEvent` instances now have a `_reset()` method for resetting their defaultPrevented / propagationStopped state. For use by the constructing method only. This is intended for allowing the re-use of FFZEvent instances when firing many events in succession. * API Changed: The various settings used for applying filters during message tokenization have been renamed to start with `__filter:` |
||
---|---|---|
.github | ||
bin | ||
res | ||
socketserver | ||
src | ||
styles | ||
.babelrc | ||
.eslintrc.js | ||
.gitignore | ||
changelog.html | ||
fontello.client.json | ||
fontello.config.json | ||
jsconfig.json | ||
LICENSE | ||
old_changes.html | ||
package-lock.json | ||
package.json | ||
README.md | ||
webpack.clips.common.js | ||
webpack.clips.dev.js | ||
webpack.clips.prod.js | ||
webpack.common.js | ||
webpack.web.common.js | ||
webpack.web.dev.js | ||
webpack.web.dev.prod.js | ||
webpack.web.prod.js |
FrankerFaceZ
Copyright (c) 2018 Dan Salvato LLC
Licensed under the Apache License, Version 2.0. See LICENSE.
Developing
FrankerFaceZ uses node.js to manage development dependencies and to run an HTTP server for development. To get everything you need:
- Install node.js and npm
- Run
npm install
within the FrankerFaceZ directory.
From there, you can use npm to build FrankerFaceZ from source simply by
running npm run build
. For development, you can instruct webpack to watch
the source files for changes and re-build automatically with npm start
FrankerFaceZ comes with a local development server that listens on port 8000 and it serves up local development copies of files, falling back to the CDN when a local copy of a file isn't present.
Note: The local development server uses
webpack-dev-server
internally, which self-signs a certificate for hosting content via HTTPS. You will need to ensure your browser accepts a self-signed certificate for localhost.
To make FrankerFaceZ load from your local development server, you must set
the local storage variable ffzDebugMode
to true. Just run the following
in your console on Twitch: localStorage.ffzDebugMode = true;
It should be noted that this project is not a browser extension that you would load in your browser's extensions system. You still need the FrankerFaceZ extension or user-script for your browser.
You can edit the project's icon font using the npm run font
command. This will
create a new Fontello session, if one doesn't already exist, and open your
default web browser to Fontello so you can edit the font.
If you're running the development server with npm start
, you'll be able to
automatically save changes to the Fontello font by clicking Fontello's Export
button. Otherwise, you can use npm run font:save
to download the changes
from your session.
Editor Settings
Please make sure that your editor is configured to use tabs rather than spaces
for indentation and that lines are ended with \n
. It's recommended that you
configure linting support for your editor as well.
If you're using Visual Studio Code, make sure to install the ESLint extension and add the following to your workspace settings:
{
"eslint.validate": [
"javascript",
"javascriptreact",
"vue"
]
}