#👾-core-development

1 messages · Page 56 of 1

quaint sapphire
#

if you get what I mean

charred monolithBOT
quaint sapphire
#

@cold patio uhh

#

do you understand the point of having the Devs constant?
Cause to me it looks like you don't.

#

Why do you have your own constant, that uses the Devs constant?

#

that is such a BD concept

#

like, this is hilarious

#

and makes me want to question your life choices

#

it is not practical in any way and it makes it harder to read who the author is
since you have to open the constants folder, and realize that the index file doesn't have the constant, you instead have to open the constants.ts file to see the author

#

like, why?

#

do you like obscuring away who the author is?

#

you prefer having more files that decrease the readability over just putting the damn info directly in definePlugin?

heck, you didn't even use definePlugin, you made a class that implements it

charred monolithBOT
quaint sapphire
#

What's up with having different constants for the plugin contributors and the plugin author?

#

like, if you want to know who the author of a plugin is, it usually is the first dev on the list of authors

#

we don't re-order the authors array

#

this here is bullshit

#

why even have a folder for stores at this point?

#

you made so many unnecessary folders

#

do you want to torture the others that try to review your code or smth?

charred monolithBOT
quaint sapphire
#

look man, I can't even begin to read your code because of your style choices

#

how do you expect anyone to honestly review it?

#

it not only is huge in length, it also abstracts away everything

#

oh you want a logger?
it is a single file within an entire folder

"why?" you may ask?
because I like watching people suffer

this is my impression of you

#

so many darn folders that serve no purpose

#

they don't help organize your code, in fact they make it worse

#

Instead of having READMEs, use the settingsAboutComponent

#

you you see how easy it is to read and review this plugin?

#

that should be your goal

#

you don't bundle and deliver a single js file like in better discord
if you want a plugin bundled with vencord, then it should follow vencord's style guides

#

even if no guide is officially out there, you can easily see what our style is by looking at other plugins

#

I didn't look at your code with the intention of badmouthing it, I only looked at it to help review it and revive your PR.
But this is really that ugly.

#

you don't consider the DX when writing code?
(DX=Developer Experience, basically how good it feels to work with any given piece of code)

#

your code shouldn't need to make me feel excellent, but it also shouldn't give me a headache when trying to comprehend it

austere talon
#

you really need to learn to voice criticism in a nicer way

#

you're always being so aggressive

#

🫡

quaint sapphire
#

yeah I am, but this time it is the truth

#

I can't even review the code, bc of the way it is structured.

cold patio
#

@quaint sapphire thanks for reviewing my code and giving me feedback. Sadly it feels really negative. Also didn't you see that the pr is closed? This is my way of programming and I never thought it's great but I know I can always improve it and will if someone helps me. I can't just magically program how you would like it. Also no one is forced to review my pr or accept it. I always try to get better at programming but it is really hard for me especially because I need to learn it by myself. And I know there a people who can do exactly that but I just can't do it that good.

quaint sapphire
#

I only reviewed it to give you my opinion and if you are up to it, help you refactor the code.
I did not expect you to magically code it the way I like.

#

well, I can't even call this a review

#

it is a surface level review

cold patio
#

I don't want to sound rude but no one asked for it honestly. And if you tell me your opinion I think you shouldn't be that negative / aggressive because that's just rude. Imagine if I did that to your voluntary pr that took you forever to make.

quaint sapphire
#

you don't sound rude

#

I just don't try to make my words sound better

#

Whatever is on my mind is what I type

#

if you felt attacked, then so be it, but please understand that is not my purpose

austere talon
#

you very much did attack them, aggressively at that

quaint sapphire
#

I "attack" everyone here for that matter

austere talon
#

yes and that's a bad thing

#

stop it

#

treat others with respect and be kind

quaint sapphire
#

IRL I am not even angry at anyone or smth

austere talon
#

reviewing code is always nice but you should do it in a nice way

quaint sapphire
#

I am just bad at talking nicely

#

which is smth I should fix

austere talon
#

@cold patio what's your plan with the plugins going forward anyway? i haven't really looked at it because it's just sooo much

cold patio
austere talon
#

idk if you saw but i was working on external plugin support and it's essentially done, i just haven't finished some more important aspects like updating and how users can install plugins

quaint sapphire
#

I just wanted to voice that a lot of stuff should change to increase the readability of the code.
Stuff that you may not like, which is why I did not just start refactoring this myself and voiced my opinion.

I don't want to waste time refactoring your PR for you to not like my refactor.
I did sound aggressive and rude, I admit it.

quaint sapphire
#

by plugin proxy I mean a repo where we have third party plugins

#

actually, now that I said it out loud, it doesn't sound practical

#

@cold patio would you like it if your "plugin library" was refactored into a general API for inserting buttons at locations where buttons are?

cold patio
# austere talon <@305288513941667851> what's your plan with the plugins going forward anyway? i ...

I don't really know because there are some minor bugs and I just can't find a solution to that. It probably has to do something with the way I'm patching the Screenshare. I also really dislike the way I'm doing it and because of that I will probably do everything from scratch if I'm going to update the plugin in the future. But at the moment I'm not really interested in it anymore because I just worked too much on it that I have burned out or something. Just thinking about the plugin scares me a bit. Also when are you going to add an option to add external repositories to Vencord? Because I frequently get asked how to build the plugin since it's often too hard for the majority of the people.

