#๐พ-core-development
1 messages ยท Page 230 of 1
function proxyArray(array) {
let shouldProxyGets = true;
return new Proxy(..., {
get(target, key) {
if (!shouldProxyGets) return Reflect.get();
if (["splice", ...].includes(key))
return (...args) => {
shouldProxyGets = false;
const result = array[key](...args);
shouldProxyGets = true;
return result;
}
}
})
}
easier than you think
fill that array with all methods that modify array
it should fix it
I will continue tomorrow
yeah that's okay
I'm kinda tired right now
but this should work perfectly
i can also do that if you want
push that change
(tomorrow)
lmao yeah
@austere talon i responded to all of your feedback, can you review when you have a chance
i give credit for that to my companion extension
so easy to jump from module to module
use const enums tho and they should probably be moved to the types file
didnt know those were a thing
i tried them in the types file, but esbuild threw an error
esbuild*
const enum should work probably
still throw an error with const enum
i love adding types then finding unsafe usage
well maybe fuck the enum
yeah
section?: "USER_INFO" | "BOT_INFO" ...;
do this instead
no enum
no
string union is cleaner
no imports and still good auto complete
use interface instead of type
guhhhhhhhhhhhhhhh
and u need to fix the type errors 
i tried that but it gave the horror of 99999 markers
cause u need to use the step argument
somehow missed the third arg 
not sure what the point of this is in the first place, so not sure if this is the best/correct fix
this is not very accessible because there is nothing indicating this is a button
you should wrap this icon inside a button with the onClick
(Discord button has ButtonLooks.BLANK or use their Clickable component)
ButtonLooks.BLANK messes up the styles, so clickable works best
icon looks meh tbh (and seems off centre)
maybe do this instead
+11
or try some other icons
but other than that its good now
spread the props into the Clickable instead, so the aria-label is exposed and the mouse listeners are on the right object
actually
you pass custom component to text (why?) so aria-label doesnt work either way
@austere talon this doesnt feel right
that looks horror
i liked the ellipsis more
@austere talon i think this looks a bit better
a slider doesn't work due to the fact that the size of the icons is customizable, leading to a multiple of seven -1 not always being the ideal number for an even row
i eep now
it does work
Nop
If you ser icon size to 24, 13/20,... is no longer the ideal number
set stickToMarkers to false O_O
Then it allows floating point numbers
you will figure it out
Husk
You're right about that (I'm an idiot)
Excuse me!!
I have uploaded a version that I have tested quickly from Russian to English and English to Russian, it should not give any problems now, I have used xxhash64 as I have seen it already used in the project.
Sorry for the inconvenience and I hope that now it works for all cases (probably I have forgotten something).
god dammit
Why do you even have so many
mentally ill
Relatable

alright got the list @austere talon
"copyWithin", "reverse", "shift", "sort", "splice", "unshift"
that's everything
one thing we probably can't ever make work is [...array]
it will spread proxy I think
yeah but that's fine I guess
how about .concat, does it create proxy array or normal array
and slice()
would be nice if slice and concat worked
I mean the elements within
does it create Proxy<T>[] or T[]
I think we should add concat and slice to the list too then
so you get T[]
there are these ones too
what about map?
and reduce
I'm thinking someone may wanna do some operation in those soo
yeah
I guess keep proxied
probably keep those proxied yeah
"concat", "copyWithin", "every", "filter", "flat", "join", "reverse", "shift", "slice", "some", "sort", "splice", "toReversed", "toSorted", "toSpliced", "unshift"
every and some?
tbh even some of these are a tough call lol
you might want filter proxied for example
uhmm true
actually no, I don't think so
filter shouldn't return proxied elements, but a proxied array
yeah
nono
I was finding the methods first
I guess it's easy, if it returns array then we proxy that too
no need for a list
yeah but also avoiding storing proxies in the actual array in splice and such haha
yep
oh well it's all broken now
I'm not sure why

