#πΎ-core-development
1 messages Β· Page 108 of 1
Yes you already told me that
But how do you expect me to help if I don't know what code you are using?
You pinged me with an issue
My bad then, I am blind
okay tiem to uninstall kde again
This works very well, thank you for making it! Is there anything else that needs to be done for this to be ready? I noticed there's a lot of CSS styles specified in the script, are all of those necessary for Discord's embed?
@topaz thistle the instructions seem wrong
the install script does not build a .node addon for me
really strange
based on the workflow that should be right
oh i got it, you also need to run pnpm cpcmds
link() takes the name? if so, what's the point of even having ids?
i should probably put these on the pr
following the README instructions does not build the addon. I also had to first run pnpm cpcmds. that script should probably be called inside the install script or the README should be updated
link() seems to take the name as argument. if this is the case, why does .list() even give you ids?
maybe it would be better to use a random port like 7591 so that people can just use the default port with very low chances of conflicts
is it currently possible to use the entire system audio? if no, that would be a nice addition
Plugin to allow users to define rules for playing audio when text/messages are sent.
MoreUserTags (had no effect):
ID: 609853
Match: /children:\[(?=\i,\(0,\i\.jsx\)\("span",{className:\i\(\)\.botText,children:(\i)}\)\])/
IgnoreActivities (had no effect):
ID: 238852
Match: /(?<=\(\)\.activityTitleText.+?children:(\i)\.name.*?}\),)/
IgnoreActivities (had no effect):
ID: 238852
Match: /(?<=\(\)\.activityCardDetails.+?children:(\i\.application)\.name.*?}\),)/
MoreUserTags (found no module):
ID: -
Match: .renderBot=function(){
None
font-weight: bold;
color: purple;
resetSocketOnError ReferenceError: Cannot access 'Sye' before initialization
at Module.default (WebpackModule158583:2:50)
at VencordWeb:13:748
at Kf (VencordWeb:6:10726)
at VencordWeb:6:10823
at [vencord.lazy.get] (VencordWeb:6:8193)
at ms.<computed> [as get] (VencordWeb:6:8667)
at Object.handleProtoChange (VencordWeb:49:50890)
at CONNECTION_OPEN (WebpackModule473419:2:5861)
at https://discord.com/assets/675ae39865fd3f811445.js:12291:975
at https://discord.com/assets/675ae39865fd3f811445.js:12281:847
%c[FetchBlockedDomain]
font-weight: bold;
color: purple;
Unable to process domain list delta: Client revision number is null
%c[FetchBlockedDomain]
font-weight: bold;
color: purple;
Downloading the full bad domains file ```
MoreUserTags (had no effect):
ID: 609853
Match: /children:\[(?=\i,\(0,\i\.jsx\)\("span",{className:\i\(\)\.botText,children:(\i)}\)\])/
IgnoreActivities (had no effect):
ID: 238852
Match: /(?<=\(\)\.activityTitleText.+?children:(\i)\.name.*?}\),)/
IgnoreActivities (had no effect):
ID: 238852
Match: /(?<=\(\)\.activityCardDetails.+?children:(\i\.application)\.name.*?}\),)/
MoreUserTags (found no module):
ID: -
Match: .renderBot=function(){
None
font-weight: bold;
color: purple;
resetSocketOnError ReferenceError: Cannot access 'Sye' before initialization
at Module.default (WebpackModule327755:2:50)
at VencordWeb:13:748
at Kf (VencordWeb:6:10726)
at VencordWeb:6:10823
at [vencord.lazy.get] (VencordWeb:6:8193)
at ms.<computed> [as get] (VencordWeb:6:8667)
at Object.handleProtoChange (VencordWeb:49:50890)
at CONNECTION_OPEN (WebpackModule473419:2:5861)
at https://canary.discord.com/assets/6450a8359308948cabef.js:12295:975
at https://canary.discord.com/assets/6450a8359308948cabef.js:12285:847
%c[FetchBlockedDomain]
font-weight: bold;
color: purple;
Unable to process domain list delta: Client revision number is null
%c[FetchBlockedDomain]
font-weight: bold;
color: purple;
Downloading the full bad domains file ```
now migrated to curve's addon. if you would like to test this, clone and build his fork https://github.com/Curve/linux-virtmic/ in the same directory your Vesktop clone is in. see my note on compiling
I migrated the vesktop pr https://github.com/Vencord/Vesktop/pull/130 to use your library and it works for me
one small issue is that it shows undesirable sources, perhaps it might be possible to hide these?
@austere talon i don't feel like looking into vencord internals, how does cloud work? is only stuff saved with datastore backed up or is it just indexeddb
oh okay
thats the entire point of storing credentials not in settings
sure
so it's not synced, which is especially important when people share configs (which they do a lot)
got it
you dont wanna know how many "i gave my friend my settings json now he has my reviewdb account" support requests we got
i didn't look into rvdb's storage reasoning too much, i kinda assumed settigns api wasnt capable of handling it or smt
its pretty simple:
- small json serialisable data synced: settings
- large data, data that shouldn't be synced, or non json serialisable like maps/set: datastore
buh vee why is my replacement complaining about unexpected .
wait
nop still mad
{
find: "'partialize'",
replacement: {
match: /.=function\(.,.\){return/,
replace: "$self.zustandPersist=$&"
}
}
is there reasons for plugins to use datastore? is it just a convenient wrapper around indexeddb or something more?
yes
interesting
Do plugins have to use it? I'm not opposed to it but I'm trying out zustand persist (backed with indexeddb) and it's able to just work directly with indexeddb
why are u wanting to add so many dependencies
if every plugin did that our bundle would explode
That's the patch I'm trying to write rn
flux, zustand, zustand-persist
honestly i would try to avoid relying on that cause it seems like smth they might just remove one day cause its not really needed for them
but eh its whatever
They are crazy
its okay to use that, but make sure it doesnt conflict with discord stuff
i'd like to try zustand persist real quick but if not i can easily replace it with homegrown solution
I need to get this patch working tho
and i am totally lost
anyway sorry for misunderstanding
no problem i get it
i've only added zustand as dev dep and that can be removed once plugin is finished if it matters
(for types)
It happened to me too π€ β οΈ
do u think u could help me with this patch that wont fucking work 
@austere talon aha they probably wont remove it they use it themselves
(persist)
surprisingly
I'm so confused is \i special in vencord
how the fuck are 2 of my patches working if it's just a escaped char
guhhhhhh
it matches identifiers :P
yes its our own regex extension
vee how would u do this one
dunno im eepy
you want d right
yop
findByCode("'partialize'")
inchrest
LMAO that was easy wtf
thanks vee 
i wonder if the other one is exported
it was
It's not that I didn't
Remember I'm coming from mobile modding and have never modded pre-swc
i thought the classic way of finding was dead
naaah lol
the only time u need patch is if its not exported
which is extremely rare
bro π
i think there are only 2 instances of that in vencord
oh the other one isn't
you already use wpex(s) right
// Obtain CustomizationSection component
{
find: "e.titleIcon",
replacement: {
match: /function (\i)\(\i\){var \i,\i=\i\.title/,
replace: "$self.CustomizationSection=$1;$&"
}
},
this one isn't
occasionally
okay so
you can use wreq(id) to import a module by id
so you can check what exports it has
and then write ur filter with that
if the exports are not enough to find it, we have mapMangledModule which lets u first find a module by its source code (like the find in patches), then match the exports

interesting
ull figure rest out
thank u vee
mapMangledModule is such a lifesaver
this looks kinda dangerous, if it ever matches the wrong thing a crash is very likely. maybe make it slightly more specific
stop disableStyle in stop (i know stop currently isnt used for plugins with patches but still)
Run autofix to sort these imports!
moment
is this good or bs
i have no idea
oh god they actually used my re func https://github.com/Vendicated/Vencord/pull/1784/files
matching first group is not necessary here. you can use our lookbehind track to capture $2:
match: /.," \u2014 ",.\](?<=function \i\((\i)\)some signature at func start.+?)/,
or maybe just arguments[0]?
remove this and instead use isDisabled or whatever the property is called to automatically disable this option fi the other is disabled
slightly prettier would be:
replace: "$&...$self.getExtraProps()"
and getExtraProps returns object
uhhh my pnpm test explod
i just installed the app and when i launch it this error appears.
Im using w8.1 if thats the problem (which at this point it wouldnt surprise me)
rm -rf node_modules
pnpm install
windows 8 is not supported. upgrade to 10 or higher
alr, thanks for the quick response
yes
lol
they look too small with this change. the previous one was exactly fitted to discord's dimensions
guhh they have a old zustand version and it serializes bc it was built for sessionstorage and localstorage at that point
what's the point of matching so much here if you're not gonna do anything with it? you can heavily simply this patch.
for example:
match: /=(\i)\.renderBottomLeftControls,/,
replace: "=($self.enableStreamPiP($1),$1.renderBottomLeftControls),"
i didn't test it, but it probably works
please use newlines
also don't have { code like this }
926af0d feat(VcNarrator): add {{DISPLAY_NAME}} as pla... - Marocco2
IgnoreActivities (had no effect):
ID: 37478
Match: /(?<=\(\)\.activityTitleText.+?children:(\i)\.name.*?}\),)/
None
font-weight: bold;
color: purple;
resetSocketOnError ReferenceError: Cannot access 'Sye' before initialization
at Module.default (WebpackModule158583:2:50)
at VencordWeb:13:748
at Yf (VencordWeb:6:10726)
at VencordWeb:6:10823
at [vencord.lazy.get] (VencordWeb:6:8193)
at ms.<computed> [as get] (VencordWeb:6:8667)
at Object.handleProtoChange (VencordWeb:49:50890)
at CONNECTION_OPEN (WebpackModule473419:2:5861)
at https://discord.com/assets/675ae39865fd3f811445.js:12291:975
at https://discord.com/assets/675ae39865fd3f811445.js:12281:847
%c[FetchBlockedDomain]
font-weight: bold;
color: purple;
Unable to process domain list delta: Client revision number is null
%c[FetchBlockedDomain]
font-weight: bold;
color: purple;
Downloading the full bad domains file ```
IgnoreActivities (had no effect):
ID: 37478
Match: /(?<=\(\)\.activityTitleText.+?children:(\i)\.name.*?}\),)/
None
font-weight: bold;
color: purple;
resetSocketOnError ReferenceError: Cannot access 'Tye' before initialization
at Module.default (WebpackModule327755:2:50)
at VencordWeb:13:748
at Yf (VencordWeb:6:10726)
at VencordWeb:6:10823
at [vencord.lazy.get] (VencordWeb:6:8193)
at ms.<computed> [as get] (VencordWeb:6:8667)
at Object.handleProtoChange (VencordWeb:49:50890)
at CONNECTION_OPEN (WebpackModule473419:2:5861)
at https://canary.discord.com/assets/3950eaa843062682ee76.js:12296:975
at https://canary.discord.com/assets/3950eaa843062682ee76.js:12286:847
%c[FetchBlockedDomain]
font-weight: bold;
color: purple;
Unable to process domain list delta: Client revision number is null
%c[FetchBlockedDomain]
font-weight: bold;
color: purple;
Downloading the full bad domains file ```
c445c61 MacOs: properly request microphone and camera p... - X1nto
this is still absolute insanity
someone proposed this a while back, why not use it?
function resolveColor(color: string) {
const span = document.createElement("span")
span.style.color = color;
document.body.append(span)
const rgbColor = getComputedStyle(span).color;
span.remove();
return rgbColor;
}
wait what
discord has zustand???
yeah
WHERe
i made a budget zustand cus i didnt think they did π
ooo so fire
works great too https://github.com/FieryFlames/Vencord/blob/decor/src/plugins/decor/lib/stores/AuthorizationStore.tsx
i just realized that doesn't need to be tsx anymore oops
it doesn't matter tbh
discord names all their files .tsx even if they don't contain any jsx
meh
it's kinda smart cause that means u don't have to rename files to add jsx
meh i renamed it anyways
is esbuild updated in vencord yet
π π π π π π π π π π π π π π π π π π π π
π π π π π π π π π π π π π π π π
π π π π π π π π π π π π π π π π π π π π π π π π π π π π π π π
vban vapper spam
Gimme some users silly
sorry internet lagged
lmao
current esbuild version doesnt support
ts 5.0+ syntax
i think
im trynna use
const type param
you will fix conflicts
and test
then we merge soon
maybe tmrw
tbh i kinda forgot prs on codeburger existed
I should look at them again
@olive aurora ππ
soon
@spark cove sad not all of zustand is included
i wonder if the piece i want got removed from mobile too
that'd be really shit
f
all i really needed personally was this functionality
function createExternalStore<S>(init: () => S) {
const subscribers = new Set<() => void>();
let state = init();
return {
get: () => state,
set: (newStateGetter: (oldState: S) => S) => {
state = newStateGetter(state);
for (const cb of subscribers) cb();
},
use: () => {
return React.useSyncExternalStore<S>(onStoreChange => {
subscribers.add(onStoreChange);
return () => subscribers.delete(onStoreChange);
}, () => state);
},
subscribe: (cb: () => void) => {
subscribers.add(cb);
return () => subscribers.delete(cb);
},
} as const;
}
I've got a store that handles the user's decorations and selecting the active one uses subscribeWithSelector
the subscription manages saving the selection to the server with a debounce
meh it's fine
it was small and it gave me nice typings
on second thought I only "needed" that for mobile and i could probably do away with it there too
subscribeWithSelector
yop
lemme look
i couldn't find it
i mean docs
cus i never used
o
I used it for this https://github.com/Fierdetta/decor/blob/main/src/ui/stores/UserDecorationsStore.ts#L49C20-L60
the code is pretty small i could probably just add it
but honestly
i don't need it for desktop
just read what zustand is and i think web development is a failure
The way I was using it was so that the user could go into the plugin settings, select a different decoration, and just leave
but desktop i will just have a save button
LOL
yea true
Is it possible to use discord's styles? I need to recreate a component (and probably a few more) as the module it's in is lazy loaded
I doubt I can require the module
nvm i got it
i lied but i might have a better solution
Only for ide support
Firefox recreates the node everytime so I decided to go for Names instead halfway through, good catch will remove IDs from the returned nodes
This is where the module gets required, could i patch this somehow to require it all the time (or when I need it)
following the README instructions does not build the addon. I also had to first run
pnpm cpcmds. that script should probably be called inside the install script or the README should be updatedlink() seems to take the name as argument. if this is the case, why does .list() even give you ids?
cpcmds only creates the compile commands for ide auto completion, it is not needed. The workflows also do not use it.
I migrated the vesktop pr https://github.com/Vencord/Vesktop/pull/130 to use your library and it works for me
one small issue is that it shows undesirable sources, perhaps it might be possible to hide these?
Yes, I'll only show sources with application names
is it currently possible to use the entire system audio? if no, that would be a nice addition
Yep, will add
If you share the whole desktop audio on windows, every applications audio except discords will be shared right?
Or wait
Windows doesn't event Support that right
i did it but i think my regex is a bit big and can probably be trimmed
hehe
I noticed the terminal method of installing vencord is gone from the how to install thingy. Is there a reason for that or just forgor
well, the terminal method just uses the GUI...
is it really a terminal method anymore?
@quaint sapphire does vencord have anything like old mod's magic require
magic require?
is that a better discord thing?
are you talking about finding webpack modules?
i have no idea what magic require was but i was talking to a friend about this and they were wondering if vencord has smth like that bc this seems unorthodox
to be clear I seem to have overengineered loading a module that has shit i want
(Also finding out now my patch somehow breaks the original functionality but)
eh, a small patch like that aint a biggy
it just seems unorthodox
and also breaks the bit it patches somehow which is the bigger concern
uhh, how does it break it? is it a name conflict or smth?
the modal no longer opens
you can actually get the module directly w/o patches, as it is exported
lemme write the snippet
errr
My issue is the module isn't loaded
this patches something to extract the code that loads the module
i mean i can try it but
but what?
How is it going to work if the module isn't loaded..
it loads the module...
but won't it load all the modules?
no?
then how does it find it lol
doesn't it need the modules to inspect them and find the right bit
yeah it doesn't work
all modules are loaded, just not executed
Vencord.Webpack.wreq(Vencord.Webpack.findModuleId(".decorationGridItem"))
...it doesn't have props tho
are you suree all modules are loaded bc i can't find .decorationGridItem with devtools search until i open the change decoration modal, which seems to fetch another js file??
I want module 489030
does that even exist?
(click change decoration in profile settings)
huh, thats true
if you can determine the ID, you can use Vencord.Webpack.wreq.e(id) to force load it
Ok
this snippet loads all webpack modules (taken from scripts/generateReport.ts)
const ids = Function("return" + wreq.u.toString().match(/\{.+\}/s)![0])();
for (const id in ids) {
const isWasm = await fetch(wreq.p + wreq.u(id))
.then(r => r.text())
.then(t => t.includes(".module.wasm") || !t.includes("(this.webpackChunkdiscord_app=this.webpackChunkdiscord_app||[]).push"));
if (!isWasm)
await wreq.e(id as any);
await new Promise(r => setTimeout(r, 150)); }
although thats not what you want to do
just wanted to give the source of my info
I know where the 2 ids are, but how can i get them from the module?
I don't need to patch just regex them
is that possible
if there are other modules that contain those IDs, then you may be able to do it
oh yeah, should be easy
I already have the regex to extract the promise.all
give it
{
find: "isTryItOutFlow;",
replacement: {
match: /var \i=function\(\i\){.+(Promise.all.+?\\))/,
replace: ";$self.requireDecorationModules=()=>($1);$&"
},
}
this is the patch that somehow breaks opening that modal
(Vencord.Webpack.findByCode('.isTryItOutFlow;')+"").match(/(Promise.all.+?\])/)?.[1]
make sure that it is lazily executed
Cool, I got it going
requireDecorationModules() {
const modules = findByCode("isTryItOutFlow;").toString().match(/(Promise.all.+?\])/)?.[1].matchAll(/[0-9]+/g);
for (const module of modules) {
wreq.e(module[0]);
}
}
There seems to be a problem when there are multiple outputs by the same application but other than that it works fine for me
this wasn't quite it but i got it going in the end we are so back
ayy
@Vendicated I've made some changes, the JS-Module now only exports a class audio which will throw on construction in case the pipewire server couldn't be reached.
Also, the objects returned by list now include a property speaker, which if true corresponds to "All Desktop Audio"
wouldn't it be better to have a unified plugin and backend for nitro profile features at this point
be careful
you are treading on dangerous grounds
you want to combine multiple projects into one?
do you realise how many more "support" requests that would generate?
imagine #π₯-vencord-support-π₯ but 4 times worse
LOL i think it'd be ok
virus
the problem is vencord will end up with many different plugins with a different ux and process
Time to make
jk
But hm avatar decord userpfp
What else
It would make other plugins useless so automaticly bad idea
?
vencord comes with all the plugins so having multiple inconsistent plugins to achieve part of the same goal is weird
and USRBG is kind of weird fetching things from a github repo
There seems to be a problem when there are multiple outputs by the same application but other than that it works fine for me
Oh, good catch, will return a set instead of vector
there should be a plugin that lets you type tone tags without slash commands getting in the way π
tone tags?
no it's still not out
it only shows if you enable the experiment
oh yeah it also crashes on mobile 
? it's not
omg i borkee mobile support I didnt realise
We have a thing for that
Something like waitFor
LOL that's funny
@austere talon what's the way
to you want to share audio of Firefox , Firefox, Firefox or Firefox Firefox Firefox Firefox
Within https://vencord.dev/download/, there's no mention of the method of installing it via a command
Which is what I meant sorry
@austere talon did u add whole desktop audio sharing
actually nvm
that would share discord audio too 
everyday I wonder if I can change bitrate of discord screenshare
?
not when set up well
cuz the way it works it adds everything to a sink
and captures that
so
No thats not what I mean
for linux?
that was removed and instead replaced with manual cli usage
Ah 
because most people who need to the script are windows 7 and on win7 iwr won't work
so the launcher script doesn't work either on win7
the powershell script is still there so you can still use it
invoke web request?
Yeah
oh yeah win 7 has an ancient powershell version
meanwhile win 10 ships with curl
We just use it since it feels faster
ancient powershell either doesn't have iwr or doesn't properly support the new ssl standard
So was surprised to see it gone
prob both
More likely SSL
you can use C# apis from powershell, so it should be possible to migrate to that
Wait nope
Windows 7 doesn't have iwr, that was in 3.0 which it has 2.0
Interesting
Add-Type -AssemblyName System.Net.Http;
Write-Host "Downloading VencordInstaller.exe ...\n";
$uri = "https://github.com/Vencord/Installer/releases/latest/download/VencordInstaller.exe";
[System.Net.Http.HttpClient]::new().GetByteArrayAsync("https://github.com/Vencord/Installer/releases/latest/download/VencordInstaller.exe").Result | Set-Content -Path "VencordInstaller.exe" -Encoding Byte;
this is the powershell code to download the exe w/o iwr 
@gaunt grail can you test on windows 7?
Oh im on windows 11
?
We use the funny powershell command on windows 11
oooooh
Yeah
and you have the old version?
Old version?
powershell legacy
No
what was this talk about windows 7?
The reason for why it was there in the first place I think
oooh
well, if anyone can test this on win 7, we might be able to have a one-liner install script for windows 7 as well then
nope
just manually download and run it's easy
gave as alternative to iwr
it is mad crazy that you can use C# classes from powershell tho
you could even make the vencord gui installer with just powershell, by using winforms
This is an interesting idea. I'll spin up a win7 VM and give it a go
would be cool if it would boot...
not me, linux user all the way
yeah doesn't work, at least not with the version of powershell it ships with. Though this might be a .net thing also.
oh well
what if you install the .net runtime?
3.5 or smth
most windows 7 users install it anyways, it is as good as builtin
no you actually explod
fug
try it and find out
you exploded
lmao its a joke name
I fucked around and found out :)
the lore behind the channel is that i was developing VCNarrator which is like teamspeak narrator
Lmfao
"curve joined your channel"
"curve moved to exploders"
"curve moved to if you talk you explod like its a really massive explosion you really dont want to explod here so do"
someone made that the channel name to troll me
it uses your system narrator so it's a bit meh at times but it's super convenient when you're not focused on discord so you immediately know who joined without checking
especially for gaming
π
are you gayming
I suppose I could
Only way I could get this to work under Windows 7 is with the following.
Update the certificate store
https://support.microsoft.com/en-us/topic/support-for-urgent-trusted-root-updates-for-windows-root-certificate-program-in-windows-a4ac4d6c-7c62-3b6e-dfd2-377982bf3ea5
Install .net 4.8 (certificate store update required)
https://dotnet.microsoft.com/en-us/download/dotnet-framework/net48
Install WMF 5.1 (this updates powershell, it won't work under 2.0 which Win7 ships with)
https://www.microsoft.com/en-us/download/details.aspx?id=54616
(The zip contains a ps1 script to run, I am unsure if the msu will work.
Powershell -noprofile -executionpolicy bypass -file .\Install-WMF5.1.ps1 )
hmm, it would be cool to have a plugin that uses a browser extension and rpc to jump to messages (the same way invites work)
i wonder how possible that is
and it would mean having to get another extension on stores 
or maybe have a vencord plugin on the browser side which sends the message
maybe not, i don't think that'd be possible without more extension-side stuff
LOL
how many voices are there π
why did noone ever tell me this
WHY ARE THERE 13K VOICES
WHAT THE FUCK
can you run speechSynthesis.getVoices()
how many does it give u
13k too?
omg
new Set(speechSynthesis.getVoices().map(v => v.name))
oh my god
π
what are they cooking
who needs this many voices
That sounds like it just waits for a module to be loaded.. I need to make sure it's loaded
u need to manually load it asap?
what for out of curiousity
It has components I want to use, and the module might not be loaded by the time I want to use them, so I need to load it when I need it
oh i see
yea i think the best way would be a patch that finds the module id and just uses webpack require
might not be loaded
are you sure?
if you say might that sounds like you just think that
i think they mean its possible to trigger their ui before causing the chunk to load
Yes
The chunk is only loaded when discord's decoration change modal is opened
and the user might not have gone there before using decor (especially if they're not a nitro user etc)
but i was using the file chooser from the guild sticker uploader
actually might not even need a patch really
i mean it shouldn't be too hard with vencord's api
I got it working it just needs cleaning up
.
Alternatively we could replace n with wreq and eval it?
yeah I'm pretty much recreating their promise.all but with wreq instead of what is probably wreq but with a different name
it doesnt seem like thats an alternative it seems like thats what ur already doing tho
i think thats probably the best way to do it
altho u should be awaiting it lol
if the code changes it could break ez
If the .then changes to load two modules
it'd only load one
unless that shouldn't happen?
i'd imagine they'd be in the same chunk anyways
yeah okay it's not a issue thenn
n is wreq yeah
idk why it's always called n
I was just recreating exactly what discord did xd
the first part consisting of n.e calls loads chunks by their id
the second part in the .then then requires modules from those chunks
you only need to load the chunks, then you can just require them
yeah and that function requires the module as it should
well not really ur not using the value
I'm not using the val no
but I have a patch that patches the module to get something from it
(and will prolly have more)
oh are exports not initialized on chunk load
i thought they were but i dont actually know
im checking rn
and i noticed ur regex is pulling the module ids as well as the chunk ids
should prob make it /(Promise.all.+?\]\))/
so it doesnt try to require a non-existent chunk
oh

