#๐พ-core-development
1 messages ยท Page 236 of 1
works fine
hm
PinDMs uses it and it works fine
are you up to date?
I believe? how can i check
Yeah
dev, not main
ah
since we haven't pushed to main yet
I see
that makes so much sense i don't know how i didn't think of that earlier
๐ญ
there are way more broken things than just openModalLazy lmao
rip
but it's all fixed already
Now testing! 
now we wait
You know I thought for a while that vencord was all about writing your own patches but now that there's an actual API for some things like opening modals is amazing news to me
I wish there was actual documentation
None
None
None
None
ooooo
wait for it lol
PermissionFreeWill (had no effect):
ID: 156699
Match: ```
/{(\i:function(){return \i},?){2}}/
**__ConsoleJanitor (had no effect):__**
ID: `173840`
Match: ```
/(?<=&&\()console.log\(`Deprecated.+?`\),/
ChatInputButtonAPI (had no effect):
ID: 258696
Match: ```
/return(!\i.\i&&(?=(\i.isDM.+?(\i).push(.{0,50}"gift")/
**__IgnoreActivities (had no effect):__**
ID: `293273`
Match: ```
/HANG_STATUS.+?(?=!\i\(\)\(\i,\i\)&&)(?<=(\i)\.push.+?)/
ShowTimeoutDuration (had no effect):
ID: 464891
Match: ```
/(\i).Tooltip,{(text:.{0,30}(?:.AeYyLy)))/
**__ShowHiddenChannels (had no effect):__**
ID: `557135`
Match: ```
/(?=&&\i\.\i\.selectVoiceChannel\((\i)\.id\))/
iLoveSpam (had no effect):
ID: 598077
Match: ```
/if((\i)<=(?:1<<30|1073741824))return/
**__MentionAvatars (had no effect):__**
ID: `644956`
Match: ```
/children:\[\i&&.{0,50}\.RoleDot.{0,300},\i(?=\])/
OpenInApp (had no effect):
ID: 952164
Match: ```
/!(0,\i.isDesktop)()/
**__BetterSettings (had no effect):__**
ID: `493544`
Match: ```
/\(0,\i\.useTransition\)\((\i)/
Settings (had no effect):
ID: 991346
Match: ```
/({(?=.+?function (\i).{0,160}(\i)=\i.useMemo.{0,140}return \i.useMemo(()=>\i(\3).+?function(){return )\2(?=})/
**__ShowHiddenChannels (had no effect):__**
ID: `473403`
Match: ```
/(?<=\.wrapper:\i\.notInteractive,)(.+?)if\((\i)\)return (\i\.MUTED);/
ShowHiddenChannels (had no effect):
ID: 473403
Match: ```
/.LOCKED;if((?<={channel:(\i).+?)/
**__BetterFolders (had no effect):__**
ID: `179809`
Match: ```
/(?<=(?:\.xV9hVl).+?useTransition\)\()/
ShowHiddenChannels (had no effect):
ID: 424785
Match: ```
/!(\i).isRoleSubscriptionTemplatePreviewChannel()/
**__ViewIcons (had no effect):__**
ID: `217314`
Match: ```
/.Avatar,.+?src:(.+?\))(?=[,}])/
ViewIcons (had no effect):
ID: 753898
Match: ```
/.Avatar,.+?src:(.+?))(?=[,}])/
**__ImplicitRelationships (had no effect):__**
ID: `270759`
Match: ```
/(\(0,\i\.jsx\)\(\i\.TabBar\.Item,\{id:\i\.\i)\.BLOCKED,className:([^\s]+?)\.item,children:\i\.\i\.string\(\i\.\i(?:\["4bDptL"\])\)\}\)/
CtrlEnterSend (found no module):
ID: -
Match: ```
.ENTER&&(!
**__FakeNitro (found no module):__**
ID: `-`
Match: ```
.PREMIUM_LOCKED;
MessageLogger (found no module):
ID: -
Match: ```
useMessageMenu:
waitFor("FormItem", "Button")
waitFor("MenuItem", "MenuSliderControl")
findByProps("ModalRoot", "ModalCloseButton")
findByProps("openModalLazy")
proxyLazyWebpack(()=>Hr.openModalLazy...)
proxyLazyWebpack(()=>Hr.openModal...)
proxyLazyWebpack(()=>Hr.closeModal...)
proxyLazyWebpack(()=>Hr.closeAllModals...)
findExportedComponent("BlobMask")
findByProps("useMessageMenu")
findComponentByCode("Button.Sizes.NONE,disabled:")
findExportedComponent("HiddenVisually")
findExportedComponent("ColorPicker", "CustomColorPicker")
findByProps("useStatusFillColor", "StatusTypes")
findExportedComponent("Dots", "AnimatedDots")
findComponentByCode(".AvatarSizeSpecs[", "getAvatarURL")
None
None
oh uhh
that's on main
god damn
dev has all fixed
how are you guys so good at patches
and they work in both stable and canary
its honestly not that difficult
actually that API is discord own API, we just find it for you
I suppose but I can't actually read gibberish
but yeah there are other Vencord APIs for making things easier
learn
oh i see
patches really aren't that bad its knowing what to patch that is harder
this
please just point me in a direction
I've just been smashing my head against the source trying to learn from doing
but that doesn't really work well for me
well where are you stuck rn
well, finding stuff
finding the exact spot to patch into is so 

exactly what i'm saying
Like how the flip flop am i meant to read gibberish to find the part that I want to change
a lot of poking with devtools
reading it is a different story but its not really that bad? like use devtools and breakpoints
well what do you want to do in the first place
a lot of time +regex101.com
if what youre patching has text strings find where those strings are used
oh, breakpoints?
i should build dev but im lazy
you haven't been using breakpoints? ๐ญ
@hexed cloak if you tell me what you want to patch, i can try and point you in the right direction
do
you guys use breakpoints?
I haven't
they can be good sometimes
ye ik
if only breakpoints were good for components
I want to patch the devices menu in the settings
more specifically where they are being put into a list to be rendered
btw @fossil inlet can u take a look at my pr im too dumb to figure out why it rerenders on each click, search modal specifically
I think nuckyz might remember this
yeah I do lol
what does this mean?
625205
i think
find the js that constructs that via the "Input Device" String
yop
Vencord.Webpack.wreq.m[625205].toString() have fun!

elvyra eats rocks
i forked vencord companion and made my own version with a bunch of new features ||read what it can do here https://github.com/sadan4/VencordCompanion/tree/main||
oh what the heck you're reading source from vscode instead of discord?
wasnt there someone who made an intellij version?
cool features never to be upstreamed
left to rot
No
Yea, but ultimate only

whatr abt webstorm
I need to get back on that, there's quite a bit that's only half done
i thought you meant idea ultimate guhhhhhhh
I don't have webstorm to try it out unfortunately, I only have idea ultimate
i can help with that
i have every intellij ide via student pack
same
Yeah well i'm at the point of the code
It's here if you wanna try, I'll make sure it's up to date later https://github.com/lolsuffocate/VencordCompanionIDEA/
i'm still trying to figure out what to do
lol
is there a way to go back after you ctrl+click an identifier?
Although I've also made my own changes to the companion plugin to go along with it which is why I consider the whole thing a bit of a mess
I will tell you in just a bit, although this definitely looks right
so yeah
can u lmk when u do
@scenic brook i have client side patching planned with a form of life-patching where as you write your patch, it will run it and show it in a read-only sidebar, formatted
FIRE
damn that sounds like something i made for discord bots
I wondered what you meant by live patching when you mentioned it recently
however isnt that just patch helper ๐ญ
what's patch helper
loove
I figured you just meant the thing I PR'd a while back lol
I made a mess of that PR somehow, it's completely fucked
If u have a dev build it will show up in the vencord section of the settings
this kind
me when I never use patch helper
like should i just set a breakpoint or something
intl is so doomed
you can't turn the hash into the string without guessing or brute force
do you want the actual string, or want to use it in a patch
I want to see the string
Well yes but I want to know how to get there myself
I think that's the one I searched for earlier 
@limber skiff does i18n.t work for you in console shortcuts?
This
it should but you should also use the vencord utility for it
how did you get the hash?
oh, forgot about those
wait how does that work 
thats the fun part, you dont
...
The hash is the last bit, after the t.
oh wait
also someone should prob pin this <#๐พ-core-development message>
I was looking at a different hash lol
Thanks time to make a cheatsheet
surely thats fine to pin
but what exactly do you want with that?
getIntlMesage* is for when you need to use a translated string in your code
ues this instead
@hexed cloak
why is that better?
Vencord.Util.getIntlMessageFromHash("hHMYbW") gets a translated string
Yeah
FORM_LABEL_INPUT_DEVICE is the key for that translated string
which when hashed gets transformed to hHMYbW
which works with every language
you can use the non hashed key for better redeablity
Vencord.Util.getIntlMessage("FORM_LABEL_INPUT_DEVICE")
Ah, I see
that utility automatically hashes it for you
and you can also use the non hashed key for finds
find: "#{intl::FORM_LABEL_INPUT_DEVICE}"
That's useful okay I see
"#{intl::FORM_LABEL_INPUT_DEVICE}" gets transformed into ".hHMYbW", which if you search in your devtools you will find where it's being used
That's cool okay
you probably remember the old .Messages.FORM_LABEL_INPUT_DEVICE
it's basically the same, but Discord changed their intl lib and they now hash the keys too
so you have to do magic to use the old non hashed keys in your code
I see, stupid discord ๐
Vencord abstracts all of that for you
very useful
Is there somewhere i can find docs for Vencord.Util?
it seems like it is very useful
x.Messages.FORM_LABEL_INPUT_DEVICE is the equivalent of E.intl.string(E.t.hHMYbW)
mainly by looking at the code
some have descriptions for what they do
I see
others are self-descriptive
what horror code is discords sidebar made out of
I'm 100% on development
build vencord with --dev
okay
build it as a dev
pnpm build --dev
That seems to have just nuked vencord?
I built with dev and then injected
and now I don't have vencord
no matter if i inject with --dev as a build param or not
You don't need to inject again, only build
oh
so what now, I still don't have vencord
repair maybe
nope, installing / repairing / uninstalling / reinstalling did nothing
check your devtools
you might have a top level error which just prevents vencord completely from running
i hate when that happens so much ๐ญ
always throws me off so much when i have devtools closed and reload
because .slice exists
no wonder my code isnt working
use toSpliced
vtest dev
Now testing! 
None
None
None
None
None
None
None
None
done, it'll work best with https://github.com/lolsuffocate/Vencord/tree/newDevTools
fwiw most of the changes to the devcompanion plugin are done by sadan, I'm mostly just reimplementing the extension
@fossil inlet you switched it to a userplugin didn't you? What did you do about reporter integration?
is there a faster way to test changes?
(than to reload after pnpm build --dev --watch)
You can use pnpm watch to automatically build whenever you save changes but you still have to reload
yeah nvm lol
aw
Discord animated emojis no longer have the extension .gif. They are now .webp with the query parameter animated=true passed to them. I've updated the copyEmojiMarkdown plugin to reflect this as it wasn't copying animated emojis correctly.
Yes and no
There is a user-plugin version
However, I maintain it with the full version
Gotcha
whats the expected vencord dev workflow btw?
i'm struggling hard to enter this
i'm coping and dont want to believe that doing vencord.webpack in devtools is the expected way to dev this
To make patches?
yeh
My general flow is
- use react devtools to find code that I need to patch
- locate a temp find from the code (just to start writing the patch
- use patch helper to write the patch
- put the patch in the plugin
- repeat until your code works
also use consoleShortcuts to test for things easier
what is patch helper, what are consoleshortcuts
consoleShortcuts is a plugin
ah
yeah that one isnt useful
ic it
i cant find any references for patch helper doe
is patch helper just the Webpack utils?
Now testing! 

None
None
None
None
i assume you cannot run a dev build of extension builds
which is cool
None
None
None
None
21ded87 Settings API: Add utility to migrate a setting - Nuckyz
f43badd NoBlockedMessages: Add ignored messages (#3126) - jamesbt365
cdc7561 Settings API: Fix erroring if plugin settings d... - Nuckyz
33d4f13 Fix everything broken by recent Discord update ... - Nuckyz
7415367 Add missing MenuSearchControl webpack find - Nuckyz
real
now how many issues will this bring
I assume patch helper is undocumented too?
userplugins moment
beautiful
My userplugin breakages were almost exclusively icons thankfully
Nice and easy to fix
in this case i just deleted the user plugin because i only installed it to test to approve for #1256395889354997771
lol
Yeah that's all I did
Apart from IconViewer, that's just a whole other level of fucked now
not exactly uncommon
seems easy to fix
lol that's almost exactly the find I used
you cant have the names but you can have all icons
Not my plugin though so I'm not messing too much atm
Yeah that's about as far as I got
yeah idk i give up, this shit isnt made for humans
annoying that no new devs can actually make extensions because it requires hidden black magic knowledge about a process which is known to a select few
tbh you kinda just have to start small and learn as you go
This is what i thought
I'm fairly new here but I got the hang of it eventually
second one explains patching
yes, because thats humanly findable
idk man i just looked at git history on the main repo and found it lol
you can
but no one develops on web, because constantly reinstalling the extension is awful
cant you pnpm buildWeb --watch since it's unpacked
pressing a single button isnt a problem
or do you allways need to reload browser
yeah, then u simply refresh the extension and discord
yes but you always need to press refresh extension in the extensions page
its not really that bad
at least as far as I know
if you're a developer just install something you can reload easily lol
and most of the stuff i want to test can be tested on desktop anyways
idk why you would want to torture yourself by developing solely on web, vencord works the same regardless of platform
i could say the same about vesktop
and here we are
If you want to develop for web run the Userscript with a local Require
vesktop is probably the nicest to develop on
patch helper and console shortcuts seem to go hand in hand it seems
it's honestly really simple once you understand the concept and know regex
the find string is used to find the correct module so it needs to be a unique string that only appears in the module you want to patch
then the patches is just regex replace (see mdn docs, especially for string replacement placeholders)
How?? Vesktop is fine for dev
yeah i'm aware, i did a lot of plugins for goosemod too, but like
idk nothing works here
and its driving me mad
not really
- patchhelper is to test your patches and see what they'll do on module code/if they compile without blowing up
- consoleshortcuts just makes a bunch of functions easier to access in the console, eg. findByProps, but when writing ur plugin that's irrelevant since you just import it from @webpack/common
Theres a chrome extension that adds a button to the toolbar that reloads all unpacked extensions
welcome
. that how it is at first
Basically a requirement for any extension dev (vencord or otherwise
forgot to undo this and crashed myself smh
oh yeah where could I install this ext?
It's not published but if you're able you can build it from here #๐พ-core-development message
fire, ty
Horror webstorm/idea user for js
Using MessageDecoratior API i can get almost the same results without using any patches ( thanks theCodeToad )
But we are losing tags in replies like here
And bots are... ugh, should find a way to remove default one
...
@limber skiff screensharing seems to be broken on vesktop after updating btw
#๐ฅ-vencord-support-๐ฅ message
#๐ฅ-vencord-support-๐ฅ message
others can repo too
because it probably used Modals.ModalRoot instead of ModalRoot directly
did you remove the Modals export entirely
add back
so I made it use directly
lol
grr Vesktop
this should be changed
should leave it for a while not everyone updates vesktop
@jolly egret okay you can tell to update now
๐
How can i enable devcompanion on vesktop?
you enable it as normal
I can't inject into it
Oh wait- I did an admin install for all users
it's not in appdata is it
why is there a vesktop installation in my appdata...
ah there's a section for vesktop cool
ah
vtest patcher-rewrite
Now testing! 
None
None
None
None
None
None
None
None
vtest patcher-rewrite
Now testing! 
None
None
None
None
None
None
None
None
now it's fast again
lange rede kurzer sinn
It looks like i can't remove default tag without another patch, so what's the point of decorations if it still requires patching?
Also MessageDecorationProps.props.decorations seems to be undefined
when yall gonna push the nest tag, cause that feels like a good time to revert
our patches work on both get fucked
vtest strict-csp
Now testing! 
though a lot of people are complaining more than earlier maybe they changed something again
I wanna see if they pushed to stable
PermissionFreeWill (had no effect):
ID: 156699
Match: ```
/{(\i:function(){return \i},?){2}}/
**__ConsoleJanitor (had no effect):__**
ID: `173840`
Match: ```
/(?<=&&\()console.log\(`Deprecated.+?`\),/
ChatInputButtonAPI (had no effect):
ID: 258696
Match: ```
/return(!\i.\i&&(?=(\i.isDM.+?(\i).push(.{0,50}"gift")/
**__IgnoreActivities (had no effect):__**
ID: `293273`
Match: ```
/HANG_STATUS.+?(?=!\i\(\)\(\i,\i\)&&)(?<=(\i)\.push.+?)/
ShowTimeoutDuration (had no effect):
ID: 464891
Match: ```
/(\i).Tooltip,{(text:.{0,30}(?:.AeYyLy)))/
**__ShowHiddenChannels (had no effect):__**
ID: `557135`
Match: ```
/(?=&&\i\.\i\.selectVoiceChannel\((\i)\.id\))/
iLoveSpam (had no effect):
ID: 598077
Match: ```
/if((\i)<=(?:1<<30|1073741824))return/
**__MentionAvatars (had no effect):__**
ID: `644956`
Match: ```
/children:\[\i&&.{0,50}\.RoleDot.{0,300},\i(?=\])/
OpenInApp (had no effect):
ID: 952164
Match: ```
/!(0,\i.isDesktop)()/
**__BetterSettings (had no effect):__**
ID: `493544`
Match: ```
/\(0,\i\.useTransition\)\((\i)/
Settings (had no effect):
ID: 991346
Match: ```
/({(?=.+?function (\i).{0,160}(\i)=\i.useMemo.{0,140}return \i.useMemo(()=>\i(\3).+?function(){return )\2(?=})/
**__ShowHiddenChannels (had no effect):__**
ID: `473403`
Match: ```
/(?<=\.wrapper:\i\.notInteractive,)(.+?)if\((\i)\)return (\i\.MUTED);/
ShowHiddenChannels (had no effect):
ID: 473403
Match: ```
/.LOCKED;if((?<={channel:(\i).+?)/
**__BetterFolders (had no effect):__**
ID: `179809`
Match: ```
/(?<=(?:\.xV9hVl).+?useTransition\)\()/
ShowHiddenChannels (had no effect):
ID: 424785
Match: ```
/!(\i).isRoleSubscriptionTemplatePreviewChannel()/
**__ViewIcons (had no effect):__**
ID: `217314`
Match: ```
/.Avatar,.+?src:(.+?\))(?=[,}])/
ViewIcons (had no effect):
ID: 753898
Match: ```
/.Avatar,.+?src:(.+?))(?=[,}])/
**__ImplicitRelationships (had no effect):__**
ID: `270759`
Match: ```
/(\(0,\i\.jsx\)\(\i\.TabBar\.Item,\{id:\i\.\i)\.BLOCKED,className:([^\s]+?)\.item,children:\i\.\i\.string\(\i\.\i(?:\["4bDptL"\])\)\}\)/
CtrlEnterSend (found no module):
ID: -
Match: ```
.ENTER&&(!
**__FakeNitro (found no module):__**
ID: `-`
Match: ```
.PREMIUM_LOCKED;
MessageLogger (found no module):
ID: -
Match: ```
useMessageMenu:
waitFor("FormItem", "Button")
waitFor("MenuItem", "MenuSliderControl")
findByProps("ModalRoot", "ModalCloseButton")
findByProps("openModalLazy")
proxyLazyWebpack(()=>zr.openModalLazy...)
proxyLazyWebpack(()=>zr.openModal...)
proxyLazyWebpack(()=>zr.closeModal...)
proxyLazyWebpack(()=>zr.closeAllModals...)
findExportedComponent("BlobMask")
findByProps("useMessageMenu")
findComponentByCode("Button.Sizes.NONE,disabled:")
findExportedComponent("HiddenVisually")
find(e=>e.Types?.[0]==="BOT"...)
findExportedComponent("ColorPicker", "CustomColorPicker")
findByProps("useStatusFillColor", "StatusTypes")
findExportedComponent("Dots", "AnimatedDots")
findComponentByCode(".AvatarSizeSpecs[", "getAvatarURL")
None
None
PermissionFreeWill (had no effect):
ID: 156699
Match: ```
/{(\i:function(){return \i},?){2}}/
**__ConsoleJanitor (had no effect):__**
ID: `173840`
Match: ```
/(?<=&&\()console.log\(`Deprecated.+?`\),/
ChatInputButtonAPI (had no effect):
ID: 258696
Match: ```
/return(!\i.\i&&(?=(\i.isDM.+?(\i).push(.{0,50}"gift")/
**__IgnoreActivities (had no effect):__**
ID: `293273`
Match: ```
/HANG_STATUS.+?(?=!\i\(\)\(\i,\i\)&&)(?<=(\i)\.push.+?)/
ShowTimeoutDuration (had no effect):
ID: 464891
Match: ```
/(\i).Tooltip,{(text:.{0,30}(?:.AeYyLy)))/
**__ShowHiddenChannels (had no effect):__**
ID: `557135`
Match: ```
/(?=&&\i\.\i\.selectVoiceChannel\((\i)\.id\))/
iLoveSpam (had no effect):
ID: 598077
Match: ```
/if((\i)<=(?:1<<30|1073741824))return/
**__MentionAvatars (had no effect):__**
ID: `644956`
Match: ```
/children:\[\i&&.{0,50}\.RoleDot.{0,300},\i(?=\])/
OpenInApp (had no effect):
ID: 952164
Match: ```
/!(0,\i.isDesktop)()/
**__BetterSettings (had no effect):__**
ID: `493544`
Match: ```
/\(0,\i\.useTransition\)\((\i)/
Settings (had no effect):
ID: 991346
Match: ```
/({(?=.+?function (\i).{0,160}(\i)=\i.useMemo.{0,140}return \i.useMemo(()=>\i(\3).+?function(){return )\2(?=})/
**__ShowHiddenChannels (had no effect):__**
ID: `473403`
Match: ```
/(?<=\.wrapper:\i\.notInteractive,)(.+?)if\((\i)\)return (\i\.MUTED);/
ShowHiddenChannels (had no effect):
ID: 473403
Match: ```
/.LOCKED;if((?<={channel:(\i).+?)/
**__BetterFolders (had no effect):__**
ID: `179809`
Match: ```
/(?<=(?:\.xV9hVl).+?useTransition\)\()/
ShowHiddenChannels (had no effect):
ID: 424785
Match: ```
/!(\i).isRoleSubscriptionTemplatePreviewChannel()/
**__ViewIcons (had no effect):__**
ID: `217314`
Match: ```
/.Avatar,.+?src:(.+?\))(?=[,}])/
ViewIcons (had no effect):
ID: 753898
Match: ```
/.Avatar,.+?src:(.+?))(?=[,}])/
**__ImplicitRelationships (had no effect):__**
ID: `270759`
Match: ```
/(\(0,\i\.jsx\)\(\i\.TabBar\.Item,\{id:\i\.\i)\.BLOCKED,className:([^\s]+?)\.item,children:\i\.\i\.string\(\i\.\i(?:\["4bDptL"\])\)\}\)/
CtrlEnterSend (found no module):
ID: -
Match: ```
.ENTER&&(!
**__FakeNitro (found no module):__**
ID: `-`
Match: ```
.PREMIUM_LOCKED;
MessageLogger (found no module):
ID: -
Match: ```
useMessageMenu:
waitFor("FormItem", "Button")
waitFor("MenuItem", "MenuSliderControl")
findByProps("ModalRoot", "ModalCloseButton")
findByProps("openModalLazy")
proxyLazyWebpack(()=>zr.openModalLazy...)
proxyLazyWebpack(()=>zr.openModal...)
proxyLazyWebpack(()=>zr.closeModal...)
proxyLazyWebpack(()=>zr.closeAllModals...)
findExportedComponent("BlobMask")
findByProps("useMessageMenu")
findComponentByCode("Button.Sizes.NONE,disabled:")
findExportedComponent("HiddenVisually")
find(e=>e.Types?.[0]==="BOT"...)
findExportedComponent("ColorPicker", "CustomColorPicker")
findByProps("useStatusFillColor", "StatusTypes")
findExportedComponent("Dots", "AnimatedDots")
findComponentByCode(".AvatarSizeSpecs[", "getAvatarURL")
None
None
Now testing! 
None
None
None
None
makes sense
None
None
None
None
support channel isn't super insane right now but it is more chaotic than usual
Anyway, we should probably tag push because this is on stable
Did they push stable
yes
Were all the fixes pushed to main yet, or are they still on dev?
At least merge into main though?
combination of these and peoples themes breaking from class changes is really annoying now
lock support?
its so doomed
did discord do something weird with the css?
class changes
Looks like my Classify still works
Though its mappings are a bit outdated
we should push tag
yeah
i think we're fine but some people are complaining that theres no discord logo on the startup stuff lol
its just a black square
?
nvm its one guy but he whined about it like 5 different times so i thought it was different people
100% not a vencord issue though lol
it's his theme lol
they said without themes too but i guess this is why you can't trust users lol
I'm glad we made the choice to make a fix for the mangling this time lol
Now testing! 
None
None
None
None
None
None
None
None
the amount of times this has touched canary and been reverted the fact that it hit stable pretty much means its staying
i would be very surprised if they did lol
What are the chances the time you finally decide to make it work mangled is the time they keep the change
Pretty nice of them to tease that change in advance
didn't change anything teasing because we only did the fixes now
But you had time to prepare them before it hit stable, no?
lol im just imagining jason citroen telling discord devs they need to tease major changes for a few days for vencord to catch up
thanks @heady gyro
Is that the ceo of discord or something
:3
Based
Thanks for the merge!
there's actually one bug I noticed: for people who use the colour dot instead of role name (or use BetterRoleDot), the roledot has the wrong colour
I think I already said this on Discord (a year ago, when I initially created the branch lol), but I don't really see value in having the role dot on while having the plugin enabled. Really, I considered patching out the dot completely, but decided against it because it's an additional patch that requires work (lazy) a...
This is partially broken on latest client, just saying that I am aware.
Why not make 1 plugin that does a lot of shortcuts, and allows changing existing bindings, as this seems to have a very specific use case.
Discord Account
thecandle389
What happens when the bug or crash occurs?
The bug makes it so that the color of the themes doesn't load, but the font does and it makes it really really weird. It happened for the first time today. I think its something wrong with my client, but I have uninstalled and reinstalled discord multiple times, including upgrading vencord too.
What is the expected behaviour?
I open Discord. The theme then should load automatically.
How do you recre...
This is not a Vencord issue, and you didn't read the contributor agreement either.
Discord updated classes and therefore some themes broke, only the theme devs can fix this, we can't.
Oh shit my bad. I couldnt find the contributor agreement any where though
well i could do it if no one else is
Wow, this commit does a lot more than it says it does.
One of these things is replacing FNV with xxhash64. While xxhash64 is a great algorithm for some use cases, FNV is significantly faster for small data, like user IDs here. I wrote a benchmark, comparing my simple FNV implementation with the xxhash64 implementation from the xxhash-rust library. While the benchmark is in Rust (I do not know how to do anything in JS, like measuring time or even starting a new project), it should be a go...
we're talking thousands of elements in microseconds here, it really doesn't make a difference for us xD
I mean, sure, but why replace something more performant with something less performant?
less code = better
very little amount of elements and it's memoed too
@austere talon can u enable stars notifications for vencord again
LOL why
it was kinda nice seeing them and nowdays it's not as much as before
[Vendicated/Vencord] New star added
Also, JavaScript implementations are definitely slower than the Rust implementation, the difference can build up. Time spent on calculating colors can be better spent elsewhere (snappy rendering), or nowhere (battery life).
(edit)
it calculates it for maybe like 100 people buddy we're talking about a few milliseconds here at most
it makes no difference in the grand scheme of things
yes
fwiw it's probably faster than converting it to a BigInt and using the old algo
welp whatever
if the new thing is actually worse in usability / colours it generates then sure
but if it's just microperformance then it's kinda pointless and having less code is better
I would say performance over code size, but since I didn't actually benchmark the JS implementations then I guess my opinion doesn't matter
(I don't want to fight with JS again)
you need to realise that this function is 0.001% of the performance
I know
and the other percent are react bloat
this shouldn't matter as long as it has good distribution and this should be impossible to discern by a human for both algorithms
As far as I understand, this is a duplicate of #2061, though this implements jumbo emojis, while my thing purposefully doesn't (though I wanted to maybe make a toggle for that). It also does this very differently.
I don't have time to test this right now, but wouldn't this break the member list toggle?
Maybe this is desirable. That said, in that case the toggle has to be removed.
@austere talon it's impossible to webpack find the specific scrollers to monkey patch in better discord lol
nvm they can monkey patch the createScroller function
@fossil inlet, <t:1738104512:R>: fix port issue with rolling reporter
@RyfterWasTaken I personally haven't found any actions without keybinds that are as useful as the jump button- It would be really nice to have a plugin that changes arbitrary keybinds, but I would consider that worthy of a separate plugin altogether (if someone wants to make such a plugin, I would support it the whole way through!).
In addition, I don't necessarily think there's anything wrong with having extremely specific plugins- just look at AlwaysAnimate, AlwaysExpandRoles, BetterGifA...
another day another removed feature
hasnt it has zero rollout for a while now
i dont remember
yeah couple months
And I donโt think thatโs something anyoneโs gonna be missing anytime soon
Yeah turns out this is backwards, currently the code checked if it was in a private channel, which in servers is false, so it never shows up.
This is backwards to discords behaviour, and this change makes the dm toggle appear in servers (and not in dms instead).
so silly
apparently rebasing your commit using github doesn't sign it, dumb, it wiped my signature so i had to do it with git and force push it myself lol
None
None
None
None
AlwaysAnimate (had no effect):
ID: 276264
Match: ```
/(?<=.activityEmoji,.+?animate:)\i/
**__IgnoreActivities (had no effect):__**
ID: `293273`
Match: ```
/HANG_STATUS.+?(?=!?\i\(\)\(\i,\i\))(?<=(\i)\.push.+?)/
ImplicitRelationships (had no effect):
ID: 270759
Match: ```
/((0,\i.jsx)(\i.\i.Item,{id:\i.\i).BLOCKED,className:([^\s]+?).item,children:\i.\i.string(\i.\i(?:["4bDptL"]))})/
None
None
None
tbf its been gone feature wise for a while
should've expected it lol
I would be very happy to re-create (or reopen if I have permission) this PR when and if MoreUserTags is re-added, but at present since it has been removed I think I'll close this.
๐
Will there be an option to set tag colors as the guild member color (similar to #2161)? I personally think user tags are informative but very ugly when members' tags use the bot colors because it makes it harder to differentiate between priviliged members and bots at first glance.
cant be compatible with stable?
i think it can be
going to get the other 2 working on dev first, then ill do stable compat
ill take a look too
got always animate done
https://github.com/Vendicated/Vencord/pull/3181 i find it silly
wait how long was this broken anyway?
https://github.com/Vendicated/Vencord/pull/3104/files touched it last
git blame my beloved
I will push ignore activity fix to your pr
so basically changed it from in a guild to in a private channel incredible
thanks, was about to do it 
mistakes happen
both vee and nuckyz missed that
tbh its something i never would have noticed either
i wouldn't have either i'm shit with logic
god knows how i get anything working when i write code
@fossil inlet I will change this one
yea, i didnt know if that was a good thing to anchor it on
location is tracking and I dont like those to rely on those either
it's more unlikely to change than experiments but still ehh
ill remember that for next time
@limber skiff just realized my implicit relationship patch isnt good (can show with suggestions page (same thing but in stock discord))
and i dont think its possible to have stable compat for this patch
went from this
to this
i updated my implicit patch to resepct the suggestions page
wdym
most of them are keeping it up to date with mainline since it was never merged in almost a year
@rugged spire, <t:1738135243:R>: fix
honestly
// Sections header
{
find: "#{intl::FRIENDS_SECTION_ONLINE}",
replacement: {
match: /,{id:(\i\.\i)\.BLOCKED,show:.+?className:(\i\.item)/,
replace: (rest, relationShipTypes, className) => `,{id:${relationShipTypes}.IMPLICIT,show:true,className:${className},content:"Implicit"}${rest}`
}
},
should just do this @fossil inlet
but lets remove it from your pr
we push the other fixes to main
and wait for this one to reach canary
you mean reach stable, right
ya that
alr, ima run reporter on my branch rq
it doesn't really break that often so theres not really pressing the merge button
@fossil inlet is it good?
looks fine to me
vtest
Now testing! 
None
None
None
None
ImplicitRelationships (had no effect):
ID: 270759
Match: ```
/((0,\i.jsx)(\i.\i.Item,{id:\i.\i).BLOCKED,className:([^\s]+?).item,children:\i.\i.string(\i.\i(?:["4bDptL"]))})/
None
None
None
LMAO
Now testing! 
do you want credit for it?
idrc
alright
credit doesnt matter that much on small stuff for me
ImplicitRelationships (had no effect):
ID: 270759
Match: ```
/,{id:(\i.\i).BLOCKED,show:.+?className:(\i.item)/
None
None
None
None
None
None
None
Merge when it reaches stable
When are we adding patch versions so we don't have to wait for merges 
literally in this pr
lol
Vee should merge finally
Wrong channel smh
vee busy rn
8fccda4 WhoReacted, TypingIndicator: Fix triggering oth... - Sqaaakoi
@arutonee1 i'll do it then.
Instead of still checking for the extension this should just check if url.pathname ends with "gif". Take a look at isGifUrl from EmoteCloner
vtest
Now testing! 
None
None
None
None
ImplicitRelationships (had no effect):
ID: 270759
Match: ```
/((0,\i.jsx)(\i.\i.Item,{id:\i.\i).BLOCKED,className:([^\s]+?).item,children:\i.\i.string(\i.\i(?:["4bDptL"]))})/
None
None
None
i feel like it would make more sense for this plugin to be merged with revealAllSpoilers, they have a lot in common
vext
The Vencord Chrome Extension is out of date! (v1.11.2 vs v1.11.3)
discord update detector 
lol
yeah we can't open the support channel yet lol
i wonder if we have negetavie reviews on the extension yet
apparently not!
@austere talon is this your account ๐ญ
yeah that's them lmaoo
vee too bias, 5 stars smh
Vendy Machine
i have to comment this every time shit breaks
or 3 billion people comment BROKEN HELP SIRR
extention only popup that tells people shit is hroken
the issue with that, is that popups are broken on the extension
openModal and openModalLazy both fail to find
no like a page popup/notice
?remind tomorrow migrate from TS 4.9.5 to 5.7.x
Alright @fossil inlet, in 1 day: migrate from TS 4.9.5 to 5.7.x
can also be a popup directly from the extension itself
@austere talon vencord emergency alert system
WebSocket runs before vencord even starts
then you can broadcast announcements and code that will be evaled
horror
so that if wanted you can remotely disable broken things...
actual malware
Just put an array onto the website and fetch that on each load

Did anything happen to that one safe mode pr?
check global env in predicate
is there a way to get a user id from a user name
how would you get build from globalenv
nah u get channel
build is in plenty places
right here
thanks! very useful in patches
np
every single function name getting minified is acc so annoying
for spot-check datamining
@median rapids train an AI on discords code that demangles all of it
true
ts will be uninvented
i ate it
GUHHHHW AHT
NOW IT WORKS
thanks tsserver, very cool
Vencord Companion now working with the new arrow funcs
// @ts-ignore

i made this type to keep my util functions typesafe with inference
export type AssertedType<T extends Function, E = any> = T extends (
a: any
) => a is infer R ? R extends E ? R : never : never;
export type CBAssertion<U = undefined> = <
F extends (n: Node) => n is Node,
R extends Node = AssertedType<F, Node>,
>(
node: Node,
func: F extends (n: Node) => n is R ? F : never
) => R | U;
im not using ts-ignore unless i have to
@fossil inlet, <t:1737955097:R>: look into this
is it possible to check what percentage of users have an experiment
Will there be an option to set tag colors as the guild member color (similar to #2161)? I personally think user tags are informative but very ugly when members' tags use the bot colors because it makes it harder to differentiate between priviliged members and bots at first glance.
Your plugins add a bunch of new patches which caused this plugin to get deleted
I might try to recreate it using decorations, then they will be a lot more useful
I don't have time to test this right now, but wouldn't this break the member list toggle?
Maybe this is desirable. That said, in that case the toggle has to be removed.
Setting on:
Setting off:
i haven't touched your patch for member list, so yeah... it works as expected
I would love to hear answers to the following questions by someone (Vee or Nuckyz):
- Should data attributes be supported like in an original plugin?
- Tags inside of a profile require 3 patches ( for both bots and users ), which are going to be dependent on one another. Should I support it? If one of the patches breaks, default tag will be displayed ( none for users, app for bots )
- If adding a plugin idea from @OIRNOIR, it's probably to use DecorationsAPI, but will require a patch to remo...
A unified plugin to regroup most of the single use plugins, such as F8Break.
- Settings to change each plugin's keybind easily
- Easy to add a keybind, eg: Add this to the keybinds.tsx file.
restart: {
name: "Restart",
desc: "Restarts your discord client",
default: {
enabled: false,
key: "R",
ctrl: true,
shift: true,
alt: false,
},
action: () => {
relau...
I feel like this would be good as an API maybe

i wonder if discord has a shortcutsapi
okay it appears they do not
all of the shortcuts appear to be hard-coded
inject into that somehow
there is a central shortcuts system
This looks like a big collection of all the shortcuts, maybe you can add to that
o
you can customize some shortcuts, like overlay
they have one for keybinds
Take a look at KeybindsStore
for shortcuts its hardcoded
flux store has KEYBINDS_REGISTER_GLOBAL_KEYBIND_ACTIONS
which emits all keybinds when they are changed
okay okay i get it ๐ญ
vext
The Vencord Chrome Extension is up to date! (v1.11.3)
vtest
Now testing! 
None
None
None
None
MessageEventsAPI (had no effect):
ID: 287746
Match: ```
/({openWarningPopout:.{0,100}type:this.props.chatInputType.+?.then()(\i=>{.+?let (\i)=\i.\i.parse((\i),.+?let (\i)=\i.\i.getSendMessageOptions({.+?});)(?<=)(({.+?})).then.+?)/
**__ImplicitRelationships (had no effect):__**
ID: `270759`
Match: ```
/(\(0,\i\.jsx\)\(\i\.\i\.Item,\{id:\i\.\i)\.BLOCKED,className:([^\s]+?)\.item,children:\i\.\i\.string\(\i\.\i(?:\["4bDptL"\])\)\}\)/
None
None
None
that again
Love
vtest fix/implicit-realtionships
oop, that didn't go well ๐ฅ
vtest fix/implicit-relationships
Now testing! 
MessageEventsAPI (errored):
ID: 287746
Match: ```
/let (\i)=\i.\i.parse((\i),.+?let (\i)=\i.\i.getSendMessageOptions({.+?});(?<=)(({.+?})).then.+?)/
Error: ```
Unexpected identifier 'Vencord'
ImplicitRelationships (had no effect):
ID: 270759
Match: ```
/,{id:(\i.\i).BLOCKED,show:.+?className:(\i.item)/
None
None
None
None
None
None
None
Instead of still checking for the extension this should just check if url.pathname ends with "gif". Take a look at isGifUrl from EmoteCloner
I checked the contents of url.path and it was /emojis/996768598938882189.webp, in the function you mentioned it checks if it ends with .gif but it checks the path as well so there should be no issue with the method
240195f Bump to v1.11.3 - Vendicated
7d45862 Fix IgnoreActivities and AlwaysAnimate for cana... - sadan4
68662c9 QuickReply: Fix showing toggle mention in guild... - jamesbt365
8fccda4 WhoReacted, TypingIndicator: Fix triggering oth... - Sqaaakoi
e280ed2 Ignore more modules on webpack searching - Nuckyz
vtest dev2
Now testing! 
None
None
None
None
MessageEventsAPI (had no effect):
ID: 287746
Match: ```
/({openWarningPopout:.{0,100}type:this.props.chatInputType.+?.then()(\i=>{.+?let (\i)=\i.\i.parse((\i),.+?let (\i)=\i.\i.getSendMessageOptions({.+?});)(?<=)(({.+?})).then.+?)/
**__ImplicitRelationships (had no effect):__**
ID: `270759`
Match: ```
/(\(0,\i\.jsx\)\(\i\.\i\.Item,\{id:\i\.\i)\.BLOCKED,className:([^\s]+?)\.item,children:\i\.\i\.string\(\i\.\i(?:\["4bDptL"\])\)\}\)/
None
None
None
also
so many people are going to complain again once that hits stable
because it affects MessageEventsAPI, which affects FakeNitro
I should make it compatible with stable for a bit, and then once they push I remove the compatibility
just to try to avoid so many people complaining
vtest dev2
Now testing! 
None
None
None
None
ImplicitRelationships (had no effect):
ID: 270759
Match: ```
/((0,\i.jsx)(\i.\i.Item,{id:\i.\i).BLOCKED,className:([^\s]+?).item,children:\i.\i.string(\i.\i(?:["4bDptL"]))})/
None
None
None
okay nice
// FIXME: Simplify this change once all branches share the same code
why did I write change instead of patch lmao
whatever tho
@austere talon how did it work for MenuItemDemanglerAPI if apparently there's a fixme for dependencies of dependencies lol
was it just because of required: true
I rememember you mentioned ContextMenuAPI having MenuItemDemanglerAPI as dependency at one point
I have successfully ran into the most bullshit thing ever
like what ๐ญ
most useful error too
how does removing an unused line do that, whot he fuck knows
does it have side effects?
it works... absolutely fine with that one line there but its... unused
i have no idea what the fuck is going on
that line SINGLEHANDEDLY props up the entirety of vencord
This has been the most ass thing to debug and it comes down to THIS?
what the fuck do I do
Is the line being there causing an issue?
that const color line (one with the comment above it) prevents it from crashing, it works completely fine without it
what witchcraft is going on ๐ญ
yop
It was pain the ass
xxhash seems fast enough to be used without hashing
why does Vencord use eslint-plugin-simple-import-sort instead of eslint's built in import sorter? curious
so like... what do i do
how is the hook important here
maybe its doing some react hook black magic and it throws a tantrum when the function uses a different amount of hooks for different users
idk if that made sense but i know RN does that sometimes
// Calculate a CSS color string based on the user ID
function calculateNameColorForUser(id: string) {
const { lightness } = settings.use(["lightness"]);
const idHash = useMemo(() => h64(id), [id]);
return `hsl(${idHash % 360n}, 100%, ${lightness}%)`;
}
yeah useMemo
maybe it loads in user.colorString later?
causing it to:
first render - 0 hookk
2nd render - 1 hook
and die
whatever it is you can just tsx const color = calculateNameColorForUser(id); if (!context.color) return color
( @jolly egret )
love react
i don't even need the color variable at all
i'm adding a setting to only apply to people with no role colour
w/e i'll just refactor this so its called once at the start of the block and it'll basically be no different
Is useMemo really unessesery there?
I've removed it from my pr cause it was impossible to use RoleColorsEverywhere with it
xxhash can generate 1000 hashes in...
idk it was added some time after the plugin was merged so i'm just gonna leave it lol
I prefer murder
refactoring it to this... crashes!
so i basically have to call that calculatenamecolorforuser even if i'm not using it which is just silly
NOT DE2
de2
๐ฅ
wake up, germany 2 just dropped
Also, when trying to benchmark xxhash i've got the same error: my numbers were well... numbers
Try converting it to a string
nop, just got wiped off
I fixed the hook issue
@limber skiff
my mistake for not realizing when I did it
the badge isnt showing up anymore, probably a complication with css, idk if you know how to fix but maybe i can help?
why was it impossible?
surely if i rebase this... j ust works
I've changed getColorString in RoleColorsEverywhere and well... I've to make a check if IrcColors are enabled which already breaks rule of hooks
Like this
Wait a minute, i can try running it with ?
WebpackModule995340:2 Error: Rendered fewer hooks than expected. This may be caused by an accidental early return statement.
๐ญ
this is stupid lol
did it not work?
LMAO IT WORKS
anyone smart with hooks to figure out why
conditional hook
sometimes it runs
sometimes it's not
either remove hooks or calculate color and then check if you should use it
you need to run calculate before any return
AAAAAAAAAAAAA
couldnt that if statment just be
if (settings.store.onlyApplyToColoredUsers && context.author.colorString) return context.author.colorStringg
pretty sure yeah but i don't really flatten if statements until i'm sure it works because then if it doesn't or i want to change something i have to reverse it and its ass
fuck hooks but i guess i learnt something
irccolors is neat in dms but idk if i want it in servers, its nice to know when somebody is a whitename
should i add a setting to that too?
i see usecase for myself, so surely somebody else would too
whitename discrimination in vencord ๐ญ
||tbh i like that idea||
guess i'll throw another setting in there
Imagine being a whitename 
being able to distinguish whitenames is important for me as a moderator of 2 massive servers that tend to have abnormal levels of trolling 
but at the same time... irccolors in dms is like... fire so these settings are great
just a few 
more plugins please ๐

do not the equicord
horror
A friend has mentioned submitting my plugins to equicord a couple of times because they get accepted quicker but I just don't want to lol
I just don't want to lol
dont worry, they'll do it for you
customtimestamps pr when 
My plugins just got copied there 
at least they've left me as an author
lmao
back when samwich still made plugins they copied all of theirs without asking 
I forgot about that tbh, might have to add a few people as devs as it's from someone else adding to an old PR and then me adding to that lol
i've took a look at it last week and they use old ass version
also i haven't checked did discord nuke it
horror
if i had plugins not merged into vencord and some client mod dev pulled my plugins into their client mod without asking I would be pretty pissed off lol
My pr is still opened and i have in in #1256395889354997771 so i don't really care
Like it just allows more people to use it
nop, works fine
because they literally don't review lol
equicord prs are like Add #xxxx from Vencord
and it's just added
Yeah I figured
god knows how anything works over there
I don't have the energy to be involved in two things at once
i won't use it because chances are they'll merge malware one day
and i like faster upstream support if something breaks & i don't need half the shit they add lol
Content
Hi Vencord Team,
I've noticed that the MoreUserTags feature is no longer available in Vencord. This was a really useful feature for displaying additional user tags in the UI, and its removal has negatively impacted my experience.
Iโd love to see this feature added back or an alternative provided. Could you share any insights into why it was removed? Was it due to a Discord update, technical issues, or something else?
Request Agreement
- [x] I have read the requirements fo...
ceba9776c4be12288dbf618b5bc36e0e41d3f70f
sanest vencord issue
the good ending
how many times does discord update canary damn
could be wrong but iirc ive seen >100 in a day before
@hexed cloak
most dont break things
Itโs not a good record, but usually itโs just small stuff here and there
oooo that's cool
Plus, Iโm like 90% sure that theyโre not actually the ones pushing to Canary and that they have some kind of bot that does it automatically
So they're pushing automatically when something changes?
well somewhat automatically
that's crazy
but why update so frequently, can't they test it out a bit first
they test it out in canary i suppose
who needs a user environment when they can just push updates like crazy
also I noticed that after updating they completely change the app folder which also changes the app.asar installed by vencord, how do you guys stay on top of that? is the updater itself inside of the old version that downloads a newer version and runs that?
ye
Ah, that's cool
yeah, itโs apparently I think 90% of what discord employees use. And theyโll even tell you that it shouldnโt be used by the average person.
I see a lot of discord's code is just out there, but google says that it's not opensource
I see
i think it's closer to 100% lol
pretty sure they have some requirement to use it
It might honestly beโฆ I do know discord development is pretty much abandoned now.
discord is closed source, however some of the things they use are open source (see discord-intl)
I tried running it and i had 0 luck
yeah?
meant to reply to Emmet
interesting but you know how it's closed-source, is the .asar file considered closed source?
yup
discord is hosted on gh itself btw
oh
discord/discord exists
meant to reply to 708275751816003615
factually correct info
because because other than that there's just the discord executable
which i don't know if it does much for the client
and the update.exe
bruh
i've done the same things so often
when discord propose you to PR to upstream instead of to origin
im sorry github wants us to merge with vencord so bad ๐ญ
I swear why dont they push stable today
ยฏ_(ใ)_/ยฏ
tbf it's their right to do that
lol
cant blame em
keep it private if u dont want people to copy
just remove fork status
make a new repo
would delete their issues
and its also sams right to be mad/annoyed
tbf they're all 7 hours old basically
fair