right
wait why are we proxying array settings
since it's not a proxy splice is not trigerring deleteProperty
adding support for OptionType.CUSTOM
ah
which allows anything including arrays, which should save when they are modified
but then we have to be extra careful to not have the methods that modify in place insert proxies into the array
those can't be cloned to settings after
ehmm still not working
oh I see
huh why
array/target is not a proxy
use the proxy not the target xD
const hash = h64(url).toString(16);
translatedContent = translatedContent.replaceAll(hash, url);
this map honestly isn't needed, just hash again
9ccc74b use correct prodversion in chrome extension ins... - Vendicated
cca5d7d ShowHiddenThings: Discovery filter bypass is pa... - Nuckyz
79e2cb1 QuickReply: Prevent caret from moving when sele... - Sqaaakoi
0e813e7 OpenInApp: Add support for geo.music.apple.com ... - faejr
0fd76ab NoUnblockToJump: Also allow jump for ignored us... - sadan4
ea5f9d8 addPreEditListener -> addMessagePreEditListener - Vendicated
i forgot what else we talked about it's so long ago
xD
gotta convert the function calls to jsx
This tag doesn't exist!
right
oops
holaa
okay it works
why do tags even have a enabled prop
it does nothing...
idk lol
tbh we should just remove the temporary settings probably
so it's not dependent on the ui
make changes apply immediately
other time other time
this looks so cursed
hmm how can I do this
what if I just
plugins.TextReplace.stringRules.0.find
replace this to the nearest plugins.xx.yy
and then we can add support to settings.use(["stringRules.*"])