scary
yeah
it could totally be done better
fine rq i will test if i really need to require it ok
i do
yeah
no worries not really annoyed
idm feedback this is my first serious vencord plugin and it's a relatively big one
ah oki i just misread
I need to figure out how to use masonrylist now 
btw
its always called n cus all the minified webpack vars have hardcoded names
they dont really change between releases
Whenever I restart the App, I get muted for some reason and always have to unmute myself again
now that i think about it, isnt replugged compat possible (or atleast more feasable than bd)
bc of the patch system
This may be related to spotify
I do not use Spotify, could it be some other program that I'm using?
it's a web thing
probably
I mean replugged uses the same patching system as bd
you could make a "replugged" type alias in tsconfig and write a somewhat compliant api
i thought it had webpack patches like we do ?
SIKE
wait not sike
massive
mmm can that close buton get its ass back over to the right side
hmm does discord have a new set of modal components?
noticing that mine is less rounded
maybe the modals got so big they rounded them more
the properties yes, because they're manually minified in source code, but not the variables itself
ive noticed these fairly consistent variable names a lot
props is 90% of the time called e, react r, and a few more
- are there even any relevant replugged plugins
- why would we do that
- i don't want to endorse replugged in any way if fifi is one of the admins there
is 3 bc of that twitter shit u were sent
yeah
yea actually real sike
i wonder why tho
horror blob
so bad
did yall see new profile effects?
wrong
yes
nop not rn
8,50$ is a scam
i will scam you
@shy veldt reverse engineer profile effects for future decor feature
but.. but i did already
,.,.,
ur working on it on ur own, that's cool
i need to know how the shit works before i make it work
so when the client starts they send a request to /user-profile-effects which then takes the configs and yeah
it takes the positions and stuff (math so hard)
sounds husk ill look into it ig
and in user_profile in /profile ep it has profile_effect: {id: "id"}
the client looks up the id from the request before that it saved
and takes the effect from it
{
"type": 1,
"id": "1139323075519852625",
"title": "Hydro Blast",
"description": "Time to make a splash.",
"accessibilityLabel": "Spinning splash of water hurling towards its target, Animated",
"animationType": 2,
"thumbnailPreviewSrc": "https://cdn.discordapp.com/assets/profile_effects/effects/b17d139f2e9/splash/thumbnail.png",
"reducedMotionSrc": "https://cdn.discordapp.com/assets/profile_effects/effects/b17d139f2e9/splash/reducedMotion.png",
"effects": [
{
"src": "https://cdn.discordapp.com/assets/profile_effects/effects/b17d139f2e9/splash/intro.png",
"loop": false,
"height": 880,
"duration": 2880,
"start": 0,
"loopDelay": 0,
"position": {
"x": 0,
"y": 0
},
"zIndex": 100
},
{
"src": "https://cdn.discordapp.com/assets/profile_effects/effects/b17d139f2e9/splash/loop.png",
"loop": true,
"height": 880,
"duration": 2880,
"start": 5760,
"loopDelay": 5760,
"position": {
"x": 0,
"y": 0
},
"zIndex": 100
}
]
}
you love the big horror
and ofc its apngs
i love apngs
so you'd need to patch getUserProfile or patch USER_PROFILE_FETCH_SUCCESS dispatch
ig
or something
yea getUserProfile
2 days ago accessibilityLabel was just "aria label goes here"

