#๐Ÿ‘พ-core-development

1 messages ยท Page 230 of 1

austere talon
#

make a separate proxyArray function again

#

similar proxy as before

limber skiff
#

can we just not proxy array children for now

#

we can add that later

austere talon
#
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

limber skiff
#

I will continue tomorrow

austere talon
#

yeah that's okay

limber skiff
#

I'm kinda tired right now

austere talon
#

i will sleep now too

#

we can finish it tomorrow

austere talon
#

i can also do that if you want

#

push that change

#

(tomorrow)

limber skiff
#

alright

#

proxy stuff is so complex lmao

austere talon
#

lmao yeah

fossil inlet
#

@austere talon i responded to all of your feedback, can you review when you have a chance

austere talon
#

epic lint fail

#

ohh nice u figured out how to open profile and scroll

#

๐Ÿ”ฅ

fossil inlet
austere talon
#

use const enums tho and they should probably be moved to the types file

fossil inlet
#

i tried them in the types file, but esbuild threw an error

#

esbuild*

austere talon
#

const enum should work probably

fossil inlet
austere talon
#

horror

#

fair enough

fossil inlet
#

i love adding types then finding unsafe usage

austere talon
#

well maybe fuck the enum

#

yeah

#
section?: "USER_INFO" | "BOT_INFO" ...;
#

do this instead

#

no enum

fossil inlet
#

horror

#

enums good blobcatcozy

austere talon
#

no

#

string union is cleaner

#

no imports and still good auto complete

#

use interface instead of type

fossil inlet
#

guhhhhhhhhhhhhhhh

austere talon
#

and u need to fix the type errors uranium

fossil inlet
#

already started doing that blobcatcozy

#

@austere talon lint should be good now

austere talon
#

thanks

#

theres a makeRange function lmao

fossil inlet
austere talon
#

cause u need to use the step argument

fossil inlet
#

somehow missed the third arg blobcatcozy

austere talon
#

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

charred monolithBOT
austere talon
#

actually

#

you pass custom component to text (why?) so aria-label doesnt work either way

fossil inlet
#

@austere talon this doesnt feel right

median rapids
#

that looks horror

fossil inlet
#

i liked the ellipsis more

austere talon
#

it needs a border

fossil inlet
#

@austere talon i think this looks a bit better

charred monolithBOT
fossil inlet
#

i eep now

austere talon
fossil inlet
austere talon
#

set stickToMarkers to false O_O

fossil inlet
austere talon
#

you will figure it out

fossil inlet
#

Husk

charred monolithBOT
#

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).
image

robust halo
odd heath
robust halo
odd heath
robust halo
limber skiff
#

alright got the list @austere talon
"copyWithin", "reverse", "shift", "sort", "splice", "unshift"

#

that's everything

austere talon
#

one thing we probably can't ever make work is [...array]

#

it will spread proxy I think

limber skiff
#

yeah but that's fine I guess

austere talon
#

and slice()

#

would be nice if slice and concat worked

limber skiff
#

proxied

#

everything that does a copy creates a proxied

austere talon
#

I mean the elements within

limber skiff
austere talon
#

does it create Proxy<T>[] or T[]

limber skiff
#

o

#

I see

austere talon
# limber skiff

I think we should add concat and slice to the list too then

#

so you get T[]

limber skiff
#

there are these ones too

austere talon
#

yeah you can add those too

#

to the list

limber skiff
#

what about map?

#

and reduce

#

I'm thinking someone may wanna do some operation in those soo

austere talon
#

yeah

limber skiff
#

I guess keep proxied

austere talon
#

probably keep those proxied yeah

limber skiff
#

"concat", "copyWithin", "every", "filter", "flat", "join", "reverse", "shift", "slice", "some", "sort", "splice", "toReversed", "toSorted", "toSpliced", "unshift"

#

every and some?

austere talon
#

you might want filter proxied for example

limber skiff
#

uhmm true

#

actually no, I don't think so

#

filter shouldn't return proxied elements, but a proxied array

austere talon
#

yeah

limber skiff
#

one should grab the elements again after the filter

#

alright this seems good enough