173c8c3 use proper react calls in apis - Vendicated
398bf10 slightly better error boundary errors - Vendicated
oh this broke contributorBadge ๐ฅ
okay i might be stupid
HMMMMMMMMMMMM I was thinking I should do that with my PR
i am a bit stupid where is the issue
that is the issue
i see
what horror
283 Online
serverlistindicators hater....
this code goes crazy
okay someone "review" this by testing that all the plugins that were modified still work https://github.com/Vendicated/Vencord/pull/3028
Turns most APIs that have add & remove functions into singular on* & render* methods you can use in your plugin definition
Your handler will automatically be registered & un...
WHY DOES GITHUB MIX FILES AND FOLDERS IN THE SIDEBAR
that just blends in
i'm gonna be so real and admit that i'm just looking at this so I can implement this functionality into unified styles
you will enjoy at least 1 merge conflict
one caveat with this is that if you have a setting that toggles stuff on / off, it won't update until you restart even though it could
it would be kinda annoying to implement live updates for that
shrimply just use the settings hook and return null in your component
(don't do this)
its pretty hacky but yeah
that works
honestly the smoothest way anyway
this is fine imo
the settings hook approach can be used
wont this mean it calls it twice
once for when you update via ui, once when the actual value is changed
you didn't remove the onChange call settings ui does
LMAOO
alright
I like having all these properties in the plugin def for discovery too, this is cool
Like new users not knowing that something like addMessageAccessory exists
anyway i look later
time to eat now
oh no
oh okay
makes sense
that's annoying
@austere talon im gonna make Array.at return un-proxied
we need a way to get unproxied
Settings.plain
but it's soo nested below
we could also reverse it
inside set trap, check if the value is a proxy and unproxy it
maybe easier than thinking of 3 million methods xD
you can
export const UnwrapProxy = Symbol("vencord.settingsproxy.unwrap");
get(target, key) {
if (key === UnwrapProxy) return target;
},
set(target, key, value) {
value &&= value[UnwrapProxy] ?? value;
}

this should be all that's needed
and then you can remove all the wrappers for stuff like .splice
it should work fine then
it will try to store proxies but the set trap will unwrap them to the plain value
this way you can straight up dump the proxies inside the array without worrying about it
and stuff like arr[0] = arr[1] will magically work
of course something didnt work...
did you forget to implement the IS_PROXY one
show full code
oh
my array got fucked up somehow
I can remove makeArrayProxy again...
that was smart vee
way more simple now haha
however setting pindm category color still doesn't work
I just tested a version by recalculating the hash seems to work well. I will upload the commit now, anyway, isn't it better to use a map than to recalculate the hashes all the time in terms of performance?
if you're calculating a lot of hashes, sure
but messages shouldn't contain more than like 10 links. and Maps are based on hashes so it literally hashes the string for you under the hood too to generate the map key haha
either way with so little links the performance difference is irrelevant but using a Map just makes it more complicated

what horrors have i found just by being bored and clicking buttons
why does discord devtools have a potions tab
yeah makes sense
woah a staging endpoint
yeah
bit annoying but there isn't a good way to fix it
for arrays it's clear, use slice() or concat() to make a clone
it's a state, and just changing the property wont work
but for object there isn't anything like that 
it should work but you need to sub to settings store
structuredClone? โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
oh okay fair โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
should I make the dms category no collapsable @austere talon
yessss
either that or make it super clear that it's collapsed
or make it an opt-in setting
mehh its kinda bad
I will just remove it
i was like wtf u deleted so much settings proxy code then I realised it's code you added (i thoughjt you removed old existing code LOL)
look at that PR it should be good now probably unless i forgot something 
oh yeah also someone test all plugins
i already tested a bunch and all work
ya wait
did u fix the category colour changing
yeah
this hurts me so much
this is so bad ahahaha should we just make some form of static logger
we keep creating new loggers inline everywhere ๐ญ
we could do either of these to make it a bit nicer
Logger.TextReplace.error("balls");
Logger.error("TextReplace", "balls");
alright that's it
this could potentially be extracted into a notifyListeners function to reduce duplication
i don't like the implications of this code (userId could be undefined and we might create a key undefined here)
this case should either be handled in some way (re-schedule, throw error...) or non null asserted instead if that can never happen
this is old code but having onClick and onContextMenu on a h2 without making it clear that this is a clickable in any way is awful accessibility
this should either be wrapped inside the Clickable component (better) and that should carry the handlers, or a role attribute should be added
nit: this variable should be above all functions that access / change it
nit: this can never be undefined at that point so === is more accurate :P
if (typeof v === "object" && v !== null && !v[SYM_IS_PROXY]) {
nit: this can never be undefined at that point so === is more accurate :P
I prefer doing !=
it's good to check for both in the same place
yeah but it can never be undefined at that point like i said
you're checking for exactly null
ehh
typeof undefined is not object 
alright fair enough
it's pretty cursed to create a pointless wrapper function on top of it instead of using the function directly
anyway besides that few feedback i left it looks very good now
but we should thoroughly test all plugins affected to make sure there are no weird edge cases we didn't notice
same goes for my PR that changes the APIs 
should be fine to just return here
if a connection open happens after it will init and have the userId
much better and more powerful than the initial draft too
see this is why API changes should be discussed properly instead of rush merged 
I mean I kinda get it cause I haven't been very active for the past weeks but still
yeah thats good
what is the other way of doing this
if (...)
something()
thats ugly
yes I find it too
if (index === rulesArray.length - 1)
rulesArray.push(makeEmptyRule());
this is god awful I hate this as well โฌ๏ธ
if (index === rulesArray.length - 1) rulesArray.push(makeEmptyRule());
but the one with newline is chefs kiss to me
WHAT IS WRONG WITH THAT
long line?
it doesn't really matter much but it's weird to change it retroactively and it should be consistent per file at least
it doesn't have to be consistent in the entire project but it shouldn't be mixed in the same file
this with just return or a very short statement is ugly imo
vee will explode my PR for this
you can just wrap it in Clickable
it's much cleaner
clickable also allows keyboard clicks
<Clickable onClick={} onContextMenu={}>
<h2>hi</h2>
</Clickable>
How
and the other component which discord has is a h2 too
the h2 doesn't support keyboard
tabindex does it, no?
yeah because it's not a button ๐ญ
no
you can focus it but not click it
you can press buttons with spacebar / enter
for this it uses Clickable too
just wrap in Clickable it's so quick 
it doesnt have any styles so it should look the same
this button, i don't like this button in particular
but it's not reallyy needed
what if I just change it to a div
because of how the create group popout keybind activates that popout
yes but now look above that
it manually triggers click when you use keyboard
this is important for people who navigate discord with a keyboard
i feel like a decent amount of vencord plugins likely can't be used with a keyboard simply because of how horror discord's focusring system is
this is super ugly lol
now it's consistent
oh discord's f6 to switch section completely breaks if you hide the sidebar lol
do the types just suck

you can move the onContextMenu back to the clickable @limber skiff xD
yeah but got fix the typings
it's hard to type this correctly because you can override tag
by default it's div so you can specify all div options
but you could specify like button tag and then you can specify other properties
we could just hardcode div and if u want non div tag, cope?

(or do it properly with a generic parameter (just hardcode div who cares))
this
you love me editing to say the opposite after you this'd
is that because typing it would be hell
it wouldnt even be that hard with a generic
export type Clickable<Tag extends HTMLTagsIdkWhatThisUnionTypeIsCalledButItExistsSomewhere = "div"> = ComponentType<PropsWithChildren<ComponentPropsWithRef<Tag>>>;
perfecttt
why
export type Clickable<Tag extends ElementType & string = "div">
change it to this
idk if it will fix but this will filter out the non strings (like ComponentType)
oh because React components are very limited with generics hmm
<Clickable<"span">>LOL</Clickable>
you would have to do this i think
oh
this kills the generic
how so
i think that does not really do anything
idk LOL
actually I do know but you will hate this
@austere talon can I get a new branch for the rust rw code ive made for the installer
nvm i fixed it
idk what the hell ComponentPropsWithRef is but it sucks
it's the proper way of doing it
IntrinsicElements works, ComponentPropsWithRef is borked
this works
anyway it sucked before with the entire list
it worked as soon as I changed it to IntrinsicElements
but that was laggy LOL
cause so many fucking tags
like autocomplete took 2 seconds to load
I'm pretty sure ComponentPropsWithRef uses IntrinsicElements internally
and there is no use case for using insane tags, this is enough
true
Clickable basically just recreates button without button
because button styles are insane
yeah but don't merge yet xD
what are we waiting for?
i suggest:
- merge dev into main and release extension
- merge your PR and my PR into dev and test extensively all plugins that got changed
- eventually merge into main again
i wouldn't release those big refactors to browser immediately
sure that seems good
just so if we end up finding a regression / breakage it will be easy to fix without having browser broken for a while
have they pushed to stable yet
btw we should also test the plugins with fully blank settings
oh right
BadgeAPI (had no effect):
ID: 184325
Match: ```
/(?<="aria-label":(\i).description,.{0,200})children:/
**__AccountPanelServerProfile (had no effect):__**
ID: `720734`
Match: ```
/(?<=\.AVATAR_SIZE\);)/
None
None
None
ugh you gotta be kidding me
None
None
None
None
omg
if yes i can add a venbot command
niceee
i will add rn
I might just add a way to run patches after a x build number
and then we push with both patches
what do you think?
scary
i dont really know what u mean
oh you mean at runtime
ya
if buildNumber > x run pach
Now testing! 
Reporter (report, vencord-reporter, test-patches)
Run the Vencord reporter workflow
Usage
vreporter [ref = dev]
BadgeAPI (had no effect):
ID: 184325
Match: ```
/(?<="aria-label":(\i).description,.{0,200})children:/
**__AccountPanelServerProfile (had no effect):__**
ID: `720734`
Match: ```
/(?<=\.AVATAR_SIZE\);)/
None
None
None
None
None
None
None
@limber skiff no more manual triggering
in other news github finally added no expiry option to fine grained tokens so i CAN STOP ABUSING LEGACY TOKENS
whats the point then
husk
you can just like ping any of us and we'll run it
do you really think i will give perms to everyone ๐ญ
let contributors run it
change it to contributor and give it a global cooldown
acting like being a contributor means much
you can contribute anything claim the role and boom