lmaoo
rna try to play a video challenge (impossible)
lol
yo kinda real
There's only a few things left
yes
hot selection
would use
real real
good stuff
I need to do:
- pretty grid of decorations like normal decorations ui
- make it more like normal decoration ui
- create decoration modal
- PresetStore + show presets in UI
- somehow properly show that the decoration changed? fluxdispatcher isn't working
- not vencord but fix and improve vendetta plugin
- improve review bot to allow banning users from requesting
- move to timezonedb-style fetching (how do i do this on mobile)
select: async (decoration: Decoration | null) => {
if (get().selectedDecoration === decoration) return;
set({ selectedDecoration: decoration });
setUserDecoration(decoration);
const user = UserStore.getCurrentUser() as any;
user.avatarDecoration = decoration ? { asset: decorationToString(decoration), skuId: SKU_ID } : null;
user.avatarDecorationData = user.avatarDecoration;
FluxDispatcher.dispatch({ type: "USER_UPDATE", user });
},
it doesn't seem to reflect the updated decoration in the app
user_update π
clearly patch gateway:clueless:
Im pretty sure there's a separate event for current user
oh bruh
search for CURRENT_USER_UPDATE
ok 1s
idk if there actually is lol
gonna add more to the todo
hop on async select() {}
yop
yeah
wdym
select func is in my zustand store
export const useUserDecorationsStore = proxyLazy(() => create<UserDecorationsState>((set, get) => ({
decorations: [],
selectedDecoration: null,
fetch: async () => set({ decorations: await getUserDecorations(), selectedDecoration: await getUserDecoration() }),
create: async (newDecoration: NewDecoration) => {
const decoration = (await setUserDecoration(newDecoration)) as Decoration;
set({ decorations: [...get().decorations, decoration] });
},
delete: async (decoration: Decoration | string) => {
const hash = typeof decoration === "object" ? decoration.hash : decoration;
await deleteDecoration(hash);
const { selectedDecoration, decorations } = get();
const newState = {
decorations: decorations.filter(d => d.hash !== hash),
selectedDecoration: selectedDecoration?.hash === hash ? null : selectedDecoration
};
set(newState);
},
select: async (decoration: Decoration | null) => {
if (get().selectedDecoration === decoration) return;
set({ selectedDecoration: decoration });
setUserDecoration(decoration);
const user = UserStore.getCurrentUser() as any;
user.avatarDecoration = decoration ? { asset: decorationToString(decoration), skuId: SKU_ID } : null;
user.avatarDecorationData = user.avatarDecoration;
FluxDispatcher.dispatch({ type: "USER_UPDATE", user });
},
clear: () => set({ decorations: [], selectedDecoration: null })
})));
i dont think i can do async select here can i?
ok w/ current user update it seems to work
w
oh hm
i guess i can
there
yw
so cool
thank uu
π
can this be disabled with css or is this something you'd need a plugin for
this looks like it'd be really distracting
discord is probably doing some software rendering, right?
it's very laggy
nvm, it looks more like they did it with css because f8 keeps the animation
protip they dont animate with reduced motion on
hmm... maybe there could bve ModularReducedMotions
They're APNGs
oh guh
how come it doesn't loop while pasued
this i looking fire
how the FUCK does masonrylist work
wtf free masonry??
{{NICKNAME}} is placeholder for user's guild_member.nick object if it exists, otherwise it defaults to username.
Hopefully it should compile first try
i hate masonrylist
i just got ratelimited by cf again
π
ohm y godd
why are you not just looking at what the normal one does and copying it smh
if not just exporting it
that's what im doing
and im struggling
where
compare the two in react devtools and see if theres something structurally missing?
i think im just missing styles
Someone make a plugin to see when someone was last online
I've been trying to figure out the styles for my modal for a few hours now and just can't get it to line up like Discord's decoration modal. Any help would be appreciated: https://github.com/Vendicated/Vencord/blob/cd6d4e4f972516575c03eb32690b103a8601fbf4/src/plugins/decor/ui/modals/ChangeDecorationModal.tsx
Looks neat
they recently removed the (unused) api field that would let you do this effectively
Anyone know why vencord refuses to load when using 3rd party plugins now? It was working perfectly fine a few hours ago and then some update came I guess and the only way for vencord to load is when there are only the original plugins. I dont think there are any bugs in the plugins since there are no errors when its built
figure it out yourself
HELL YEAH
cant find the 3rd patch and i dont see it causes anything so ig it can be removed
that patch is really bad no wonder it broke again
why does it even match so much
if it just puts it right back and doesn't use anything
ImageZoom (had no effect):
ID: 159689
Match: /(render=function\(\){.{1,500}limitResponsiveWidth.{1,600})onMouseEnter:/
IgnoreActivities (had no effect):
ID: 37478
Match: /(?<=\(\)\.activityTitleText.+?children:(\i)\.name.*?}\),)/
None
font-weight: bold;
color: purple;
resetSocketOnError ReferenceError: Cannot access 'Aye' before initialization
at Module.default (WebpackModule327755:2:50)
at VencordWeb:13:748
at Yf (VencordWeb:6:10726)
at VencordWeb:6:10823
at [vencord.lazy.get] (VencordWeb:6:8193)
at ms.<computed> [as get] (VencordWeb:6:8667)
at Object.handleProtoChange (VencordWeb:49:50890)
at CONNECTION_OPEN (WebpackModule473419:2:5861)
at https://discord.com/assets/269f1522ef537311f6f8.js:12309:324
at https://discord.com/assets/269f1522ef537311f6f8.js:12299:299
%c[FetchBlockedDomain]
font-weight: bold;
color: purple;
Unable to process domain list delta: Client revision number is null
%c[FetchBlockedDomain]
font-weight: bold;
color: purple;
Downloading the full bad domains file ```
ImageZoom (had no effect):
ID: 159689
Match: /(render=function\(\){.{1,500}limitResponsiveWidth.{1,600})onMouseEnter:/
IgnoreActivities (had no effect):
ID: 37478
Match: /(?<=\(\)\.activityTitleText.+?children:(\i)\.name.*?}\),)/
None
font-weight: bold;
color: purple;
resetSocketOnError ReferenceError: Cannot access 'Aye' before initialization
at Module.default (WebpackModule327755:2:50)
at VencordWeb:13:748
at Yf (VencordWeb:6:10726)
at VencordWeb:6:10823
at [vencord.lazy.get] (VencordWeb:6:8193)
at ms.<computed> [as get] (VencordWeb:6:8667)
at Object.handleProtoChange (VencordWeb:49:50890)
at CONNECTION_OPEN (WebpackModule473419:2:5861)
at https://canary.discord.com/assets/7b0ea235358ddfa742d6.js:12309:324
at https://canary.discord.com/assets/7b0ea235358ddfa742d6.js:12299:299
%c[FetchBlockedDomain]
font-weight: bold;
color: purple;
Unable to process domain list delta: Client revision number is null
%c[FetchBlockedDomain]
font-weight: bold;
color: purple;
Downloading the full bad domains file ```
Use Ctrl+Enter to send messages. The actual behavior can be customized.
@cunning canyon can u rewrite the patch to be better
ok
le spam
now its too unspecific
use either mediaLayoutType or showThumbhashPlaceholder as anchor
actually yeah just
match: "showThumbhashPlaceholder:",
replace: "...$self.makeProps(),$&"
ah
fun
did CURRENT_USER_UPDATE end up working?
yeah but only once u hover over the pfp
i bet there's a diff dispatch
but.. mehhhhh
yeah meh
you'd have to add another patch
that's not a problem 
5 patches 7 replaces
i'm quite good at them now if i do say so myself
i did not test this code 
hehe
wait it causes crash lol
got the new item icon to fuck off now i need to get the lock to fuck off
unlucky
ah makeProps(this)
guh wrong branch
we are so very back
0d93e08 arrpc: migrate from websocket + plugin to elect... - Vendicated
ready? @cunning canyon
yes
it is not loaded when i test it in vscode or something
so i thought it doesnt exist anymore
but then it works
storing the plugin in a variable is ugly. just make the functions you need global functions so you don't need to use the plugin object
do not eval user input, that's a terrible terrible terrible idea
so not useless?
yes
wtf π
it is not loaded when i test it in vscode or something
lazy loaded
return <Icon color={`var(--${getStatusColor(status)}`} tooltip={tooltip} addSize={!large ? 0 : 3} />;
weird prop name. you could just name it large like below and make it a boolean, that way the consumer doesn't even have to know about the pixels to add
so... i need to post image in readme issue and make a readme before i know if the plugin is acceptable or not ? π€
@austere talon icons on desktop how do they work?
bro really hit me with the google search
true..
what is that sentence π
ok let me rephrase
oh ok
because finding svgs from webpack isnt very robust since most of them are wrapped
and it's easier to just copy paste since they're usually small
the shop one might be more complex so it might be better to webpack search it
yeah
i need a different one for that which is gonna be fun to find
nit: classes should be PascalCase in js
export class Audio
lmao
link(target: string, mode: "include" | "exclude"): boolean;