austere talon
#

probably

#

did you get the workaround working fully?

#

and fixed splice?

limber skiff
#

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

austere talon
#

yeah but also avoiding storing proxies in the actual array in splice and such haha

limber skiff
#

yep

limber skiff
#

oh well it's all broken now

charred monolithBOT
limber skiff
#

I'm not sure why

charred monolithBOT
limber skiff
#

it's just all wrong lmao

#

o

long stream
limber skiff
#

right

long stream
#

wait why are we proxying array settings

limber skiff
#

since it's not a proxy splice is not trigerring deleteProperty

limber skiff
long stream
#

ah

limber skiff
#

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

limber skiff
#

array/target is not a proxy

austere talon
#

use the proxy not the target xD

limber skiff
#

ya

#

doing it now

#

workedd

charred monolithBOT
austere talon
#

i forgot what else we talked about it's so long ago

limber skiff
#

๐Ÿ˜›

#

how lmao

#

o

#

forgot to add settings to plugin object

austere talon
#

xD

charred monolithBOT
limber skiff
woeful bisonBOT
#

This tag doesn't exist!

austere talon
#

right

limber skiff
#

oops

#

holaa

#

okay it works

#

why do tags even have a enabled prop

#

it does nothing...

austere talon
#

idk lol

limber skiff
#

ohhh yeah

#

im gonna modify and make onChange fire when the setting is being saved

austere talon
#

tbh we should just remove the temporary settings probably

limber skiff
#

so it's not dependent on the ui

austere talon
#

make changes apply immediately

limber skiff
austere talon
#

this looks so cursed

charred monolithBOT
limber skiff
#

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.*"])

austere talon
#

okay all works fine

long stream
charred monolithBOT
rugged spire
#

guhhhh im awake now

#

did anything interesting happen on dev branch

limber skiff
#

okay I did this

austere talon
#

oh this broke contributorBadge ๐Ÿ”ฅ

rugged spire
austere talon
#

okay i might be stupid

rugged spire
#

HMMMMMMMMMMMM I was thinking I should do that with my PR

rugged spire
charred monolithBOT
austere talon
#

that is the issue

rugged spire
#

i see

austere talon
#

okay i think it's good now

#

and i can disable this horror plugin again

rugged spire
austere talon
#

283 Online

rugged spire
#

serverlistindicators hater....

austere talon
#

this code goes crazy

rugged spire
#

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

austere talon
rugged spire
#

shrimply just use the settings hook and return null in your component

charred monolithBOT
rugged spire
#

(don't do this)

limber skiff
#

its pretty hacky but yeah

austere talon
#

honestly the smoothest way anyway

rugged spire
#

how

austere talon
#

the settings hook approach can be used

austere talon
#

once for when you update via ui, once when the actual value is changed

#

you didn't remove the onChange call settings ui does

charred monolithBOT
austere talon
#

oh

#

nuckyz two steps ahead

limber skiff
#

LMAOO

austere talon
#

you should add a short comment explaining what this does exactly

#

(same below)

limber skiff
#

alright

scenic brook
#

Like new users not knowing that something like addMessageAccessory exists

austere talon
#

time to eat now

charred monolithBOT
limber skiff
#

oh okay

#

makes sense

#

that's annoying

#

@austere talon im gonna make Array.at return un-proxied

#

we need a way to get unproxied

austere talon
#

Settings.plain

limber skiff
#

but it's soo nested below

austere talon
#

maybe easier than thinking of 3 million methods xD

limber skiff
#

๐Ÿ˜ญ

#

I dont think you can reverse a proxy

austere talon
#

you can

limber skiff
#

oh

#

we just need to store it

austere talon
#
export const UnwrapProxy = Symbol("vencord.settingsproxy.unwrap");

get(target, key) {
  if (key === UnwrapProxy) return target;
},
set(target, key, value) {
  value &&= value[UnwrapProxy] ?? value;
}
limber skiff
#

omg righttt

#

I forgot target wasn't a proxy lol

austere talon
#

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

limber skiff
#

of course something didnt work...

austere talon
#

if u copied my old code it was wrong

#

i edited message

limber skiff
#

I already did that

austere talon
#

did you forget to implement the IS_PROXY one

limber skiff
#

nop

#

I already had it

austere talon
#

show full code

limber skiff
#

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

charred monolithBOT
limber skiff
#

oh

#

im dumbbb

rugged spire
#

what horrors have i found just by being bored and clicking buttons

#

why does discord devtools have a potions tab

#

yeah makes sense

limber skiff
#

another round, shall we?

long stream
limber skiff
#

oh right

#

destructuring objects doesnt work either

#

that's uhmm

austere talon
#

bit annoying but there isn't a good way to fix it

limber skiff
#

I dont know how to fix

austere talon
#

for arrays it's clear, use slice() or concat() to make a clone

limber skiff
#

it's a state, and just changing the property wont work

austere talon
#

but for object there isn't anything like that think

austere talon
limber skiff
#

oh

#

got it

somber thorn
austere talon
#

nah

#

i mean yeah but

#

no xD

somber thorn
#

oh okay fair โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹โ€‹

limber skiff
#

should I make the dms category no collapsable @austere talon

odd heath
#

Yes pls

#

Or at least add a setting

austere talon
#

either that or make it super clear that it's collapsed

#

or make it an opt-in setting

charred monolithBOT
limber skiff
#

I will just remove it

austere talon
#

some people might like it

#

making it opt in would be better probably

limber skiff
#

alright can you start reviewing

#

it's all done I will just add this one thing now

austere talon
#

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)