^
(not meaning to put down contributors it's just there are some HUSK people with contributor role because anyone who contributed at least 1 commit can get it)

contribute a readme change and spam the fuck out of workflows 
like these guys... very evil
manti would get bored and spam 200 workflow runs
adds command so anyone with any commits can get contrib role
People with one commit can get contributed role
Mfw
duh..?
i mean thats what the role is there for
we already have "contributor but more gatekept so only sane people (mostly) have it" it's called regular
lmao
nop
there are totally insane regulars

Everyone in this server is insane 
tbh it seems like overall there needs to be a better distinction between contributors and developers which isn't "regular" role or git log
but also it would be such a hassle
eh i don't think it would be that... hard but its kinda redundant
like you could use the internal vencord contrib list as that is either plugin stuff (people that actually work on the patches) or other notable changes
but like what would you even call that contributor and better contributor lmao
"contributor" and "developer" respectively
fwiw if the only reason is running reporter theres no point in going that far
true
the thing is if you add a "contributor" field to plugins you will get 1-2 line patches for the sake of being a contributor rather than to actually fix things
<3
I mean similar to people adding themselves to Devs for too small things, they'd just get told not to before it gets merged
But also I know I've only been here a few months but it kinda just works fine as is
yop it's a "Not a real issue" but a "Would be neat if there is something for things like that"
Fair

not possible
patches run too early the way it is currently
before wreq is available
however like this it can work I think
I suggested this recently and got ignored smh
its because you suck !!
@austere talon what if I port just this file to current vencord?
i will have to look tomorrow im gonna sleep soon
if anything I can say file was extensively tested
it's also pretty complex lol
I'll port it to a different pr then
make it more selective then xd
what if.. 2 commits
Info
This pull request provides an almost-finished backend to the tauri rust rewrite branch, while also including a crate containing the CLI (and will also include a GUI in the future)
About libvencord (crate)
The backend of vencord installer will be contained in its own crate that will be hopefully uploaded to crates.io once complete, this crate features abilities to patch with OpenAsar while also seperating misce...
FIRE
rust 
libvencord is also fully documented in its functionality, examples can be found here on how to use libvencord for patching https://github.com/khcrysalis/Installer-patch/blob/rust-rewrite/crates/libvencord/README.md
ill have u know I wrote that manually
not everyone is bright ๐ญ
@austere talon how tf do i make a slider in settings that only sticks to integers without having 100 markers
check the props
Ahh yes i like having .72 of a connection
It's not a perfect solution but I did this when I was fucking around with sliders a while ago
test: {
type: OptionType.COMPONENT,
description: "",
component: props => {
const [sliderValue, setSliderValue] = useState(settings.store.test || 13);
return (
<Forms.FormSection>
<Forms.FormTitle>Whatever title</Forms.FormTitle>
<Forms.FormText className={Margins.bottom20} type="description">Whatever description</Forms.FormText>
<Slider
initialValue={sliderValue}
stickToMarkers={false}
keyboardStep={1}
minValue={-1}
maxValue={48}
markers={[-1, 0, ...makeRange(6, 48, 7), sliderValue]}
onValueChange={value => {
const rounded = Math.round(value);
setSliderValue(rounded);
props.setValue(rounded);
}}
onValueRender={value => {
const rounded = Math.round(value);
if (rounded === -1) return "โ";
return String(rounded);
}}
onMarkerRender={value => {
if (value === -1) return "โ";
return String(value);
}}
/>
</Forms.FormSection>
);
}
}```
the componentProps option 
Obviously ignore -1 bit, I changed the markers to do the multiple of 7-1 thing but the rest is just what I had there already
I think the problem was setting the value on change
I don't remember
I did custom component to have the value state
1d3067d Port Patcher Rewrite and useful changes along w... - Nuckyz
๐
BadgeAPI (had no effect):
ID: 184325
Match: ```
/(?<="aria-label":((?:[A-Za-z_$][\w$]*)).description,.{0,200})children:/
**__AccountPanelServerProfile (had no effect):__**
ID: `720734`
Match: ```
/(?<=\.AVATAR_SIZE\);)/
None
None
None
all working 
ShowHiddenChannels (took 4.80000000000291ms):
ID: 540126
Match: ```
/(activeJoinedRelevantThreads:.{0,50}VIEW_CHANNEL.+?renderLevel:(.+?),threadIds.+?renderLevel:).+?(?=,threadIds)/g
None
None
None
Now testing! 

Need to set the first and last marker to be same as min and max value
@scenic brook thanks for that, discords code is horror
@limber skiff why no stack?.match but stack.match?
already returns in the first stack?.includes if its undefined
this is being so weird...
BadgeAPI (had no effect):
ID: 184325
Match: ```
/(?<="aria-label":(\i).description,.{0,200})children:/
**__AccountPanelServerProfile (had no effect):__**
ID: `720734`
Match: ```
/(?<=\.AVATAR_SIZE\);)/
None
None
None
None
None
None
None

