From 2990b1b876b880db176f23533032353fd9d3af66 Mon Sep 17 00:00:00 2001 From: Jacob Thompson Date: Thu, 25 Sep 2025 00:09:34 -0700 Subject: [PATCH 01/10] add setting that modifies deleted message truncation limit --- src/messages/MessageBuilder.cpp | 5 +++-- src/singletons/Settings.hpp | 3 +++ src/widgets/settingspages/GeneralPage.cpp | 14 ++++++++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/messages/MessageBuilder.cpp b/src/messages/MessageBuilder.cpp index 05123f2eef3..a41f0f4cc08 100644 --- a/src/messages/MessageBuilder.cpp +++ b/src/messages/MessageBuilder.cpp @@ -1257,9 +1257,10 @@ MessagePtr MessageBuilder::makeDeletionMessageFromIRC( MessageColor::System); auto deletedMessageText = originalMessage->messageText; - if (deletedMessageText.length() > 50) + auto limit = getSettings()->messageTruncationLimit; + if (limit > 0 && deletedMessageText.length() > limit) { - deletedMessageText = deletedMessageText.left(50) + "…"; + deletedMessageText = deletedMessageText.left(limit) + "…"; } builder diff --git a/src/singletons/Settings.hpp b/src/singletons/Settings.hpp index aeff2d6f28e..df068d847d4 100644 --- a/src/singletons/Settings.hpp +++ b/src/singletons/Settings.hpp @@ -320,6 +320,9 @@ class Settings true, }; + IntSetting messageTruncationLimit = {"/behaviour/messageTruncationLimit", + 50}; + // Auto-completion BoolSetting onlyFetchChattersForSmallerStreamers = { "/behaviour/autocompletion/onlyFetchChattersForSmallerStreamers", true}; diff --git a/src/widgets/settingspages/GeneralPage.cpp b/src/widgets/settingspages/GeneralPage.cpp index a9016f4bd22..69429143bd7 100644 --- a/src/widgets/settingspages/GeneralPage.cpp +++ b/src/widgets/settingspages/GeneralPage.cpp @@ -546,6 +546,7 @@ void GeneralPage::initLayout(GeneralPageView &layout) : args.value; }, true, "a = am/pm, zzz = milliseconds"); + layout.addDropdown( "Limit message height", {"Never", "2 lines", "3 lines", "4 lines", "5 lines"}, @@ -556,6 +557,19 @@ void GeneralPage::initLayout(GeneralPageView &layout) [](auto args) { return fuzzyToInt(args.value, 0); }); + + layout.addDropdown( + "Limit truncation of deleted messages", + {"No limit", "50 characters", "100 characters", "200 characters", "300 characters", + "400 characters"}, + s.messageTruncationLimit, + [](auto val) { + return val ? QString::number(val) + " characters" : QString("No limit"); + }, + [](auto args) { + return fuzzyToInt(args.value, 0); + }); + layout.addSeparator(); SettingWidget::checkbox("Draw a line below the most recent message before " From bf1040bb523f72a232e1469213021613ffa99751 Mon Sep 17 00:00:00 2001 From: Jacob Thompson Date: Thu, 25 Sep 2025 00:17:34 -0700 Subject: [PATCH 02/10] format --- src/widgets/settingspages/GeneralPage.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/widgets/settingspages/GeneralPage.cpp b/src/widgets/settingspages/GeneralPage.cpp index 69429143bd7..aae31ab5215 100644 --- a/src/widgets/settingspages/GeneralPage.cpp +++ b/src/widgets/settingspages/GeneralPage.cpp @@ -546,7 +546,6 @@ void GeneralPage::initLayout(GeneralPageView &layout) : args.value; }, true, "a = am/pm, zzz = milliseconds"); - layout.addDropdown( "Limit message height", {"Never", "2 lines", "3 lines", "4 lines", "5 lines"}, @@ -557,7 +556,6 @@ void GeneralPage::initLayout(GeneralPageView &layout) [](auto args) { return fuzzyToInt(args.value, 0); }); - layout.addDropdown( "Limit truncation of deleted messages", {"No limit", "50 characters", "100 characters", "200 characters", "300 characters", From ee7a08c5f3db26a25ceb103384523eff30520af3 Mon Sep 17 00:00:00 2001 From: Jacob Thompson Date: Thu, 25 Sep 2025 03:23:40 -0700 Subject: [PATCH 03/10] remove hardcoded truncation limit from mod system message --- src/providers/twitch/eventsub/MessageBuilder.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/providers/twitch/eventsub/MessageBuilder.cpp b/src/providers/twitch/eventsub/MessageBuilder.cpp index 984838c98c5..6dd0a21a7bd 100644 --- a/src/providers/twitch/eventsub/MessageBuilder.cpp +++ b/src/providers/twitch/eventsub/MessageBuilder.cpp @@ -331,14 +331,15 @@ void makeModerateMessage( builder.emplaceSystemTextAndUpdate("saying:", text); - if (action.messageBody.view().length() > 50) + auto limit = getSettings()->messageTruncationLimit; + if (limit > 0 && action.messageBody.view().length() > limit) { builder - .emplace(action.messageBody.qt().left(50) + "…", + .emplace(action.messageBody.qt().left(limit) + "…", MessageElementFlag::Text, MessageColor::Text) ->setLink({Link::JumpToMessage, action.messageID.qt()}); - text.append(action.messageBody.qt().left(50) + "…"); + text.append(action.messageBody.qt().left(limit) + "…"); } else { From 34d6e063632b193bc81ea7a9bb4b09a615e94872 Mon Sep 17 00:00:00 2001 From: Jacob Thompson Date: Sat, 27 Sep 2025 10:55:01 -0700 Subject: [PATCH 04/10] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 520f9076249..075bb4d1a05 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ## Unversioned - Minor: Fixed usercard resizing improperly without recent messages. (#6496) +- Minor: Added setting for character limit of deleted messages. (#6491) - Dev: Update release documentation. (#6498) - Dev: Make code sanitizers opt in with the `CHATTERINO_SANITIZER_SUPPORT` CMake option. After that's enabled, use the `SANITIZE_*` flag to enable individual sanitizers. (#6493) - Dev: Remove unused QTextCodec includes. (#6487) From 1a1326de8a0441a2e0ae9ca254872dfca1c3c88f Mon Sep 17 00:00:00 2001 From: Jacob Thompson Date: Thu, 25 Sep 2025 03:30:07 -0700 Subject: [PATCH 05/10] format --- src/singletons/Settings.hpp | 2 +- src/widgets/settingspages/GeneralPage.cpp | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/singletons/Settings.hpp b/src/singletons/Settings.hpp index df068d847d4..a70d5c2ca32 100644 --- a/src/singletons/Settings.hpp +++ b/src/singletons/Settings.hpp @@ -321,7 +321,7 @@ class Settings }; IntSetting messageTruncationLimit = {"/behaviour/messageTruncationLimit", - 50}; + 50}; // Auto-completion BoolSetting onlyFetchChattersForSmallerStreamers = { diff --git a/src/widgets/settingspages/GeneralPage.cpp b/src/widgets/settingspages/GeneralPage.cpp index aae31ab5215..25d13b81487 100644 --- a/src/widgets/settingspages/GeneralPage.cpp +++ b/src/widgets/settingspages/GeneralPage.cpp @@ -558,11 +558,12 @@ void GeneralPage::initLayout(GeneralPageView &layout) }); layout.addDropdown( "Limit truncation of deleted messages", - {"No limit", "50 characters", "100 characters", "200 characters", "300 characters", - "400 characters"}, + {"No limit", "50 characters", "100 characters", "200 characters", + "300 characters", "400 characters"}, s.messageTruncationLimit, [](auto val) { - return val ? QString::number(val) + " characters" : QString("No limit"); + return val ? QString::number(val) + " characters" + : QString("No limit"); }, [](auto args) { return fuzzyToInt(args.value, 0); From 3ddee897f53e61a3f78fdeff99d339923f8e66c5 Mon Sep 17 00:00:00 2001 From: Jacob Thompson Date: Thu, 25 Sep 2025 03:56:28 -0700 Subject: [PATCH 06/10] args param is a constant reference --- src/widgets/settingspages/GeneralPage.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/widgets/settingspages/GeneralPage.cpp b/src/widgets/settingspages/GeneralPage.cpp index 25d13b81487..5c1d25bac27 100644 --- a/src/widgets/settingspages/GeneralPage.cpp +++ b/src/widgets/settingspages/GeneralPage.cpp @@ -565,7 +565,7 @@ void GeneralPage::initLayout(GeneralPageView &layout) return val ? QString::number(val) + " characters" : QString("No limit"); }, - [](auto args) { + [](const auto &args) { return fuzzyToInt(args.value, 0); }); From 37a257345c1760dd6b9a5e851ce1b2a6ac9980b6 Mon Sep 17 00:00:00 2001 From: Jacob Thompson Date: Sat, 27 Sep 2025 10:33:31 -0700 Subject: [PATCH 07/10] format --- src/singletons/Settings.hpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/singletons/Settings.hpp b/src/singletons/Settings.hpp index a70d5c2ca32..9821041f625 100644 --- a/src/singletons/Settings.hpp +++ b/src/singletons/Settings.hpp @@ -320,8 +320,10 @@ class Settings true, }; - IntSetting messageTruncationLimit = {"/behaviour/messageTruncationLimit", - 50}; + IntSetting messageTruncationLimit = { + "/behaviour/messageTruncationLimit", + 50 + }; // Auto-completion BoolSetting onlyFetchChattersForSmallerStreamers = { From 78598207d1c90220ab59157209eba4536fa4d0d2 Mon Sep 17 00:00:00 2001 From: Jacob Thompson Date: Sat, 27 Sep 2025 10:34:33 -0700 Subject: [PATCH 08/10] use getValue --- src/messages/MessageBuilder.cpp | 2 +- src/providers/twitch/eventsub/MessageBuilder.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/messages/MessageBuilder.cpp b/src/messages/MessageBuilder.cpp index a41f0f4cc08..334e04e3f0b 100644 --- a/src/messages/MessageBuilder.cpp +++ b/src/messages/MessageBuilder.cpp @@ -1257,7 +1257,7 @@ MessagePtr MessageBuilder::makeDeletionMessageFromIRC( MessageColor::System); auto deletedMessageText = originalMessage->messageText; - auto limit = getSettings()->messageTruncationLimit; + auto limit = getSettings()->messageTruncationLimit.getValue(); if (limit > 0 && deletedMessageText.length() > limit) { deletedMessageText = deletedMessageText.left(limit) + "…"; diff --git a/src/providers/twitch/eventsub/MessageBuilder.cpp b/src/providers/twitch/eventsub/MessageBuilder.cpp index 6dd0a21a7bd..5c930b91fe1 100644 --- a/src/providers/twitch/eventsub/MessageBuilder.cpp +++ b/src/providers/twitch/eventsub/MessageBuilder.cpp @@ -331,7 +331,7 @@ void makeModerateMessage( builder.emplaceSystemTextAndUpdate("saying:", text); - auto limit = getSettings()->messageTruncationLimit; + auto limit = getSettings()->messageTruncationLimit.getValue(); if (limit > 0 && action.messageBody.view().length() > limit) { builder From 6509d75e38e18ec5d0656bfae4ada1a3224b4a5d Mon Sep 17 00:00:00 2001 From: Jacob Thompson Date: Sat, 27 Sep 2025 10:35:07 -0700 Subject: [PATCH 09/10] rephrase; add tooltip --- src/widgets/settingspages/GeneralPage.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/widgets/settingspages/GeneralPage.cpp b/src/widgets/settingspages/GeneralPage.cpp index 5c1d25bac27..f8c19692071 100644 --- a/src/widgets/settingspages/GeneralPage.cpp +++ b/src/widgets/settingspages/GeneralPage.cpp @@ -557,7 +557,7 @@ void GeneralPage::initLayout(GeneralPageView &layout) return fuzzyToInt(args.value, 0); }); layout.addDropdown( - "Limit truncation of deleted messages", + "Limit length of deleted messages", {"No limit", "50 characters", "100 characters", "200 characters", "300 characters", "400 characters"}, s.messageTruncationLimit, @@ -567,7 +567,10 @@ void GeneralPage::initLayout(GeneralPageView &layout) }, [](const auto &args) { return fuzzyToInt(args.value, 0); - }); + }, + true, + {"Limits the amount of characters displayed in deleted messages " + "when announced via system message."}); layout.addSeparator(); From 7084d9d7247eb8a4aa7c80836c8f86822d17d4f0 Mon Sep 17 00:00:00 2001 From: Jacob Thompson Date: Sat, 27 Sep 2025 11:28:36 -0700 Subject: [PATCH 10/10] comma --- src/singletons/Settings.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/singletons/Settings.hpp b/src/singletons/Settings.hpp index 9821041f625..adcfc0d507f 100644 --- a/src/singletons/Settings.hpp +++ b/src/singletons/Settings.hpp @@ -322,7 +322,7 @@ class Settings IntSetting messageTruncationLimit = { "/behaviour/messageTruncationLimit", - 50 + 50, }; // Auto-completion