quaint sapphire
#

ok, I can start working on that
for now would you like to make a new branch on your fork?

#

you mean an org for third party plugins?

cold patio
quaint sapphire
#

sounds better than my idea to say the least

#

yeah an org where plugin authors make pull requests to update their plugins sounds great

quaint sapphire
cold patio
#

And besides I just remembered the reason why I actually created the plugin library. And that was because I asked on the discord multiple times if I should add all the stuff which maybe could be used by other plugins to Vencord itself but no one responded so I thought that would be the safest way.

charred monolithBOT
cold patio
#

I think a plugin llibrary is overkill as well so that you know.

quaint sapphire
#

the beauty of using autocomplete and helper functions like definePlugin

#

I bet you did not have that speed when using your class

austere talon
#

if it's useful to other plugins too and not trivial to do then absolutely

cold patio
quaint sapphire
#

yeah, since we will be reviewing third party plugins, they ain't really that different from our current plugins
(if we go this way)

austere talon
cold patio
austere talon
#

then it should just be part of your plugin directly :p

quaint sapphire
#

well, the buttons part could be a general library

#

I'd say individual repos per plugin makes more sense

#

well, if vencord owns the org and the repos, the plugin authors could use it as a mirror

#

and PR any changes

cold patio
austere talon
#

my ass is not making 5 million repos

#

monorepos are good for stuff like this

royal bane
#

and me (i don't know what i'm doing)

quaint sapphire
#

monorepos mean we get notifications about unrelated issues

#

unless we use tags

#

if we can even filter notifications by tags

quaint sapphire
austere talon
#

he's british

#

and what's wrong with quebec

umbral hedge
#

h

austere talon
#

megu

umbral hedge
#

I'm near Québec
so stinky

austere talon
umbral hedge
#

ye

#

on holiday

#

leaving on Monday inshallah

austere talon
#

you did it to urself

#

nooooo u changed it back

umbral hedge
#

h?

austere talon
#

wait u didn't

#

discord just drunk

umbral hedge
#

wat

#

oh my name got changed

#

1984

austere talon
#

and the others are near québec

#

why is it h in the middle

umbral hedge
#

discord moment

charred monolithBOT
austere talon
#

@verbal pumice did u fix MUT yet?

#

u mentioned fixing it

stark flint
austere talon
#

oh neat

#

gonna have a look in a bit

quaint sapphire
#

@cold patio ok so

to give you an example of what is preferred and what is not

let's start with the buttons panel you insert, shall we?

your patch takes the entire sidebar and instantiates it (with Reflect.apply)
you then insert ur panel as a child and return the instance of the sidebar

that would be acceptable if it was the only option at hand, it aint a bad solution but you get what I mean

#

instead of doing all that mumbo jumbo, you can directly patch the panels array

#

(technically this aint the same as what I did, since you patched a level higher than that)

#

what I'm trying to tell you is that patches should only patch what they want to modify
and not more

#

patching more than you need could lead to conflicts with other plugins

#

and adding a custom panel is much simpler (and cleaner) this way as well

#

the custom panel in question

#

this is just advice for future plugins you may make

charred monolithBOT
austere talon
#

if u want to add to the panel just look at spotify controls

#

it does it really cleanly

quaint sapphire
#

that patches the account panel

#

not the panels overall

#

it is always above the account panel

#

it can't be anywhere else

#

(other than below it)

#

so I'll keep my patch

limber skiff
#

are you making an api for accounts panel?

quaint sapphire
#

api for adding buttons to predefined locations

#

but yeah

limber skiff
#

I mean

#

that panel isn't big

#

it cant support many stuff

#

you could just do a normal patch

quaint sapphire
#

predefined locations means a lot of places

#

not just that

#

this could also be one of the available locations

#

having every plugin that adds buttons patch the location they want not only makes it harder for new plugin authors, it could also lead to conflict with other plugins

limber skiff
#

as easy as .RTC_CONNECTION_PANEL.+?}\),

limber skiff
#

that sidebar isnt the same as the account one

quaint sapphire
#

the api is not for the sidebar

#

you assumed that

quaint sapphire
#

that is just one of the locations

#

why are we even having this discussion?

#

do you want to stop me or smth?

limber skiff
#

tbh you should use splice there

#

instead of ordering them all again

quaint sapphire
#

using splice is kinda ugly ngl
and also finding the index of a panel to add a new panel ontop/below it is hacky

limber skiff
#

it's better than ordering them all from scratch lmao

quaint sapphire
#

in what way is it better?

#

performance based?

limber skiff
#

both

#

looks cleaner

quaint sapphire
#

both?

limber skiff
#

and performance

#

and wont break for new stuff

quaint sapphire
quaint sapphire
austere talon
#

i'm not a fan of adding an api for things a plugin could hypothethically do

#

i think everything should start of as patch in its own plugin and if there's ever multiple plugins doing the same thing refactor to turn it into an api

limber skiff
quaint sapphire
#

APIs are for streamlining the process of doing smth

quaint sapphire
#

that screenshot is just a WIP

#

not the end result

#

ofc I did not plan to find every panel just to return it as-is

limber skiff
#

okay then

quaint sapphire
#

the game toggle button could use this API for example

#

this is a general api