Any chance of this being real eventually?
HORROR
HOW
/hj
this was harder than I thought
i see how it will be nice for massive/crashing changes so you can push out to main before discord pushes to stable
I had to manually require because this is called when the first module is required
๐ญ
i love re-implementing all of vencordnative in c++ 
do we even need this
it seems cool on surface but I don't wanna have 3 million legacy patches in the project and it's really not thaaaat important to fix canary all the time

WHY
why tf are u using cef
just have to clean up after
no big deal
are u modding spotify or steam or something
yop
i plan to re-write everything, but for now, using vecnord as a base for testing
yop to what
modding spotify
is spicetify that bad

you have to run like 5 cli commands every time you want to change plugins/themes at all
vreport patcher-rewrite
Now testing! 
BadgeAPI (had no effect):
ID: 184325
Match: ```
/(?<="aria-label":((?:[A-Za-z_$][\w$]*)).description,.{0,200})children:/
**__AccountPanelServerProfile (had no effect):__**
ID: `720734`
Match: ```
/(?<=\.AVATAR_SIZE\);)/
None
None
None
imagine if venbot ran tests locally and posted results (we love RCE)
however I cant make this work in reporter
BadgeAPI (had no effect):
ID: 184325
Match: ```
/(?<=text:((?:[A-Za-z_$][\w$]*)).description,.{0,200})children:/
**__AccountPanelServerProfile (had no effect):__**
ID: `720734`
Match: ```
/(?<=\.SIZE_32\)}\);)/
None
None
None
it uses the eagerPatches approach which means I cant get the buildNumber before it starts patching
either way it's good to see which ones are failing

