#๐พ-core-development
1 messages ยท Page 240 of 1
simple enough
I need to mark a function as pure for esbuild to exclude, right?
thats enough i think
i think thats what is also used in patch helper
to only bundle diff with dev builds
if IS_DEV is false, it will remove the call
yeah
no need to mark as pure
and is removing the call enough to strip the function definition?
alr
odd example but this is what pure does
it's about function calls
better example
in the first example it can't remove the findStore() because the findStore function might have a side effect
in the second example we tell it the call is pure (aka has no side effects) so it can safely remove it
dont think so lol
it resets on every find
anyway im gonna finish my thing
alr
vtest patcher-rewrite
Now testing! 
im lazy to make vencord print out the build hash
honestly we should make venbot print it out lmaoo cause this might get the wrong hash if discord pushes update that very second
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#{intl::BLOCKED})})/
**__NotificationVolume (found no module):__**
ID: `-`
Match: ```
_ensureAudio(){
RoleColorEverywhere (found no module):
ID: -
Match: ```
renderPrioritySpeaker(){
waitForComponent((m) => {
let inner = m;
while (inner != null) {
if (filter(inner))
return true;
...)
findByCode("APPLICATION_RPC(", "Client ID")
extractAndLoadChunks([".COLLECTIBLES_SHOP_FULLSCREEN&&"], /(?:(?:Promise\.all\(\[)?(\i\.e\("?[^)]+?"?\)[^\]]*?)(?:\]\))?|Promise\.resolve\(\))\.then\(\i\.bind\(\i,"?([^)]+?)"?\)\)/)
None
None
hmm
outdated
yeah
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#{intl::BLOCKED})})/
**__NotificationVolume (found no module):__**
ID: `-`
Match: ```
_ensureAudio(){
RoleColorEverywhere (found no module):
ID: -
Match: ```
renderPrioritySpeaker(){
waitForComponent((m) => {
let inner = m;
while (inner != null) {
if (filter(inner))
return true;
...)
findByCode("APPLICATION_RPC(", "Client ID")
extractAndLoadChunks([".COLLECTIBLES_SHOP_FULLSCREEN&&"], /(?:(?:Promise\.all\(\[)?(\i\.e\("?[^)]+?"?\)[^\]]*?)(?:\]\))?|Promise\.resolve\(\))\.then\(\i\.bind\(\i,"?([^)]+?)"?\)\)/)
None
None
Now testing! 
lets see
fc4e958 Fix ImplicitRelationships and NotificationsVolu... - Nuckyz
7b9f0a3 IrcColors: Allow coloring only users with no co... - jamesbt365
4f5ebec FullUserInChatbox: Fix empty mention when user ... - Nuckyz
6cccb54 Fix lag caused by poorly written CSS rules (#3198) - Vendicated
ae98cfb Wrap decorators in flex with gap to avoid addin... - Nuckyz
RoleColorEverywhere (found no module):
ID: -
Match: ```
renderPrioritySpeaker(){
None
None
None
0905131 reporter: add webhook workflow input for venbot - Vendicated
oh yeah I definitely messed up something
RoleColorEverywhere (found no module):
ID: -
Match: ```
renderPrioritySpeaker(){
None
None
None
oh god we really gotta update esbuild
vtest patcher-rewrite
Now testing! 
RoleColorEverywhere (found no module):
ID: -
Match: ```
renderPrioritySpeaker(){
extractAndLoadChunks([".COLLECTIBLES_SHOP_FULLSCREEN&&"], /(?:(?:Promise\.all\(\[)?(\i\.e\("?[^)]+?"?\)[^\]]*?)(?:\]\))?|Promise\.resolve\(\))\.then\(\i\.bind\(\i,"?([^)]+?)"?\)\)/)
None
None
RoleColorEverywhere (found no module):
ID: -
Match: ```
renderPrioritySpeaker(){
extractAndLoadChunks([".COLLECTIBLES_SHOP_FULLSCREEN&&"], /(?:(?:Promise\.all\(\[)?(\i\.e\("?[^)]+?"?\)[^\]]*?)(?:\]\))?|Promise\.resolve\(\))\.then\(\i\.bind\(\i,"?([^)]+?)"?\)\)/)
None
None
i'll have to test this in a fork
so annoying
how is it 2025 and we still have no good way to test workflows
ahhh
RoleColorEverywhere (found no module):
ID: -
Match: ```
renderPrioritySpeaker(){
None
None
None
RoleColorEverywhere (found no module):
ID: -
Match: ```
renderPrioritySpeaker(){
None
None
None
rightttt!
not all the times we need to load lazy chunks
sometimes we only need to require a lazy module
which means this is just wrong
Could the hash not just be added to the webhook name same as the current (Canary)?
Not that it matters much
vtest patcher-rewrite
Now testing! 
RoleColorEverywhere (found no module):
ID: -
Match: ```
renderPrioritySpeaker(){
None
None
None
RoleColorEverywhere (found no module):
ID: -
Match: ```
renderPrioritySpeaker(){
None
None
None
now this
once the venbot thing works fine we can make reporter not run daily anymore
venbot will run it whenever there's a new update
neatt
there will be two channels
one has just two messages with the up to date reports for stable and canary (venbot will always edit the message)
the other is a full log that logs all pushes and reports for that push
that's why I need this
I will make it post to https://venbot.vencord.dev/reporter-webhook?hash=HASH
@limber skiff i added support for escaping \i
- const canonSource = partialCanon.replaceAll("\\i", String.raw`(?:[A-Za-z_$][\w$]*)`);
+ const canonSource = partialCanon.replaceAll(/(\\*)\\i/g, (_, leadingEscapes) => leadingEscapes.length % 2 === 0 ? `${leadingEscapes}${String.raw`(?:[A-Za-z_$][\w$]*)`}` : _);
not sure if thats the best way to do it
Type '{ (this: any, module: Module, exports: any, require: AnyWebpackRequire): any; toString: (() => string) & (() => string); [SYM_ORIGINAL_FACTORY]: AnyModuleFactory; [SYM_PATCHED_SOURCE]: string; [SYM_PATCHED_BY]: Set<...>; }' is not assignable to type 'WrappedModuleFactory'.
Type '{ (this: any, module: Module, exports: any, require: AnyWebpackRequire): any; toString: (() => string) & (() => string); [SYM_ORIGINAL_FACTORY]: AnyModuleFactory; [SYM_PATCHED_SOURCE]: string; [SYM_PATCHED_BY]: Set<...>; }' is not assignable to type '{ [x: number]: string | Set<string> | undefined; }'.
Index signature for type 'number' is missing in type '{ (this: any, module: Module, exports: any, require: AnyWebpackRequire): any; toString: (() => string) & (() => string); [SYM_ORIGINAL_FACTORY]: AnyModuleFactory; [SYM_PATCHED_SOURCE]: string; [SYM_PATCHED_BY]: Set<...>; }'.ts(2322)
typescript errors are so well made
i cant tell if you're joking, but i think they're pretty good

(accidentally)
but yeah now we have this
I might also add a helper funtion to get the patched source and patched by for any factory
so instead of .$$vencordPatchedSource [SYM_PATCHED_SOURCE]
especially when you install the pretty typescript errors extension
that makes them not minified
@Vendicated
I have tested with discord snowflakes and they work fine in almost all languages, but when testing with languages like Chinese, the translator would add random numbers to the snowflake or translate them, for example.
I tried sending 100 messages and on two occasions, the Chinese translator added a 9 to the end of the snowflake making it unrecognisable or edited a number.
:
ID: -
Match: ```
renderPrioritySpeaker(){
None
None
None
this should work
@fossil inlet lots of things for you

should these be threads?
ig
if the patched by is separate, why include the comment
Reporter Status
because I hope javascript will be smart, and these two strings will share the same reference
using less memory
Reporter Log
okay I just need console shortcuts for this stuff now
breaking changes for companion fork & plugin
guhhhh istg when will vscode fix the regression in js-debug where it hangs for 5s then fails to parse names from source maps
istg im going to fix it myself soon if they dont do it
vtest patcher-rewrite
Now testing! 
this is good
yes but theo isnt
but from experience if u have a ts error its too big to actually fit on your screen
RoleColorEverywhere (found no module):
ID: -
Match: ```
renderPrioritySpeaker(){
None
None
None
is this actually good?
ye
RoleColorEverywhere (found no module):
ID: -
Match: ```
renderPrioritySpeaker(){
None
None
None
fastify is so ugly for some reason
is this worse
nah its pretty much the same
alright I'm done
vtest patcher-rewrite
Now testing! 
This plugin jumps into the channels that contains new messages, if your discord is not focused.
Convenient for people, that have Discord on second monitor and still want to read all the messages.
Plugin contains whitelist and blacklist for certain servers and channels.
find: ".usernameSpeaking]:",
match: /\.usernameSpeaking\]:.+?,(?=children)(?<=guildId:(\i),.+?user:(\i).+?)/,
replace: "$&style:$self.getColorStyle($2.id,$1),"
@fossil inlet can you also test if it works lol
nrn, i can in an hour or two
i finished cooking venbot autoreporter
it should work but I need to test on production LOL
actually i can use ngrok to test locally ig
I'll do it myself then, dont worry
moment of truth
Webhook failed with status 404
GUHH
I cant describe how good this technique is
this is so annoying to test cause I have to wait for reporter to finish ๐ญ
if it works venbot will post in #1337479880849362994
vtest dev
Now testing! 
merging dev into main
after that we should wait some days cuz this patcher-rewrite branch is pretty scary
None
None
None
None
ya
this is so huge it worked first try
i literally wrote code, tested and it immediately works
love my life
None
None
None
None
have fun
pretty simple surprisingly
so how is this going to be?
reporter log will have all
reporter status will have persistent?
alright
niceee
might as well add ptb too
they are actually doing Canary -> PTB -> Stable now
before they were pushing PTB at the same time as Canary
vtest reporter-webhook-option stable
Now testing! 
Now testing! 
RoleColorEverywhere (found no module):
ID: -
Match: ```
renderPrioritySpeaker(){
None
None
None
RoleColorEverywhere (found no module):
ID: -
Match: ```
renderPrioritySpeaker(){
None
None
None
HUH
oh
nvm makes sense
actually no, live venbot should have tested both branches
rce broken 
discord died for like 3 mins, happen for anyone else or just me
@austere talon may you review the changes to patch webpack again once you can, and then we can merge
is it because I removed if: success() || failure()?
ya
do I seriously need ```yml
if: ${{ (success() || failure()) && (github.event_name == 'schedule' || ...) }}
we should just do this ig
or always use 0 exit status
since the job didn't really fail
it's just that vencord is partially broken
i deployed btw
ofc now they stop pushing
wait a bit cuz the workflow is slow sometimes (now in particular)
anyway let's see if it's actually this
vtest reporter-webhook-option
Now testing! 
None
None
None
None
None
None
None
None
yeah can u push a breaking change to discord rq
nah I might as well do this instead
do not open the last commit
WHAT DID YOU DO
lmaoo
(running reporter on dev2 wont work)
i will just revert the RCE fix
to test
Now testing! 
RoleColorEverywhere (found no module):
ID: -
Match: ```
renderPrioritySpeaker(){
None
None
None
just try the continue on error
that will make the entire job succeed tho
so it's the same as changing to 0 exit status
ayy it works #1337479880849362994 #1337479816240431115
(stable being blank is expected)
vtest reporter-webhook-option
Now testing! 
RoleColorEverywhere (found no module):
ID: -
Match: ```
renderPrioritySpeaker(){
None
None
None
RoleColorEverywhere (found no module):
ID: -
Match: ```
renderPrioritySpeaker(){
None
None
None
yeah that fixed it
so weird
so failure() isn't a simple boolean
it has side effect
I wish they would run concurrently
can we do that
not sure
well
you can't have parallel steps
but we can have parallel jobs
but then we have to do a lot of work twice
or run the scripts in the background, concurrently
just do it locally
all you need is docker and act (https://nektosact.com/)
and if you use vs code, there's integration
https://sanjulaganepola.github.io/github-local-actions-docs/
what about using upload and download artifact ?
still takes time for the stuff to start, but can be easier than managing stuff running in background manually
also if not suitable make sure to bump https://github.com/orgs/community/discussions/14484 so GH notice
nuckyz gone rogue
Vencord Eol confirmed
evil nuckyz is real
6ca8521 run stable and canary concurrently - Vendicated
a877f2f but don't overwrite step summary trolley - Vendicated
vtest reporter-webhook-option
Now testing! 
RoleColorEverywhere (found no module):
ID: -
Match: ```
renderPrioritySpeaker(){
None
None
None
RoleColorEverywhere (found no module):
ID: -
Match: ```
renderPrioritySpeaker(){
None
None
None
but now the order isn't guaranteed
it could post canary first then stable
and the logs here are mixed up
doesnt really matter but still
it's fine
vtest reporter-webhook-option stable
Now testing! 
also wanna test with just one
RoleColorEverywhere (found no module):
ID: -
Match: ```
renderPrioritySpeaker(){
None
None
None
pog
let's merge this now and then you can merge it into your pr and change it from hash to id
seems easiest
what's this for? would be good to add a short comment explaining why we ignore this so we can understand & know if we still need this in the future
what's allWebpackInstances? why are there multiple? normal and sentry?
@limber skiff
so it's only one?
looping adds performance overhead probably
and this confuses me
assuming there are multiple, why would we want to define it on all instances?
we would be putting all modules from the first instance onto the second, etc
we should only define it on the owner instance
when there were multiple there were duplicate modules
and as said patched are only executed once
could especially be bad if both instances have the same id on different modules
we needed the patched module in all of them
I dont think so honestly
it wasn't like there
i think we should just remove the multiple instances stuff
i don't think discord ever had multiple instances besides sentry
and sentry was different
sentry was still duplicated modules
and caused issues
in fact, that was needed to work
modules would get patched into the sentry one and not the main one
with this new approach
also this is still the case actually
the sentry webpack instance has dup modules too
btw we could also consider applying all patches immediately and only then evaling
assuming everything works, it will work fine and probably be faster and use less memory
same ids
do that first and if it errors, do it again patch by patch
hm yes
instead of
apply patch 1
eval
apply patch 2
eval
apply patch 3
apply patch 1
apply patch 2
apply patch 3
eval
we just take a different approach now
then if the eval at the end errors we can backtrack and do the individual approach
anyway we should do that in a different pr
we can do a bit less checks by also caching this:
const shouldCheckBuildId = !Settings.eagerPatches && buildNumber !== -1;
if (shouldCheckBuildId && (...))
looks good now tho
I added it so long ago
see this is why you add a comemnt for stuff like that lmaoooo
lmaooo
what do u think?
idk if js keeps the old code
yeah that's surely smarter
const code1 = doReplacement(code);
const module1 = eval(code1);
const code2 = doReplacement(code1);
const module2 = eval(code2);
will js forever store code1 and module1 somewhere
probably not
but still
(pseudo code and assumed that code will go out of scope)
v8 at least, idk about jsc
if there are scope changes such as
function doTest1(){
const code1 = doReplacement(code);
const module1 = eval(code1);
}
doTest1()
then ofc it will free on next gc
once the scope closes
if it references OUT of scope, it will likely leak until that scope also closes
you lack a lot of context so this is pointless
nothing to argue, if anything is getting the hash but that I will change after
let me test 3157
doesnt really matter which one we merge first
just fix that one nit i commented and if u can remember what that ignore was for add a comment
besides that looks good to go if tests look good
hmm actually
i think it's because of the canonicalise change
yeah but we can't just make this change
need to make a vesktop update
and i just did recently
yeah this is bad lol
you can check if patch.plugin === "Vesktop" and only do it then
but also keep in addPatch
and add a TODO comment to remove it
oh smart
but
make sure that double canoncalise doesn't break it
so we can have a smooth transition when vesktop does switch to addPatch
nah if I add the check for .plugin === "Vesktop" it wont be double
oh right
im doing it rn
but like I said we will have to make a Vesktop update first for people to get this
yeah works
epic lint fail
ugh
wait what's the issue then?
the issue is that \i isnt converted
shared.ts: Lines 19-27
for (const patch of patches as Patch[]) {
if (!Array.isArray(patch.replacement)) patch.replacement = [patch.replacement];
for (const r of patch.replacement) {
if (typeof r.replace === "string") r.replace = r.replace.replaceAll("$self", "VCDP");
}
patch.plugin = "Vesktop";
Vencord.Plugins.patches.push(patch);
}
// TODO: remove once Vesktop has been updated to use addPatch
if (patch.plugin === "Vesktop") {
f75003c Update src/webpack/patchWebpack.ts - Vendicated
u should install this lmaooo
how did you write this so many times and not notice the typo
is it as bad as the one in jetbrains ides
it works on Vesktop both with and without this change https://github.com/Vencord/Vesktop/commit/68930a1f505a12e76ceeb0671e3973cdd7f81a92
ready to merge? @limber skiff
yea
e8639e2 Rewrite WebpackPatcher to support new features ... - Nuckyz
your branch looks good to me too
once we merge it I will change the hash and build number stuff
ya
alright
wtf is happening
oh
ancient web build
why does it give -1
i added it here
i will see
return typeof buildNumber === "number" ? buildNumber : -1;
i think it's a string not number
wreq is undefined then
ye
[Reporter-Meta] catch TypeError: Cannot read properties of undefined (reading 'm')
at findModuleId2 (VencordWeb:1769:32)
at VencordWeb:1322:22
at VencordWeb:38082:28
at VencordWeb:866:18
at patchFactory (VencordWeb:37969:27)
at wrapAndPatchFactory (VencordWeb:37864:56)
at Function.set (VencordWeb:38138:93)
at https://discord.com/assets/web.a22924a2aed1de53.js:12:12597853
at https://discord.com/assets/web.a22924a2aed1de53.js:12:12642882
the code that sets wreq runs after it tries patching for the first time
ah yeah makes sense
this should start working whenever it's fixed
there
pull that commit
and it should work now
but yeah dont run it too early lol
yeah that's why I put it after this
ye, and now it shouldnt try to cache it early in reporter
LOL
vtest reporter-webhook-option stable
Now testing! 
brb adding pnpm prefix to venbot
None
None
None
None
make reporter say if its canary or stable in the logs for the workflow maybe?
wdym
ohhh
like in all log messages?
these?
either that or we can delay them
so we can print in order
runStable 2> /tmp/stable-stderr
runCanary 2> /tmp/canary-stderr
echo "Stable" >&2
cat /tmp/stable-stderr >&2
echo "\nCanary" >&2
cat /tmp/canary-stderr >&2
this will print like this:
Stable
-- logs of stable here --
Canary
-- logs of canary here --
but it will delay all logs until the reporter has exited
so we can't see while it's still running or if it never finishes
did they randomly break it then unbreak again
nooo vee
took 3.4ms
that means the JavaScript engine just decided that one run of the patch was gonna be slow
oh
maybe make the number a bit higher
or we should add a new category for slow patches
otherwise it's confusing
I think I prefer just adding a prefix
lets see how it goes
vtest reporter-webhook-option
Now testing! 
VolumeBooster (took 4.1ms):
ID: 700994
Match: ```
/(?<=maxValue:)\i.\i?(\d+?):(\d+?)(?=,)/
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
why did that just run lmao
I did to test
so it won't post in this channel anymore but we can always look at #1337479816240431115
does the command default to both or canary only
Reporter (report, vencord-reporter, test-patches, test)
Run the Vencord reporter workflow
Usage
vreporter [ref = dev] [branch = both]
if u dont pass anything it tests both on dev
alr
i need to finish up the bot
you can merge if you want
vtestwill also use venbot webhook and reply results from venbot accountvtestwill update #1337479816240431115- github pushes will trigger a report and update #1337479816240431115
we shouldn't ever need to run vtest with 3. tho
unless we wanna test weird branches
guhhh I will have to refactor code a bunch to be able to do this
vtest shouldnt update the status
oop, that didn't go well ๐ฅ
are you planning on merging it today too?
i made a few more changes, namely this
idk if using the global is the best way but it works
^
that plugin has always existed xD
26 days
this is so peak ๐ https://github.com/byeoon/byoncord/commit/08c4d6fdf4eefcb2c998a185524b3f5207060d06
vtest
Now testing! 
guhh
it updated wrong message in #1337479816240431115
OHHH
i love mutating shared state
vtest
Now testing! 
nice
vtest now updates #1337479816240431115 if it's on the default branch
had to refactor so much
love
insane
@moderation this seems to just be a nazi troll account harassing a bunch of projects via forks and issues
https://codeberg.org/bootybaker302/Fighting-Transphobia#readme
https://codeberg.org/bootybaker302/redirecty/commit/32af8995726ae9733930782df034973676ea3fa7
that guy when he sees a trans flag
@dapper tiger i found your alt
h
are you sure it is not @crude hearth
or RGBCube
so it'll reflect main, so everything but extension?
I think dev is default
depends if they mean git or vreport command
vtest reporter-webhook-option stable
Now testing! 
vtest reporter-webhook-option
Now testing! 
ConsoleJanitor (took 6.2ms):
ID: 178318
Match: ```
/\i.error("Error: ".concat((\i).message/
None
None
None
@austere talon should we merge it already
yea
None
None
None
None
None
None
None
None
now you can change venbot to use dev
vtest
Now testing! 
was webhooks not good enough
wdym?
well i see venbot is sending them instead of the webhook from the action directly
cuz now the webhook url is a venbot url
which handles posting here and updating #1337479816240431115
I just had this issue, uninstalling OpenAsar fixed this issue.
cause it also manages #1337479880849362994 and #1337479816240431115
it needs the embeds
no ptb 
smh
vtest development
manti
Not again ๐ญ
usual
Since the reporter logs are kind of out of sight, out of mind now, would it be worth having some kind of notification if the number of bad patches/finds changes? Maybe even just changing the title of the #1337479816240431115 thread so it has like (issues) at the end whenever something is broken and removes it when it's all clear?
I'm sure someone will have their eye on logs anyway but it feels easier to miss now
Discord Account
arocraftu
What happens when the bug or crash occurs?
The plugin doesnt work, when I open a photo doesnt appear any more. It appear like a tiny zoomer but its like a discord familiar enviroment, so I don't know if its a different plugin corrupting the ImageZoom plugin or its a update that got discord. The impressive thing its that if right click still appears a tiny menu where you can see quick settings

yes ik
new image viewer and visual re
are gonna be a pain for a while I guess
@inland fable reference
true
send textreplace rules
I would like to know possible errors and suggestions, especially to optimize the code, the plugin is already functional.
oh my god just don't fucking download binaries from discord
Isn't this also against the plugins guidelines (having to rely on external API keys and stuff)?

But that's boring
breaks https://github.com/Vendicated/Vencord/blob/main/CONTRIBUTING.md as this requires that the user uses their own API key
also just don't download binaries off discord
people don't know how to scrape anymore
I was so shocked when I saw it was just boring api shit cuz I hoped it was some cool scraping ๐ญ
my Aliucord plugin that uses virustotal api just abuses their private api to do it without api key

alibabacord
you don't even need to scrape
you just need to use chrome devtools
Fair
CheckLinks.kt: Lines 66-111
private fun makeReq(url: String, method: String, contentType: String): Http.Request {
val chars = ('A'..'Z') + ('a'..'z') + ('0'..'9')
val s = CharArray(10) { chars.random() }.joinToString("")
return Http.Request(url, method).apply {
setHeader("Content-Type", contentType)
setHeader("User-Agent", "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:83.0) Firefox")
setHeader("X-Tool", "vt-ui-main")
setHeader("X-VT-Anti-Abuse-Header", s) // Can be anything for some reason
setHeader("Accept-Ianguage", "en-US,en;q=0.9,es;q=0.8") // yes upper case i lol
}
}
private fun checkLink(url: String): Map<String, Entry> {
// Look up url in cache first
QueryBuilder("https://www.virustotal.com/ui/search").run {
append("limit", "20")
append("relationships[comment]", "author,item")
append("query", url)
makeReq(this.toString(), "GET", "application/json")
.execute()
.json(CachedUrlInfo::class.java)
.let { res ->
if (res.data.isNotEmpty()) return@checkLink res.data[0].attributes.last_analysis_results
}
}
// no cached data, make full request for url
// R.h.ster url to get an ID
val idInfo =
makeReq("https://www.virustotal.com/ui/urls", "POST", "application/x-www-form-urlencoded")
.executeWithUrlEncodedForm(mapOf("url" to url))
.json(UrlIdInfo::class.java)
// Request analysis with that ID
return makeReq(
"https://www.virustotal.com/ui/analyses/" + idInfo.data.id,
"GET",
"application/json"
)
.execute()
.json(NewUrlInfo::class.java)
.data.attributes.results
}
i didn't know that (my bad, i cant fucking read) and you're right about downloading binaries, sorry for the inconvenience
wait how
bro closed by deleting his fork
the pr was sent from that fork
Content
minor issue, but in the custom rpc settings, the AppID has a random space in the middle of it
Request Agreement
- [x] I have read the requirements for opening an issue above
@dusk blaze love
ong pring a fix would've been less effort than making an issue
can we just fix the setting name formatter to not put a space if the previous letter is a capital
Just add display names
lol half the descriptions in the customRPC settings are just restating the name of the option
Button 1 URL
Adds display name support for settings and sets display names for some settings that require symbols or capitals not at the beginning of a word.
Some of the display names I've set are on string input components which fully capitalise their titles anyway but if we ever change that behaviour, display names will already be correct.

though one could add a setting for it ig
support helpers should still know what is the current sticky message
alright, time to do this
whats the use of that though?
is thast message ever something other than "read #1257025907625951423 first"
when things break, yeah sometimes
I feel like I should split this into multiple files
should i justz close my pr or implement the thing in another way that still shows the sticky message sometimes?
lol
they should go back to their old mangler which was so intensive that it merged modules into a single one
I mean, honestly if you hate seeing a sticky message then just block the bot and use no block message
would that break a lot of plugins? yes.
pre rspack?
they switched cuz of build times pretty sure lol
yep
i like the bot though ๐ญ
i think it shaved like 4 or 5 minutes off their build times
they should bring back display names...
ehhh
thats cap no one likes the bot but we tolerate it
vencord will convert to monkeypatching
what for?
vencord is all about regex patching and then deep down it all starts at monkey patching (kinda of)
what are you doing even
hopefully making the patcher use less memory
changing some hacky tricks to some not so much but clever hacks
Just make a user plugin for yourself
yea
so much clever
what do you wanna do with name
as you can see I needed their module id somehow

so I was manually assigning it to a symbol
but I dont need to, because I can abuse how their key in the object is set as their name
however, why are some patched and not restored to their original?
patching only occurs when they are applied, which means they should be running instantly after and restoring
makes sense yeah
now it's right
and when eagerPatches are enabled, they are patched right when they are proxied
@limber skiff how do i import functions from patchWebpack
because importing from "webpack/patchWebpack" throws a runtime error
and this looks ugly
so annoying that proxies change toString...
because importing from "webpack/patchWebpack" throws a runtime error
which?
I dynamically imported in a function but it meant I had to async a few things
ill do this if nothing else works, but it feels wrong
// other imports
const { WebpackPatcher: { getFactoryPatchedBy, getFactoryPatchedSource } } = require("Vencord") as typeof import("Vencord");
ill see after I do this
I am currently deciding what I should do about this
can you not just add a get handler for toString
I dont think so...
let me see
hmm
what if I delete toString from the proxy actually
๐
where is this code
in my computer
ah
KSDBJDFGDHJSFDFDS
i wanted to try something
the issue is proxies have their own toString
I can overwrite it
but I dont wanna have to bind the original toString
look at the amount of proxies
that's exactly what I wanna avoid
@limber skiff you should push your code somewhere 
now i want to play around with this
ah
why tf can I overwrite and not delete?
writable and not configurable?
i ate it
@limber skiff got toString working
on a proxied function
p = new Proxy(myFunc, {
get(t, n) {
const p = t[n];
return (typeof p === "function") ? p.bind(t) : p;
}
})
okay I will just do this for toString
I wonder why this didnt work
oh I know
nvm still not working?
that works for me
it breaks vencord somehow
horror
does binding all functions break anything?
could it be related to not being able to bind this values on arrow functions?
I wonder if the proxy has to be the this value to trap it
it's getting call from the target and binding it to target again
and target is not the proxy
so it ends up just calling the unproxied target
So you can only bind toString
Horror
or instead just bind toString specifically
hold on let me see what is receiver again
bingo
just gotta bind to receiver instead
nvm...
oh I made a typo lol
alright there we go
@fossil inlet ALL FOR NOTHING
okay, this.
@fossil inlet I might just delete this
i dont think i use it at all
it doesnt make sense anymore
because the factory is only actually patched once applied for the first time
the patched version or the wrapper doesn't end up being stored anywhere
@fossil inlet can you debug more the Webpack circular dependency?
yea
I have a feeling it might be patchWebpack importing "../plugins"
sounds like it
@limber skiff was able to fix it by moving patches declaration to patchWebpack.ts (not sure if src/vencord.ts is a better place for it)
it also has to be re-exported from plugins/index.ts for vesktop support
2621001 WebpackPatcher: Use less closures - Nuckyz
vtest patcher-less-closures
Now testing! 
BetterFolders (had no effect):
ID: 179809
Match: ```
/(?<=.isExpanded),children:[)/
None
None
None
52ac2d2 Bump esbuild from 0.15.18 to 0.25.0 - dependabot[bot]
Bumps esbuild from 0.15.18 to 0.25.0.
Release notes
Sourced from esbuild's releases.
v0.25.0
This release deliberately contains backwards-incompatible changes. To avoid automatically picking up releases like this, you should either be pinning the exact version of esbuild in your package.json file (recommended) or be using a version range syntax that only accepts patch upgrades such as ^0.24.0 or ~0.24.0. See npm's documentation about semver for more infor...
I hate dependabot
tbf esbuild does need updating