austere talon
#

oh yeah also someone test all plugins

#

i already tested a bunch and all work

limber skiff
#

ya wait

austere talon
#

did u fix the category colour changing

limber skiff
#

yeah

austere talon
#

this hurts me so much

limber skiff
#

the other one hurts me

#

lol

#

why does collapsing categories not work now...

austere talon
#

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");
limber skiff
#

nvm it does work

#

I had the channel selected...

charred monolithBOT
limber skiff
#

alright that's it

austere talon
#

this could potentially be extracted into a notifyListeners function to reduce duplication

charred monolithBOT
limber skiff
#

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

austere talon
#

yeah but it can never be undefined at that point like i said

#

you're checking for exactly null

limber skiff
#

ehh

austere talon
#

typeof undefined is not object uranium

limber skiff
#

alright fair enough

austere talon
#

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 uranium

limber skiff
#

should be fine to just return here

#

if a connection open happens after it will init and have the userId

austere talon
#

I mean I kinda get it cause I haven't been very active for the past weeks but still

limber skiff
#

these are my nitpicks lol

#

I find the other sooo ugly

rugged spire
limber skiff
#

if (...)
something()

rugged spire
#

thats ugly

limber skiff
#

yes I find it too

austere talon
#

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

rugged spire
#

long line?

austere talon
#

it doesn't have to be consistent in the entire project but it shouldn't be mixed in the same file

rugged spire
limber skiff
#

I'll just

#

discord already does the same everywhere they use div for a button

rugged spire
#

vee will explode my PR for this

austere talon
#

it's much cleaner

limber skiff
#

mehhh

#

it's not really needed

rugged spire
#

clickable also allows keyboard clicks

austere talon
#
<Clickable onClick={} onContextMenu={}>
  <h2>hi</h2>
</Clickable>
odd heath
limber skiff
#

and the other component which discord has is a h2 too

austere talon
#

the h2 doesn't support keyboard

limber skiff
#

tabindex does it, no?

austere talon
austere talon
#

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 uranium

limber skiff
austere talon
#

it doesnt have any styles so it should look the same

rugged spire
limber skiff
#

what if I just change it to a div

austere talon
#

that's worse ๐Ÿ˜ญ

#

use Clickable

rugged spire
#

because of how the create group popout keybind activates that popout

austere talon
#

it manually triggers click when you use keyboard

#

this is important for people who navigate discord with a keyboard

limber skiff
#

oh

#

ugh

rugged spire
#

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

austere talon
#

oh yeah it doesnt support that

#

keep the context menu on the h2

limber skiff
#

this is super ugly lol

charred monolithBOT
limber skiff
#