I thought u insta merged for a second
scary
I will check tomorrow
I'm in bed
(ignore the fact that I was coding/discussion in bed for hours yesterday lol)
lmaooo I noticed
I love role color everywhere too
using laptop feels so awful when you're used to a much faster PC
everything feels laggy

I remember now, the regex for loading chunks includes a bit more
so it loads more stuff
:megahusk:
vreport patcher-rewrite
Now testing! 
arent module numbers derived from the some hash of the file or am i crazy
BadgeAPI (had no effect):
ID: 184325
Match: ```
/(?<="aria-label":(\i).description,.{0,200})children:/
**__AccountPanelServerProfile (had no effect):__**
ID: `720734`
Match: ```
/(?<=\.AVATAR_SIZE\);)/
None
None
None
BadgeAPI (had no effect):
ID: 184325
Match: ```
/(?<=text:(\i).description,.{0,200})children:/
**__AccountPanelServerProfile (had no effect):__**
ID: `720734`
Match: ```
/(?<=\.SIZE_32\)}\);)/
None
None
None
vreport immediate-finds
Now testing! 
Now testing! 
ngl this really shouldn't be taking 30 seconds
BadgeAPI (had no effect):
ID: 184325
Match: ```
/(?<="aria-label":(\i).description,.{0,200})children:/
**__AccountPanelServerProfile (had no effect):__**
ID: `720734`
Match: ```
/(?<=\.AVATAR_SIZE\);)/
CallTimer (took 4.2000000000116415ms):
ID: 746508
Match: ```
/(?<=renderConnectionStatus(){.+.channel,children:).+?}):\i(?=}))/
None
None
None
BadgeAPI (had no effect):
ID: 184325
Match: ```
/(?<=text:(\i).description,.{0,200})children:/
**__AccountPanelServerProfile (had no effect):__**
ID: `720734`
Match: ```
/(?<=\.SIZE_32\)}\);)/
None
None
None

this is what happens due to the accountpanelserverprofile patch being broken
how so?
if you open the regular popout
also nothing is clickable
it's infinitely rerendering 
BadgeAPI (had no effect):
ID: 184325
Match: ```
/(?<="aria-label":(\i).description,.{0,200})children:/
**__AccountPanelServerProfile (had no effect):__**
ID: `720734`
Match: ```
/(?<=\.AVATAR_SIZE\);)/
None
None
None
None
None
None
None
Blessing in disguise
might be stupid, but i cant find where methods in VencordNative are defined
nevermind, im very stupid
how is your Spotify mod going @fossil inlet
good
ive got webpack patching working rn
im creating all of vencord-native in c++
with the v8 api in c
they use webpack too?
yea
so you can just patch the files then, not sure what's better tho
I know spicetify does that and... yeah
i feel like runtime is better because i plan to allow user patches with this
we know how that is
spiceitfy is all dom manip and monkey patching
(i think)

if ((IS_WEB ? stack?.includes("__webpack_require__") : stack && !stack.includes("xpui.js")) || Array.isArray(v)) {
logger.debug("Ignoring Webpack module factory", stack);
return;
}
btw I wonder if my other implementation of webpack patching would work for Spotify too
the one in the branch I just made
it's way more generic than the current vencord one
well I know it won't work perfectly cuz Spotify webpack likely does not have wreq.e
because no chunks
but that can be changed easily
what are you even trying to do
nvm
just your spotify mod
pls make something better than spicetify i beg
thats what im doing 
you will help me write the native part (i hate c++)

horror
i hate python for anything more than scripting
python is ridiculously powerful
tbh i prob just havent used it enough
compared to js/ts
but also i really dont like not having braces
mf is addicted to braces
if you're writing js code well you should have no reason to care abt the braces because the indentation should be already good
yop
hop on bython
nop
ven will add donor tier with priority reviews
priority review will still take down to 7 months
your plugin will be merged in 3-5 Business days
*years
Im not clicking that gng
scary
why are you a joyous tune
the cost will be 25 american dollar a month
will either of these ever get merged ๐
or is there anything else i should do on the pr to get it ready? idk no reviews no attention
i guess noone sees the use? its useful since i don't want to scramble the names of files that people may actually want to download/that have no preview, ex. if i send someone my lecture pdfs they should keep their organized names
but ex. image files often have interesting info in their name (datetime of capture, device type, all the stuff in sharex image names) that isn't shown in the UI anyway nor will people be downloading it, so that should be stripped
@fossil inlet I realised that you could just do this and have 100 markers but don't render them all
sliderSetting: {
type: OptionType.SLIDER,
description: "A slider setting",
default: 13,
markers: makeRange(1, 100),
componentProps: {
onMarkerRender: value => {
if (value === 1 || value === 100 || (value+1) % 7 === 0) return String(value);
else return null;
}
}
}```
But then that got shot down because discord doesn't render the tooltip if stickToMarkers is true
I tried that yesterday and it doesn't wirk
It works to not render the markers but not having the tooltip makes it pointless because they can't tell what they're picking
I feel like it looks good but the word opposite is misspelled in the setting desc
Atp Just cherry pick my commits for the UI into that branch and make it one whole pr of us two lmao