create could be the remix svg
send
ehhh
following the README instructions does not build the addon. I also had to first run
pnpm cpcmds. that script should probably be called inside the install script or the README should be updated
link() seems to take the name as argument. if this is the case, why does .list() even give you ids?cpcmds only creates the compile commands for ide auto completion, it is not needed. The workflows also do not use it.
yep, i just confirmed this was just happening because of non clea...
sure, where is this
if you would like to push this package to npm, it would probably be best to add it to our org. i dont exactly know how npm orgs work but i'll just invite you tmrw (or whenever)
"name": "@vencord/venmic",
yeah remix isn't a thing on desktop π
pnpm install already runs the install script so this is redundant
pnpm install
ima just find a diff icon
other than the requested changes, it seems good now from my side
so unless you still want to make any changes, we can merge this and start battle testing it
i wanna make readme creation a community project
good opportunity for people who don't know how to code to contribute to vencord and make their first git(hub) experience maybe
Avoided storing the plugin in a variable in 95f8513.
OK. I don't want to implement an AST parser, so I just sacrificed some customizability. This should still be useful enough, however.
yeah that's way better, thanks
@austere talon how much of a problem is https://github.com/Vendicated/Vencord/actions/runs/6503442348/job/17663918555#step:6:1
damn typings
uh
From allowJs to useDefineForClassFields the TSConfig reference includes information about all of the active compiler flags setting up a TypeScript project.
try this option
but optimally that error shouldnt happen
why is zustand borked
duh
amazing question
for role coloreverywhere can the top role colour be the chat text colour ππ»
i had a fucking heart attack i incorrectly rebased and thought i lost all the plugin code
@austere talon it isn't running pr tests anymore for some reason
lewi tried it but still a draft
i changed target to dev bc i saw u merging into that not main
oh okay
letting the days go by
have you looked at show hidden channels source code
i have not
I have no idea if they're efficient
I hope they are
wouldn't mind someone looking over them
the console logs how long they took to finish
oh huh
depending on how much you match most take like 1ms
but if you match a lot some take like 50ms
hm i don't see the any logs?
nvm
i filtered the wrong thing
lmao yeah ok we're fine
oh some of those aren't mine
yeah they are totally fine
@spark cove would u happen to still have the code to get the sticker upload file input it is actually very pretty
insane gif π
plugin?
not out yet
okay ty
This should stay include exclude as it describes the behavior more precisely.
Output isn't clear, and doesn't properly describe what's happening

