From 94cc42c253c6d296d54734cb6845b5adb0e6fbac Mon Sep 17 00:00:00 2001 From: V Date: Sat, 24 Jan 2026 00:09:49 +0100 Subject: [PATCH 01/28] Apply suggestion from @Vendicated --- src/plugins/blurNsfw/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/blurNsfw/index.ts b/src/plugins/blurNsfw/index.ts index 731de5e3e..358c986b0 100644 --- a/src/plugins/blurNsfw/index.ts +++ b/src/plugins/blurNsfw/index.ts @@ -49,7 +49,7 @@ export default definePlugin({ replacement: [ { match: /(\.renderReactions\(\i\).+?className:)/, - replace: '$&(this.props.channel.nsfw?"vc-nsfw-img ":"")+' + replace: '$&(this.props?.channel?.nsfw?"vc-nsfw-img ":"")+' } ] } From 674a627aceb7812ec1e1c0b2d9b539fa38320922 Mon Sep 17 00:00:00 2001 From: Vendicated Date: Sat, 24 Jan 2026 00:16:27 +0100 Subject: [PATCH 02/28] improve ExpandableList find --- src/plugins/mutualGroupDMs/index.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/plugins/mutualGroupDMs/index.tsx b/src/plugins/mutualGroupDMs/index.tsx index 00d57e3a7..63746e06b 100644 --- a/src/plugins/mutualGroupDMs/index.tsx +++ b/src/plugins/mutualGroupDMs/index.tsx @@ -35,8 +35,7 @@ const UserUtils = findByPropsLazy("getGlobalName"); const ProfileListClasses = findCssClassesLazy("empty", "textContainer", "connectionIcon"); const TabBarClasses = findCssClassesLazy("tabPanelScroller", "tabBarPanel"); const MutualsListClasses = findCssClassesLazy("row", "icon", "name", "details"); -// FIXME -const ExpandableList = findComponentByCodeLazy('"PRESS_SECTION"'); +const ExpandableList = findComponentByCodeLazy('action:"PRESS_SECTION"', "section"); function getGroupDMName(channel: Channel) { return channel.name || From 2ad7b3cec12c73560215833c395d787a8d319687 Mon Sep 17 00:00:00 2001 From: sadan <117494111+sadan4@users.noreply.github.com> Date: Fri, 23 Jan 2026 18:27:03 -0500 Subject: [PATCH 03/28] make plain folder icon not cursed + fix incorrect patch it was missing the ! before we insert our class --- src/plugins/plainFolderIcon/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/plainFolderIcon/index.ts b/src/plugins/plainFolderIcon/index.ts index 84390e22e..914e5bb36 100644 --- a/src/plugins/plainFolderIcon/index.ts +++ b/src/plugins/plainFolderIcon/index.ts @@ -37,8 +37,8 @@ export default definePlugin({ // ... // className: cn({[_1]: hasFolderButtonContent, [_2]: !hasFolderButtonContent}), // children: [!hasFolderButtonContent && ...] - match: /className:\i\(\)\(\{\[\i\.\i\]:(\i),\[\i\.\i\]:!\1(?=.{0,30}children:\[!\i&&)/, - replace: (m, hasFolderButtonContent) => `${m},"vc-plainFolderIcon-plain":${hasFolderButtonContent}` + match: /\.slice\(0,4\).+?\]:(\i),\[\i\.\i\]:!\1/, + replace: (m, hasFolderButtonContent) => `${m},"vc-plainFolderIcon-plain":!${hasFolderButtonContent}` } ] From 597c7414b129e5cc0f2eb823ae91428d02a5b521 Mon Sep 17 00:00:00 2001 From: sadan <117494111+sadan4@users.noreply.github.com> Date: Fri, 23 Jan 2026 18:29:26 -0500 Subject: [PATCH 04/28] limit ml patch length --- src/plugins/messageLogger/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/messageLogger/index.tsx b/src/plugins/messageLogger/index.tsx index 6e4f4c0de..48bf2fa0f 100644 --- a/src/plugins/messageLogger/index.tsx +++ b/src/plugins/messageLogger/index.tsx @@ -471,7 +471,7 @@ export default definePlugin({ find: ".SEND_FAILED,", replacement: { // Render editHistory behind the message content - match: /\]:\i.isUnsupported.+?,children:\[/, + match: /\]:\i.isUnsupported.{0,20}?,children:\[/, replace: "$&arguments[0]?.message?.editHistory?.length>0&&$self.renderEdits(arguments[0])," } }, From aa8de734d6faf102f7a92955e797a5b964dd4275 Mon Sep 17 00:00:00 2001 From: Nuckyz <61953774+Nuckyz@users.noreply.github.com> Date: Fri, 23 Jan 2026 20:31:11 -0300 Subject: [PATCH 05/28] boom 5 --- src/plugins/plainFolderIcon/index.ts | 7 +------ src/plugins/roleColorEverywhere/index.tsx | 8 ++++---- src/plugins/showHiddenChannels/index.tsx | 14 +++++++------- src/plugins/showHiddenThings/index.ts | 4 ++-- src/plugins/sortFriendRequests/index.tsx | 2 +- src/plugins/themeAttributes/index.ts | 6 +++--- src/plugins/userVoiceShow/index.tsx | 2 +- src/plugins/voiceDownload/index.tsx | 2 +- 8 files changed, 20 insertions(+), 25 deletions(-) diff --git a/src/plugins/plainFolderIcon/index.ts b/src/plugins/plainFolderIcon/index.ts index 914e5bb36..30db1c5d2 100644 --- a/src/plugins/plainFolderIcon/index.ts +++ b/src/plugins/plainFolderIcon/index.ts @@ -32,13 +32,8 @@ export default definePlugin({ replacement: [ { // Discord always renders both plain and guild icons folders and uses a css transtion to switch between them - // let {hovered: h, sorting: s} = props; - // hasFolderButtonContent = h && s; - // ... - // className: cn({[_1]: hasFolderButtonContent, [_2]: !hasFolderButtonContent}), - // children: [!hasFolderButtonContent && ...] match: /\.slice\(0,4\).+?\]:(\i),\[\i\.\i\]:!\1/, - replace: (m, hasFolderButtonContent) => `${m},"vc-plainFolderIcon-plain":!${hasFolderButtonContent}` + replace: (m, hasFolderButtonContent) => `${m},"vc-plainFolderIcon-plain":${hasFolderButtonContent}` } ] diff --git a/src/plugins/roleColorEverywhere/index.tsx b/src/plugins/roleColorEverywhere/index.tsx index 96442cffa..0ae3a516c 100644 --- a/src/plugins/roleColorEverywhere/index.tsx +++ b/src/plugins/roleColorEverywhere/index.tsx @@ -106,8 +106,8 @@ export default definePlugin({ find: 'tutorialId:"whos-online', replacement: [ { - match: /(?<=\}\):null,).{0,100}— ",\i\]\}\)\]/, - replace: "$self.RoleGroupColor(arguments[0])]" + match: /(#{intl::CHANNEL_MEMBERS_A11Y_LABEL}.+}\):null,).{0,100}?— ",\i\]\}\)\]/, + replace: (_, rest) => `${rest}$self.RoleGroupColor(arguments[0])]` }, ], predicate: () => settings.store.memberList @@ -127,7 +127,7 @@ export default definePlugin({ find: "#{intl::GUEST_NAME_SUFFIX})]", replacement: [ { - match: /#{intl::GUEST_NAME_SUFFIX}\)\].+?\](?<=guildId:(\i),.+?user:(\i).+?)/, + match: /#{intl::GUEST_NAME_SUFFIX}.+?""\](?<=guildId:(\i),.+?user:(\i).+?)/, replace: "$&,style:$self.getColorStyle($2.id,$1)," } ], @@ -146,7 +146,7 @@ export default definePlugin({ { find: ",reactionVoteCounts", replacement: { - match: /className:\i\.\i,(?="aria-label".{0,200}usernameClass)/, + match: /\.SIZE_32.+?variant:"text-md\/normal",className:\i\.\i,(?="aria-label":)/, replace: "$&style:$self.getColorStyle(arguments[0]?.user?.id,arguments[0]?.channel?.id)," }, predicate: () => settings.store.pollResults diff --git a/src/plugins/showHiddenChannels/index.tsx b/src/plugins/showHiddenChannels/index.tsx index 6b4f1c8a9..51f92dac4 100644 --- a/src/plugins/showHiddenChannels/index.tsx +++ b/src/plugins/showHiddenChannels/index.tsx @@ -166,7 +166,7 @@ export default definePlugin({ replacement: [ // Make the channel appear as muted if it's hidden { - match: /Children\.count.+?;(?=return\(0,\i\.jsxs?\))(?<={channel:(\i),name:\i,muted:(\i).+?;)/, + match: /Children\.count.+?;(?=return\(0,\i\.jsxs?\)\(\i\.\i,{focusTarget:)(?<={channel:(\i),name:\i,muted:(\i).+?;)/, replace: (m, channel, muted) => `${m}${muted}=$self.isHiddenChannel(${channel})?true:${muted};` }, // Add the hidden eye icon if the channel is hidden @@ -176,7 +176,7 @@ export default definePlugin({ }, // Make voice channels also appear as muted if they are muted { - match: /(?<=\?\i\.\i:\i\.\i,)(.+?)if\((\i)(?:\)return |\?)(\i\.MUTED)/, + match: /(?<=\?\i\.\i:\i\.\i,)(.{0,150}?)if\((\i)(?:\)return |\?)(\i\.MUTED)/, replace: (_, otherClasses, isMuted, mutedClassExpression) => `${isMuted}?${mutedClassExpression}:"",${otherClasses}if(${isMuted})return ""` } ] @@ -193,7 +193,7 @@ export default definePlugin({ { // Hide unreads predicate: () => settings.store.hideUnreads === true, - match: /Children\.count.+?;(?=return\(0,\i\.jsxs?\))(?<={channel:(\i),name:\i,.+?unread:(\i).+?)/, + match: /Children\.count.+?;(?=return\(0,\i\.jsxs?\)\(\i\.\i,{focusTarget:)(?<={channel:(\i),name:\i,.+?unread:(\i).+?)/, replace: (m, channel, unread) => `${m}${unread}=$self.isHiddenChannel(${channel})?false:${unread};` } ] @@ -301,7 +301,7 @@ export default definePlugin({ }, { // Patch the header to only return allowed users and roles if it's a hidden channel or locked channel (Like when it's used on the HiddenChannelLockScreen) - match: /return\(0,\i\.jsxs?\)\(\i\.\i,{channelId:(\i)\.id(?=.+?(\(0,\i\.jsxs?\)\("div",{className:\i\.\i,children:\[function.+?\]}\)),)/, + match: /return\(0,\i\.jsxs?\)\(\i\.\i,{channelId:(\i)\.id(?=.+?(\(0,\i\.jsxs?\)\("div",{className:\i\.\i,children:\[.{0,100}\i\.length.>0.+?\]}\)),)/, replace: (m, channel, allowedUsersAndRolesComponent) => `if($self.isHiddenChannel(${channel},true)){return${allowedUsersAndRolesComponent};}${m}` }, { @@ -368,7 +368,7 @@ export default definePlugin({ }, { // Disable bad CSS class which mess up hidden voice channels styling - match: /(?=\i\|\|\i!==\i\.\i\.FULL_SCREEN)/, + match: /(?=\i\|\|\i!==\i\.\i\.FULL_SCREEN.{0,100}?this\._callContainerRef)/, replace: '$&!this.props.inCall&&$self.isHiddenChannel(this.props.channel,true)?"":' } ] @@ -408,7 +408,7 @@ export default definePlugin({ }, { // Remove the open chat button for the HiddenChannelLockScreen - match: /(?<=onClick:.{0,70}?toggleParticipantsList.{0,150}?\),!\i&&)\(0,\i\.jsxs?\).{0,280}iconClassName/, + match: /(?<="participants-list-button"\),!\i&&)\(0,\i\.jsxs?\).{0,280}?iconClassName:/, replace: "!$self.isHiddenChannel(arguments[0]?.channel,true)&&$&" } ] @@ -438,7 +438,7 @@ export default definePlugin({ }, }, { - find: 'className:"channelMention",children', + find: 'className:"channelMention",children:', replacement: { // Show inside voice channel instead of trying to join them when clicking on a channel mention match: /(?<=getChannel\(\i\);null!=(\i))(?=.{0,100}?selectVoiceChannel)/, diff --git a/src/plugins/showHiddenThings/index.ts b/src/plugins/showHiddenThings/index.ts index 9d51d9747..66b9e1d66 100644 --- a/src/plugins/showHiddenThings/index.ts +++ b/src/plugins/showHiddenThings/index.ts @@ -72,8 +72,8 @@ export default definePlugin({ find: "#{intl::GUILD_MEMBER_MOD_VIEW_HIGHEST_ROLE}),children:", predicate: () => settings.store.showModView, replacement: { - match: /(?<=#{intl::GUILD_MEMBER_MOD_VIEW_HIGHEST_ROLE}.{0,80})role:\i(?<=\[\i\.roles,\i\.highestRoleId,(\i)\].+)/, - replace: "role:$self.getHighestRole(arguments[0])", + match: /(#{intl::GUILD_MEMBER_MOD_VIEW_HIGHEST_ROLE}.{0,80})role:\i(?<=\[\i\.roles,\i\.highestRoleId,(\i)\].+)/, + replace: (_, rest) => `${rest}role:$self.getHighestRole(arguments[0])`, } }, // allows you to open mod view on yourself diff --git a/src/plugins/sortFriendRequests/index.tsx b/src/plugins/sortFriendRequests/index.tsx index 877a11bb0..68d52bb83 100644 --- a/src/plugins/sortFriendRequests/index.tsx +++ b/src/plugins/sortFriendRequests/index.tsx @@ -65,7 +65,7 @@ export default definePlugin({ find: "#{intl::FRIEND_REQUEST_CANCEL}", replacement: { predicate: () => settings.store.showDates, - match: /(?<=\.\i,children:\[)\(0,.+?(?=,\(0)(?<=user:(\i).+?)/, + match: /(?<=\.\i,children:\[)\(0,.{0,100}user:\i,hovered:\i+?(?=,\(0)(?<=user:(\i).+?)/, replace: (children, user) => `$self.WrapperDateComponent({user:${user},children:${children}})` } }], diff --git a/src/plugins/themeAttributes/index.ts b/src/plugins/themeAttributes/index.ts index 46574a5d6..9cb95874c 100644 --- a/src/plugins/themeAttributes/index.ts +++ b/src/plugins/themeAttributes/index.ts @@ -29,10 +29,10 @@ export default definePlugin({ // Add data-author-id and data-is-self to all messages { - find: ".referencedUsernameProfile,referencedAvatarProfile:", + find: "Message must not be a thread starter message", replacement: { - match: /\.\i(?=,"aria-setsize":-1,children:.+?#{intl::MESSAGE_A11Y_ROLE_DESCRIPTION})/, - replace: "$&,...$self.getMessageProps(arguments[0])" + match: /"aria-setsize":-1,(?=.{0,150}?#{intl::MESSAGE_A11Y_ROLE_DESCRIPTION})/, + replace: "...$self.getMessageProps(arguments[0]),$&" } }, diff --git a/src/plugins/userVoiceShow/index.tsx b/src/plugins/userVoiceShow/index.tsx index ef0b83e2f..039982dd7 100644 --- a/src/plugins/userVoiceShow/index.tsx +++ b/src/plugins/userVoiceShow/index.tsx @@ -87,7 +87,7 @@ export default definePlugin({ { find: "null!=this.peopleListItemRef.current", replacement: { - match: /className:\i\.\i,children:\[(?<=isFocused:(\i).+?isProvisional.{0,50})/, + match: /\.isProvisional.{0,50}?className:\i\.\i,children:\[(?<=isFocused:(\i).+?)/, replace: "$&$self.VoiceChannelIndicator({userId:this?.props?.user?.id,isActionButton:true,shouldHighlight:$1})," }, predicate: () => settings.store.showInMemberList diff --git a/src/plugins/voiceDownload/index.tsx b/src/plugins/voiceDownload/index.tsx index f33e5e264..19d0883f5 100644 --- a/src/plugins/voiceDownload/index.tsx +++ b/src/plugins/voiceDownload/index.tsx @@ -15,7 +15,7 @@ export default definePlugin({ authors: [Devs.puv], patches: [ { - find: "VOICE_MESSAGE_PLAYBACK_STARTED,{src:", + find: "#{intl::LgCPMt::raw}", replacement: { match: /(?<=onVolumeHide:\i\}\))/, replace: ",$self.renderDownload(arguments[0].src)" From fb7dafbe886ecf5fd99dda52122952db443b3462 Mon Sep 17 00:00:00 2001 From: V Date: Sat, 24 Jan 2026 00:35:49 +0100 Subject: [PATCH 06/28] Apply suggestion from @sadan4 Co-authored-by: sadan4 <117494111+sadan4@users.noreply.github.com> --- src/plugins/_api/dynamicImageModalApi.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/_api/dynamicImageModalApi.ts b/src/plugins/_api/dynamicImageModalApi.ts index 83f59b3ad..775cdf030 100644 --- a/src/plugins/_api/dynamicImageModalApi.ts +++ b/src/plugins/_api/dynamicImageModalApi.ts @@ -14,7 +14,7 @@ export default definePlugin({ description: "Allows you to omit either width or height when opening an image modal", patches: [ { - find: "useFullWidth:!0,shouldLink:", + find: ".renderLinkComponent)?", replacement: { // widthAndHeightPassed = w != null && w !== 0 && h == null || h === 0 match: /(?<=\i=)(null!=\i&&0!==\i)&&(null!=\i&&0!==\i)/, From 31b07e078bb2048b7678160fda2c5c0eab92a12c Mon Sep 17 00:00:00 2001 From: Nuckyz <61953774+Nuckyz@users.noreply.github.com> Date: Fri, 23 Jan 2026 20:36:33 -0300 Subject: [PATCH 07/28] fix the boom I broke --- src/plugins/showHiddenChannels/index.tsx | 2 +- src/plugins/sortFriendRequests/index.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/showHiddenChannels/index.tsx b/src/plugins/showHiddenChannels/index.tsx index 51f92dac4..484352a13 100644 --- a/src/plugins/showHiddenChannels/index.tsx +++ b/src/plugins/showHiddenChannels/index.tsx @@ -301,7 +301,7 @@ export default definePlugin({ }, { // Patch the header to only return allowed users and roles if it's a hidden channel or locked channel (Like when it's used on the HiddenChannelLockScreen) - match: /return\(0,\i\.jsxs?\)\(\i\.\i,{channelId:(\i)\.id(?=.+?(\(0,\i\.jsxs?\)\("div",{className:\i\.\i,children:\[.{0,100}\i\.length.>0.+?\]}\)),)/, + match: /return\(0,\i\.jsxs?\)\(\i\.\i,{channelId:(\i)\.id(?=.+?(\(0,\i\.jsxs?\)\("div",{className:\i\.\i,children:\[.{0,100}\i\.length>0.+?\]}\)),)/, replace: (m, channel, allowedUsersAndRolesComponent) => `if($self.isHiddenChannel(${channel},true)){return${allowedUsersAndRolesComponent};}${m}` }, { diff --git a/src/plugins/sortFriendRequests/index.tsx b/src/plugins/sortFriendRequests/index.tsx index 68d52bb83..1f5245c28 100644 --- a/src/plugins/sortFriendRequests/index.tsx +++ b/src/plugins/sortFriendRequests/index.tsx @@ -65,7 +65,7 @@ export default definePlugin({ find: "#{intl::FRIEND_REQUEST_CANCEL}", replacement: { predicate: () => settings.store.showDates, - match: /(?<=\.\i,children:\[)\(0,.{0,100}user:\i,hovered:\i+?(?=,\(0)(?<=user:(\i).+?)/, + match: /(?<=\.\i,children:\[)\(0,.{0,150}user:\i,hovered:\i+?(?=,\(0)(?<=user:(\i).+?)/, replace: (children, user) => `$self.WrapperDateComponent({user:${user},children:${children}})` } }], From 0b50bb9b27381e49a7aad3fccc8745e951810599 Mon Sep 17 00:00:00 2001 From: V Date: Sat, 24 Jan 2026 00:37:25 +0100 Subject: [PATCH 08/28] Apply suggestion from @Vendicated --- src/plugins/decor/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/decor/index.tsx b/src/plugins/decor/index.tsx index f69494de1..d9fa3b2e9 100644 --- a/src/plugins/decor/index.tsx +++ b/src/plugins/decor/index.tsx @@ -98,7 +98,7 @@ export default definePlugin({ }, ...[ '"Message Username"', // Messages - '?"white":"black",width', // Nameplate preview + '#{intl::YJig7C::raw}', // Nameplate preview "#{intl::ayozFl::raw}", // Avatar preview ].map(find => ({ find, From ab903ae22e8fe27c25d4f4a56eb4258900f136c6 Mon Sep 17 00:00:00 2001 From: Vendicated Date: Sat, 24 Jan 2026 00:42:16 +0100 Subject: [PATCH 09/28] limit length --- src/plugins/_api/chatButtons.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/_api/chatButtons.ts b/src/plugins/_api/chatButtons.ts index 79f4e154b..432c66bf3 100644 --- a/src/plugins/_api/chatButtons.ts +++ b/src/plugins/_api/chatButtons.ts @@ -16,7 +16,7 @@ export default definePlugin({ { find: '"sticker")', replacement: { - match: /let (\i)=\(0,\i\.chain\).+?;(?=return 0===\1\.length)/, + match: /let (\i)=\(0,\i\.chain\).{0,150}?;(?=return 0===\1\.length)/, replace: "$&Vencord.Api.ChatButtons._injectButtons($1,arguments[0]);" } } From 075b20c8efa8f01c92878a12a625f8b6c5196056 Mon Sep 17 00:00:00 2001 From: V Date: Sat, 24 Jan 2026 00:44:24 +0100 Subject: [PATCH 10/28] Apply suggestion from @Vendicated --- src/plugins/anonymiseFileNames/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/anonymiseFileNames/index.tsx b/src/plugins/anonymiseFileNames/index.tsx index fab856912..985fc4a82 100644 --- a/src/plugins/anonymiseFileNames/index.tsx +++ b/src/plugins/anonymiseFileNames/index.tsx @@ -24,7 +24,7 @@ import { CloudUpload } from "@vencord/discord-types"; import { findByCodeLazy } from "@webpack"; import { useState } from "@webpack/common"; -const ActionBarIcon = findByCodeLazy(".actionBarIconaaaaaaaaaaa"); +const ActionBarIcon = findByCodeLazy("Children.map", "isValidElement", "dangerous:"); const enum Methods { Random, From 5824419ee1cbd6b71aded3383fc0744238cf5884 Mon Sep 17 00:00:00 2001 From: sadan <117494111+sadan4@users.noreply.github.com> Date: Fri, 23 Jan 2026 18:46:11 -0500 Subject: [PATCH 11/28] fix find for friends since --- src/plugins/friendsSince/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/friendsSince/index.tsx b/src/plugins/friendsSince/index.tsx index 0ed00e3fd..6197d0c30 100644 --- a/src/plugins/friendsSince/index.tsx +++ b/src/plugins/friendsSince/index.tsx @@ -34,7 +34,7 @@ export default definePlugin({ }, // User Profile Modal { - find: ".connections,userId:", + find: ",applicationRoleConnection:", replacement: { match: /#{intl::USER_PROFILE_MEMBER_SINCE}\),.{0,100}userId:(\i\.id),.{0,100}}\)}\),/, replace: "$&,$self.FriendsSinceComponent({userId:$1,isSidebar:false})," From ee3d27f6ea6757b85fb897760983c79d127c9f04 Mon Sep 17 00:00:00 2001 From: Vendicated Date: Sat, 24 Jan 2026 00:50:26 +0100 Subject: [PATCH 12/28] limit length --- src/plugins/messageLogger/index.tsx | 2 +- src/plugins/pictureInPicture/index.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/messageLogger/index.tsx b/src/plugins/messageLogger/index.tsx index 48bf2fa0f..eb503aa01 100644 --- a/src/plugins/messageLogger/index.tsx +++ b/src/plugins/messageLogger/index.tsx @@ -480,7 +480,7 @@ export default definePlugin({ find: "#{intl::MESSAGE_EDITED}", replacement: { // Make edit marker clickable - match: /(isInline:!1,children:.+?)"span",\{(?=className:)/, + match: /(isInline:!1,children:.{0,50}?)"span",\{(?=className:)/, replace: "$1$self.EditMarker,{message:arguments[0].message," } }, diff --git a/src/plugins/pictureInPicture/index.tsx b/src/plugins/pictureInPicture/index.tsx index 2fd44f979..ff8c00ebb 100644 --- a/src/plugins/pictureInPicture/index.tsx +++ b/src/plugins/pictureInPicture/index.tsx @@ -30,7 +30,7 @@ export default definePlugin({ { find: '["VIDEO","CLIP","AUDIO"]', replacement: { - match: /(\[\i>0&&\i\.length>0.+?children:)(\i.slice\(\i\))(?<=showDownload:(\i).+?isVisualMediaType:(\i).+?)/, + match: /(\[\i>0&&\i\.length>0.{0,150}?children:)(\i.slice\(\i\))(?<=showDownload:(\i).+?isVisualMediaType:(\i).+?)/, replace: (_, rest, origChildren, showDownload, isVisualMediaType) => `${rest}[${showDownload}&&${isVisualMediaType}&&$self.PictureInPictureButton(),...${origChildren}]` } } From 8ee373285eec2edb47d887bbfd1de097843a2923 Mon Sep 17 00:00:00 2001 From: sadan <117494111+sadan4@users.noreply.github.com> Date: Fri, 23 Jan 2026 18:50:52 -0500 Subject: [PATCH 13/28] fix lint --- src/plugins/decor/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/decor/index.tsx b/src/plugins/decor/index.tsx index d9fa3b2e9..e426d40c6 100644 --- a/src/plugins/decor/index.tsx +++ b/src/plugins/decor/index.tsx @@ -98,7 +98,7 @@ export default definePlugin({ }, ...[ '"Message Username"', // Messages - '#{intl::YJig7C::raw}', // Nameplate preview + "#{intl::YJig7C::raw}", // Nameplate preview "#{intl::ayozFl::raw}", // Avatar preview ].map(find => ({ find, From 790b4cb82a153b82a200aab26dccdd180ab55a97 Mon Sep 17 00:00:00 2001 From: Vendicated Date: Sat, 24 Jan 2026 00:53:46 +0100 Subject: [PATCH 14/28] so good --- src/plugins/decor/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/decor/index.tsx b/src/plugins/decor/index.tsx index e426d40c6..33acebf80 100644 --- a/src/plugins/decor/index.tsx +++ b/src/plugins/decor/index.tsx @@ -98,7 +98,7 @@ export default definePlugin({ }, ...[ '"Message Username"', // Messages - "#{intl::YJig7C::raw}", // Nameplate preview + "#{intl::COLLECTIBLES_NAMEPLATE_PREVIEW_A11Y}", // Nameplate preview "#{intl::ayozFl::raw}", // Avatar preview ].map(find => ({ find, From 2a31fdefe1d8c656587d1783d66b329e3cb488e3 Mon Sep 17 00:00:00 2001 From: Vendicated Date: Sat, 24 Jan 2026 00:57:08 +0100 Subject: [PATCH 15/28] limit length --- src/plugins/roleColorEverywhere/index.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/roleColorEverywhere/index.tsx b/src/plugins/roleColorEverywhere/index.tsx index 0ae3a516c..aec13db62 100644 --- a/src/plugins/roleColorEverywhere/index.tsx +++ b/src/plugins/roleColorEverywhere/index.tsx @@ -127,7 +127,7 @@ export default definePlugin({ find: "#{intl::GUEST_NAME_SUFFIX})]", replacement: [ { - match: /#{intl::GUEST_NAME_SUFFIX}.+?""\](?<=guildId:(\i),.+?user:(\i).+?)/, + match: /#{intl::GUEST_NAME_SUFFIX}.{0,50}?""\](?<=guildId:(\i),.{0,50}?user:(\i).+?)/, replace: "$&,style:$self.getColorStyle($2.id,$1)," } ], @@ -155,7 +155,7 @@ export default definePlugin({ { find: ".SEND_FAILED,", replacement: { - match: /(?<=\]:(\i)\.isUnsupported.+?,)(?=children:\[)/, + match: /(?<=\]:(\i)\.isUnsupported.{0,50}?,)(?=children:\[)/, replace: "style:$self.useMessageColorsStyle($1)," }, predicate: () => settings.store.colorChatMessages From 33e3de139d8370246485816f39179bfd2dfb242d Mon Sep 17 00:00:00 2001 From: sadan <117494111+sadan4@users.noreply.github.com> Date: Fri, 23 Jan 2026 19:04:21 -0500 Subject: [PATCH 16/28] fix plainfoldericon --- src/plugins/plainFolderIcon/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/plainFolderIcon/index.ts b/src/plugins/plainFolderIcon/index.ts index 30db1c5d2..d7f0bd622 100644 --- a/src/plugins/plainFolderIcon/index.ts +++ b/src/plugins/plainFolderIcon/index.ts @@ -33,7 +33,7 @@ export default definePlugin({ { // Discord always renders both plain and guild icons folders and uses a css transtion to switch between them match: /\.slice\(0,4\).+?\]:(\i),\[\i\.\i\]:!\1/, - replace: (m, hasFolderButtonContent) => `${m},"vc-plainFolderIcon-plain":${hasFolderButtonContent}` + replace: (m, hasFolderButtonContent) => `${m},"vc-plainFolderIcon-plain":!${hasFolderButtonContent}` } ] From 2402999acc5c462cbeee570f08fb8091a2675f89 Mon Sep 17 00:00:00 2001 From: Vendicated Date: Sat, 24 Jan 2026 01:09:02 +0100 Subject: [PATCH 17/28] improve IgnoreActitivies --- src/plugins/ignoreActivities/index.tsx | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/plugins/ignoreActivities/index.tsx b/src/plugins/ignoreActivities/index.tsx index 697035f61..dbc7b049a 100644 --- a/src/plugins/ignoreActivities/index.tsx +++ b/src/plugins/ignoreActivities/index.tsx @@ -253,11 +253,8 @@ export default definePlugin({ { find: "#{intl::SETTINGS_GAMES_TOGGLE_OVERLAY}", replacement: { - // let { ... nowPlaying: a = !1 ... - // let { overlay: b ... } = Props ... - // ToggleOverLayButton(), nowPlaying && ... RemoveGameButton() - match: /\.Fragment,\{children:.+?,\i\(\),(?<=nowPlaying:(\i)=!1,.+?overlay:\i,[^}]+?\}=(\i).+?)(?=\1&&)/, - replace: (m, nowPlaying, props) => `${m}$self.renderToggleGameActivityButton(${props},${nowPlaying}),`, + match: /(\i)&&!\i\|\|\i\?null(?<=return (\i)\.verified.+?)/, + replace: "$self.renderToggleGameActivityButton($2,$1),$&" } }, @@ -265,8 +262,8 @@ export default definePlugin({ { find: "#{intl::EMBEDDED_ACTIVITIES_DEVELOPER_ACTIVITY}", replacement: { - match: /,rendersPlaceholder:.+?children:\i.*?}\),(?<=application:(\i).+?)/, - replace: (m, props) => `${m}$self.renderToggleActivityButton(${props}),` + match: /,rendersPlaceholder:.{0,150}?children:\i.*?}\),(?<=application:(\i).+?)/, + replace: "$&$self.renderToggleActivityButton($1)," } } ], From 0988860a76486232c01c73abc4ed762dd6aaf882 Mon Sep 17 00:00:00 2001 From: V Date: Sat, 24 Jan 2026 01:11:54 +0100 Subject: [PATCH 18/28] Update src/plugins/messageLogger/index.tsx Co-authored-by: sadan4 <117494111+sadan4@users.noreply.github.com> --- src/plugins/messageLogger/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/messageLogger/index.tsx b/src/plugins/messageLogger/index.tsx index eb503aa01..0f4ffa46e 100644 --- a/src/plugins/messageLogger/index.tsx +++ b/src/plugins/messageLogger/index.tsx @@ -445,7 +445,7 @@ export default definePlugin({ { // Attachment renderer - find: ".Types.ATTACHMENT,inline:", + find: "#{intl::REMOVE_ATTACHMENT_TOOLTIP_TEXT}", replacement: [ { match: /\.SPOILER,(?=\[\i\.\i\]:)/, From b76b276a4f59c238d902b080572e99737c34ad12 Mon Sep 17 00:00:00 2001 From: V Date: Sat, 24 Jan 2026 01:12:12 +0100 Subject: [PATCH 19/28] Update src/plugins/messageLogger/index.tsx Co-authored-by: sadan4 <117494111+sadan4@users.noreply.github.com> From da398625d58f2d7ff7ff7e388961b0c85243898e Mon Sep 17 00:00:00 2001 From: Nuckyz <61953774+Nuckyz@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:13:05 -0300 Subject: [PATCH 20/28] I'm so smart --- src/plugins/sortFriendRequests/index.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/sortFriendRequests/index.tsx b/src/plugins/sortFriendRequests/index.tsx index 1f5245c28..343d47081 100644 --- a/src/plugins/sortFriendRequests/index.tsx +++ b/src/plugins/sortFriendRequests/index.tsx @@ -62,10 +62,10 @@ export default definePlugin({ replace: "}).sortBy(row => $self.wrapSort(($1), row)).value()" } }, { - find: "#{intl::FRIEND_REQUEST_CANCEL}", + find: " ", replacement: { predicate: () => settings.store.showDates, - match: /(?<=\.\i,children:\[)\(0,.{0,150}user:\i,hovered:\i+?(?=,\(0)(?<=user:(\i).+?)/, + match: /(?<=\.\i,children:\[)\(0,.{0,100}user:\i,hovered:\i.+?(?=,\(0)(?<=user:(\i).+?)/, replace: (children, user) => `$self.WrapperDateComponent({user:${user},children:${children}})` } }], From 2ffa09fa7f8ab39afed478cd5a2a1514439c1272 Mon Sep 17 00:00:00 2001 From: Vendicated Date: Sat, 24 Jan 2026 01:18:51 +0100 Subject: [PATCH 21/28] limit length --- src/plugins/_core/settings.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/_core/settings.tsx b/src/plugins/_core/settings.tsx index 60152ea9d..d9bcf95fb 100644 --- a/src/plugins/_core/settings.tsx +++ b/src/plugins/_core/settings.tsx @@ -105,14 +105,14 @@ export default definePlugin({ find: "#{intl::COPY_VERSION}", replacement: [ { - match: /"text-xxs\/normal".+?(?=null!=(\i)&&(.{0,20}\i\.Text.{0,200}?,children:).{0,15}?("span"),({className:\i\.\i,children:\["Build Override: ",\1\.id\]\})\)\}\))/, + match: /"text-xxs\/normal".{0,300}?(?=null!=(\i)&&(.{0,20}\i\.Text.{0,200}?,children:).{0,15}?("span"),({className:\i\.\i,children:\["Build Override: ",\1\.id\]\})\)\}\))/, replace: (m, _buildOverride, makeRow, component, props) => { props = props.replace(/children:\[.+\]/, ""); return `${m},$self.makeInfoElements(${component},${props}).map(e=>${makeRow}e})),`; } }, { - match: /"text-xs\/normal".+?\[\(0,\i\.jsxs?\)\((.{1,10}),(\{[^{}}]+\{.{0,20}className:\i.\i,.+?\})\)," "/, + match: /"text-xs\/normal".{0,300}?\[\(0,\i\.jsxs?\)\((.{1,10}),(\{[^{}}]+\{.{0,20}className:\i.\i,.+?\})\)," "/, replace: (m, component, props) => { props = props.replace(/children:\[.+\]/, ""); return `${m},$self.makeInfoElements(${component},${props})`; From 6fccaaabb3ad7d6ab6af06e508929a1e06acb01b Mon Sep 17 00:00:00 2001 From: Nuckyz <61953774+Nuckyz@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:23:51 -0300 Subject: [PATCH 22/28] stupid x2 --- src/plugins/sortFriendRequests/index.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/sortFriendRequests/index.tsx b/src/plugins/sortFriendRequests/index.tsx index 343d47081..11a14c154 100644 --- a/src/plugins/sortFriendRequests/index.tsx +++ b/src/plugins/sortFriendRequests/index.tsx @@ -62,10 +62,10 @@ export default definePlugin({ replace: "}).sortBy(row => $self.wrapSort(($1), row)).value()" } }, { - find: " ", + find: "#{intl::FRIEND_REQUEST_CANCEL}", replacement: { predicate: () => settings.store.showDates, - match: /(?<=\.\i,children:\[)\(0,.{0,100}user:\i,hovered:\i.+?(?=,\(0)(?<=user:(\i).+?)/, + match: /(?<=children:\[)\(0,.{0,100}user:\i,hovered:\i.+?(?=,\(0)(?<=user:(\i).+?)/, replace: (children, user) => `$self.WrapperDateComponent({user:${user},children:${children}})` } }], From 4cfa75734c79871b95e7f4c67dc51455c42b2930 Mon Sep 17 00:00:00 2001 From: Vendicated Date: Sat, 24 Jan 2026 01:26:39 +0100 Subject: [PATCH 23/28] fix IgnoreActivities --- src/plugins/ignoreActivities/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/ignoreActivities/index.tsx b/src/plugins/ignoreActivities/index.tsx index dbc7b049a..ca5011fc1 100644 --- a/src/plugins/ignoreActivities/index.tsx +++ b/src/plugins/ignoreActivities/index.tsx @@ -262,7 +262,7 @@ export default definePlugin({ { find: "#{intl::EMBEDDED_ACTIVITIES_DEVELOPER_ACTIVITY}", replacement: { - match: /,rendersPlaceholder:.{0,150}?children:\i.*?}\),(?<=application:(\i).+?)/, + match: /lineClamp:1.{0,50}?(?=!\i&&\i\?.+?application:(\i))/, replace: "$&$self.renderToggleActivityButton($1)," } } From 21cefacbc05ec05c1409bafc479cdd2034f88197 Mon Sep 17 00:00:00 2001 From: Vendicated Date: Sat, 24 Jan 2026 01:34:04 +0100 Subject: [PATCH 24/28] limit length --- src/plugins/pinDms/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/pinDms/index.tsx b/src/plugins/pinDms/index.tsx index e5c6d5159..4dfa4dfa7 100644 --- a/src/plugins/pinDms/index.tsx +++ b/src/plugins/pinDms/index.tsx @@ -95,7 +95,7 @@ export default definePlugin({ replace: "$&if($self.isCategoryIndex($1.section))return $self.renderCategory($1);" }, { - match: /"renderSection".+?"span",{/, + match: /"renderSection".{0,300}?"span",{/, replace: "$&...$self.makeSpanProps()," }, From 370242f4919b0c13395451ea151804ef8d8dc31d Mon Sep 17 00:00:00 2001 From: Vendicated Date: Sat, 24 Jan 2026 01:37:03 +0100 Subject: [PATCH 25/28] fix --- .../components/UserPermissions.tsx | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/plugins/permissionsViewer/components/UserPermissions.tsx b/src/plugins/permissionsViewer/components/UserPermissions.tsx index 7e0572e59..3b0c1f30b 100644 --- a/src/plugins/permissionsViewer/components/UserPermissions.tsx +++ b/src/plugins/permissionsViewer/components/UserPermissions.tsx @@ -22,7 +22,7 @@ import { cl, getGuildPermissionSpecMap, getSortedRolesForMember, sortUserRoles } import { getIntlMessage } from "@utils/discord"; import { classes } from "@utils/misc"; import type { Guild, GuildMember } from "@vencord/discord-types"; -import { filters, findBulk, proxyLazyWebpack } from "@webpack"; +import { findCssClassesLazy } from "@webpack"; import { PermissionsBits, Text, Tooltip, useMemo, UserStore } from "@webpack/common"; import { PermissionsSortOrder, settings } from ".."; @@ -37,14 +37,8 @@ interface UserPermission { type UserPermissions = Array; -const { RoleClasses, RoleBorderClasses } = proxyLazyWebpack(() => { - const [RoleClasses, RoleBorderClasses] = findBulk( - filters.byProps("role", "roleCircle", "roleName"), - filters.byProps("roleCircle", "dot", "dotBorderColor") - ) as Record[]; - - return { RoleClasses, RoleBorderClasses }; -}); +const RoleClasses = findCssClassesLazy("role", "roleName", "roleRemoveButton", "roleNameOverflow", "root"); +const RoleBorderClasses = findCssClassesLazy("roleCircle", "dot", "dotBorderColor"); interface FakeRoleProps extends React.HTMLAttributes { text: string; @@ -56,7 +50,7 @@ function FakeRole({ text, color, ...props }: FakeRoleProps) {
From 8bd5a76a494434fa8dd6dd56bf2155785e4a7a78 Mon Sep 17 00:00:00 2001 From: sadan <117494111+sadan4@users.noreply.github.com> Date: Fri, 23 Jan 2026 19:46:48 -0500 Subject: [PATCH 26/28] fix showHiddenThings --- src/plugins/showHiddenThings/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/showHiddenThings/index.ts b/src/plugins/showHiddenThings/index.ts index 66b9e1d66..d923d1d1c 100644 --- a/src/plugins/showHiddenThings/index.ts +++ b/src/plugins/showHiddenThings/index.ts @@ -73,7 +73,7 @@ export default definePlugin({ predicate: () => settings.store.showModView, replacement: { match: /(#{intl::GUILD_MEMBER_MOD_VIEW_HIGHEST_ROLE}.{0,80})role:\i(?<=\[\i\.roles,\i\.highestRoleId,(\i)\].+)/, - replace: (_, rest) => `${rest}role:$self.getHighestRole(arguments[0])`, + replace: (_, rest, roles) => `${rest}role:$self.getHighestRole(arguments[0],${roles})`, } }, // allows you to open mod view on yourself From 50c89376bcf2ce0a85c65ede24015740421af65a Mon Sep 17 00:00:00 2001 From: Nuckyz <61953774+Nuckyz@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:47:22 -0300 Subject: [PATCH 27/28] sssss --- src/plugins/imageZoom/index.tsx | 2 +- src/plugins/viewIcons/index.tsx | 14 +++++--------- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/src/plugins/imageZoom/index.tsx b/src/plugins/imageZoom/index.tsx index 8361e1bb7..94216b969 100644 --- a/src/plugins/imageZoom/index.tsx +++ b/src/plugins/imageZoom/index.tsx @@ -163,7 +163,7 @@ export default definePlugin({ patches: [ { - find: "useFullWidth:!0,shouldLink:", + find: ".renderLinkComponent)?", replacement: [ { match: /useFullWidth:!0,shouldLink:/, diff --git a/src/plugins/viewIcons/index.tsx b/src/plugins/viewIcons/index.tsx index 0dfc4d871..891a2c7c4 100644 --- a/src/plugins/viewIcons/index.tsx +++ b/src/plugins/viewIcons/index.tsx @@ -199,16 +199,16 @@ export default definePlugin({ { find: "imageClassName:null!=", replacement: { - match: /(?<=\("div",\i\(\i\(\{\},\i\),)(\{className:)/, - replace: '{style:{cursor:"pointer"},onClick:()=>$self.openAvatar($self.getAvatarUrl(arguments[0].user)),className:' + match: /avatarSrc:(\i),eventHandlers:(\i).+?"div",.{0,100}className:\i,/, + replace: "$&style:{cursor:\"pointer\"},onClick:()=>{$self.openAvatar($1)},", } }, // Banners { find: 'backgroundColor:"COMPLETE"', replacement: { - match: /(?<=!1\),)style:{(?=.+?backgroundImage:null!=(\i)\?"url\("\.concat\(\1,)/, - replace: (_, bannerSrc) => `onClick:()=>${bannerSrc}!=null&&$self.openBanner(${bannerSrc}),style:{cursor:${bannerSrc}!=null?"pointer":void 0,` + match: /(overflow:"visible",.{0,125}?!1\),)style:{(?=.+?backgroundImage:null!=(\i)\?"url\("\.concat\(\2,)/, + replace: (_, rest, bannerSrc) => `${rest}onClick:()=>${bannerSrc}!=null&&$self.openBanner(${bannerSrc}),style:{cursor:${bannerSrc}!=null?"pointer":void 0,` } }, // Group DMs top small & large icon @@ -236,9 +236,5 @@ export default definePlugin({ replace: (_, avatarUrl) => `onClick:()=>$self.openAvatar(${avatarUrl}),` } } - ], - - getAvatarUrl(user: User) { - return IconUtils.getUserAvatarURL(user, true); - }, + ] }); From 08cc3507fa6f13818310d1bbabb16e1f5cf3c4a8 Mon Sep 17 00:00:00 2001 From: sadan <117494111+sadan4@users.noreply.github.com> Date: Fri, 23 Jan 2026 19:49:23 -0500 Subject: [PATCH 28/28] make backref lazy --- src/plugins/showHiddenThings/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/showHiddenThings/index.ts b/src/plugins/showHiddenThings/index.ts index d923d1d1c..b788a8bd1 100644 --- a/src/plugins/showHiddenThings/index.ts +++ b/src/plugins/showHiddenThings/index.ts @@ -72,7 +72,7 @@ export default definePlugin({ find: "#{intl::GUILD_MEMBER_MOD_VIEW_HIGHEST_ROLE}),children:", predicate: () => settings.store.showModView, replacement: { - match: /(#{intl::GUILD_MEMBER_MOD_VIEW_HIGHEST_ROLE}.{0,80})role:\i(?<=\[\i\.roles,\i\.highestRoleId,(\i)\].+)/, + match: /(#{intl::GUILD_MEMBER_MOD_VIEW_HIGHEST_ROLE}.{0,80})role:\i(?<=\[\i\.roles,\i\.highestRoleId,(\i)\].+?)/, replace: (_, rest, roles) => `${rest}role:$self.getHighestRole(arguments[0],${roles})`, } },