i'm honestly confused by the old code, unless I'm missing something, it will spend 1/4th of the loop doing all elements, then 3/4 of the loop is just accessing out of bounds indexes
#๐พ-core-development
1 messages ยท Page 265 of 1
vtest dev
Now testing! 
No issues found
Seems like everything is working fine (for now) 
No issues found
Seems like everything is working fine (for now) 
I didn't
if there is not much more to say what would need to happen to move this forward? sorry if im being a bother, i havnt quite worked out how things get done around here
Makes the View Raw icon 20px like the rest of the icons to fix the alignment.
It's kinda just luck of the draw really
there is no working it out. nobody knows.
lol, thanks i guess
real shit honestly
I would maybe give some PRs preliminary reviews so maintainers know what can probably be merged without too much work but I kinda feel like it can be very perfectionist here and I am not lol
Find gifs with non ascii characters in the link
before:
after:
this array caches the palette values that correspond to a given rgb565 value in the same way that gifenc does internally, i have changed 65536 to 2 ** 16 in 34a56dd75f0cd992eb569771193d3eff9863753c to make it less magic numbery
0738f36ccd1daad3a0ab6ec18fe9ad34680dac5c
the array contains u16s not u8s, and using a Uint16Array breaks the behavior of in when applying the palette, since new Uint16Array(length) initializes all values to 0.
the extra height of the canvas is only used when generating the palette, the extra space is needed so that the hand doesnt obscure part of the pfp. the pallete generation image looks like this:
<img width="120" height="240" alt="image" src="https://github.com/user-attachments/assets/aa3037b3-68f0-4466-ac1e-58a508544ed1" />
but will not be encoded into the gif
I see, that makes sense
probably worth adding a short comment
theres already a comment here but i'll add another on this line too
vtest main
Now testing! 
Slow Patches
BetterFolders (took 5.5ms):
ID: 416568
Match: ```
/switch(\i.type){case \i.\i.FOLDER:.+?folderNode:\i,/
No issues found
Seems like everything is working fine (for now) 
the buttons for the support helper dont work btw
discord is insane and cooked their own code
this is an optional / nullable argument but their code always wrongly assumes it's set
async function sendMessage(channelId: string, messageData: MessageData, waitForChannel?: boolean, options?: Options) {
const nonce = options.nonce ?? generateNonce();
Hello Vencord community,
I'm having trouble seeing full component names in React Developer Tools after switching to dev mode. Despite following the steps, I still see minified names (e.g., letters instead of "TextInput"). Iโd appreciate your help!
Steps Iโve Taken:
- Installed Node.js, Git, and pnpm.
- Cloned the Vencord repository and ran
pnpm install --frozen-lockfile. - Built the project with
pnpm build --devand injected it withpnpm inject. - Enabled "Enable React Developer Tools" in Vencord settings.
- Fully closed and restarted Discord multiple times.
Current Issue:
- After opening DevTools with Ctrl + Shift + I and navigating to the "Components" tab, component names remain minified (e.g., "a" instead of meaningful names).
Additional Notes:
- Iโve tried updating the repository with
git pulland rebuilding, but the issue persists.
Please let me know if you need more information. Thank you for your assistance!
Best, @dusk blaze
NOT THIS AGAIN
://setTimeout ( () =<propt ToUpload ([file]
#1321444411904622638
yeah
Why do people think unminified names is even a thing?
options!.nonce moment
this is a stock feature now (ctrl-f in DMs will just do from:currentuser, which is optional now)
-1 +1
this is a stock feature now (ctrl-f in DMs will just do
from:currentuser, which is optional now) <img alt="image" width="354" height="115" src="https://private-user-images.githubusercontent.com/142252300/477826178-f68ab7f5-d7b7-4ff7-9fa5-5693d0f1ce5f.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NTUxNDI3OTUsIm5iZiI6MTc1NTE0MjQ5NSwicGF0aCI6Ii8xNDIyNTIzMDAvNDc3ODI2MTc4LWY2OGFiN2Y1LWQ3YjctNGZmN...
is this better than doing the opposite thing? decodeURI(getTargetString(gif.url ?? gif.src))
sort:updated-desc is:pr is:open author:sadan4
also yea i got assigned the experiment
tested
i need to remember git fetch pull/0000/head && git reset --hard FETCH_HEAD
why is firefox
what did i just get hit with
oh wait
patch is applying but it doesnt seem to be doing anything anymore
๐

howd that end up being a review
deleted?
this code is terrible and was only ever meant to be a POC
this api is really weird. especially the option for findComponentLazy is misleading
all changes to discord's components are LazyComponent(() => x) -> LazyComponent(() => wrapDiscordComponentName(x, "Name")), which is also the change inside findDiscordComponent, it'd make more sense if the argument was in LazyComponent no? and no need for an opts object in that case, I think
i'll come back to this if it's ever possible to get the final computed color given a pixel pos
in that case you also have a fallback for LazyComponent itself which doesn't need to pollute discord
idk if something like this makes more sense
<img width="272" height="152" alt="image" src="https://github.com/user-attachments/assets/41afdb32-f6e5-4849-8f5e-090c99513495" />
didn't discord roll out the new profile popup for everyone now?
bit ago
if so we don't need showconnections anymore
no??
If a slash command directly returns a modal, for example: interaction.response.send_modal() instead of a normal message, the slash command will get logged as a deleted message even though no message was sent and since its contentless, it overlaps with other elements shown below and doesn't appear right, this 4 line update will stop logging contentless messages which are only possible if a slash command returns a modal.
awh come on i spent wayy too many hours on this for this to become an actual feature ๐ญ

I don't like this? Messages without content but have embeds, attachments, components (esp CV2), polls, message snapshots, nested interaction data or any other future field will be ignored because content will be empty.
There must be a better way you can handle this.
completely forgot other fields of the message exists apparently
There might be a better way but it seems to be that every message that spawns a modal has a message.state value of SENDING which to me seems like would only ever be SENDING on your own messages that (somehow?) get deleted before being sent and bots spawning modals. So a check of if !mine && SENDING: dont log should work? Perhaps.
or just if from bot && SENDING: dont log I guess
@austere talon we should move webpack apis to our own package and refactor
then we can publish that to npm too
why
malware
it needs clean-up
and we can make it more standardized to publish too
isn't the patch part very specific to discord jank
idk if publishing is that useful
clean up sure but I don't get the point of publishing
no need to publish them
but I want to make it a separate package
it's good to modularize more of vencord
soon every plugin will be its own package
where do I go to fix a typing in the discord-types package. I dont see the package on github
oh so I can just straight up edit this file
yes
is this better than doing the opposite thing?
decodeURI(getTargetString(gif.url ?? gif.src))
You'd have to decode every item instead of encoding the query once, but I don't know if it's that much of a meaningful difference.
ofc its better than doing the opposite 
I'll make a poc of my new webpack finds api
decoding and allocating god knows how many strings rather than just one
isn't the favourites limit like 200 gifs it's really not that many strings
what exactly do you wanna do
but ig if it's done again each keystroke it's kinda insane
an easier way to concanate multiple filter types
then prioritize faster filters over slower ones
check props first for example
here's a quick example
find(props("x"), code(".Avatar"), custom(y => true)) and so on
the order does not matter
you can even go as far as:
it is that many when you can just do as the current implement is doing and just do it once instead of up to 200 times every time a key is pressed
computers are fast but it doesn't mean we can do silly things like this everywhere
find(
props("x"),
transform(y => [y]),
mapMangled(...),
setComponentName("Avatar")
)
@fossil inlet what do you think
what exactly
it would replace all our apis
in rare cases you would concate yes
but the name for example could be useful regarding sadan demangler
some components have keys on them, we can use those to add the props to the filter and make sure they actually exist
other mods could create a custom transformation for example
e.g. lazy(true) which instead just calls transform(...)
in my old refactor I used transformations in some finds to simplify them
memoize(), another example
and i dont think this is good syntax
chaining would probably be better
like how do you even type this with the transform
I need to see how doable that is still
you will have to write a monster type for that
the type needs to be recursive basically
yes probably
making a new client mod will simply be pnpm add vencord
but it's more readable than a lot chanining
or if anything we can just make it so you have to manually type
that's already the case in 99% of the cases
well instead of just coming up with something,
first collect actual use cases and then design around them
for example in some cases we do some transformation, rn we just do proxyLazy with non lazy find for that
memoize is useful too
so you avoid another proxyLazy with React.memo
chaining filters is useful for functions which include props set on them
setComponentName could be another utility for Vencord own demangler
I'm not really taking these from nowhere, I've seen cases where all of these could be used already
but I also want to make sure it's not overspecialized
basic + base util so you can build up on top of them
yeah but it feels too much in one
I'll view all our usages and build up a proposal for the bare minimum
then we can see if it's worth implementing
I'm not a fan of how the API looks, it kind of feels like filters.<something>
It's meant to not have overspecialized functions such as findByProps
you build up a filter with what you need
concatenate, custom check, negate, transform, all you need
How often do we actually need a find with more than one filter like this?
I don't think it's a terrible idea, I just don't think we have the need to justify the extra complexity.
I dont think the extra complexity matters much as it's a complexity abstracted from the developer
their usage can be as simple as find(props("x"))
i think find should purely find
transform should be a separate function if anything
is this chatgpt
the reason them being inside find works well is that we can apply the transformations in the raw value before it's wrapped in a proxy, for example
I dont think there's much escape without keeping inside find
it becomes more cluttered and less readable
guhhhh
just kill FormText
replace with text?
yes
I'll add a check (or vendicated) to make sure it was a slash command that directly returned a modal
i will do that
oh, i already started lol
dont do it in ur pr
ok
the only usages of FormText are:
- no props
- type: description
- variant (literally invalid usage)
it's just <Text variant="text-sm/normal"> with these styles:
.formText_ddd181 a:hover {
text-decoration: underline
}
.formText_ddd181 strong {
font-weight: var(--font-weight-semibold)
}
.description_ddd181 {
font-size: 14px;
font-weight: var(--font-weight-normal);
line-height: 20px
}
@media (-webkit-max-device-pixel-ratio: 1) {
.theme-light .description_ddd181 {
font-weight:var(--font-weight-medium)
}
}
oh, then it would probably be easiest to just make our own version of it then replace it everywhere
well the first two are not needed
the description is the only thing that remotely matters
@limber skiff when replacing FormText with Text
should we make every place pass variant itself or should we make our own wrapper
for basic text?
- <FormText>Hi</FormText
+ <OurOwnFormTextComponent>Hi</OurOwnFormTextComponent>
+ <Text variant="text-sm/normal">Hi</Text>
which one
do we want to make a tiny Text wrapper or nah
if we do make a tiny text wrapper we can more easily change it out later
If there are a lot of text-sm/normal then I think so, yes
<SimpleText> :P
no idk
Text is a bad name cause there's a global with that name
just Text ig
it kinda sucks but there's no better name
wouldn't that get confusing with discords text
well
if we wanna replace all form components we can name them properly
Heading, Paragraph etc
FormTitle -> Heading
FormText -> Paragraph
FormDivider -> Divider
FormSection -> Section
so many plugins use it 
dont manually do it
i'm using find & replace
The Vencord Chrome Extension is out of date! (v1.12.9 vs v1.12.10)
guhhhh
Proposed API:
Note: The function names are not final
find(...) // Both find and findLazy use the same API.
findLazy(
// Matchers
custom(x => boolean), // Base matcher.
props("getGuilds"), // Match by properties, heavily used to find general exports.
code("GuildBar: Guild cannot be null", /console\.log\(".+?"\)/), // Match by function code with string/regex, heavily used to find functions.
componentCode("GuildBar: Guild cannot be null", /console\.log\(".+?"\)/) // Match by component code with string/regex, heavily used to find components.
factoryCode("GuildBar: Guild cannot be null", /console\.log\(".+?"\)/), // Match by module factory code with string/regex, usable with extractAndLoadLazyChunks and mangled exports.
storeName("GuildStore"), // Match by store name, heavily used to find Discors stores.
not(componentCode(".getRoles(")), // Negate a matcher. Some components are heavily copy-pasted with just some missing code when compared to the other.
// Transformers
transform(x => y), // Transform the found value from x to y. Base transformer which others can extend.
// Utility Transformers
mapMangled({ ... }), // Map the mangled found object to a new object with named properties. Used for mapping mangled exports.
memoize(x => React.memo(x)), // Can be potentially ignored as it is also minimal.
setComponentName("GuildBar"), // Useful for demangling found components. Pretty minimal and can be potentially ignored.
// Side effects
also(x => void), // Perform side effects with the found value. Useful when initializing our local references to some stores when race conditions occur.
// Example usage:
let UserRecord;
const UserStore = find(
storeName("UserStore")
also(UserStore => UserRecord = UserStore.getCurrentUser().constructor)
)
// End of example
)
I'm looking at our code to see potential usages and that's what I found for now
mapMangledModule can just become a factoryCode filter with a mapMangled transformation
the forms stuff is more important rn
what do you think
what is section again
(visually)
what about BaseHeading and BaseText
why
A heading can be any heading
with any size
anyways what does the section do?
is it even needed over a div
Array type for settings is a good one frfr
See if message.state is SENDING on these modal spawns and if it is check if its a bot or from an interaction, if it does then you should be able to reliably go off that.
Hardcoding this is not future proof at all and should be avoided, especially over something so minor.
[Vendicated/Vencord] branch deleted: remove-refresh
[Vendicated/Vencord] branch deleted: @vencord/discord-types
[Vendicated/Vencord] branch deleted: refactor-settings-ui
i feel like i should be banned from writing code for this (making petpet work as a userscript)
let's just replace Discord's FormText with this for now @fossil inlet @limber skiff
like
export this as FormText from webpack commons
i pushed to Vendicated/Vencord#3608
should we add something for type=description in there
no i just removed type description from everywhere
it looks basically the same lol
does anyone know what the old behavior for BetterSettings was (https://github.com/Vendicated/Vencord/pull/3608/commits/462736dff6c4bae59c159f6501247fa9f9081843)
wdym
the patch matches what the old one was but other than that 

yep bad
wait i didn't have the plugin enabled ๐ญ
no wonder why i didn't see any change
okay
it looks good now
does it work
Your configuration specifies to merge with the ref 'refs/heads/sadanifyingmyvencord'
NO IT DOESNT
hop off using fix/all use different branch names everytime thanks
fix/one
fix/two
fix/three
i will add one each time
@austere talon add reporter testing for prs
manually running via gh actions is annoying
@austere talon love?
๐ญ
WHAT IS THAT
my vencord git config is 326 lines
4-6 lines per pr
so around 65 different prs checked out
750
insaneeeee
whats the result
like so many fix branches
vext
The Vencord Chrome Extension is out of date! (v1.12.9 vs v1.12.10)
@high oracle can u cancel we have to publish new version 
i think the first patch can just be removed
nothing in the plugin is broken
but just leave it for now probably
okay
i published this a few days ago but they havent approved
@fossil inlet figure out why devtools make discord so fucking laggy
are u on vesktop or discord
vesktop
yop
it makes my discord like extremely laggy
x11
like frames
@austere talon done
greet sticker picker broke again ๐ญ
who cares bro
Now testing! 
yeah
Bad Patches
WebContextMenus (had no effect):
ID: 29264
Match: ```
/return\s*?[.{0,50}?(?=?(0,\i.jsxs?.{0,100}?id:"copy-image")/
Slow Patches
FullSearchContext (took 5.5ms):
ID: 683101
Match: ```
/this(?=.handleContextMenu(\i,\i))/
Bad Webpack Finds
mapMangledModule("millisecondsInUnit:", {
isSameDay: (m) => {
if (typeof m !== "function") return false;
return stringMatches(Function.prototype.toString.call(m), parsedCode);
...
})
Bad Patches
WebContextMenus (had no effect):
ID: 29264
Match: ```
/return\s*?[.{0,50}?(?=?(0,\i.jsxs?.{0,100}?id:"copy-image")/
**__GreetStickerPicker (had no effect):__**
ID: `814820`
Match: ```
/innerClassName:\i\.welcomeCTAButton,(?<={channel:\i,message:\i}=(\i).+?)/
Slow Patches
WebContextMenus (took 7.1ms):
ID: 343602
Match: ```
/if(!\i.\i)return null;/
oh ur isSameDay fix isnt stable compatible
that is easy to do
From 7374122b5368067e45641ac9f0846ffa16b8262e Mon Sep 17 00:00:00 2001
From: sadan <117494111+sadan4@users.noreply.github.com>
Date: Thu, 14 Aug 2025 15:45:17 -0400
Subject: [PATCH] make DateUtils stablecompatable
---
src/webpack/common/utils.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/webpack/common/utils.ts b/src/webpack/common/utils.ts
index 862f38430..72f5e662f 100644
--- a/src/webpack/common/utils.ts
+++ b/src/webpack/common/utils.ts
@@ -203,6 +203,6 @@ export const DisplayProfileUtils: t.DisplayProfileUtils = mapMangledModuleLazy(/
export const DateUtils: t.DateUtils = mapMangledModuleLazy("millisecondsInUnit:", {
calendarFormat: filters.byCode("sameElse"),
dateFormat: filters.byCode('":'),
- isSameDay: filters.byCode(/Math\.abs\(\i-\i\)/),
+ isSameDay: filters.byCode(/Math\.abs\(\+?\i-\+?\i\)/),
diffAsUnits: filters.byCode("days:0", "millisecondsInUnit")
});
--
2.50.1
that should work iirc
(i have not tested)
wait why is the date so weird
vtest dev
Now testing! 
Bad Patches
WebContextMenus (had no effect):
ID: 29264
Match: ```
/return\s*?[.{0,50}?(?=?(0,\i.jsxs?.{0,100}?id:"copy-image")/
Bad Webpack Finds
mapMangledModule("millisecondsInUnit:", {
isSameDay: (m) => {
if (typeof m !== "function") return false;
return stringMatches(Function.prototype.toString.call(m), parsedCode);
...
})
Bad Patches
WebContextMenus (had no effect):
ID: 29264
Match: ```
/return\s*?[.{0,50}?(?=?(0,\i.jsxs?.{0,100}?id:"copy-image")/
**__GreetStickerPicker (had no effect):__**
ID: `814820`
Match: ```
/innerClassName:\i\.welcomeCTAButton,(?<={channel:\i,message:\i}=(\i).+?)/
just generate random numbers until it's bigger than the old one
how
guh??
reporter is drunk
bogo version
vext
The Vencord Chrome Extension is out of date! (v1.12.9 vs v1.12.11)
we gotta hope discord is slow with merging into main
hold on lemme just open that in vlc real quick
what's the tool to generate this called
codesnap
the also and map stuff is just bad, I really don't like it
what's bad about the map?
they should be separate functions
transform() and derive()
yeah but how does one handle the proxy with this
the proxy already exposes its internals
it can just access them
and what's the point of merging factory search into the webpack cache search?
I don't like that either
It's webpack search in general
i don't really understand the withFactoryCode thing
what is just a normal findByCode in this
not just cache
findByCode searches exported functions
withFactoryCode is basically what's findModuleId right now
but it should be just cache
they are different things and should be separate apis
hmm
they are kinda tied tho
a factory code can be used to find all the exports of that module
which is what happens in case of mapMangledObject
it takes the raw module and maps their exports
for the also example, I would much prefer something like this:
const FluxDispatcher = findLazy();
derive(FluxDispatcher, it => {
it.subscribe();
});
if it's not lazy then you just do it directly wdym

named derive because the main purpose would be returning a new value
to be clearer we could also have a separate onWhatever function that's just an alias
the return type of that is meant to be void
it's just to apply a side effect
once a find is found
i really like being able to do something with a find once it's found
i'm not partial to either way of writing it
I still think withFactoryCode should be a base matcher tho
a function should never do as much as that find does
why? it has no connection to the others
you can't combine them
I see your point
so you prefer something like
but withFactoryCode possibly different
that's not bad
that's good
each function should have exactly one purpose
multiple small specialised functions are way cleaner than one single function that does a lot
I get the point for the rest but for the factory code one, I'm not sure
though there is some point you can make from it as it's one very specific case
there's not really much reason to find a module by factory code except for mangled exports
ye
there's only one single place in vencord that finds a raw module by code and that's the settings store api
another debate tho, for components it should change the type of the lazy returned based on the filter or use a transform
from Proxy to LazyComponent
why do you even wanna change the existing more specialised methods, I think they're nice
nah that seems weird
like findComponent
would it even be possible to properly type that
that would be changing the return value
which is weird
cant really nest transform like that
I'm just proposing possible improvements
I like the doing something with the lazy module and combining filters part but I don't think the current api syntax / naming needs any change
the current api syntax limits a lot tho
changes I would find good:
- make the current find(Lazy) accept multiple filters
- add a
not()(or invert, negate) function for inverting filters - add a transform/derive function for transforming the found thing
- add a onFind method for running something once the module was found
the last two are basically the same thing
I don't think any pipeline style api would make much sense, and would be a pain to type anyway
I think the pipeline style would be way more readable once you actually start using those features
but those features are so niche
the vast majority of finds are just simple plain ones
how would one negate a findByProps for example
(in a non hacky way where you dont set a prop in the string)
findLazy(byProps(), not(byProps())))
see point 1 and 2
another use case I just thought of is checking some specific prop for a filter, like
m.prototype.render.includes(code) but I don't think your proposal even solves that
wdym by that?
this is what I have been thinking rn, and for the implementation every matcher would be it's proper class to easily stringify and use for reporter
memoize is just an example since it's very specific
we could potentially add our own extended transformers for additional utilities
honestly just skip the transform at this point
yes but they should just be called directly
nesting function calls
anyway I'm so tired and my head hurts I need to sleep
anyone know what the rollout is for 2025-05_client_theme_color_picker
10% as far as I can see
yeah it's pretty low
i discovered that this plugin errors on userscript vencord due to a CSP violation, is it worth b64 encoding the hand images so it can work w userscript or should i avoid jank and just make it show a proper error for userscript users?
that should be handled separately imo
though, that would be horror in code lol
wdym
base64 encoding the images and using them as variables inline
atp just store them as image files
is*
it would only be bad for bundle size, there's surely a esbuild plugin to inline them at build time

how exactly would you go about that, i was under the impression that directly including binaries wouldnt be possible, it has to be compiled to a js file after all
sry, im p stupid
i do acknowledge that this is very cursed
smartest bundler
Currently still happening, also day markers are not hidden (not sure if that's considered a separate bug):
<img width="153" height="256" alt="Image" src="https://github.com/user-attachments/assets/cb530662-6b9b-4373-9c0a-4191ad4925c1" />
vext
The Vencord Chrome Extension is up to date! (v1.12.11)
google might have aired our previous update but this time they clutched up
we managed to avoid all "it doesn't work" reviews this time too
does this seem good for you? @austere talon
instead of specialized functions we have the base 3 and filters and transformers which act on their results
LOL
vtest dev2
Now testing! 
Bad Patches
WebContextMenus (had no effect):
ID: 29264
Match: ```
/return\s*?[.{0,50}?(?=?(0,\i.jsxs?.{0,100}?id:"copy-image")/
**__CustomIdle (had no effect):__**
ID: `517100`
Match: ```
/Math\.min\((\i\.\i\.getSetting\(\)\*\i\.\i\.\i\.SECOND),\i\.\i\)/
ShowAllMessageButtons (had no effect):
ID: 773176
Match: ```
/isExpanded:\i&&(.+?),/
**__GreetStickerPicker (had no effect):__**
ID: `814820`
Match: ```
/innerClassName:\i\.welcomeCTAButton,(?<={channel:\i,message:\i}=(\i).+?)/
NoticesAPI (had no effect):
ID: 933429
Match: ```
/(?<=,NOTICE_DISMISS:(\i){)return null!=(\i)/
**__SuperReactionTweaks (had no effect):__**
ID: `960020`
Match: ```
/(?<=BURST_REACTION_EFFECT_PLAY:\i=>{.+?)(\i\(\i,\i\))>=\i(?=\))/
VencordToolbox (had no effect):
ID: 984370
Match: ```
/(?<=toolbar:function(.{0,100}()\i.Fragment,/
Bad Patches
CustomIdle (had no effect):
ID: 517100
Match: ```
/Math.min((\i.\i.getSetting()*\i.\i.\i.SECOND),\i.\i)/
**__WebContextMenus (had no effect):__**
ID: `29264`
Match: ```
/return\s*?\[.{0,50}?(?=\?\(0,\i\.jsxs?.{0,100}?id:"copy-image")/
SuperReactionTweaks (had no effect):
ID: 960020
Match: ```
/(?<=BURST_REACTION_EFFECT_PLAY:\i=>{.+?)(\i(\i,\i))>=\i(?=))/
**__GreetStickerPicker (had no effect):__**
ID: `814820`
Match: ```
/innerClassName:\i\.welcomeCTAButton,(?<={channel:\i,message:\i}=(\i).+?)/
NoticesAPI (had no effect):
ID: 933429
Match: ```
/(?<=,NOTICE_DISMISS:(\i){)return null!=(\i)/
**__ShowHiddenChannels (had no effect):__**
ID: `734386`
Match: ```
/maxUsers:\i,users:\i(?<=channel:(\i).+?)/
๐คจ
what'd they revert

this has to be insane discord code
like them using an iife and store the result in variable
then bundler i inlines the variable
this patch survived an inside inline
and it goes on
it still matched correctly lol
@austere talon do you remember what is this?
or if it can be removed
we are patching that to always be true
ah it's not needed because we patch canCopyImage now
vtest dev2
Now testing! 
Slow Patches
OverrideForumDefaults (took 7.3ms):
ID: 131704
Match: ```
/}getDefaultSortOrder(){/
**__ContextMenuAPI (took 6.7ms):__**
ID: `488977`
Match: ```
/navId:(?=.+?([,}].*?\)))/g
Must wait for Canary to be merged into Stable before pushing
One step closer to no titlebar lol
it really doesn't need to be that big...
this is so overly sized too
CREATE DM
thanks i've never used that button
discord is trolling
It's fixed in a PR already
love
wait it does
hm?
Why would it be capitalised, it isn't a proper noun
The rest of the buttons are capitalised
vencord is a proudly american mod therefore we will use titlecase
but tbf the casing across vencord itself is inconsistent so
Fix them and pr 
Wait 2 years for merge
I really love when things are that inconsistent across languages
but it's not like you can use capital starting letters for verbs, so it's understandable
by the time its merge time it'll be outdated in 1000 ways ๐
Keep it updated
in my opinion we should match how it is in English
so yeah, change the capitalization
vtest
Now testing! 
Bad Patches
ShowHiddenChannels (had no effect):
ID: 734386
Match: ```
/maxUsers:\d+?,users:\i(?<=channel:(\i).+?)/
**__ShowAllMessageButtons (had no effect):__**
ID: `773176`
Match: ```
/isExpanded:\i&&(.+?),/
NoticesAPI (had no effect):
ID: 933429
Match: ```
/(?<=,NOTICE_DISMISS:function(\i){)return null!=(\i)/
**__SuperReactionTweaks (had no effect):__**
ID: `960020`
Match: ```
/(BURST_REACTION_EFFECT_PLAY:\i=>{.+?if\()(\(\(\i,\i\)=>.+?\(\i,\i\))>=\d+?(?=\))/
VencordToolbox (had no effect):
ID: 984370
Match: ```
/(?<=toolbar:function(.{0,100}()\i.Fragment,/
No issues found
Seems like everything is working fine (for now) 
guh
what's the problem
stablew ๐ญ
hey @fossil inlet can you break something so the server is active again
yeah just add like
body {
transform: rotate(0.2deg);
}
or something
dear lord it's worse than i could have ever anticipated
Seems interesting, but the function would be rarely used
You'd prefer to click on the tweets in 1 second instead of replacing with fxtwitter spending 3 seconds to see the same thing
It would be more convenient if it were automatic but the embed endpoint is too heavily ratelimited for it to be feasible
but like should just be automatic
It's like 5 calls per minute or something which seems okay until you scroll a chat once
what if you don't even do the regular embed ?
basically cancel the original and only do the replacement
It's part of the message object when you receive it so that's not a call
dammit
I did do it automatically at first and have it throttled by the rate limit but it's just not a very nice experience
wait
if the embed is always part of the message
why is there an API even to get the embed alone
There's an embed tester on the dev portal that uses it
oh yeah that
Not sure what uses it in client, if anything
you can batch them
i remember when i was checking for my website doing embed i used that
I did but it was still just weird that they'd slowly convert in chunks
I'll redo it sometime
and i realize discord doesn't even fully respect the spec of the embed system they implement
Oh the other thing with batching them is that you can't tell which is which when they come back
I think anyway, it's been like 10 months
A plugin that allows users to spoof their selected quests with one click of a button.
But I think if you send 5 urls and only 2 have valid embeds, you just get two embed objects back with no indicator of the url that created it besides embed.url which isn't all that useful
bruh
what endpoint
unfurl embeds
i have a stupid idea
instead of asking that API
send the link inside a specific channel so discord give you the embed back then delete it
surely this couldn't go wrong
-# wdym self-bot moment

If the embed.url property matches nicely then matching it back to the url you sent isn't too bad
But they don't all match nicely
just use AI to tell which is which smh
Still, I know more now than I did a year ago so I can dive into again sometime
Vencord now with GPT integration to get nicer embeds
I'd consider adding the ability for it to just pull the data manually but it'd be pretty bad security wise so 
when would the url not match
Just access every link you scroll by, who cares 
I'll find an example
Tbf I already attempt to make weird URLs convert back and forth anyway so I can tell which URL you're clicking to replace so it might not be too bad
https://youtu.be/WOQJkS8l2sk for example, the embed url is the full youtube.com/watch?v=
Visit https://www.squarespace.com/WAN and use offer code WAN for 10% off
Get 20% off DeleteMe US consumer plans when you go to https://joindeleteme.com/WAN and use promo code WAN at checkout.
DeleteMe International Plans: https://international.joindeleteme.com/
Enter AMD's giveaway at https://bit.ly/4lgkIIG for a chance to win a Pro Gaming Upg...
doesn't it have smth with youtu.be at the end
Not that I see
I guess this should all be in #๐งฉ-plugin-development at this point
likely
vtest main
Now testing! 
Bad Patches
CustomIdle (had no effect):
ID: 517100
Match: ```
/Math.min((\i.\i.getSetting()*\i.\i.\i.SECOND),\i.\i)/
**__WebContextMenus (had no effect):__**
ID: `29264`
Match: ```
/return\s*?\[.{0,50}?(?=\?\(0,\i\.jsxs?.{0,100}?id:"copy-image")/
SuperReactionTweaks (had no effect):
ID: 960020
Match: ```
/(?<=(\i)=\i=>{.+?)(\i(\i,\i))>=\i(?=).+BURST_REACTION_EFFECT_PLAY:\1)/
**__VencordToolbox (had no effect):__**
ID: `984370`
Match: ```
/(?<=function (\i).{0,100}\()\i.Fragment,(?=.+?toolbar:\1\(\))/
NoticesAPI (had no effect):
ID: 933429
Match: ```
/(?<=function (\i)(\i){)return null!=(\i)(?=.+?NOTICE_DISMISS:\1)/
**__GreetStickerPicker (had no effect):__**
ID: `814820`
Match: ```
/innerClassName:\i\.welcomeCTAButton,(?<={channel:\i,message:\i}=(\i).+?)/
ShowHiddenChannels (had no effect):
ID: 734386
Match: ```
/maxUsers:\i,users:\i(?<=channel:(\i).+?)/
**__ShowAllMessageButtons (had no effect):__**
ID: `773176`
Match: ```
/(?<=(\i)=)\i(?=&&.+?isExpanded:\1)/
Slow Patches
SuperReactionTweaks (took 6.3ms):
ID: 960020
Match: ```
/(?<=(\i)=\i=>{.+?)(\i(\i,\i))>=\i(?=).+BURST_REACTION_EFFECT_PLAY:\1)/
We need to push dev to main
thanks vee
[Vendicated/Vencord] New tag created: v1.12.12
This pull request introduces the new NotiQuick plugin for Discord/Vencord, which streamlines notification management by adding a right-click context menu to the notifications bell and provides quick actions to mark all server or DM notifications as read. The PR includes the full implementation, plugin settings, a README, and a bell icon animation for improved user experience.
New Plugin Implementation and Features:
- Added the
NotiQuickplugin inindex.tsx, which attaches a co...
aislop?
dom manipulation lol
The readme is needlessly complicated, you are using DOM manipulation which is violating the plugin submission ruels in the CONTRIBUTING.md.
You should log things like other plugins, you should probably type your finds and not use any and this is otherwise doing some pretty questionable things.
Is this written by AI?
ruels
Thank you for your feedback. This was my first plugin, so I didnโt expect it to be perfect. I designed the README to look visually appealing, and some parts of the code were created by AI, mainly fixes and logic I didn't know/wasn't confident with, seeing as though Iโm not very experienced with React.
I wasnโt aware that my plugin would violate any guidelines, so Iโll retract the PR and take another look. Or, I might just use it myself as a userPlugin..
Added keybind setting type for global shortcuts, and api to register global keybinds.
Maybe add something like it for window kebinds?
Oh my
What happens when the bug or crash occurs?
When sharing a Google Calendar and sending a share link, the share ID is removed from the URL. A Google Calendar invite is structured like https://calendar.google.com/calendar/u/0?cid=*****.
What is the expected behaviour?
I expect ClearURLs to keep the share ID so that the sharing works properly.
How do you recreate this bug or crash?
Go to Google Calendar, go to Calendar Settings for a particular calendar, and get a shareable lin...
assuming they're correct about the google calender ID format, it does look like cid is removed from all urls
My friend and I developed a simple plugin that I think is useful enough to be added into vencord.
Pretty much the plugin allows you to have a custom keybind to close dms swiftly just by click you're set keybind
And thats it!
Sorry, I had forgotten to include constants in the push.
Is there any update on that PR?
It's currently a bit sad to see that streamer mode doesn't work well at all with ShowMeYourName ^^
vext
The Vencord Chrome Extension is up to date! (v1.12.12)
nookies 2.0
why so many fake nookies lately
Was there ever a real nookie?
Pull Request Overview
This PR introduces a new plugin called "ImageFilename" that displays image and GIF filenames as tooltips when hovering over them in Discord. The plugin was ported from an existing moonlight-extensions implementation.
- Adds tooltip functionality for images and GIFs showing their filenames
- Includes configurable option to show full URLs instead of just filenames
- Special handling for GIF hosting sites (tenor, giphy, imgur) that always show full URLs
Reviewed C...
[nitpick] The phrase 'file name' should be consistently written as 'filename' to match the plugin name and other usage in the codebase.
description: "Show the full URL of the image instead of just the filename. Always enabled for GIFs because they usually have no meaningful filename",
Didn't pay enough
vee rewrote it
@limber skiff remember how i wanted to make our own Paragraph, Heading etc components
yeah
if we do that, we can also make those components fallback to basic html if vencord fails to find the Text component
so settings ui wont break anymore
we should make sure settings only use those components by us
and then they will just fallback to extremely basic text
it will look ugly if it breaks but will still work fine
do you know how much effort that is
we could still use their variant classes
whats the point
we have to webpack find
yeah true
well we could have redundance
like
try to find text
if it fails, try to find variant classes
yeah
- find Base text
- if base text fails, render into div and try to find variant classes
- if variant classes fail, just leave it as a plain div (all text will be default size)
we need vencord components package immediately
nah jk it makes no sense if they are based in webpack finds
actually remaking their text components wouldnt be that hard
it'd be like
.text-base {
font-family: var(--font-primary);
line-height: normal;
}
.text-sm {
font-size: .875rem;
}
.text-md {
font-size: 1rem;
}
.text-lg {
font-size: 1.25rem;
}
.text-normal {
font-weight: 400;
}
.text-medium {
font-weight: 500;
}
.text-semibold {
font-weight: 600;
}
.text-bold {
font-weight: 700;
}
.text-extrabold {
font-weight: 800;
}
then just combine these classes
7467974 add BaseText, Paragraph & Heading components - Vendicated
[Vendicated/Vencord] New branch created: uikit
Independent text components that don't rely on anything from Discord webpack (except react)
[Vendicated/Vencord] New comment on pull request #3618: add BaseText, Paragraph & Heading components
Not sure yet which style is better:
<Paragraph size="xs" weight="thin">
<Paragraph variant="xs/thin">
First
first
we can remove this legacy code
not yet
plugin merged and it's not mine
real shit
writing this pr made me realise how amazing having a text component like this is
will add to my own sites from now on
๐ญ
settings use so many discord components guhh
do we really wanna rewrite it without any of them
nope
what the hell are you themeing basic text components for
I mean for things like sliders and checkboxes/switches
aesthetics so crazy it's gonna theme the code itself
rewrite vencord in bun
we're not remaking all components ๐ญ
right now it's only text components
But if we do end up replacing more theme relevant components, I'll make sure that they have intuitive classes
@austere talon what font are u using on the linux ? i switched from mac to linux
feat: add toggleGuildAndChannelList plugin
Introduces a new plugin that adds a header bar icon to toggle visibility of
the Guilds and Channels sidebars. The icon uses a custom SVG inspired by
the guilds/channels layout (three vertical bullets with horizontal lines).
Features:
- Toolbar button integrated with Discordโs HeaderBarIcon, full hover/tooltip behavior
- Functional toggle by applying
hm-hide-sidebarbody class - Hover and focus-visible states styled to match native button...
The basic settings components should probably have fallbacks at least if the idea is for the plugins page to still work if finds fail
Would be great to have this plugin
you will never see the pearly gates
Make it a loading quote instead of user status
What even caused you to come across a two year old PR
guys please help me with fixing this patch
null.{0,30}?nsfwAllowed
null.{0,40}?ageVerificationStatus
this plugin is explicitly not in Vencord and not supported, do not discuss it in #๐พ-core-development
its fine
but this is the wrong channel anyway
#๐งฉ-plugin-development for plugin dev
i kinda worded it wrong but yeah i meant to use a different channel because this isn't core
how tf do people manage to do this
Green button
Must press
They probably also thought they were PRing in their own repo
wwhuh
NOTICE API ๐ญ
god forbid they pick a bundler setting
why is this popup so ugly on windows smh
veeeeee ๐ญ will pull a userplugininstaller and make a custom html popup
isnt that turbo insecure?
from what i understand V wants to be in full control of whats allowed and whats not, and if its done inside the UI you could simply spoof it?
or am i stupid?
you could still make the custom html popup from the native process
that means a new browserwindow instance no?
yeah
It doesn't matter to most people but I feel like when I see a native window pop up it gives more of an indication that this is isolated and safe
If it still looked like discord I'd be more ehhh
while i agree, its not something the user should ever be concerned in the first place - is the way i design my apps
but vencord is a lot different, since users have.... 2 brain cells
which is on average 2 more than my users
Currently settings keys such as "customEngineURL" get parsed into ["custom", "engine", "u", "r", "l"], and when turned into title case become "Custom Engine U R L". The new implementation, despite being slightly verbose, makes sure that acronyms stay intact.
so randomly after some time, vencord started shitting itself on build
โก Done in 65ms
โ [ERROR] Could not resolve "@vencord/discord-types/enums"
src/plugins/fakeNitro/index.tsx:27:34:
27 โ import { StickerFormatType } from "@vencord/discord-types/enums";
โต ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
You can mark the path "@vencord/discord-types/enums" as external to exclude it from the bundle,
which will remove this error and leave the unresolved path in the bundle.
โ [ERROR] Could not resolve "@vencord/discord-types/enums"
src/plugins/fakeNitro/index.tsx:27:34:
27 โ import { StickerFormatType } from "@vencord/discord-types/enums";
โต ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
You can mark the path "@vencord/discord-types/enums" as external to exclude it from the bundle,
which will remove this error and leave the unresolved path in the bundle.
2 errors```
the build works, im even using it now. except for settings, i also don't have any changes to code except for one additional self made plugin and well. settings for whole vencord don't work
i pulled from github, im up to date
docs explain this
pnpm i
guhhh they pushed stable @limber skiff
common occurrence in this server
fake nookies
showhiddenchannels seems to trigger the 2fa requirement warning for users without 2fa
@fossil inlet fix
Why do ppl keep adding stars to vendroid
it's good
java number one (i haven't learned kotlin)
java is hell to work with
I like java a lot but it was my first language so that's probably why
i should work on reducing the app size
lc.@grok how do you reduce an android appโs size as a developer
To shrink an Android app's size:
-
Enable R8/ProGuard in build.gradle for code minification, shrinking, and obfuscation.
-
Use Android App Bundles (AAB) for dynamic feature delivery, reducing initial download.
-
Optimize assets: Convert PNGs to WebP, use vector drawables, remove unused resources via shrinkResources.
-
Eliminate redundant libraries; audit dependencies with Gradle tasks.
-
Split large assets into on-demand modules.
Aim for under 150MB to avoid warningsโtest with bundletool.
@grok โข grok-4-0709
yop start by removing kotlin
tbf iโm shipping four gifs in my apk
vendroidenhanced having different splashes before vesktopโฆ
consider clicking on their name then clicking message
The whole concept of this plugin is too niche. Opening a DM with the context menu or navigating to a recent chat you already have opened takes 2 clicks maximum
The whole concept of this plugin is too niche. Opening a DM with the context menu or navigating to a recent chat you already have opened takes 2 clicks maximum
Thats sad.
@Nuckyz can I ask you which of tje following plugins are suitable for submission?
https://github.com/nicola02nb/Vencord-Stuff
https://github.com/bapecord/Bapecord?tab=readme-ov-file i love when people rename vencord
apparently their support server has a patched "stereo enabler" hosted on mediafire
if you name anything after bape i think you should be locked in the paris catacombs
A simple plugin to ensure you are always alerted when a specific user messages. Can be configured to play a sound or send a push notification regardless whether you are in do not disturb.
Came off creepy but then I saw it was DMs only
There's a PR for this feature already https://github.com/Vendicated/Vencord/pull/2239
Unfortunate
is it time to move toolbox up here
Actually would be a W idea
big if true
vtest dev
Now testing! 
Bad Patches
IgnoreActivities (had no effect):
ID: 293389
Match: ```
/#{intl::SETTINGS_GAMES_TOGGLE_OVERLAY}.+?}(),(?<=nowPlaying:(\i)=!1,.+?overlay:\i,[^}]+?}=(\i).+?)/
**__SuperReactionTweaks (had no effect):__**
ID: `960020`
Match: ```
/(BURST_REACTION_EFFECT_PLAY:\i=>{.+?if\()(\(\(\i,\i\)=>.+?\(\i,\i\))>=\d+?(?=\))/
Bad Patches
IgnoreActivities (had no effect):
ID: 293389
Match: ```
/#{intl::SETTINGS_GAMES_TOGGLE_OVERLAY}.+?}(),(?<=nowPlaying:(\i)=!1,.+?overlay:\i,[^}]+?}=(\i).+?)/
**__SuperReactionTweaks (had no effect):__**
ID: `960020`
Match: ```
/(BURST_REACTION_EFFECT_PLAY:\i=>{.+?if\()(\(\(\i,\i\)=>.+?\(\i,\i\))>=\d+?(?=\))/

you the goat Skully, I need this plugin asap no rocky
imo top bar should be a top bar and imo client-side decorations should not be a thing (not everyone will like this take)
unless they replicate the server-side buttons exactly the same way
(yes i'm tilted that i had to CSS discord to make the buttons not different from every single other app on my system)
imagine discord uses the react compiler someday
I was playing around with it and it did this to one of my components
function ne(t) {
const e = R.c(36), {initialValue: l, value: n, onChange: r} = t;
oe(!(l !== void 0 && n !== void 0),
'Switch cannot be both controlled and uncontrolled');
const i = n !== void 0, [c, o] = _.useState(n ?? l ?? !1), a = i ? n : c,
[u, b] = _.useState(l ? 1 : 0);
let h;
e[0] !== u ? (h = ie(u), e[0] = u, e[1] = h) : h = e[1];
let g;
e[2] === Symbol.for('react.memo_cache_sentinel') ?
(g = {config: {mass: .5}}, e[2] = g) :
g = e[2];
const f = le(h, g);
let v;
e[3] !== u ? (v = ce(u), e[3] = u, e[4] = v) : v = e[4];
let d;
e[5] === Symbol.for('react.memo_cache_sentinel') ?
(d = {config: {mass: .1}}, e[5] = d) :
d = e[5];
const x = le(v, d);
let N, z;
e[6] !== i || e[7] !== n ? (N = () => {i && (o(n), b(n ? 1 : 0))}, z = [i, n],
e[6] = i, e[7] = n, e[8] = N, e[9] = z) :
(N = e[8], z = e[9]),
_.useEffect(N, z);
let C, S;
e[10] !== f || e[11] !== x || e[12] !== u ?
(C = () => {f.start(ie(u)), x.start(ce(u))}, S = [u, f, x], e[10] = f,
e[11] = x, e[12] = u, e[13] = C, e[14] = S) :
(C = e[13], S = e[14]),
_.useEffect(C, S);
const E = a ? 'bg-primary' : ' border border-bg-fg-800 bg-bg-300';
let y;
e[15] !== E ?
(y = F(
'w-12 h-8 rounded-full flex justify-center transition-[background-color,border-radius] duration-250',
E),
e[15] = E, e[16] = y) :
y = e[16];
let p;
e[17] === Symbol.for('react.memo_cache_sentinel') ?
(p = M => {M.detail > 1 && M.preventDefault(), b(2)}, e[17] = p) :
p = e[17];
let w;
e[18] !== a || e[19] !== i || e[20] !== r || e[21] !== u ?
(w =
() => {
u === 2 &&
(b(i ? a ? 1 : 0 :
a ? 0 :
1),
r?.(!a), o(!a))},
e[18] = a, e[19] = i, e[20] = r, e[21] = u, e[22] = w) :
w = e[22];
let T;
e[23] !== a ? (T = () => {b(a ? 1 : 0)}, e[23] = a, e[24] = T) : T = e[24];
const B = a ? 'fill-neutral' : 'fill-bg-fg-600';
let $;
e[25] !== B ?
($ = F('transition-colors duration-250', B), e[25] = B, e[26] = $) :
$ = e[26];
let k;
e[27] !== f || e[28] !== x || e[29] !== $ ?
(k = s.jsx('svg', {
viewBox: '0 0 24 24',
className: 'flex items-center justify-center w-full h-full',
children: s.jsx(se.circle, {cx: f, cy: 12, r: x, className: $})
}),
e[27] = f, e[28] = x, e[29] = $, e[30] = k) :
k = e[30];
let D;
return e[31] !== y || e[32] !== w || e[33] !== T || e[34] !== k ?
(D = s.jsx(re, {
className: y,
onMouseDown: p,
onMouseUp: w,
onMouseLeave: T,
children: k
}),
e[31] = y, e[32] = w, e[33] = T, e[34] = k, e[35] = D) :
D = e[35],
D
}
why is discord using unhashed intl keys here
Seems like that A11Y loading is the only place it's not using hashes
That's a bad screenshot but those are the only two results
oh, this is going to take a while to adjust to in terms of muscle memory
Is there a plugin to kill the titlebar yet?
Unsure, sadan said he wanted to make one
vtest dev2
Now testing! 
No issues found
Seems like everything is working fine (for now) 
No issues found
Seems like everything is working fine (for now) 
What happens when the bug or crash occurs?
With the new allowlist for resources, https://raw.githubusercontent.com/ is not whitelisted, even though it says GitHub resources are whitelisted. I assume this url was forgotten. People will get a warning even though this domain should be trusted.
What is the expected behaviour?
It should be allowed.
How do you recreate this bug or crash?
- Use a theme that uses https://raw.githubusercontent.com/
- The resource gets blocked
E...
Alright @fossil inlet, in 13 hours, 29 minutes and 34 seconds: fix
- Modifies the message content of rendered messages to apply TextReplace rules.
- Preserves the original content in a new attribute to prevent recursive replacements.
- Also added a new setting to choose whether to apply rules to your own messages, to others', or to all. Default is your own and existing rules are updated as such.
finally slimy sadan sending her spotify links with the tracking parameters will be over
Damn. PR'd a feature someone else was already working on before they could
๐ญ they were working on something for themselves and had gotten nowhere by the time I gave them the code I ended up using in the pr
although looking at v's comment in another pr I might need to find a way to not be updating the content attribute directly even though I am backing it up to originalContent ๐ค
if you viewraw you shouldn't see the updated content ykyk
well it is currently just modifying content and backing it up. I couldn't find where the content was itself used to render in the message
Scope could be a bitfield/enum with the setting being two checkboxes, allowing for a rule to apply to both at once.
Modifying the content property of a message is not acceptable and the patch needs to be adjusted to only modify the local reference where the content is used.
well I found where it is used I just cant get the messages to rerender when the rules update now
ok pushed. I just really wish I could figure out why I couldnt get it to rerender them. only thing that ever worked was modifying message.content. couldnt get changes to stringRules or regexRules to trigger it or even just by toggling a new hidden bool setting. nothing worked ๐ญ
as for the other comment, there's already an option to apply the rule to both at once. and I dont see checkboxes working here visually. there's no room on the same line as the input boxes, and if they're on a 2nd line like the dropdown currently is where would their labels go?
a dropdown is pretty ugly
you can do something like console janitor
which in fact also needs to be adjusted for the new margins
or just have a header/description and the boxes
@fossil inlet, <t:1756009826:R>: fix
i send my spotify links with the plugin
A plugin that adjusts profiles colors so they don't hurt your eyes & are easier to read
Inspired a lot by fakeProfileThemes
vp noprofile
Completely removes Nitro profile themes from everyone but yourself
Authors
TheKodeToad
horrific, you can do this with pure css
I once again ask for reviews on my settings arrays PR 
No
im here to bump this up as it would be extremely usefull to me
Hang statusโ coming back
Wonder if that old 'NoDefaultHangStatus' plug-in will have to come back too
oh i c
we need to pay attention when they bump intl lib in the app
they changed runtimeHashMessageKey
50000 patches broken
Content
Please consider adding a logging feature to the alwaysExpandRoles plugin that records when a user reacts to a message and then quickly removes their reaction. This would help track who interacted with the message, even if the reaction was removed almost immediately. It would be useful for moderation and understanding user interactions in channels where this behavior occurs.
Request Agreement
- [x] I have read the requirements for opening an issue above
What does that even have to do with alwaysExpandRoles?
MessageLogger would at least make sense
is that our select component
ugh it is
gotta fix that fast because it impacts plugin settings
so discord did a thing ๐ญ
removing the classname fixed that so thats all I know
so this is why select find broke lmaoo https://x.com/advaithj1/status/1960518981678457000
they screwed the style or smth as well
i just realised these should probably be peerDependencies
https://github.com/Vendicated/Vencord/blob/main/packages/discord-types/package.json#L14-L18
https://github.com/Vendicated/Vencord/blob/main/packages/vencord-types/package.json#L19-L26
Fixes the Select and SearchableSelect patches
className={InputStyles.input} was removed as it seems to be fine without it from my testing below is with it
@austere talon you should merge this :blobcatcozy:
without the classname
using i18n string here is bad because those will also all break soon
we gotta prepare for that anyway
those strings are too generic too




first