#šŸ‘¾-core-development

1 messages Ā· Page 131 of 1

crude hearth
#

like

#

spotify embeds dont have ads either h

nimble plaza
#

but they have tracking i think

rare shale
#

how's uhhh

#

moxxie's pr

nimble plaza
#

lemme test

#

vesktop wont open now fear

crude hearth
#

javascript dev aaaaaaaaaaaaaaaaaaaaaaaaaaaaa javascript dev

nimble plaza
#

@austere talon idk if you know but theres no reset vesktop button on macos fear

crude hearth
#

"i personally don't care about 100MB ram usage"

nimble plaza
#

wheres settings file

crude hearth
#

BEN

nimble plaza
#

nop

#

blehh ill just load vesktop without vencord :fadeaway:

crude hearth
#

like whaaaaaaaaaaaaaaaa

austere talon
#

wdym?

crude hearth
#

thats how discord ended up

nimble plaza
#

its only there once discord loads

#

waaaaa

crude hearth
#

guys people have enough ram its okay for app to use 2gbs of memory

austere talon
#

stop whining who gives a shit

crude hearth
#

ven so angry

#

we are having a chill and good conversation

nimble plaza
#

oh lmao

crude hearth
#

I personally think if you can block it easier like its in pr

nimble plaza
#

if a native plugin breaks it just bricks vencord

crude hearth
#

adding something like adguard would be just unneccesary

nimble plaza
#

cool

austere talon
crude hearth
#

my opera uses same amount of memory with 5 tabs open

#

adguard uses 100mb

nimble plaza
crude hearth
#

idk ublock origin tho

#

but guessing its similar

austere talon
#

well yeah

#

having errors in main causes problems

crude hearth
#

eh idc about other stuff as long as it does its job

nimble plaza
austere talon
#

WHY IS THERE DEFAULT

nimble plaza
#

IDK

austere talon
#

wtf are u doing

nimble plaza
#

MY PLUGIN DOESNT EXPORT ANYTHING

#

??????

austere talon
#

you tell me

nimble plaza
#

does it have to export something?

austere talon
#

no

#

show your native.ts file

nimble plaza
crude hearth
#

whar

nimble plaza
#

i took that from spotify thingy

austere talon
#

shrug skill issue

#

the spotify one works fine

nimble plaza
#

is there any usecase to get anything other than a function from a native file

#

bc i can just add a check if its a function

crude hearth
#

ben

nimble plaza
#

works now

austere talon
#

because it shouldn't have any exports

#

send the entire file contents

nimble plaza
#

also for some reason my userplugin isnt registering any native things

#

wait no it only does if i export something

#

both of them follow the same format

austere talon
#

whar?

nimble plaza
#

its the same format as the adblock one

#

but it doesnt export anything

#

looking at the built, this is different

#

idk if thatd do anything

austere talon
#

send zip with ur userplugins and ill have a look

#

(later)

nimble plaza
#

oki

#

i mean bandage fix is if (typeof method !== "function") continue; but itd be better to find why its doing that

austere talon
#

btw this update could also enable invidious plugin to work

nimble plaza
#

what was wrong with it?

austere talon
#

the internet problem with it is csp

nimble plaza
#

ohh

austere talon
#

previously we would have needed to allow any frame source for it to work

nimble plaza
#

ill make an easy way to allow native plugins to do csp then :3 im lazy

austere talon
#

now we could have some native api like

addCspRule("MyPlugin", "frame-src", () => getSettings().invidiousHost)
nimble plaza
#

yeah thats what i was thinking

crude raptor
#

what is happening

austere talon
#

same for frame patching

nimble plaza
#

its really shitty but we could steal code from my ipcPlugins pr for frame patching

crude hearth
#

STOP DELETING MY REACTION

#

WHO IS RESPONSIBLE FOR THIS

shy veldt
nimble plaza
#

the codes so bad im not gonna release it

#

it has a clone of vencord's patcher modified for systemjs fear

livid heath
#

dw spoko can cope to insane levels for the sake of datamining

nimble plaza
#

lemme get a pic im on my phone

olive aurora
#

while undefined

#

husk

nimble plaza
#

hacky fix for a reason i dont remember

shy veldt
#

im trying rn

#

but failing

#

i know there was check to prevent opening it on prod if it was in an iframe

nimble plaza
#

iirc its sentrydebug?

charred monolithBOT
shy veldt
#

it was checking if its in iframe before

#

thats insane

#

making it easier

nimble plaza
#

ikr

ocean garden
#

is there a flux event dispatched or something of the sort when messages are loaded from the messagestore?

shy veldt
#

LOAD_MESSAGES_SUCCESS is when received from /messages endpoint

ocean garden
#

also, after modifying message.content from something in message store, dispatching the message_update doesn't refresh them on the UI. Any way to achieve this?

#

I ideally don't want to be running a navigationrouter.transition to every time I update a message

nimble plaza
#

LOOK AT IT

#

I SENT YOU

austere talon
shy veldt
#

tfw it still doesnt work

austere talon
#

