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}) }} +