now it's consistent

rugged spire
austere talon
#

sucks that discord's clickable doesnt support onContextMenu

#

actually it does

rugged spire
#

do the types just suck

austere talon
#

but it's typed wrong

#

yes

#

it spreads

rugged spire
austere talon
#

you can move the onContextMenu back to the clickable @limber skiff xD

limber skiff
#

yeah but got fix the typings

austere talon
#

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))

austere talon
rugged spire
#

is that because typing it would be hell

charred monolithBOT
limber skiff
#

alrightt done

#

oh wait

#

I can infer the tag

austere talon
#

it wouldnt even be that hard with a generic

#
export type Clickable<Tag extends HTMLTagsIdkWhatThisUnionTypeIsCalledButItExistsSomewhere = "div"> = ComponentType<PropsWithChildren<ComponentPropsWithRef<Tag>>>;
charred monolithBOT
limber skiff
#

perfecttt

austere talon
#

oh is it just called ElementType

limber skiff
austere talon
#

well technically that wrongly has ComponentType

#

it should filter out only strings

limber skiff
#

I'm confused

#

why is it forcing it to be div

austere talon
#
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)

austere talon
#
<Clickable<"span">>LOL</Clickable>
#

you would have to do this i think

#

oh

#

this kills the generic

limber skiff
#

how so

austere talon
limber skiff
#

how does one even fix that

#

I'll just do this for now

austere talon
#

i think that does not really do anything

austere talon
#

actually I do know but you will hate this

granite wharf
#

@austere talon can I get a new branch for the rust rw code ive made for the installer

limber skiff
#

not even this works

charred monolithBOT
austere talon
#

nvm i fixed it

limber skiff
#

just waiting for that now

#

and then it's ready

charred monolithBOT
limber skiff
#

huh

#

how can that fix it?

charred monolithBOT
austere talon
limber skiff
#

it's the proper way of doing it

austere talon
#

IntrinsicElements works, ComponentPropsWithRef is borked

limber skiff
#

nop

#

look

charred monolithBOT
limber skiff
#

this works

austere talon
#

yeah yeah

#

i just did that as well

#

i was gonna push but u did too

limber skiff
#

lol

#

alright

austere talon
#

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

limber skiff
#

I'm pretty sure ComponentPropsWithRef uses IntrinsicElements internally

austere talon
#

and there is no use case for using insane tags, this is enough

limber skiff
#

what about button

#

LOL

austere talon
#

well

#

at that point you just use button directly

limber skiff
#

true

austere talon
#

Clickable basically just recreates button without button

#

because button styles are insane

austere talon
limber skiff
#

what are we waiting for?

austere talon
#

proper testing to find possible edge cases

#

and we havent pushed browser in ages

limber skiff
#

I tested pretty deeply

#

at least in every plugin it's used

austere talon
#

i suggest:

  1. merge dev into main and release extension
  2. merge your PR and my PR into dev and test extensively all plugins that got changed
  3. eventually merge into main again
#

i wouldn't release those big refactors to browser immediately

limber skiff
#

sure that seems good

austere talon
#

just so if we end up finding a regression / breakage it will be easy to fix without having browser broken for a while

limber skiff
#

have they pushed to stable yet

austere talon
#

btw we should also test the plugins with fully blank settings

austere talon
frail skyBOT
#
Bad Patches

BadgeAPI (had no effect):
ID: 184325
Match: ```
/(?<="aria-label":(\i).description,.{0,200})children:/


**__AccountPanelServerProfile (had no effect):__**
ID: `720734`
Match: ```
/(?<=\.AVATAR_SIZE\);)/
Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

limber skiff
#

ugh you gotta be kidding me

austere talon
#

BRO

#

THE TIMING

#

or did u just run it

limber skiff
#

I did

#

LOL

austere talon
#

oh...

#

i got excited

#

can you trigger workflow run with githubapi think

frail skyBOT
#
Bad Patches

None

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

limber skiff
#

omg

austere talon
#

if yes i can add a venbot command

limber skiff
#

they aren't working

austere talon
#

trol

#

bros having a free monday

limber skiff
#

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?