use a setter to do it without polling MenheraScared1 MenheraScared1 MenheraScared1

#

vencord even has a util for this

#

onceDefined()

nimble plaza
#

i made it while drunk and tired

#

dont ask me

austere talon
#

you're committing crimes against humanity

nimble plaza
#

yep

shy veldt
#

way easier

nimble plaza
#

oh?

ocean garden
#

Is there a way to implement custom hooks?

misty raptor
#

what even is a hook

#

too used to address hooking

ocean garden
#

my bad, something like presendlistener but for other events

misty raptor
#

not ur bad i’m just dumb and not well versed in all this

ocean garden
#

it's my first time dabbling with plugins too

charred monolithBOT
#

When starting vencord-desktop using flags --ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-blink-features=MiddleClickAutoscroll to enable native Wayland support, autoscroll and to disable middle-click pasting, the client no longer has the usual VC icon in the taskbar, instead it is replaced with a generic white W in a yellow circle icon.

I'm running Vencord using the vencord-desktop-git AUR package on Arch in KDE.

Admittedly I'm not 100% if this is ...

charred monolithBOT
misty raptor
#

what if vencord had a modular plugin system wouldnt that be cool

olive aurora
#

??

misty raptor
#

like

#

instead of needing to install a whole other verison of vencord

#

and then manually add plugins to a plugin folder and then rebuild the whole tjing

#

what if u could just add plugin from the ui

#

even better

#

plugin index

#

within vencord ui itself

#

still rules on getting on the index but its more laxed since its not official vencord

charred monolithBOT
turbid hatch
misty raptor
#

what’s the big issue stopping such

turbid hatch
#

well

#

many

#

first, vencord's plugin architecture is not designed to do dynamic loading

#

second, plugins are written in typescript

#

and we aren't going to add a typescript compiler to the mod just to support this because of the heavy amount of complexity, and compiling plugins to be independent of the mod is a bit... eh? it seems odd..

#

yes you could just write javascript, but also that's awful for typing

#

third, the security implications and general dev effort for very little gain is a bit pointless

misty raptor
#

have a plug-in file that’s an archive of the transpiled js files along with other necessary files like css

turbid hatch
#

fourth, web versions can't support them! where are we going to store them? indexeddb is ideal but is async so we cant use it, and localstorage has a very small storage limit

misty raptor
#

true...

#

forgor about web version

#

how long on average does it take a plug-in to get accepted into the real deal

turbid hatch
#

depends on complexity and whether or not we're busy

#

ven has other things besides vencord obviously and as the final reviewer for everything it can take time

#

i'm full time employed so i can take time to do reviews and there aren't many other reviewers

#

the community can review PRs to assist the effort but in the end ven has the final say on everything

dusky sonnet
#

i like the fact that i can sorta trust all the available plugins :D

misty raptor
#

is there like a consistent update cycle

#

like do y’all check all the prs every other week or smth

turbid hatch
#

we make updates as necessary but we have no update cycle due to the aforementioned

#

if something breaks we go all hands on deck to fix stuff

misty raptor
#

true

junior olive
#

ĀÆ_(惄)_/ĀÆ

charred monolithBOT
misty raptor
#

would be nice to be able to opt-in for newer plugins that maybe haven’t been fully quality-control checked but have also been confirmed not to be security risks

#

but if that would be difficult

junior olive
#

the big gain of modular plugin loading would be to give users the option to easily try plugins before they're added to the mod itself (or maybe never added and only available as a third party plugin)

#

no faffing around with dev builds

#

the typescript compiler is a non issue... you just compile to JS before like every other mod

misty raptor
#

true

#

js create a build system for plugins

#

easy peasy

junior olive
#

security is fair but other mods have figured that out, architecture sure

but it is not "very little gain"

charred monolithBOT
woeful sable
#

will there be a feature that allows us to import plugins from github directly, through the client

junior olive
#

Probably not

turbid hatch
#

most of the ones that aren't are niches or are ones we dont want to add due to conflicts with our own ideology (e.g. MLE)

misty raptor
#

copy from geode

turbid hatch
#

we have to review every PR anyway, and part of that is the quality control step

#

quality control consists of functionality and code quality

misty raptor
#

yeah but reviewing for ā€œis there malwareā€ is significantly easier than ā€œis this a premium high quality thingā€

#

as someone who also reviews mods

#

for a different mod loader

turbid hatch
#

reviewing for "is there malware" means we have to test it too to make sure it works fine

#

because why would we bother checking for a minimum feature set to make sure its not malicious

#

and then come back to it later

#

we might as well just do it then

verbal pumice
#

and then you have to review every update

#

and then youre overall wasting more time than if you just reviewed it once

dire trench
#

ooooo you want to review my pull request

misty raptor
#

that’s what i’m sayin

junior olive
#

Vencord's plugin reviews undeniably take a while (at least right now) and I'm not saying this is anyone's fault but it's a undeniable fact, having modular plugin loading could allow users who want to try plugins waiting for review to be added to use them early

turbid hatch
#

then PR it, i guess

#

none of us are interested in writing a modular plugin loader, and even then it might not get added to the mod