Whatt
It's the simpler solution in my eyes
bros are still in a break
maps are cheaper than closures
this way we avoid creating a handler and a closure for each proxy
oh like that
instead of recursively creating new proxies one single proxy that handles all
ya
idk it shouldn't really matter tbh 
doubt it's enough to be relevant
but sure ig
wait no it still creates a lot of proxy
but only one handler
it still avoids creating the functions and the handler for every new proxy, along with the closure
omg
delet
I would assume js does closures not much different than how you did with the map now
well a closure has access to everything in scope
a map, just what you store
either way just leave it like that, the implementation is pretty much the same, and technically should create less things
remember we proxy recursively soo
bro this is pissing me off bc surely winter break is over
where is 263.0 stable on mobile
Or a new alpha
why is it pissing you off too lol
why didn't we use this for a tag push
because there are conflicting patches between stable and canary
but that affects desktop too?
Now testing! 
None
None
None
None
BadgeAPI (had no effect):
ID: 184325
Match: ```
/(?<=text:(\i).description,.{0,200})children:/
**__AccountPanelServerProfile (had no effect):__**
ID: `720734`
Match: ```
/(?<=\.SIZE_32\)}\);)/
None
None
None
vreport dev
Now testing! 
BadgeAPI (had no effect):
ID: 184325
Match: ```
/(?<="aria-label":(\i).description,.{0,200})children:/
**__AccountPanelServerProfile (had no effect):__**
ID: `720734`
Match: ```
/(?<=\.AVATAR_SIZE\);)/
None
None
None
None
None
None
None
which I wouldnโt even be surprised if they donโt push todayโฆ cause you had the weekend, then MJK day/ Trumps inauguration yesterday so they prolly actually are still on vacation
they arent working today
Most likey yeah
discord staff attended Trump Inauguration real
Trump 2025
so you're not gonna push any fixes.. at all even during at ime where you could've fixed web?
ยฏ_(ใ)_/ยฏ
like if it affects desktop too might as well just sync web in the downtime between discord updates?
I dont wanna push a fix that's gonna break instantly after
this pr is literally to fix that
it's working fine on stable
the fix is for canary
push fix now = we break stable until discord releases it just to fix canary