austere talon
austere talon
#

oh you mean at runtime

limber skiff
#

ya

austere talon
#

check whats running

#

i thought u meant related to workflow

limber skiff
#

if buildNumber > x run pach

rugged spire
#

i would use it

austere talon
#

vreport

nimble pendantBOT
austere talon
#

vh report

nimble pendantBOT
# austere talon vh report

Reporter (report, vencord-reporter, test-patches)

Run the Vencord reporter workflow

Usage

vreporter [ref = dev]
frail skyBOT
#
Bad Patches

BadgeAPI (had no effect):
ID: 184325
Match: ```
/(?<="aria-label":(\i).description,.{0,200})children:/


**__AccountPanelServerProfile (had no effect):__**
ID: `720734`
Match: ```
/(?<=\.AVATAR_SIZE\);)/
Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

#
Bad Patches

None

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

austere talon
#

@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

rugged spire
#

vreporter

austere talon
#

its mod only trol

#

you love whitenames spamming workflows

rugged spire
#

whats the point then

fossil inlet
#

husk

jolly egret
austere talon
#

do you really think i will give perms to everyone ๐Ÿ˜ญ

fossil inlet
#

let contributors run it

rugged spire
#

change it to contributor and give it a global cooldown

austere talon
#

acting like being a contributor means much

#

you can contribute anything claim the role and boom

austere talon
jolly egret
#

contribute a readme change and spam the fuck out of workflows tf

austere talon
#

manti would get bored and spam 200 workflow runs

fossil inlet
austere talon
#

duh..?

jolly egret
#

i mean thats what the role is there for

austere talon
#

we already have "contributor but more gatekept so only sane people (mostly) have it" it's called regular

jolly egret
#

lmao

rugged spire
#

there are totally insane regulars

austere talon
rugged spire
fossil inlet
#

Everyone in this server is insane blobcatcozy

rugged spire
#

but also it would be such a hassle

jolly egret
#

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

rugged spire
#

"contributor" and "developer" respectively

jolly egret
#

fwiw if the only reason is running reporter theres no point in going that far

rugged spire
#

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

shy veldt
scenic brook
#

But also I know I've only been here a few months but it kinda just works fine as is

rugged spire
scenic brook
#

Fair

fossil inlet
limber skiff
#

patches run too early the way it is currently

#

before wreq is available

#

however like this it can work I think

odd heath
jolly egret
#

its because you suck !!

limber skiff
austere talon
#

i will have to look tomorrow im gonna sleep soon

limber skiff
#

if anything I can say file was extensively tested

#

it's also pretty complex lol

#

I'll port it to a different pr then

median rapids
#

what if.. 2 commits

charred monolithBOT
#

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...

jolly egret
#

FIRE

fossil inlet
#

rust husk

austere talon
granite wharf
austere talon
#

why did that guy ai react lmao

#

pr description longer than 2 words = must be ai

granite wharf
#

ill have u know I wrote that manually

austere talon
#

samarai

#

where do i preorder

jolly egret
fossil inlet
#

@austere talon how tf do i make a slider in settings that only sticks to integers without having 100 markers

austere talon
#

check the props

glass jasper
scenic brook
# fossil inlet <@343383572805058560> how tf do i make a slider in settings that only sticks to ...

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>
        );
    }
}```
scenic brook
#

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

scenic brook
#

I don't remember

#

I did custom component to have the value state

charred monolithBOT
#
[Vendicated/Vencord] New branch created: patcher-rewrite
limber skiff
#

๐Ÿ™Œ

frail skyBOT
#
Bad Patches

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\);)/
Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

limber skiff
#

all working blobwob

frail skyBOT
#
Bad Patches

ShowHiddenChannels (took 4.80000000000291ms):
ID: 540126
Match: ```
/(activeJoinedRelevantThreads:.{0,50}VIEW_CHANNEL.+?renderLevel:(.+?),threadIds.+?renderLevel:).+?(?=,threadIds)/g

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

limber skiff
#

actually why is that so slow

#

vreport immediate-finds

nimble pendantBOT
fossil inlet
scenic brook
#

Need to set the first and last marker to be same as min and max value