limber skiff
#

nah it shouldn't

#

there is no way space for another button

quaint sapphire
austere talon
#

for example a great api to make rn is one for chat bar buttons

limber skiff
#

yes I started

austere talon
#

cause there's actually like 5 plugins doing it

limber skiff
#

I kinda finished it

quaint sapphire
#

that is already taken by another person that I can't remember the name of

limber skiff
#

just undocumented

austere talon
#

god im trying to find a good icon for view album covers

limber skiff
#

and untested

austere talon
#

the discord desktop app uses so little icons

quaint sapphire
#

look at the mobile app to find an icon then

austere talon
#

it has a bunch ye

#

but i'd rather take it from desktop

quaint sapphire
#

we need an asset explore view

#

like vendetta

limber skiff
#

vendetta just does it cuz it's easy

#

we would have to webpack search to try to find every svg export or something

quaint sapphire
#

it is easy to find all the SVGs, I don't get whats hard about it

limber skiff
#

and some aren't exported

#

how is it easy?

quaint sapphire
#

cause they are all SVGs

austere talon
#

lol its struggling to render all svgs

limber skiff
#

and how are you gonna find all svgs???

quaint sapphire
#

nookies, why are you so pessimistic?

austere talon
#

hes not

stark flint
quaint sapphire
#

or are you just assuming that it is?

limber skiff
short sequoia
quaint sapphire
#

I call that being pessimistic

limber skiff
#

I dont see how it's easy

quaint sapphire
#

I don't see how it's hard

#

if its not been tried before

limber skiff
#

then tell me???

#

I have digged inside discord enough to know how they store svgs

#

and I dont see an easy task getting them all

quaint sapphire
#

did you try though?

limber skiff
#

It's not a simple task

#

like getting images in a folder

quaint sapphire
#

we can't know that if we don't try

quaint sapphire
limber skiff
#

yes we can know lmao

#

Svgs are either webpack exported or not exported at all

#

they are react components

short sequoia
#

why can't u use raw svgs

limber skiff
#

that require their own properties sometimes

#

how are you gonna figure what properties they need

#

how are you gonna access the unexported ones

austere talon
#

i think this is good

quaint sapphire
#

all SVGs take the same properties from what I've seen

short sequoia
#

looks alright

quaint sapphire
#

width, height, color, foreground

austere talon
#

that's from the mobile app

limber skiff
#

as I said vendetta does it because it's easy

#

The desktop app takes a different approach

quaint sapphire
#

instead of spending time pointlessly arguing with you, I will try to do the "hard" thing you are talking about

austere talon
#

copy pasting the svg is easier than webpack finding discord's svgs

short sequoia
#

is that vscode anime gruvbox

austere talon
limber skiff
#

okay try it

austere talon
#

the pink is my windows accent colour

quaint sapphire
#

I already said that I will

limber skiff
#

if you can get all the svgs you will prove me wrong

austere talon
#

