From 261c461481a5eb14e27b57336ef5c907c1c63e14 Mon Sep 17 00:00:00 2001 From: SirStendec Date: Wed, 27 May 2020 15:44:37 -0400 Subject: [PATCH] 4.19.12 **Note**: This update does not fix all issues with features not working on Twitch's new channel page layout. Due to changes Twitch has been making to their coding practices, it is significantly harder to support their newer pages. We are still trying to determine the best way to support things going forward. * Added: Chat Actions can be copied as JSON and imported from JSON. (Closes #782) * Fixed: The player stuttering when attempting to play a clip when the Audio Compressor is set to be enabled by default. * Fixed: Custom chat widths, swapping sidebars, and portrait mode not working correctly with the new channel page layout. (Closes #799, Affects #794) * Fixed: Square Avatars not working correctly on the new channel page layout. * Fixed: Searching settings would not properly search for items in Experiments. * Fixed: Emotes ending in punctuation (specifically: `.`, `,`, and `!`) were not being displayed correctly. * Fixed: The order of actions reversing after an inheritance point. (Closes #791) * Changed: Rename `Chat > Bits and Cheering > Display Top Cheerers` to `Chat > Appearance > Display Leaderboard` to bring it in line with the current state of the feature. * Removed: Option to hide offline channels from sidebar. This is no longer trivial to implement due to Twitch changes. (Closes #801) --- package.json | 2 +- src/experiments.js | 22 ++++++ src/modules/chat/index.js | 13 +++- .../main_menu/components/action-editor.vue | 40 ++++++++++- .../main_menu/components/chat-actions.vue | 69 ++++++++++++++++++- .../main_menu/components/experiments.vue | 48 ++++++++++++- src/modules/main_menu/index.js | 1 + src/settings/types.js | 11 +-- .../twitch-twilight/modules/chat/index.js | 8 ++- .../modules/css_tweaks/index.js | 22 ++++-- .../modules/css_tweaks/styles/chat-fix.scss | 25 +++++++ .../modules/css_tweaks/styles/portrait.scss | 4 ++ .../css_tweaks/styles/square-avatars.scss | 5 ++ src/sites/twitch-twilight/modules/player.jsx | 10 ++- 14 files changed, 255 insertions(+), 25 deletions(-) create mode 100644 src/sites/twitch-twilight/modules/css_tweaks/styles/chat-fix.scss diff --git a/package.json b/package.json index 7400d916..e977b54e 100755 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "frankerfacez", "author": "Dan Salvato LLC", - "version": "4.19.11", + "version": "4.19.12", "description": "FrankerFaceZ is a Twitch enhancement suite.", "license": "Apache-2.0", "scripts": { diff --git a/src/experiments.js b/src/experiments.js index beea2da5..282807b4 100644 --- a/src/experiments.js +++ b/src/experiments.js @@ -38,6 +38,27 @@ export default class ExperimentManager extends Module { this.settings.addUI('experiments', { path: 'Debugging > Experiments', component: 'experiments', + no_filter: true, + + getExtraTerms: () => { + const values = []; + + for(const [key,val] of Object.entries(this.experiments)) { + values.push(key); + if ( val.name ) + values.push(val.name); + if ( val.description ) + values.push(val.description); + } + + for(const [key, val] of Object.entries(this.getTwitchExperiments())) { + values.push(key); + if ( val.name ) + values.push(val.name); + } + + return values; + }, unique_id: () => this.unique_id, @@ -103,6 +124,7 @@ export default class ExperimentManager extends Module { } this.log.info(`Loaded information on ${Object.keys(data).length} experiments.${changed > 0 ? ` ${changed} values updated.` : ''}`); + //this.emit(':loaded'); } diff --git a/src/modules/chat/index.js b/src/modules/chat/index.js index 248d0a6e..ec4a11d3 100644 --- a/src/modules/chat/index.js +++ b/src/modules/chat/index.js @@ -24,6 +24,7 @@ import Actions from './actions'; export const SEPARATORS = '[\\s`~<>!-#%-\\x2A,-/:;\\x3F@\\x5B-\\x5D_\\x7B}\\u00A1\\u00A7\\u00AB\\u00B6\\u00B7\\u00BB\\u00BF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E3B\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]'; +const EMOTE_CHARS = /[ .+!]/; export default class Chat extends Module { constructor(...args) { @@ -1184,12 +1185,18 @@ export default class Chat extends Module { if ( Array.isArray(raw_emote) ) return msg.ffz_emotes = msg.emotes; - const em = emotes[raw_emote.id] = emotes[raw_emote.id] || [], - idx = chars.indexOf(' ', raw_emote.startIndex); + const em = emotes[raw_emote.id] = emotes[raw_emote.id] || []; + let idx = raw_emote.startIndex + 1; + while(idx < chars.length) { + if ( EMOTE_CHARS.test(chars[idx]) ) + break; + + idx++; + } em.push({ startIndex: raw_emote.startIndex, - endIndex: (idx === -1 ? chars.length : idx) - 1 + endIndex: idx - 1 }); } diff --git a/src/modules/main_menu/components/action-editor.vue b/src/modules/main_menu/components/action-editor.vue index 8a8c7697..8c6cfb60 100644 --- a/src/modules/main_menu/components/action-editor.vue +++ b/src/modules/main_menu/components/action-editor.vue @@ -14,6 +14,15 @@ {{ t('setting.actions.visible', 'visible: {list}', {list: visibility}) }} +