rugged spire
fossil inlet
#

@scenic brook thanks for that, discords code is horror

odd heath
#

@limber skiff why no stack?.match but stack.match?

limber skiff
#

already returns in the first stack?.includes if its undefined

odd heath
#

Ah

#

Okie

limber skiff
#

this is being so weird...

frail skyBOT
#
Bad Patches

BadgeAPI (had no effect):
ID: 184325
Match: ```
/(?<="aria-label":(\i).description,.{0,200})children:/


**__AccountPanelServerProfile (had no effect):__**
ID: `720734`
Match: ```
/(?<=\.AVATAR_SIZE\);)/
Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

#
Bad Patches

None

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

limber skiff
#

oh

#

god...

#

I get the problem

odd heath
charred monolithBOT
limber skiff
#

BEAUTIFUL

#

hehe

#

I got it

#

@fossil inlet rate

fossil inlet
#

HORROR

limber skiff
#

HOW

fossil inlet
#

/hj

limber skiff
#

this was harder than I thought

fossil inlet
#

i see how it will be nice for massive/crashing changes so you can push out to main before discord pushes to stable

limber skiff
#

I had to manually require because this is called when the first module is required

austere talon
fossil inlet
#

i love re-implementing all of vencordnative in c++ blobcatcozy

austere talon
#

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

fossil inlet
#

i fucking hate CEF

charred monolithBOT
austere talon
#

why tf are u using cef

limber skiff
#

no big deal

austere talon
#

are u modding spotify or steam or something

fossil inlet
austere talon
#

yop to what

charred monolithBOT
fossil inlet
austere talon
#

is spicetify that bad

fossil inlet
#

yes

#

i dislike it

austere talon
fossil inlet
charred monolithBOT
limber skiff
#

vreport patcher-rewrite

nimble pendantBOT
frail skyBOT
#
Bad Patches

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\);)/
Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

austere talon
#

imagine if venbot ran tests locally and posted results (we love RCE)

limber skiff
#

however I cant make this work in reporter

frail skyBOT
#
Bad Patches

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\)}\);)/
Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

limber skiff
#

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

austere talon
#

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)

limber skiff
#

alrightt

#

I will wait for it blobwob

rugged spire
austere talon
#

everything feels laggy

charred monolithBOT
limber skiff
#

so it loads more stuff

charred monolithBOT
limber skiff
#

^^ it's actually unlikely for it to change

#

has kept the same for months already

fossil inlet
limber skiff
#

vreport patcher-rewrite

nimble pendantBOT
fossil inlet
#

arent module numbers derived from the some hash of the file or am i crazy

limber skiff
#

yeah

#

that's why

frail skyBOT
#
Bad Patches

BadgeAPI (had no effect):
ID: 184325
Match: ```
/(?<="aria-label":(\i).description,.{0,200})children:/


**__AccountPanelServerProfile (had no effect):__**
ID: `720734`
Match: ```
/(?<=\.AVATAR_SIZE\);)/
Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

#
Bad Patches

BadgeAPI (had no effect):
ID: 184325
Match: ```
/(?<=text:(\i).description,.{0,200})children:/


**__AccountPanelServerProfile (had no effect):__**
ID: `720734`
Match: ```
/(?<=\.SIZE_32\)}\);)/
Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

charred monolithBOT
limber skiff
#

vreport immediate-finds

nimble pendantBOT
limber skiff
#

how will this months old build go

#

vreport patcher-rewrite

nimble pendantBOT
limber skiff
#

ngl this really shouldn't be taking 30 seconds

frail skyBOT
#
Bad Patches

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(?=}))/

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

#
Bad Patches

BadgeAPI (had no effect):
ID: 184325
Match: ```
/(?<=text:(\i).description,.{0,200})children:/


**__AccountPanelServerProfile (had no effect):__**
ID: `720734`
Match: ```
/(?<=\.SIZE_32\)}\);)/
Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

rugged spire
limber skiff
#

I see, it's taking a huge time to test webpack finds

#

damn

rugged spire
rugged spire
#

if you open the regular popout

#

also nothing is clickable

#

it's infinitely rerendering blobhuskcozy