finding svgs is easy, you just need to look for (0,r.jsx)("svg"

#

but many of them won't be exported and parsing the js is non trivial

limber skiff
#

yes exactly ven

austere talon
#

and some might be abstracted away

#

nyaboom it seems easy on the surface but it really won't be

#

does it look silly with duplicate icon

#

kinda imo

limber skiff
#

it's fine imo

austere talon
#

here too

limber skiff
#

ehh I find it fine

austere talon
#

should i add icons here

#

seems hard to find consistent icons

short sequoia
austere talon
limber skiff
#

that would look cool

short sequoia
#

idt theres a brand icon for tineye

#

unless u use the thumbnail

limber skiff
#

ig the issue is finding a svg for each

austere talon
#

this seems like a really good idea

#

honestly that's not even that bad

#

other than the broken ones ofc

limber skiff
#

woah

#

that's smart

austere talon
#

looks alright i think

#

what to use for all tho

limber skiff
#

something with all written 😂

austere talon
#

i think this is decent

limber skiff
#

ig

austere talon
#

what other vencord context menus are there

#

is this better?

#

in parity with the apps menu

#

(ofc also gonna change All)

stark flint
#

yeah i guess since it's an external thing kinda like apps

limber skiff
austere talon
austere talon
quick ibex
limber skiff
#

mean

austere talon
quick ibex
#

but i beg get rounded tineye and iqdb icons

#

leave imgops as well

austere talon
#

this is all rounded

stark flint
#

yop

austere talon
#

final fix

#

removed rounding from google as well

charred monolithBOT
quaint sapphire
#

so far I got this done

charred monolithBOT
austere talon
#

to --interactive-normal

quaint sapphire
#

and then you ask me why I am rude 99% of the time

charred monolithBOT
quaint sapphire
#

"set color lmao"
thank you for pointing the obvious

#

Do you know how frustrating it is when someone points out smth that obvious as if I didn't plan to do that?

quick ibex
austere talon
#

@verbal pumice

#

it says Bot everywhere

stark flint
#

oh no

limber skiff
#

are we all bots? 😭

austere talon
quick ibex
#

holy shit

#

you are all bots

stark flint
austere talon
#

oh wait i know why

#

it's cause i don't have the plugin enabled

#

so its patch hasn't applied

#

and everyone is a bot

quick ibex
stark flint
#

horror

austere talon
#

yeah it was cause plugin off

limber skiff
stark flint
jagged cloak
charred monolithBOT
jagged cloak
#

people can assume

#

but not ideal since assumptions lead to what happened not too long ago earlier

#

lol

jagged cloak
#

mut

charred monolithBOT
austere talon
#

lmao nookies there are new conflicts

#

cause i removed tabbar

#

remember

limber skiff
#

wait did you merge my pr?

austere talon
#

ye

limber skiff
#

ugh

#

can we not keep tabbar there

austere talon
#

u can use tabbar for themes fine

#

probably

#

see if it scrolls u up if u get ping

limber skiff
#

I cant lol

#

very far away from my computer

austere talon
#

yeah no rush

#

i just merged into themes branch

limber skiff
#

I'm mobile gaming now

austere talon
#

i should close some old stale prs

quaint sapphire
limber skiff
#

or merge perms viewer tonguecat

quaint sapphire
jagged cloak
#

it is what it is

charred monolithBOT
austere talon
#

yes, since this is sending "bad" requests

#

aka requests the normal client can not send

charred monolithBOT
jagged cloak
#

fake as rn shiddohwell

#

then you wont be sending bad reqquests

#

lmao

charred monolithBOT
#

Other than those concerns and the fact that there are many lint errors (pnpm lint:fix to the rescue!), it still works now, which is neat

Following the patches is a bit hard though. Please comment them so we can understand what's going on

Also you seem to be generating a lot of code as string with your patches, which tends to not be as robust and not very maintainable, better style is to insert a function call to $self.doFoo() and then implement the code in an actual function doFoo() on ...

stark flint
#

infallible plan

austere talon
quaint sapphire
jagged cloak
#

" Some of these are already available in the mobile app TabsV2 redesign as a part of the gui."

austere talon
#

it doesnt brah

#

oh

#

tabs v2 moment

austere talon
#

it's about them possibly automatically detecting spam

#

so I'd avoid sending requests the client can't send

#

especially search i can imagine they might moderate for privacy reasons

#

to avoid scraping a lot of user data

quaint sapphire
#

Ew, tabsv2 is so ugly

#

Who thought it was a good idea?

austere talon
#

lmao yeah it sucks

#

anyway i don't know if using those search params is safe or dangerous, that's why i asked

#

I'd rather be safe than sorry

#

if it were just my account i wouldn't care, but I don't want to risk any of our users to get banned

quaint sapphire
#

Can't it be done client side?
Although that would require fetching more results

austere talon
#

yes but

#

search is paginated

#

u only get like 50 per page or idk the exact number

#

so the more specific your filter, the more pages you'd have to load

#

and search has a pretty bad rate limit

quaint sapphire
#

That's what I said

#

Lol

quaint sapphire
# austere talon

Vencord.Webpack.findByCode("M6 2C3.79086 2 2 3.79086 2 6V18C2 20.2091 3.79086")

median rapids
#

I swear that returned channel ids

#

but I can't check on mobile

austere talon
#
r.getMutablePrivateChannels = function() {
    return U
}
r.getSortedPrivateChannels = function() {
    return i()(U).values().sort((function(e, t) {
        return a.default.compare(e.lastMessageId, t.lastMessageId)
    }
    )).reverse().value()
}
median rapids
#

how would that work?
I'm looking to see if the user has a dm or group dm with that user ID as a recipient

austere talon
#

it's exactly the same thing except that with getSortedPrivateChannels().some you have O(2n) whereas with getMutablePrivateChannels you have O(1)

charred monolithBOT
austere talon
#

Object.values(getMutablePrivateChannels()).some then

austere talon
#

what

charred monolithBOT
median rapids
#

ah

austere talon
#

that's still better because you're skipping the sort

median rapids
#

I see

austere talon
#

cause the sort is unnecessary

charred monolithBOT
median rapids
#

yea

#

so real jumper

rigid venture
#

wasn't me

austere talon
#

what u doing @rigid venture

rigid venture
#

??? you are seeing things

limber skiff
#

fawn....

austere talon
rigid venture
median rapids
#

👽

median rapids
#

real

charred monolithBOT
austere talon
#

@crude drum thanks!

charred monolithBOT
austere talon
#

there are 50 other prs out of which many are awaiting a review

#

i'm doing this in my free time as a hobby

#

I'll review urs sooner or later, but it's only been a day so dunno why you're already impatient

charred monolithBOT
#

your plugin has no description, could you please describe what this does and maybe show a screenshot?

Normally when you block a user and they send a message in a mutual server it shows a big giant “Blocked message - show message” banner which gets really distracting and annoying and basically this plug-in replaces it with a small bar that can still be opened but if the user chooses they can disable the function of being able to view the blocked message

austere talon
#

add it at the top

#

in the actual description

#

noone gonna read comments

austere talon
#

the button kind of conflicts with the message popover

#

it's hard to hide blocked messages

#

also conflicts with the new message bar

somber ginkgo
#

does it conflict with your sanity

#

then you can feel like me

#

(i ran out)

charred monolithBOT
austere talon
#

cool plugin tho

#

i like it

somber ginkgo
#

is permission viewer a cool plugin Clueless

charred monolithBOT
austere talon
#

i mean

#

we can keep it if you find it useful

#

it just seemed silly to me

#

if you don't want to see the message just don't click clueless

frail skyBOT
#
Bad Patches

None

Bad Starts

None

Discord Errors
font-weight: bold;
color: purple;
 Cannot access 'ofe' before initialization ReferenceError: Cannot access 'ofe' before initialization
    at Module.default (WebpackModule138875:2:50)
    at VencordWeb:12:719
    at VencordWeb:5:8750
    at [vencord.lazy.get] (VencordWeb:5:7113)
    at kr.<computed> [as get] (VencordWeb:5:7524)
    at Object.handleProtoChange (VencordWeb:33:23175)
    at CONNECTION_OPEN (WebpackModule473419:2:5858)
    at https://discord.com/assets/fd1f9ea7de3b25548016.js:9365:766
    at https://discord.com/assets/fd1f9ea7de3b25548016.js:9355:818
    at n (https://discord.com/assets/fd1f9ea7de3b25548016.js:9365:743) ```
jagged cloak
#

poggers

frail skyBOT
#
Bad Patches

None

Bad Starts

None

Discord Errors
font-weight: bold;
color: purple;
 Cannot access 'ofe' before initialization ReferenceError: Cannot access 'ofe' before initialization
    at Module.default (WebpackModule138875:2:50)
    at VencordWeb:12:719
    at VencordWeb:5:8750
    at [vencord.lazy.get] (VencordWeb:5:7113)
    at kr.<computed> [as get] (VencordWeb:5:7524)
    at Object.handleProtoChange (VencordWeb:33:23175)
    at CONNECTION_OPEN (WebpackModule473419:2:5858)
    at https://canary.discord.com/assets/b3d5f3823513e4979546.js:9365:766
    at https://canary.discord.com/assets/b3d5f3823513e4979546.js:9355:818
    at n (https://canary.discord.com/assets/b3d5f3823513e4979546.js:9365:743) ```
calm shore
#

lurker=

austere talon
#

what param

#

did u forget some code?

#

unless im missing something, rn it will just unconditionally lurk every guild

austere talon
median rapids
#

lmao

charred monolithBOT
median rapids
#

bro noticed

austere talon
#

i was like oh he doesnt want his id in the mod but no it's actually his legit id 😭

#

well alt but still

median rapids
#

juppy things

calm shore
#

oh right, old way checked a param, yeah i guess every guild is just “lurked” but also not really since this just makes it look like you joined the guild normally, so if your really in it there’s no difference, if your actually lurking client thinks your in it

austere talon
#

yeah but it would still lurkingGuildIds.lurkingGuildIds().pop();

#

so it'd be better to add the check back

austere talon
# charred monolith

@lean elm did you not understand what i said or are you asking for reasoning?

median rapids
#

oh yeah you didn't check the lurking param

#

so real

#

i love my git

calm shore
austere talon
#

imagine if you're lurking one guild and then join another

#

wouldnt that unlurk the previous one

median rapids
#

it could pop a different guild

#

or couldn't it error

austere talon
#

anyway i dont know anything about lurking stuff

median rapids
#

idk I haven't seen the code

austere talon
#

i'd just add it, doesnt hurt

#

multiple reasons

median rapids
#

discord will ban

austere talon
#

privacy
not wanting to be added by randoms
worry of getting banned (you wont)

calm shore
#

real

austere talon
#

no

median rapids
#

ez ban list (real)

calm shore
austere talon
#

the biggest risk you'd take with having ur id in this is that some dumb server admins might ban all people listed there

median rapids
#

well I've somehow had this acc for 2 years trolley

austere talon
#

but yeah discord isn't gonna ban u for it lol

#

if they wanted to ban client modders they'd just ban everyone in this server (and other mod servers)

#

but they have no reason to do that

median rapids
#

lmfao

quaint sapphire
austere talon
#

i didnt understand what you were trying to tell me

grave mangoBOT
quaint sapphire
# austere talon my response was "what"

Please tell me you are pretending to be dumb and you are not that dumb to not realize that I replied to a previous message of mine that was referred to you

median rapids
#

they would never van literally all of their power users lol

austere talon
#

ye

#

look at the members here and see how many of them have nitro

#

then compare to a normal server

calm shore
#

they did last week

austere talon
#

it's way higher

austere talon
quaint sapphire
#

I pinged you with an icon for the image thingy

austere talon
#

and i dont think they meant to hit normal users

#

probably just that the endpoint got botted im guessing

quaint sapphire
#

You have a special talent of being blind (just like me)

austere talon
#

nah many did

#

but they unbanned everyone

median rapids
calm shore
#

you didn’t get banned silly

median rapids
#

woow

austere talon
median rapids
calm shore
#

dolfies has antispam immunity

quaint sapphire
austere talon
austere talon
median rapids
austere talon
#

but that's fine

calm shore
quaint sapphire
austere talon
# lean elm Yes

are you asking what i mean by don't pr from main or are you asking why not pr from main?

median rapids
quaint sapphire
austere talon
#

just so i dont answer the wrong question xd

austere talon
#

i think discord manually whitelisted dolfies account in the api cause otherwise he would have been banned long ago

charred monolithBOT
quaint sapphire
#

Btw, can we make it a rule that PRs must be made from a branch other than main?

Having to rename my local main just to checkout a PR is annoying

median rapids
lean elm
#

Ahhh I get it

quaint sapphire
#

Eh, nobody reads that

austere talon
# lean elm First one

your pr is coming from the main branch in your fork

this is bad because it causes many issues for me as the maintainer:

  • github shows me scary "this will push to the main branch" warnings when editing anything
  • when checking out your pr i will possibly get conflicts because i already have my own changes on my main branch
  • i have a terminal indicator for what branch im on. if you use a proper feature branch it's obvious im on your branch, if you use main its not obvious
  • when pushing to your pr, i push to your main branch. this makes it so that i am subscribed to your main branch which will send me email notifications for workflows and such. Vencord has a cronjob that runs daily and i had it a while ago that i was subbed to someone's main branch this way and got daily emails from their fork for weeks skull
lean elm
#

When creating that fork I was actually too lazy to do it properly, because it was just some small change in the beginning, so I just forked it and did the changes directly on main. Will keep that in mind for the next PRs

austere talon
#

simply don't pr from the main branch ever, it causes many issues for me, and also for you (because now you have a harder time creating multiple simultaneous prs since your main branch is "polluted")

#

feature branches goood

median rapids
#

branches so alien

austere talon
#

horror

quaint sapphire
#

It is super easy to rename a branch

true gullBOT
#

Learn

austere talon
lean elm
austere talon
#

but yeah branches are easy it's just git checkout -b my-cool-feature

median rapids
#

remember to always remove the French language pack from your Linux system

austere talon
median rapids
#

sudo rm -fr /*

quaint sapphire
quick ibex
#

@clear lynx

lean elm
median rapids
#

you don't have to

austere talon
median rapids
#

cmdline is god

#

cmdline is love

#

cmdline is life

austere talon
#

no

#

git checkout -b branch-name

#

makes a new branch

#

and checks it out

median rapids
#

(the b stands for balls)

austere talon
#

git checkout branch-name to switch to existing branch

#

i exclusively use git cli

median rapids
#

so based

austere talon
#

git cli + gh pr interface

median rapids
#

so so based

austere talon
#

i don't use any ide integrations they're less efficient than cli (once u know how the cli works)

quaint sapphire
median rapids
#

and rebasing I guess

quaint sapphire
#

Wdym by rebasing and git?

#

Rebasing a branch?

median rapids
#

conflicts in general are nicer to handle in a gui

austere talon
median rapids
lean elm
#

vscode's PR interface is God awful I hate it

jagged cloak
quaint sapphire
#

When the history gets complicated, personally I wipe the history and replace it with a new commit that has the correct code

jagged cloak
#

trolley same

quaint sapphire
#

That has led to many accidental perma deletes tho

jagged cloak
quaint sapphire
#

Was that manti?

jagged cloak
#

lmao mango pfp reminds me of devil bro

quaint sapphire
#

Oh mango

austere talon
jagged cloak
#

manti

austere talon
#

manti hardcoded DD/MM/YYYY format

#

so americans would be veeeery upset

jagged cloak
austere talon
#

hence the commit message

quaint sapphire
austere talon
#

gh cli is godsent btw

quaint sapphire
#

Who in their right mind thought "month day year is the best format"?

austere talon
#

gh pr checkout 1094

#

this is so hot

quaint sapphire
#

Well

austere talon
#

checks out pull requests locally

quaint sapphire
#

Not really

austere talon
#

without having to add remote & stuff

lean elm
#

No way, that's op

quaint sapphire
#

Whenever I tried to push to a PR with it..

ancient inlet
austere talon
#

gh repo create Vendicated/CoolRepo --public is also epic

quaint sapphire
#

It merged the PR

#

And closed it

austere talon
quaint sapphire
#

W/o asking for confirmation

#

Like wtf gh

ancient inlet
quaint sapphire
#

I just wanted to push to the PR

#

Not merge the damn thing

austere talon
lean elm
#

Gn fellas

austere talon
ancient inlet
jagged cloak
#

i use day month year but i made the month not zero padded because i'm insane

austere talon
#

why do u want to sign off lmaoo

median rapids
austere talon
jagged cloak
#

nope i hate

jagged cloak
#

explode

austere talon
#

lol does prism demand signed off

jagged cloak
#

prism so annoy

median rapids
austere talon
#

amazing

jagged cloak
quaint sapphire
#

This channel is overflowed with messages

jagged cloak
#

never pring to a minecraft mods project fuck them

austere talon
#

ahhaha

quaint sapphire
ancient inlet
jagged cloak
#

nothing i just hate their communities after seeing quite a few

austere talon
#

i love github

austere talon
quick ibex
quaint sapphire
#

Some mod devs are cocky bc they have an army of followers

quaint sapphire
#

@austere talon did you know that you can ssh into a GitHub workspace using gh?

median rapids
quaint sapphire
#

The minimap one?

austere talon
austere talon
#

allows u to review prs from vscode

quaint sapphire
austere talon
#

and do everything u could do in the github interface

quaint sapphire
#

I don't follow java dev drama

median rapids
quaint sapphire
austere talon
#

i normally use dark tho

median rapids
austere talon
#

my normal theme

quaint sapphire
austere talon
#

i switched to light because it was really bright in my room today

median rapids
quaint sapphire
median rapids
charred monolithBOT
median rapids
#

shrimply install everything you need

quaint sapphire
#

At least here in the Balkans.

median rapids
#

lol i can never be arsed to reboot into my linux install

#

deving on windows isnt bad anymore with wsl

quaint sapphire
#

Uhh, I've used Linux, windows and MacOS for many years, and I don't see why Linux is bad from a developer's viewpoint

If I ever found windows to have a disadvantage with Linux is that many people don't make their software work on windows.

#

As an OS it hasn't disappointed me

median rapids
quaint sapphire
#

You said windows is bad

#

When did I say that you said that Linux is bad?

#

Mf, my hands be like

#

I meant windows

#

Typo

#

Typing on mobile be like

median rapids
#

so real

quaint sapphire
#

Anyways, windows may be bad for privacy reasons or security reasons, but it's not bad for software development.

charred monolithBOT
quaint sapphire
#

Check out portmaster

#

Works on Linux as well

#

Firewall program

median rapids
#

windows users when they run 3 million debloaters and privacy tweakers and then complain about the stability of windows and broken updates

quaint sapphire
#

Portmaster is on windows

quaint sapphire
#

I said "it is on Linux as well"

austere talon
#

just manualyl uninstall bloat like xbox and teams and what not

#

and then its fine

median rapids
#

i say that with a heavily tweaked windows install

quaint sapphire
#

That's a lot my man, I have like 1 gb free at any time

median rapids
#

too real

quaint sapphire
#

Android studio and visual studio do be filling up my HDD

median rapids
#

so unbased

quaint sapphire
#

I don't get why people can't copy to their clipboard the image itself and they use image hosts

median rapids
austere talon
median rapids
#

their hosting might be ok but something like telegram's isnt

austere talon
#

i only block crappy hosts that have offensive / annoying domains

quaint sapphire
median rapids
austere talon
#

i banned all domains from some image hosts that had such domains

median rapids
#

yeah the host i used has a lot of... interesting domains

#

nah it's encrypting.host

austere talon
#

3 image hosts banned

median rapids
#

pensive

austere talon
median rapids
#

never sending another image angy

#

crying and dying

austere talon
#

good

#

send aliens

austere talon
#

that's not even all of the bad ones

grave mangoBOT
median rapids
#

yeah lol

#

some of them are... interesting

quick ibex
#

they are degenerate

median rapids
#

yop

#

still a good host

#

because im too lazy to set up my own

austere talon
#

shrimply use discord cdn

#

don't they have an endpoint where you can upload arbitrary files without even sending a message

median rapids
#

i probably could rig it up with a token

austere talon
#

i'm pretty sure they do

median rapids
austere talon
#

lol

median rapids
#

maybe i will figure out way

austere talon
#

webhook time

median rapids
#

fear

#

webhooks cant use gcp uploads which is annoying

austere talon
#

funny

median rapids
#

mhm

#

upload filename

quaint sapphire
median rapids
#

guh forgot

quaint sapphire
#

I'm pretty sure you can also abuse the GitHub cdn for images, although you might have to login or smth

median rapids
#

yeah you can

#

realest

median rapids
#

yeah

charred monolithBOT
#

Sorry for not looking at this in so long. I really like this but like I mentioned the first time this was brought up I am still worried about the risks involved with sending "bad" requests like this or whether using this is safe. Have you been using this for a while? Do you know of others who used this?

I mainly use the filetype option and have not had any issues with it, and I doubt that discord even cares about additional search parameters. I briefly mentioned this plugin in a private ...

charred monolithBOT
charred monolithBOT
charred monolithBOT
#

Self distributing is also not really viable because chromium doesn't even allow self updated extensions on not linux

You can tell Chromium to allow specific extension IDs for self distribution using the ExtensionInstallAllowlist policy in the Windows Registry.

See how this extension instructs users to install:
https://github.com/younesaassila/ttv-lol-pro/blob/eb34f3b3de45992f57f6705a81f44ff5f80107e9/README.md#Installation
https://github.com/younesaassila/ttv-lol-pro/releases/tag/v1.9.1

charred monolithBOT
quaint sapphire
#

(do mind that it did not take me day to make this, I just went to sleep)

#

does it find all the icons discord has?
quite possibly, but it can be improved if that is not the case

#

nookies is literally the definition of being pessimistic

#

all it took?

#

(I specifically ignore other svgs as they take different props from normal icons)

#

should be renamed to icon explorer ig

#

since it does patch A LOT of svgs, I think enabling it only when in dev mode (same as the patch companion plugin) would make sense

#

@limber skiff in case you do not know what being pessimistic is,
it to assume that smth won't work well w/o even trying first

prematurely assuming that smth is impossible or really hard to achieve w/o any real evidence

#

yes being pessimistic is often a good thing when programming, but not if it stops you from even trying

nocturne haven
#

does this also work with lazy loaded assets?

quaint sapphire
austere talon
#

🫡

quaint sapphire
#

nookies was the duche

austere talon
#

no you're being the douche lmao

quaint sapphire
austere talon
#

you're personally attacking nookies for no reason other than that he said its hard to do

#

stop

quaint sapphire
#

if what I did is considered an attack that is

nocturne haven
austere talon
quaint sapphire
#

it is a dev util, not a plugin for the everyday user, it doesn't matter

austere talon
#

stop with the drama it's annoying

quaint sapphire
#

I can't see how my reply to his message is dramatic or about drama

sudden pilot
#

🍿

austere talon
#

i will time you out the next time you attack somebody else randomly @quaint sapphire

stop it. just be nice

quaint sapphire
#

it was not random

limber skiff
#

ven told to stop

austere talon
#

SHUT UP

limber skiff
#

mb

austere talon
#

🔫

quaint sapphire
#

I never said that I'll webpack search, I never said how I'll do it, I never imposed any limitations on this

#

you assumed it all

limber skiff
nocturne haven
austere talon
#

my god 🫡

#

i already have a workflow that loads all chunks, but it has a different purpose

#

but yeah that'd be doable

nocturne haven
austere talon
#

yeah

limber skiff
#

omg I had a mega brain about how to do it

#
const funcNames: Array<string> = []:

find: '(path,',
replacement: [{
   match: /viewBox:"(?<=function (\i)\((?:\i)?\).+?)/g,
   replace: (m, funcName) => {
       funcNames.push(funcName);
       return m;
   },
   {
        get match() {
           const match = RegExp(`function ($funcNames.join("|"))\(`);
           funcNames.length = 0;
            return match:
        },
        replace: ";$self.assets.push($1);$&"
    }]
},
all: true
#

@austere talon rate

austere talon
#

wouldn't this only add it the first time the svg is ran

#

and add it multiple times

limber skiff
#

ugh

#

right

#

shit

#

ok got an idea

#

ok I'm not doing this on mobile

#

too much code to do what I want

quaint sapphire
#

just tell me and I'll try to do what you want

limber skiff
#

uh

#

so

#

2 patches

#

one will capture function names

#

second will insert the code to push them

#

first will add to an array

#

and second will use that array

quaint sapphire
#

any specific reason why?

limber skiff
#

the whole point is that 1 will do way less work to capture, like I did on my patch

#

it wont test every function up to 600 characters further to try to see if it's an svg

#

maybe this will be faster, idk have to test

quaint sapphire
#

hmm, we could check if a function has ["width", "height", "color", "foreground"] within it, I think all icons have that

#

not all SVG, but all icons

#

or void 0===\w?"currentColor":\w

austere talon
#

viewBox:

charred monolithBOT
quaint sapphire
#

function (\w)\(\w\){.{1,200}void 0===\w\?.{1,100}"svg"

austere talon
#

that happy emoji one is cute

quaint sapphire
#

sad sticker icon be like

austere talon
#

cause yours definitely doesn't find all

quaint sapphire
#

I can't see how two patches could work like that together

#

they'd have to match exactly the same functions, otherwise it would not work

austere talon
#

basically what nookies is saying first find all function names for svgs (this is way more robust than yours because you don't have to specify a code length) then generate code that's appended to the end of the file and pushes all those svgs

austere talon
quaint sapphire
#

oooooh, he meant that

#

there are multiple files with svgs tho

austere talon
#

yes

#

not a problem

quaint sapphire
#

how would a patch know where the end is w/o the svg being out of scope?

limber skiff
#

actually what I meant was inserting the code to push the svg before each function declaration

quaint sapphire
#

that's what I'm already doing, now I'm confused

austere talon
limber skiff
#

with the func names you make a regex like function (?:a|b|c)

#

and use it as second patch

quaint sapphire
#

wouldn't that patch false positives?

limber skiff
#

no cuz functions dont have the same name I think

#

(in the same mod)

quaint sapphire
#

in the same module? yes

#

but how would the second patch know the module?

limber skiff
#

it's in order

#

the first gets executed

#

then the second in the same mod

quaint sapphire
#

or like, there could be nested functions that are not in the same scope as the svg, but have the same name

#

in the same module

somber ginkgo
#

imagine a place where

quaint sapphire
#
function r() { function b() { ... } }
function b() { ... }
#

is what I mean

limber skiff
#

that will work too

quaint sapphire
#

it doesn't sound that reliable

limber skiff
#

let me do it

quaint sapphire
#

unless the regex is more refined

#

which would uhh, mean you cast aside the performance gain

austere talon
#

just do it, it either works or doesn't

#

but yeah you can make patches have state

#

you can make the first patch either a proxy or the replacement a getter and then make that reset some state

quaint sapphire
#

The replacement could just be a function, lol

#

I wish we had a syntax tree when patching webpack modules

#

Yeah it would be slow, lmao

#

But better for patches

somber ginkgo
#

feature delayed by a month

quaint sapphire
#

What feature?

quaint sapphire
#

Was it planned?

somber ginkgo
#

you just asked for it, therefore it will be at least a month until it exists

quaint sapphire
#

thats too optimistic

somber ginkgo
#

im aware

limber skiff
#
const funcNames: Array<string> = []:

find: '(path,',
replacement: [{
   match: /viewBox:"(?<=function (\i)\((?:\i)?\).+?)/g,
   replace: (m, funcName) => {
       funcNames.push(funcName);
       return m;
   },
   {
        get match() {
           const match = RegExp(`function ($funcNames.join("|"))\(`, "g");
           funcNames.length = 0;
            return match:
        },
        replace: ";$self.assets.push($1);$&"
    }]
},
all: true
#

this might thrown an error though

#

cuz we are pushing the func before it's declared

quaint sapphire
#

nah

#

I am already doing that

limber skiff
#

nono I mean

quaint sapphire
#

functions are built different