meant more for the popover buttons fix
I am busy writing the worst Vencord find ever
why is it bad
probably some terrible regex
It's worse
I'm reimplementing half of extractAndLoadChunks
in a way to extract a module ID from a list of imported modules
based on where it is used in the code
Alternatively: help me find 789639
there are 2 other similar modules
that look almost the same
THE GAME

fuck you
haven't looked but can you not combine a string + regex filter
use string to find the two that match, then the regex to differ
by using string first the performance will be pretty much the same
This is the module
and the other?
if you're looking to do that, i have code that already does that, but it requires typescript
here are some VERY similar modules (one of them does not fit in)
If anyone is wondering what I'm wanting to find, it's the lottie settings icon
technically no but i'd rather not implement it again
there are 2 other duration:66 modules.
do you want to use the cog
yop
cant u do like a lookahead for onclick
lol
- don't

- copy paste the lotti3 json and use it manually
๐ญ
INSANE (this is probably the most sane way of doing this albeit it would produce huge code)
@austere talon have u looked at my rust rw yet
I may add another thing on my todo regarding how I check vencord version
die
Actually speak of devil they turned back on their Auto Publish bot... still haven't to stable tho
BadgeAPI (had no effect):
ID: 184325
Match: ```
/(?<="aria-label":(\i).description,.{0,200})children:/
**__AccountPanelServerProfile (had no effect):__**
ID: `720734`
Match: ```
/(?<=\.AVATAR_SIZE\);)/
None
None
None
None
None
None
None
vreport dev
Now testing! 
BadgeAPI (had no effect):
ID: 184325
Match: ```
/(?<="aria-label":(\i).description,.{0,200})children:/
**__AccountPanelServerProfile (had no effect):__**
ID: `720734`
Match: ```
/(?<=\.AVATAR_SIZE\);)/
None
None
None
MessageEventsAPI (had no effect):
ID: 287746
Match: ```
/(type:this.props.chatInputType.+?.then()(\i=>{.+?let (\i)=\i.\i.parse((\i),.+?let (\i)=\i.\i.getSendMessageOptionsForReply(\i);)(?<=)(({.+?})).then.+?)/
None
None
None
Now testing! 
None
None
None
None
MessageEventsAPI (had no effect):
ID: 287746
Match: ```
/(type:this.props.chatInputType.+?.then()(\i=>{.+?let (\i)=\i.\i.parse((\i),.+?let (\i)=\i.\i.getSendMessageOptionsForReply(\i);)(?<=)(({.+?})).then.+?)/
None
None
None
you gotta be kidding
we should merge dev into main and release then
im gonna sleep now but tmrw i will
i was gonna today but i slept way too late so i slept the whole day ๐ญ
sorry
but now there is another
and it's even worse cuz it's an API
could either make patch compatible with both or just add two patches one for stable one for canary then release
SortForumByUnread
Allows sorting forum posts so that unread posts are at the top
@scenic brook btw you should settings.use inside your context menu to provide re-activity to pressing the checkbox, instead of having to close the popout
@austere talon LMAOOO
LOOK AT THE TYPO IN THE RETURN
it has been like this for soo much time probably ๐ญ
did they fix a typo in their codebase or is that a vencord bug
Vencord bug
๐ญ