fossil inlet
#

yea

#

im sending 99999 requests

frail skyBOT
#
Bad Patches

BadgeAPI (had no effect):
ID: 184325
Match: ```
/(?<="aria-label":(\i).description,.{0,200})children:/


**__AccountPanelServerProfile (had no effect):__**
ID: `720734`
Match: ```
/(?<=\.AVATAR_SIZE\);)/
Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

#
Bad Patches

None

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

scenic brook
fossil inlet
#

might be stupid, but i cant find where methods in VencordNative are defined

#

nevermind, im very stupid

limber skiff
#

how is your Spotify mod going @fossil inlet

fossil inlet
#

good

#

ive got webpack patching working rn

#

im creating all of vencord-native in c++

#

with the v8 api in c

limber skiff
#

they use webpack too?

fossil inlet
#

yea

limber skiff
#

dont they have all files downloaded already

#

like, they don't just load a webpage

fossil inlet
#

yea

#

they bundle all their files into a archive

limber skiff
#

so you can just patch the files then, not sure what's better tho

#

I know spicetify does that and... yeah

fossil inlet
limber skiff
#

we know how that is

fossil inlet
#

(i think)

limber skiff
#

probably

#

when is crack plugin incoming

fossil inlet
#

blobcatcozy

        if ((IS_WEB ? stack?.includes("__webpack_require__") : stack && !stack.includes("xpui.js")) || Array.isArray(v)) {
            logger.debug("Ignoring Webpack module factory", stack);
            return;
        }
limber skiff
#

SpotX uses patches to crack Spotify too

#

but instead they modify the files

fossil inlet
#

tbh ill prob just copy spotx into a patch

#

if they're open source

limber skiff
#

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

fossil inlet
#

im using 6mo+ old vencord as a base for this

#

so idk

limber skiff
#

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

rugged spire
#

nvm

#

just your spotify mod

median rapids
#

pls make something better than spicetify i beg

fossil inlet
median rapids
#

i'm not good at native

#

unless u want me to write it in python

fossil inlet
#

i hate python for anything more than scripting

median rapids
#

python is ridiculously powerful

fossil inlet
#

tbh i prob just havent used it enough

#

compared to js/ts

#

but also i really dont like not having braces

median rapids
#

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

fossil inlet
median rapids
fossil inlet
#

nop

jagged reef
#

something something review 2ah, merge in that thang

#

lol it's almost a year old

median rapids
#

ven will add donor tier with priority reviews

jagged reef
fossil inlet
#

your plugin will be merged in 3-5 Business days

glass jasper
fossil inlet
glass jasper
#

Im not clicking that gng

austere talon
median rapids
glass jasper
limber gale
#

will either of these ever get merged ๐Ÿ˜”

limber gale
#

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

scenic brook
#

@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

fossil inlet
scenic brook
#

It works to not render the markers but not having the tooltip makes it pointless because they can't tell what they're picking

scenic brook
# charred monolith

I feel like it looks good but the word opposite is misspelled in the setting desc

charred monolithBOT
odd heath
#

Atp Just cherry pick my commits for the UI into that branch and make it one whole pr of us two lmao

odd heath
#

It's the simpler solution in my eyes

charred monolithBOT
limber skiff
#

bros are still in a break

austere talon
#

what does this improve

limber skiff
#

maps are cheaper than closures

#

this way we avoid creating a handler and a closure for each proxy

austere talon
#

oh like that

#

instead of recursively creating new proxies one single proxy that handles all

limber skiff
#

ya

austere talon
#

idk it shouldn't really matter tbh uranium

#

doubt it's enough to be relevant

#

but sure ig

#

wait no it still creates a lot of proxy

charred monolithBOT
limber skiff
#

it still avoids creating the functions and the handler for every new proxy, along with the closure

#

delet

charred monolithBOT
austere talon
limber skiff
#

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

junior olive
#

where is 263.0 stable on mobile

#

Or a new alpha

limber skiff
#

why is it pissing you off too lol

jolly egret
limber skiff
#

because there are conflicting patches between stable and canary

jolly egret
#

but that affects desktop too?