Just waiting for vap to lmk if they have the fancy file input I want still or if I have to get that myself
what plugin is it from
what
the file input
U did a great job with the ui
Fiery can I ask you something?
it's used in the guild sticker create menu, but it's chunk is only loaded when opening that menu
wat
Is it possible I mean teorethicaly to merge plugins into one?
iβm assuming all of fake nitro
um i mean yes
Also vendetta ones ?
yes but why would you, you'd just be copying code from one plugin into the other making a frankenstein of a plugin
Thatβs the point fake nitro should become a community plug-in that integrates all the other plugins that give nitro perks
Like usrpfp and usrbg now decor
decor is too big to be part of another plugin and i don't really want it to be
Imma try to do it when Iβm home , it will be fun to see how unoptimized it can be
plus decorations and profile effects aren't nitro only and decor isn't going to allow reuploading official decorations discord sells
Kk, no issue
I think usrbg has the same policy as well as custom badges
Sorry for the ping idk what happened to disable ping response plug-in
idm but combining the 3 server-backed plugins into a fakenitro plugin would just be unreasonable, they'll be easier to maintain seperate among other things. maybe unlocker plugins like freemoji, stickers that type but not decor, usrbg and usrpfp
Well I think ur right
Day 87 of waiting for a plugin review
this is what discord seems to be using
The create Sticker modal has a fancy one I'd like to use