#

we experimented with it before

junior olive
#

mhm

turbid hatch
#

it didnt go very well

junior olive
#

I'm not interested in writing it either but there is more than "very little" gain

misty raptor
#

even without a modular thingy thing

#

i checked the pull requests and there are some prs that have gone weeks with no response

#

maybe i’m privileged to not have a 9-5 but i feel like that’s something that could be worked on

turbid hatch
#

i have a 7-5

#

so

jagged cloak
#

sigh

misty raptor
#

recruit children to do the work of reviewing for you

#

šŸ’ŖšŸ’Ŗ

turbid hatch
#

community can review PRs already

#

but we dont really want to have people we dont really trust on the review team

junior olive
#

Afaict all plugins have to go through review by ven which seems like the real blocker (which is fine..? it is ven's mod after all)

turbid hatch
#

how do you think the linux kernel works

#

our review process is very similar

misty raptor
#

i have no idea how the linux kernel review process works

junior olive
#

I've gone through that shit before i hate it and it is not the same

turbid hatch
#

linus reviews everything

misty raptor
#

i know how the geode review process works

#

we have like 5 lead people who can all accept mods

junior olive
#

stuff gets reviewed by trusted subsystem maintainers

#

merged into their own branch

turbid hatch
#

yes, who then send it to linus for final review

#

that's what i mean

patent minnow
#

It's on github

turbid hatch
#

itsn ot

turbid hatch
patent minnow
#

You wait to be approved in pull requests

misty raptor
#

either way

junior olive
#

I highly doubt he reviews all of it, it's already reviewed by trusted subsystem maintainers

misty raptor
#

this isn’t linux

turbid hatch
#

no, but i'm saying our process is modelled similar to it

misty raptor
#

linux has 50 bajillion prs

turbid hatch
#

ven reviews everything because it's their mod

stuck finch
junior olive
#

actually @turbid hatch he almost certainly doesn't

#

(linus)

turbid hatch
#

well that's what the linux foundation said 11 years ago

#

i surprisingly do not keep up with how their model works

#

i do not contribute to the kernel

#

but that is what i last heard the process being

misty raptor
junior olive
#

uh huh so i am telling ya

misty raptor
#

there’s too many commits

turbid hatch
#

and the point is going over your heads so i will no longer engage in that specific part of the conversation

junior olive
misty raptor
#

it’s not going over my head

turbid hatch
#

you're nitpicking on it and not taking the point that i'm trying to make in that ven has ultimate authority and therefore everything goes through them

junior olive
#

what I'm hearing is there needs to be a bigger plugin review team trol

misty raptor
#

i just happen to like nitpicking

#

i got the point very clearly

junior olive
#

be more like linux, have trusted plugin subsystem maintainers that review them and ven merges

turbid hatch
#

we already do in some cases

#

existing plugins require their maintainers to review them whenever a PR affects them most of the time

#

new plugins require ven's approval explicitly

#

community can file reviews freely and so can existing contributors and certain specific people who have collaborator rights on the repo

junior olive
#

community reviews don't do shit towards getting stuff in-mod bc they aren't trusted

turbid hatch
#

they provide basic quality control for people

junior olive
#

yes

misty raptor
#

what if there was a vencord ā€œcommunity editionā€ where trusted reviewers could merge into that branch

misty raptor
#

and then ven picks and chooses for their version of the real vencord

turbid hatch
#

not many people would* use a branch that we dont make the main one

#

therefore there's no advantage to us

#

except now we have to maintain a separate version of the mod and provide support for it

misty raptor
#

would it really have to have separate maintenance if the only difference is more plugins

turbid hatch
#

yes, because we have to provide support for plugins not in the main version of the mod

misty raptor
#

isnt it the plugin dev’s responsibility to provide support for their plugin

nimble plaza
#

no

turbid hatch
#

the plugin dev isn't always here

#

everyone can provide support for anything

#

that's part of the charm of our support system, a large group of the contributors here know what each and every plugin does

#

and even if some dont, they know a large majority

#

splitting the mod off into different version branches and dynamic plugin loading and whatnot will make us lose that

misty raptor
#

i already scrapped the dynamic idea

turbid hatch
#

im using it as an example of why we dont want to do things the way you're suggesting

misty raptor
#

u could make it so in the beta edition, before plugins get merged to the main repo, it’s the dev’s responsibility

junior olive
#

So does ven have to review updates to existing plugins or just new plugins

turbid hatch
#

okay

misty raptor
#

js like third party plugins

turbid hatch
#

we already have that

junior olive
#

that's my question

charred monolithBOT
turbid hatch
#

it's called the dev branch

#

you can git clone, build, and run the dev version yourself

misty raptor
#

can i merge my plugin into the dev branch

turbid hatch
#

you can run it as a plugin yes

charred monolithBOT
turbid hatch
#

src/userplugins or src/plugins/ if it's one you want to end up PRing

misty raptor
#

does it have to go through ven to get into the dev branch

nimble plaza
#

yes

turbid hatch
#

yes

junior olive
nimble plaza
#

yop

#

anything added to official vencord goes through ven

turbid hatch
#

you can always fork and merge in dev branch changes if you want in your own copy

misty raptor
#

was i dooming myself by making a pr on whatever main branch there was

#

should i switch to dev branch

nimble plaza
#

ven can change it easily

#

its fine

turbid hatch
#

preferably, but we can rebase PRs

#

it's not a big deal

nimble plaza
#

just use dev branch in the future

patent minnow
junior olive
turbid hatch
#

minor fixes and also ven granted permission here

junior olive
#

mk

turbid hatch
#

collaborators can make minor changes, we cant accept full plugins or features unless ven says so

junior olive
#

duh

#

ok

charred monolithBOT
void echo
#

what even was this

#

@junior olive

junior olive
void echo
#

...was there ecryption???

junior olive
#

nope

#

no idea what he was talking about

austere talon
#

as long as it abides with vencord's quality standard it can be accepted fine

#

it's just that it's mostly me doing review

austere talon
#

they can technically merge anything

junior olive
#

that's a lot for one person

turbid hatch
#

im fairly certain everyone else sees it that way too

#

(otherwise usercss would've been in ages ago :^)

junior olive
#

If more people were trusted with reviewing plugin code and functionality leaving Ven the final say of merging it as a idea/scope that could help no?

turbid hatch
junior olive
#

mhm

austere talon
#

it's not even just trust

#

you can't just announce someone as reviewer that's not how it works

#

anyone can review other people's prs regardless of their involvement in the project

#

if someone were to do that regularly and leave good reviews they would be made a collaborator in no time

turbid hatch
#

cute_nod this is why i mentioned that the community can review PRs earlier

austere talon
turbid hatch
#

and in fact we should probably encourage that more

austere talon
#

noone does that tho

turbid hatch
#

a couple of people do

#

quality of review varies but it does help

dire trench
#

only person ive seen do that is MrDiamond

austere talon
turbid hatch
#

yip

austere talon
#

i think the only outside contributors who very actively contribute right now are ryan and autumn

#

maybe im missing someone, don't be mad if I forgot u šŸ™

junior olive
#

Kasi reviewed decor but never submitted a actual review presumably because we thought it didn't matter

spark pivot
#

And I’ve made three prs but they are getting buried lol

limber skiff
#

what prs did you make

spark pivot
#

Remix might be outdated soon

#

If discord will ever add it to desktop

limber skiff
#

that remembers me we have to see if we can bypass nitro requirement for clipping

#

doubt it but...

nimble plaza
#

clipping is clientside no?

spark pivot
#

We bypassed the stream resolution thing I think clips would be similar

#

When I had nitro I could not figure out how clipping worked

limber skiff
#

might be wrong tho

jagged cloak
#

i could review more since i know what to watchout for but id probably miss a lot so i don't sillytime

#

and im probably not the only one that thinks thst way lol

long stream
#

at least with basic

#

not sure about non-nitro

charred monolithBOT
distant flax
jagged cloak
#

wait clipping is behind nitro? lol bruh

#

who clips on discord anyways

distant flax
#

yeah there was some time where it was available for everyone and now its behind nitro for some reasno

charred monolithBOT
#

This might be a fairly niche usecase, but would it be possible to have a way to select a real audio input for screensharing? My usecase for this is streaming from a game console where my capture solution only handles video, so I just connect the console's audio output to my motherboard's line in jack.

Venmic allows this, it would have to be utilized by vencord but that should be fairly easy

shy veldt
teal halo
charred monolithBOT
nimble plaza
#

thats curious

#

go wrapper surrounding discord that skips host updating and doesnt let it store registry keys

charred monolithBOT
junior olive
#

@austere talon how can i find a entire webpack module as a string

#

is that allowed in a plugin

charred monolithBOT
nimble plaza
#

also id assume not allowed, if you need to extract something from it use a patch

junior olive
#

i can't

#

i just tried

nimble plaza
#

whats the usecase

charred monolithBOT
junior olive
#

Decor loads 2 diff modal modules to use UI components from and discord broke the create sticker one

#

I need to extract the module id of said modal's module from somewhere else now

nimble plaza
#

wait for discord to fix it????

#

dont try to fix discord issues

junior olive
#

No like

#

they broke my find

#

they seemingly removed the code that would load the sticker module

#

(it's still loaded from other places, but the load i was finding is gone)

nimble plaza
#

then either find it from somewhere else or

junior olive
#

that's what i'm trying to do

nimble plaza
#

use a patch to find the module and immediately after do $self.modalModule = exports

#

or whatever the webpack syntax for that is

junior olive
#

it's not exported

#

look give me a bit to explain

nimble plaza
#

then immediately after the function definition

#

ok

junior olive
#

Okay so

#

I need to get this stuff:
await n.el("54666").then(n.bind(n, "54666"))

#

it's only in 2 places in discord without opening any server settings etc

nimble plaza
#

send the module id, ill make a patch in a sec

#

ik how to get it

junior olive
#

just

#

1s

#

It's in one React.useCallback in 889701 and I patched the assignment of it but it doesn't work bc the definition isn't called until you go to the sticker picker and click create sticker or some shit

#

you know i think i can just use the 2nd one

#

ima cry if i can

charred monolithBOT
junior olive
#

okay @nimble plaza i think i just need a custom find

#

the other module it's included in is 77162

#

a memoized component

#

can't findByCode or findByProps it

nimble plaza
#

are you on canary (to know if the module id is the same for me)

junior olive
#

yes

#

I'm gonna work on the find

#

bc much nicer than using a patch to extract it

charred monolithBOT
#

Some backstory:

Wayland by design does not allow an app to listen to hotkeys when you're focused on a different window. So global hotkeys don't work unless configured in KDE (systemsettings kcm_keys).
The official Discord for Linux runs on XWayland, so Discord PTT works only when focused on Discord or any X window.
So this tool was created:
https://github.com/Rush/wayland-push-to-talk-fix/
It directly listens to the uinput device, and uses xdotool to forward any relevant keypresses to ...

junior olive
#

why does byCode do this

#

@nimble plaza we're so back

nimble plaza
#
{
    find: ".default.Messages.STICKER_PICKER_CREATE_STICKER}",
    replacement: {
        match: /(openModalLazy.+?)(let{.+?)(\d+)/,
        replace: "$1$self.modalModule = $3;$2$3"
    }
}```
junior olive
nimble plaza
#

oh you did it already

#

lmao

junior olive
#

that wouldn't work anyways

nimble plaza
#

wym

junior olive
#

because it wouldn't get called until the user clicks whatever runs that async function

nimble plaza
#

oh fuck uh

#

did you already do it bc i can fix it

junior olive
#

yes i did

nimble plaza
#

ah ok

junior olive
#

i did it w/ a find for a diff module

#

this was the issue with my original patch to do it

nimble plaza
#

ah

junior olive
#

the patch didn't really assign until called

#
const StickerPickerPreview = findLazy(m => {
    const type = m.default?.type;
    if (typeof type !== "function") return false;
    const s = Function.prototype.toString.call(type);
    return s.includes("isDisplayingIndividualStickers");
});
#

is this find ok

nimble plaza
#

show

junior olive
#

show what

nimble plaza
#

the find

#

unless im blind

junior olive
#

that is the find

nimble plaza
#

why Function.prototype.toString.call(type);

junior olive
#

just doing what vencord's byCode does

junior olive
nimble plaza
#

just (type as Function).toString()

#

guh

#

@austere talon fear

junior olive
#

i basically just needed byCode but on a memoized component

charred monolithBOT
nimble plaza
#

why wouldnt findByCodeLazy work (im stupid)

#

or findLazy(Filters.byCode("abc"))

junior olive
#

because it makes the function a object

nimble plaza
#

OH

junior olive
#

the actual function is stored in .type on that object

nimble plaza
#

ohhhh

austere talon
junior olive
#

yea i did smt else

austere talon
austere talon
nimble plaza
#

oh weird

austere talon
junior olive
#

sure

austere talon
#

it shouldnt matter much but its generally better to not rely on prototypes in js world

junior olive
#

LMAO

austere talon
#

same reason you should use

Object.prototype.hasOwnProperty.call(someObj, "banana")
#

over someObj.hasOwnProperty("banana")

junior olive
#

THIS FIND BREAKS COMPANION šŸ”„

austere talon
#

ya

#

it doesnt support variables cause thatd be way more complex to parse

junior olive
#

yop

charred monolithBOT
torpid thicket
#

is this in progress? It doesn't seem to work with chat logger enhanced

#

or fakeprofilethemesandeffects

honest viper
#

It works with fakeprofilethemesandeffects, I'm currently using both

#

Can't speak on vc logger though

charred monolithBOT
torpid thicket
junior olive
#

that's not decor's fault lol

torpid thicket
#

what is it?

junior olive
#

idk

torpid thicket
#

It only showed up once I tried to use decor

junior olive
#

did you add decor as a userplugin

torpid thicket
#

no

junior olive
#

weird

torpid thicket
junior olive
#

idk but it's not decor's fault

torpid thicket
#

I just git cloned the repo that the pull request was submitted from

#

wait I know what it is

junior olive
#

did u clone the right branch

torpid thicket
#

I forgoršŸ’€ to switch branches

#

šŸ’€

junior olive
#

yeah.. šŸ’€

torpid thicket
#

same error...

#

lemme try something

junior olive
#

make sure you switch branch, install dependencies (decor has additional dependency)

charred monolithBOT
dire trench
junior olive
#

kinda

austere talon
#

only if they import other plugins

dire trench
#

and its meant to be in src/plugins

junior olive
#

2 things, one decor has zustand added as a dev dependency for types, two decor adds 2 icons to the common icons file

torpid thicket
junior olive
#

it's easier just to say "cant use as userplugin" than "you also need to add zustand@3.7.2 as a dev dependency and add these two icons to the common icons"

torpid thicket
#

how do I use decor?

junior olive
#

enable it -> go to profiles in settings

dire trench
#

i had to add myself to devs too
so wouldnt there be conflict with someone using both decor and fakeprofilethemesandeffects?

#

in their current state

junior olive
#

i was already in devs

#

they prolly added u locally manually

torpid thicket
junior olive
torpid thicket
charred monolithBOT
frail skyBOT
#
Bad Patches

NoTrack (found no module):
ID: -
Match: window.DiscordSentry=

FakeNitro (found no module):
ID: -
Match: canUseStickersEverywhere:function

Bad Starts

None

Discord Errors

None

void echo
#

oops

frail skyBOT
#
Bad Patches

ShowHiddenChannels (had no effect):
ID: 319839
Match: /(?<=renderLevel:(\i\(this,\i\)\?\i\.Show:\i\.WouldShowIfUncollapsed).+?renderLevel:).+?(?=,)/

ShowHiddenChannels (had no effect):
ID: 319839
Match: /(?<=activeJoinedRelevantThreads.+?renderLevel:.+?,threadIds:\i\(this.record.+?renderLevel:)(\i)\..+?(?=,)/

PinDMs (had no effect):
ID: 631316
Match: /===\i\.DMS&&0/

NoTrack (found no module):
ID: -
Match: window.DiscordSentry=

FakeNitro (found no module):
ID: -
Match: canUseStickersEverywhere:function

Bad Starts

None

Discord Errors

None

austere talon
#

WTF

#

not cool

junior olive
#

sad!

#

lame its mostly big plugins too

limber skiff
#

stop discor

charred monolithBOT
shy veldt
# charred monolith

thats literally so good idk what you mean ven šŸ™„šŸ™„šŸ„°šŸ„°šŸ˜

austere talon
junior olive
#

i didnt quite look at that review

#

closely

#

i did proper if statements for verbosity

#

why remove the else if tho

dire trench
austere talon
#

search for RestAPI in code

#

many examples

charred monolithBOT
junior olive
#

@austere talon the themes tab also uses inviteactions

charred monolithBOT
austere talon
junior olive
#

errr???

#

doesn't seem like it

austere talon
#

in that pr specifically

junior olive
#

Ah okay wasn't looking at it

#

We could make decor use that too..? maybe

#

well mmm

charred monolithBOT
junior olive
charred monolithBOT
junior olive
austere talon
#

ya thats basically the same

#

vesktop also uses that

#

maybe extract that util to @utils/discord

#

cc @cunning canyon

junior olive
#

yeah that's a good idea

#

w/ the validity checks from autumn's pr

charred monolithBOT
austere talon
#

btw u dont need to put ur images there, we have an image thread issue

#

but theyre fine there as well

junior olive
#

I put them there bc i'm using that for decor assets

#

that's where guidelines are n shit

austere talon
#
/(\i===\i\.Section\.PURCHASE\|\|\i===\i\.Section\.PREMIUM_PURCHASE&&\i)(?<=avatarDecoration:(\i).{0,800}?)/
#

this lookbehind is for matching the varname, right?

junior olive
#

uhhhhhhh

#

yes....

austere talon
#

just use .+? then

junior olive
#

should i do that rn or do you want to review and i commit it

austere talon
#

ill review

junior olive
#

ok

austere talon
#

youre gonna get a heart attack

junior olive
#

oh no

#

it cannot be that bad right Fear

charred monolithBOT
austere talon
#

i'll look at the rest tmrw

junior olive
#

this seems fine

austere talon
#

oh

#

the webhook got rate limited

junior olive
#

oh no

austere talon
#

there are 19 comments yui_Laugh

#

its mostly small things tho

junior olive
#

19 -> 38 comments

austere talon
#

well ya im not even close to being done

#

so much code

junior olive
#

fym not even close Fear

main trout
#

ven

#

my beloved

#

mergery mergy keywordnotifier <3

junior olive
#

@austere talon p sure i did this for specific reasons

#

like

austere talon
#

nah

junior olive
#

i did

#

1s

austere talon
#

the one below yes cause

if (ids?.length !== 0)
``` is wrong
#

but the one i commented on no

junior olive
austere talon
junior olive
#

is it tho??

#

maybe

#

ill try it

austere talon
#

ya

junior olive
#

ok this review isn't so bad

austere talon
#

yeah like i said its just mostly minor things

junior olive
#

you basically just have ui left now no?

austere talon
#

probably idk

junior olive
#

WHY DID GITHUB HIDE REVIEW COMMENTS

austere talon
austere talon
junior olive
austere talon
#

you love folders way too much

#

bro thinks hes coding java

austere talon
#

(its fine i just find it funny)

#

also on a totally unrelated note, im surprised not more people change the license header to include their own name

dapper tiger
#

hi

charred monolithBOT
austere talon
austere talon
# charred monolith

basically, start() may be called without your CONNECTION_OPEN ever being called (if the user enables the plugin later)

actually on second thought, i think start might NOT be called if your plugin has patches?

austere talon
junior olive
#

i mightve idk

austere talon
#

(it's completely redundant cause you already have copyright even if you're not explicitly mentioned. but it's still nice for attribution, so plugin devs are allowed to change the license owner line to anything they want ( i recommend just adding your name to the list ) )

austere talon
#

btw u dont have to comment fine or ok or whatever, just do it and mark resolved

austere talon
junior olive
#

yop

charred monolithBOT
austere talon
#

these are equivalent unless SKU_ID can be undefined

#

then no

junior olive
#

guhh i swear i had it as ? before and it wasn't doing what i wanted

#

maybe

austere talon
#

undefined === SKU_ID will always be false assuming SKU_ID isnt undefined itself

#

anwywayi sleep now

junior olive
#

gn

austere talon
#

actually gonna merge dev first

#

expect decors merged within the next few days assuming u address feedback (and future feedback) timely

#

sorry for the wait so far

junior olive
#

ill sort out current review tn

#

probably same will happen with future feedback

austere talon
#

no rush, i'll review the rest tmrw and test it properly then and there mightbe more UX feedback after testing and then once thats addressed it can be merged probably

junior olive
#

nonrefundable

#

yk

austere talon
#

WHAT

#

NO

junior olive
#

yeah sorry :/

#

hopefully the rats don't make you crazy

austere talon
#

god i wanna sleep but i got a sudden energy rush

#

wtf

#

ADHD is toxic

junior olive
#

erm..

austere talon
#

nah ill actually sleep hahahaha

#

dont get ur hopes up buckaroo

junior olive
#

woooow Sad

austere talon
#

šŸ˜›

junior olive
#

fuck u then vee, i hope the rats make u crazy !!!!

austere talon
#

i wish i could merge all 90 prs rn, i really do

#

its not that simple unfortunately šŸ™

#

once i hit merge the plugin is suddenly also my responsibility

charred monolithBOT
junior olive
#

i'm unsure ab repeatedly specifying Decor

austere talon
#

breaking discord pages is unaccpetable

dire trench
#

edm155

junior olive
austere talon
junior olive
#

ok time to go through all of these and do them

main trout
#

need plugin ideas

junior olive
#

🚫

main trout
#

need to get my vencord contributions up

#

sitting at a nice 1 rn

junior olive
#

what about NoEntrySignIcon vee

#

thats the emoji nam

main trout
#

Actually

main trout
#

How many contributions does donating count for?

#

At least 5 right?

junior olive
#

what

#

oh

austere talon
#

huhhh

main trout
#

Vencord confusion speed run any%

austere talon
#

high quality contributions are priceless

junior olive
main trout
austere talon
#

honestly while verbose = horror, self documenting code is also nice

main trout
#

Actually

void echo
#

Is there any specific format for the readmes?

austere talon
#

so i thin kthats fine fiery

junior olive
#

ok

main trout
#

If keyword notifier gets merged

#

I'll contribute to that

#

It's a golden plugin

austere talon
main trout
austere talon
#

i used to be a sucker for super short names but verbose names are pretty nice

junior olive
#

im not gonna bother w gh actions commit shit

#

prs

dire trench
#

i had to shorten all my variables

#

by like two thirds

austere talon
main trout
#

this is what my code looks like

dapper tiger
#

soon

main trout
junior olive
main trout
#

this also exists

#

BUT WE DO NOT TALK ABOUT IT

#

theres no better way

austere talon
junior olive
#

like im not gonna call decorAvatarDecoration that inside a decor page it'd just be avatarDecoration (maybe)

austere talon
#

but still helps imo, especially if the func is longer or just a block somewhere

#

it always depends on context

junior olive
#

wait why the fuck did i do this patch like this

#

holup

#

ima read the code

#

why did i do it like that

#

o

#

this was before i knew assignments returned and that was partially changed after i did know

#

@austere talon this is why

#

ok what if i just

austere talon
#

the types u mean?

junior olive
#

yeah

#

theyre fucked

austere talon
#

just extend the user type for now (though we really gotta update them soon)

junior olive
#

yea

austere talon
#
import { User as BananaUser } from "discord-types";

interface User extends BananaUser {
  avatarDecoration: { ... }
}
junior olive
#
interface AvatarDecoration {
    asset: string;
    skuId: string;
}

interface UserWithAvatarDecoration extends User {
    avatarDecoration: AvatarDecoration;
    avatarDecorationData: AvatarDecoration;
}
austere talon
#

or that

#

anyway we should just make our own types package soon

#

discord-types sooo outdated SKULLY

junior olive
#

i should probably type some of the other places avatar decoration is but EEEEEHHHHH

#

or i do that

austere talon
#

im a big fan of typing

#

i get its kinda a chore but it helps catch bugs

junior olive
#

i am too

#

but the types being outdated made me not bother

austere talon
#

this is like some server subscription shit

#

idek how it works and dont know any servers where we could test it

void echo
#

ven are we retroactively adding readmes to the plugins that dont have them?

#

i can give a hand wth that tmrw if you'd like

junior olive
#

@austere talon THERE WAS REASON FOR THE EXTRA HAS CHECK

#

IN GET USER

junior olive
#

TO REMOVE DECOR DECORATIONS FROM USERS WHO DIDN'T HAVE THEM ANYMORE

austere talon
#

planned

#

the plan is to make it a community project thing

#

but i havent gotten around to it yet

junior olive
#

vee im not doing this

#

bc the store can have a null entry

#

which indicates that the user doesn't have a decor decoration and that the client should remove it if the user does have one

austere talon
#

ohh okay

#

yeah fair then

#

just mark as resolved

junior olive
#

just looked at the user class btw

junior olive
#

i guess i need to set avatarDecorationData

#

wtf is parseavadecodata

#
s = e=>"object" == typeof e && null != e && "asset"in e && "string" == typeof e.asset ? "sku_id"in e && "string" == typeof e.sku_id ? {
            asset: e.asset,
            skuId: e.sku_id
        } : "skuId"in e && "string" == typeof e.skuId ? {
            asset: e.asset,
            skuId: e.skuId
        } : {
            asset: e.asset
        } : null
#

that is parse avatar decoration data

#

ok ill update this code

junior olive
#

wait

#

that seems fine..??

#

wait

void echo
#

what's the default limit on it?

junior olive
#

yeah how the fuck did that break5

void echo
#

i got a load to play

mortal fractal
#

fiery will patch find: "isAvatarDecorationAnimating:" instead of mangling UserStore and getAvatarDecorationURL

austere talon
junior olive
#

i know

austere talon
#

you don't want the >= 5 in there

#

its an easy fix just need to add an extra group

junior olive
#

i swear i had that correct before

austere talon
#

should i just fix it rn

#

jumpscare

junior olive
#

(?<=BURST_REACTION_EFFECT_PLAY:\i=>{.{50,100})(\i\(\i,\i\))>=\d+

austere talon
#

ya

junior olive
#

that seems right

mortal fractal
#

i mean the only place its not used is the account panel

junior olive
#

idk if they use getaviurl in random places

mortal fractal
#

and tbh im only using it because its a react hook and thus i can add panic support to it easier

austere talon
#

patching this seems way way cleaner and will solve your memberlist issue too

junior olive
mortal fractal
#

whats the issue with the member list?

austere talon
#

cause its a react hook so you can use an effect in there to fetch decors

junior olive
#

cyn u really had to wait until the last minute to tell me Fear

mortal fractal
#

i didnt know you were having issues so

junior olive
#

the rats will be released

austere talon
#

now u dont need all your subscriptions and multiple patches anymore

#

but yeah thats really a bit late 😭

mortal fractal
#

i still think the zustand stuff is overengineered and confuses the fuck out of me

junior olive
#

im genuinely going to explode

junior olive
#

😭

#

ok what fucking server has that sob

#

BOOG FUCKING TOWN

mortal fractal
#

i literally just have a Map with the users and refetch all users every 5 minutes

junior olive
#

that's what decor used to do minus the refetch bit

austere talon
#

could be this easy now probably

austere talon
#

and boom done basically

junior olive
#

😃

austere talon
#

maybe use an interval like cyn to periodically refetch but imo that's kinda whatever, most people won't update their decor often

junior olive
#

no

#

well

#

guhhhh

#

this is reengineering the core of the plugin at the very last minute

mortal fractal
#

how so?

junior olive
#

this is effectively redoing the actual bit that handles setting decor decors

#

which isn't a problem

#

but it is a lil inconvenient at the last minute

mortal fractal
#

i feel bad now that i didnt bring this up earlier

junior olive
#

don't u didn't know

#

I might do a combination solution

#

this new bit, but w/ flux subscription functionality retained

#

to a extent

#

make that handle updating ppls decors

austere talon
#

why

#

oh

#

fair

#

actually

#

way simpler

austere talon
#

then upon each request, if the timestamp is too old, trigger a refetch

void echo
#

fiery am i good to leave u to resolve reaction tweaks

junior olive
#

yea ill deal with it later

void echo
#

kk

austere talon
junior olive
#

hhhhhhhg

#

this was the heart attack u were talking about

austere talon
#

please dont pr from main branch in the future

#

anton

junior olive
#

tests dont run otherwise

austere talon
#

and don't uncheck "allow maintainers to edit pr"

austere talon
#

im talking about from main

junior olive
#

ohhh

#

yea

austere talon
#

hes using the main branch in his fork

austere talon
#

wel

austere talon
#

github gui let me do it

junior olive
#

I want to have proper places trigger a refetch

#

like rn opening the profile will refetch

#

ideally the popout would too

#

i hadn't refined those

austere talon
#

you could have a combination of both

#

cache age to refresh old decors in chat / member list

#

and manual refetch on profile open

junior olive
#

maybee

#

probably fine

#

@mortal fractal could you share the hh patch for that thing idk how to do hook patches

mortal fractal
#

just ensure everything you need to do is before the return and you wont break rule of hooks

austere talon
#

well you just need to insert ur hook somewhere in their hook before any early returns

#

we basically said the same thing

junior olive
#

wait

#

this isn't going to properly work quite

#

well