limber skiff
#

yes

#

let me show you

#

vreport main

nimble pendantBOT
frail skyBOT
#
Bad Patches

None

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

#
Bad Patches

BadgeAPI (had no effect):
ID: 184325
Match: ```
/(?<=text:(\i).description,.{0,200})children:/


**__AccountPanelServerProfile (had no effect):__**
ID: `720734`
Match: ```
/(?<=\.SIZE_32\)}\);)/
Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

limber skiff
#

vreport dev

nimble pendantBOT
frail skyBOT
#
Bad Patches

BadgeAPI (had no effect):
ID: 184325
Match: ```
/(?<="aria-label":(\i).description,.{0,200})children:/


**__AccountPanelServerProfile (had no effect):__**
ID: `720734`
Match: ```
/(?<=\.AVATAR_SIZE\);)/
Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

#
Bad Patches

None

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

glass jasper
# limber skiff bros are still in a break

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

limber skiff
#

they arent working today

glass jasper
#

Most likey yeah

austere talon
heady gyro
jolly egret
# limber skiff yes

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?

limber skiff
#

I dont wanna push a fix that's gonna break instantly after

#

this pr is literally to fix that

austere talon
#

the fix is for canary

#

push fix now = we break stable until discord releases it just to fix canary

jolly egret
#

meant more for the popover buttons fix

rugged spire
#

I am busy writing the worst Vencord find ever

odd heath
jolly egret
#

probably some terrible regex

rugged spire
#

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

jolly egret
limber skiff
#

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

rugged spire
#

This is the module

limber skiff
#

and the other?

fossil inlet
rugged spire
#

blobhuskcozy 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

austere talon
#

do you really need to find it

#

and why

#

what for

rugged spire
limber skiff
#

one has duration:66 and the other duration:90

#

just use that

rugged spire
austere talon
#

do you want to use the cog

rugged spire
#

yop

odd heath
#

lol

austere talon
#
  1. don't sorrykirino
  2. copy paste the lotti3 json and use it manually
limber skiff
rugged spire
austere talon
#

put it in a separate file guh

#

and import with file uri

rugged spire
#

i just looked into the module further

#

and i think i found something unique

granite wharf
#

@austere talon have u looked at my rust rw yet

#

I may add another thing on my todo regarding how I check vencord version

median rapids
glass jasper
frail skyBOT
#
Bad Patches

BadgeAPI (had no effect):
ID: 184325
Match: ```
/(?<="aria-label":(\i).description,.{0,200})children:/


**__AccountPanelServerProfile (had no effect):__**
ID: `720734`
Match: ```
/(?<=\.AVATAR_SIZE\);)/
Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

#
Bad Patches

None

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

limber skiff
#

vreport dev

nimble pendantBOT
frail skyBOT
#
Bad Patches

BadgeAPI (had no effect):
ID: 184325
Match: ```
/(?<="aria-label":(\i).description,.{0,200})children:/


**__AccountPanelServerProfile (had no effect):__**
ID: `720734`
Match: ```
/(?<=\.AVATAR_SIZE\);)/
Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

#
Bad Patches

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.+?)/

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

limber skiff
#

@austere talon are you still planning to review my other pr today?

median rapids
#

wtf ven sleeping at a normal time

#

impossible

limber skiff
#

they pushed to stable

#

vreport dev

nimble pendantBOT
frail skyBOT
#
Bad Patches

None

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

#
Bad Patches

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.+?)/

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

limber skiff
#

you gotta be kidding

austere talon
#

we should merge dev into main and release then

austere talon
#

i was gonna today but i slept way too late so i slept the whole day ๐Ÿ˜ญ

#

sorry

limber skiff
#

and it's even worse cuz it's an API

austere talon
#

could either make patch compatible with both or just add two patches one for stable one for canary then release

charred monolithBOT
limber skiff
#

@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 ๐Ÿ˜ญ

fossil inlet
#

did they fix a typo in their codebase or is that a vencord bug

limber skiff
#

Vencord bug

fossil inlet
#

๐Ÿ˜ญ

limber skiff
#

it didn't cause any issues but

#

omg all this time with a typo