Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions .github/workflows/bump-version-on-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: Bump dev version on release

on:
release:
types: [released]

jobs:
bumpversion:
name: Bump version
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v5
with:
ref: v5

- name: Setup Nodejs
uses: actions/setup-node@v5
with:
node-version: latest

- name: Update patch version
run: npm version patch

- name: Push
run: |
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git push
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "firebotv5",
"version": "5.66.2",
"version": "5.66.3",
"description": "Powerful all-in-one bot for Twitch streamers.",
"main": "build/main.js",
"scripts": {
Expand Down
7 changes: 4 additions & 3 deletions src/backend/chat/frontend-chat-helpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,10 @@ class FirebotFrontendChatHelpers {

private sendChatMessageToChatWidget(
chatWidget: OverlayWidgetConfig<ChatWidgetSettings | AdvancedChatWidgetSettings, ChatWidgetState>,
chatMessage: FirebotChatMessage
chatMessage: FirebotChatMessage,
delayed = false
): void {
if (chatWidget.settings.delayMessages === true) {
if (delayed === true) {
if ((this._pendingMessageCache[chatWidget.id] ?? []).some(m => m === chatMessage.id)) {
// Remove it from the pending list so we know we've taken care of it
this._pendingMessageCache[chatWidget.id] = this._pendingMessageCache[chatWidget.id]
Expand Down Expand Up @@ -92,7 +93,7 @@ class FirebotFrontendChatHelpers {
this._pendingMessageCache[chatWidget.id].push(chatMessage.id);

setTimeout(() => {
this.sendChatMessageToChatWidget(chatWidget, chatMessage);
this.sendChatMessageToChatWidget(chatWidget, chatMessage, true);
}, chatWidget.settings.messageDelay * 1000);
} else {
this.sendChatMessageToChatWidget(chatWidget, chatMessage);
Expand Down
2 changes: 1 addition & 1 deletion src/backend/effects/builtin/currency.js
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ const currency = {

<eos-container header="Message To Send" pad-top="true">
<textarea ng-model="effect.message" class="form-control" name="text" placeholder="Enter message" rows="4" cols="40" replace-variables></textarea>
<div style="color: #fb7373;" ng-if="effect.message && effect.message.length > 360">Chat messages cannot be longer than 360 characters. This message will get automatically trimmed if the length is still too long after all replace variables have been populated.</div>
<div style="color: #fb7373;" ng-if="effect.message && effect.message.length > 500">Chat messages cannot be longer than 500 characters. This message will get automatically trimmed if the length is still too long after all replace variables have been populated.</div>
<div style="display: flex; flex-direction: row; width: 100%; height: 36px; margin: 10px 0 10px; align-items: center;">
<label class="control-fb control--checkbox" style="margin: 0px 15px 0px 0px"> Whisper
<input type="checkbox" ng-init="whisper = (effect.whisper != null && effect.whisper !== '')" ng-model="whisper" ng-click="effect.whisper = ''">
Expand Down
1 change: 1 addition & 0 deletions src/backend/streaming-platforms/twitch/events/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ export const TwitchEventSource: EventSource = {
description: "When someone raids your channel.",
cached: true,
cacheMetaKey: "username",
cacheTtlInSecs: 3600,
manualMetadata: {
username: "firebot",
userDisplayName: "Firebot",
Expand Down
1 change: 1 addition & 0 deletions src/gui/app/controllers/chat-messages.controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,7 @@

$scope.onReplyClicked = function(threadOrReplyMessageId) {
$scope.setThreadDetails(threadOrReplyMessageId);
focusMessageInput();
};

$scope.chatFeedIsEnabled = function() {
Expand Down
7 changes: 4 additions & 3 deletions src/gui/app/directives/misc/toggleButton.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,13 @@
autoUpdateValue: "<",
onToggle: "&",
fontSize: "<?",
accessibilityLabel: "<"
accessibilityLabel: "<",
disabled: "<?"
},
template: `
<div class="toggle-button"
ng-class="{'toggled-on': $ctrl.toggleModel}"
ng-click="$ctrl.toggle()"
ng-class="{'toggled-on': $ctrl.toggleModel, 'disabled-control': $ctrl.disabled}"
ng-click="$ctrl.disabled ? angular.noop : $ctrl.toggle()"
ng-style="$ctrl.getCustomStyles()"
aria-label="{{ $ctrl.accessibilityLabel }}">
<i class="fad" style="display: block;" ng-class="{'fa-toggle-on': $ctrl.toggleModel, 'fa-toggle-off': !$ctrl.toggleModel}"></i>
Expand Down
46 changes: 21 additions & 25 deletions src/gui/app/directives/settings/categories/advanced-settings.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,22 +12,24 @@
<setting-description-addon>
<b>Firebot must be restarted for changes to this setting to take effect.</b>
</setting-description-addon>
<firebot-button
text="{{settings.getSetting('DebugMode') ? 'Disable Debug Mode' : 'Enable Debug Mode' }}"
ng-click="settings.saveSetting('DebugMode', !settings.getSetting('DebugMode'))"
<toggle-button
toggle-model="settings.getSetting('DebugMode')"
on-toggle="settings.saveSetting('DebugMode', !settings.getSetting('DebugMode'))"
font-size="40"
/>
</firebot-setting>

<firebot-setting
name="While Loop"
name="While Loops"
description="Enable or disable the conditional 'While Loop' option in the Loop Effects effect."
>
<setting-description-addon>
<b>If you aren't careful, you can cause an infinite loop and freeze Firebot.</b>
</setting-description-addon>
<firebot-button
text="{{settings.getSetting('WhileLoopEnabled') ? 'Disable While Loops' : 'Enable While Loops' }}"
ng-click="toggleWhileLoops()"
<toggle-button
toggle-model="settings.getSetting('WhileLoopEnabled')"
on-toggle="toggleWhileLoops()"
font-size="40"
/>
</firebot-setting>

Expand Down Expand Up @@ -63,10 +65,11 @@
<setting-description-addon>
<b>Requires Debug Mode to also be enabled.</b>
</setting-description-addon>
<firebot-button
text="{{settings.getSetting('WebhookDebugLogs') && settings.getSetting('DebugMode') ? 'Disable Webhook Logs' : 'Enable Webhook Logs' }}"
<toggle-button
toggle-model="settings.getSetting('WebhookDebugLogs')"
disabled="!settings.getSetting('DebugMode')"
ng-click="settings.saveSetting('WebhookDebugLogs', !settings.getSetting('WebhookDebugLogs'))"
on-toggle="settings.saveSetting('WebhookDebugLogs', !settings.getSetting('WebhookDebugLogs'))"
font-size="40"
/>
</firebot-setting>

Expand All @@ -87,28 +90,21 @@
name="Allow Quote .CSV Export"
description="Whether or not you want the 'Export as .CSV' button available for quotes on the profile page."
>
<firebot-select
options="{ true: 'On', false: 'Off' }"
ng-init="allowQuoteCsv = settings.getSetting('AllowQuoteCSVDownloads')"
selected="allowQuoteCsv"
on-update="settings.saveSetting('AllowQuoteCSVDownloads', option === 'true')"
right-justify="true"
aria-label="Choose Whether or not you want the 'Export as .CSV' button available for quotes on the profile page."

<toggle-button
toggle-model="settings.getSetting('AllowQuoteCSVDownloads')"
on-toggle="settings.saveSetting('AllowQuoteCSVDownloads', !settings.getSetting('AllowQuoteCSVDownloads'))"
font-size="40"
/>
</firebot-setting>

<firebot-setting
name="Persist All Custom Variables"
description="Whether or not all custom variables should be persisted to file when Firebot closes."
>
<firebot-select
options="{ true: 'On', false: 'Off' }"
ng-init="persistVariables = settings.getSetting('PersistCustomVariables')"
selected="persistVariables"
on-update="settings.saveSetting('PersistCustomVariables', option === 'true')"
right-justify="true"
aria-label="enable or disable persistent Custom Variables"
<toggle-button
toggle-model="settings.getSetting('PersistCustomVariables')"
on-toggle="settings.saveSetting('PersistCustomVariables', !settings.getSetting('PersistCustomVariables'))"
font-size="40"
/>
</firebot-setting>

Expand Down
22 changes: 8 additions & 14 deletions src/gui/app/directives/settings/categories/database-settings.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,27 +12,21 @@
name="Viewer Database"
description="Turn on/off the viewer tracking database. This could improve performance in some cases."
>
<firebot-select
options="{ true: 'On', false: 'Off' }"
ng-init="viewerDb = settings.getSetting('ViewerDB')"
selected="viewerDb"
on-update="settings.saveSetting('ViewerDB', option === 'true')"
right-justify="true"
aria-label="enable or disable Viewer Database"
<toggle-button
toggle-model="settings.getSetting('ViewerDB')"
on-toggle="settings.saveSetting('ViewerDB', !settings.getSetting('ViewerDB'))"
font-size="40"
/>
</firebot-setting>

<firebot-setting
name="Auto Flag Bots"
description="Prevents known bots from generating stats or showing up in active viewer lists."
>
<firebot-select
options="{ true: 'On', false: 'Off' }"
ng-init="autoFlagBots = settings.getSetting('AutoFlagBots')"
selected="autoFlagBots"
on-update="settings.saveSetting('AutoFlagBots', option === 'true')"
right-justify="true"
aria-label="enable or disable Auto Flag Bots"
<toggle-button
toggle-model="settings.getSetting('AutoFlagBots')"
on-toggle="settings.saveSetting('AutoFlagBots', !settings.getSetting('AutoFlagBots'))"
font-size="40"
/>
</firebot-setting>

Expand Down
10 changes: 4 additions & 6 deletions src/gui/app/directives/settings/categories/effect-settings.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,10 @@
name="Default Effect Labels"
description="When enabled, Firebot will automatically generate labels for (most) effects that don't have a custom label set."
>
<firebot-select
options="{ true: 'On', false: 'Off' }"
ng-init="effectLabelsEnabled = settings.getSetting('DefaultEffectLabelsEnabled')"
selected="effectLabelsEnabled"
on-update="settings.saveSetting('DefaultEffectLabelsEnabled', option === 'true')"
right-justify="true"
<toggle-button
toggle-model="settings.getSetting('DefaultEffectLabelsEnabled')"
on-toggle="settings.saveSetting('DefaultEffectLabelsEnabled', !settings.getSetting('DefaultEffectLabelsEnabled'))"
font-size="40"
/>
</firebot-setting>
</div>
Expand Down
11 changes: 4 additions & 7 deletions src/gui/app/directives/settings/categories/overlay-settings.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,10 @@
>
<a href ng-click="showEditOverlayInstancesModal()">Edit Instances</a>
</span>
<firebot-select
options="{ true: 'On', false: 'Off' }"
ng-init="overlayInstances = settings.getSetting('UseOverlayInstances')"
selected="overlayInstances"
on-update="settings.saveSetting('UseOverlayInstances', option === 'true')"
right-justify="true"
aria-label="enable or disable Overlay Instances"
<toggle-button
toggle-model="settings.getSetting('UseOverlayInstances')"
on-toggle="settings.saveSetting('UseOverlayInstances', !settings.getSetting('UseOverlayInstances'))"
font-size="40"
/>
</firebot-setting>

Expand Down
24 changes: 9 additions & 15 deletions src/gui/app/directives/settings/categories/scripts-settings.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,10 @@
>here</a
>.</div>
</setting-description-addon>
<firebot-select
options="{ true: 'Enabled', false: 'Disabled' }"
ng-init="customScriptsEnabled = settings.getSetting('RunCustomScripts')"
selected="customScriptsEnabled"
on-update="settings.saveSetting('RunCustomScripts', option === 'true')"
right-justify="true"
aria-label="Enable or disable custom scripts"
<toggle-button
toggle-model="settings.getSetting('RunCustomScripts')"
on-toggle="settings.saveSetting('RunCustomScripts', !settings.getSetting('RunCustomScripts'))"
font-size="40"
/>
</firebot-setting>

Expand All @@ -44,14 +41,11 @@
name="Clear Custom Script Cache"
description="Whether or not you want custom scripts to be cleared from memory before they are executed. Enabling this helps when actively developing a custom script, otherwise Firebot wont reflect changes to your script until restarted. Everyday users should leave this disabled."
>
<firebot-select
options="{ true: 'On', false: 'Off' }"
ng-init="clearCache = settings.getSetting('ClearCustomScriptCache')"
is-disabled="!settings.getSetting('RunCustomScripts')"
selected="clearCache"
on-update="settings.saveSetting('ClearCustomScriptCache', option === 'true')"
right-justify="true"
aria-label="Enable or disable the Clearing of Custom Script Cache"
<toggle-button
toggle-model="settings.getSetting('ClearCustomScriptCache')"
on-toggle="settings.saveSetting('ClearCustomScriptCache', !settings.getSetting('ClearCustomScriptCache'))"
disabled="!settings.getSetting('RunCustomScripts')"
font-size="40"
/>
</firebot-setting>

Expand Down
22 changes: 8 additions & 14 deletions src/gui/app/directives/settings/categories/trigger-settings.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,10 @@
name="Allow Shared Chat To Trigger Commands"
description="Allow commands to be triggered by chat messages sent in other channels during Twitch Shared Chat"
>
<firebot-select
options="{ true: 'Yes', false: 'No' }"
ng-init="allowSharedChatCommands = settings.getSetting('AllowCommandsInSharedChat')"
selected="allowSharedChatCommands"
on-update="settings.saveSetting('AllowCommandsInSharedChat', option === 'true')"
right-justify="true"
aria-label="Allow Shared Chat To Trigger Commands"
<toggle-button
toggle-model="settings.getSetting('AllowCommandsInSharedChat')"
on-toggle="settings.saveSetting('AllowCommandsInSharedChat', !settings.getSetting('AllowCommandsInSharedChat'))"
font-size="40"
/>
</firebot-setting>

Expand All @@ -59,13 +56,10 @@
name="Ignore Related Gift Sub Events"
description="When this is enabled, Firebot will ignore individual Gift Sub events that are part of a Community Gift Sub event. This means only the Community Sub event would fire instead of the Community Sub event AND an additional Gift Sub event for every recipient."
>
<firebot-select
options="{ true: 'Yes', false: 'No' }"
ng-init="ignoreSubEvents = settings.getSetting('IgnoreSubsequentSubEventsAfterCommunitySub')"
selected="ignoreSubEvents"
on-update="settings.saveSetting('IgnoreSubsequentSubEventsAfterCommunitySub', option === 'true')"
right-justify="true"
aria-label="enable or disable Ignore Related Gift Sub Events"
<toggle-button
toggle-model="settings.getSetting('IgnoreSubsequentSubEventsAfterCommunitySub')"
on-toggle="settings.saveSetting('IgnoreSubsequentSubEventsAfterCommunitySub', !settings.getSetting('IgnoreSubsequentSubEventsAfterCommunitySub'))"
font-size="40"
/>
</firebot-setting>

Expand Down
2 changes: 1 addition & 1 deletion src/gui/app/templates/chat/_chat-messages.html
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ <h4><i class="fas" ng-class="currentThreadMessages().length < 2 ? 'fa-reply' : '
placeholder="Message the stream"
class="text-input-field"
style="height: 100%"
ng-maxlength="360"
ng-maxlength="500"
ng-model="cms.chatMessage"
ng-change="onMessageFieldUpdate()"
ng-keydown="onMessageFieldKeypress($event)"
Expand Down