#πŸ‘Ύ-core-development

1 messages Β· Page 30 of 1

umbral hedge
#

(it was showing as unanswered)

charred monolithBOT
austere talon
#

@spark cove

spark cove
#

i guess i could add a setting for numeric months

austere talon
#

new Intl.DateTimeFormat(void 0, { 
  year: "numeric",
  month: "numeric",
  day: hasDay ? "numeric" : void 0
}).format(new Date)
spark cove
#

lol the month isnt zero padded for me

austere talon
#

america skill issue unfortunately

limber skiff
#

ven is addicted to void 0

austere talon
#

void 0 > undefined

#

cause shorter

spark cove
#

void 0 so good

austere talon
#

:3

limber skiff
#

true

#

I need to start using that

umbral hedge
#

void 1

limber skiff
#

when void 0 typing??

austere talon
#

also void 0 is considered better practice because you can override undefined in ancient environments

spark cove
#

i feel like it looks better

austere talon
#

so its "dangerous"

umbral hedge
#

void 0 looks cooler πŸ€“

austere talon
#

no longer a problem in new envs cause they make undefined immutable

limber skiff
#

void 69

spark cove
#

SHUTRGFD\

umbral hedge
#

lol i didnt mean to type 1 that time

austere talon
#

@spark cove void(0)

umbral hedge
#

void(void(1))

spark cove
#

extra character

#

so bad

#

void-1

#

on top

limber skiff
#

void Infinity

spark cove
#

WTF

#

I DIDNT KNOW THIS WAS REAL

#

so good

umbral hedge
#

didn't know what was real fear

#

the [x, x?, x] thing?

spark cove
#

yea

umbral hedge
spark cove
#

so good

umbral hedge
#

you love discord using

interface SomeThing {
  someProperty?: SomeType | undefined;
}

everywhere

austere talon
#

tuple

#

oh wait

#

do u mean the ?

#

string?

umbral hedge
#

yeah i think they mean that

austere talon
#

the ? behaves weird so i avoid it

umbral hedge
#

so bad

#

also why did shiki not give that any highlighting

#

hm

spark cove
#

that doesnt even make sense because ?: already does undefined

#

is shiki just white for you

umbral hedge
#

ye

spark cove
#

can u console inspect

#

ven had that problem once but then never had it again

umbral hedge
#

ah

#

No language registration for ts fear

spark cove
#

and we didnt get to debug

umbral hedge
#

and also No grammar provided for <source.ts

spark cove
#

hmm

umbral hedge
#

both errors

#

cant wait for discord to crash in 30mins because i opened my terminal just now

spark cove
#

true

#

i will look into it later

umbral hedge
#

i seriously hope that bug is fixed in the newer electron ver

spark cove
#

looks like shiki in the webworker lost the grammar

umbral hedge
#

maybe some kind of race cond?

#

o

spark cove
#

but the client still thinks it has it

#

so bad

#

a race condition could cause it yea

woeful sable
#

racist code (goes on a race with other code)

umbral hedge
#

real

spark cove
#

REAL

#

who would win 🚎 vs πŸ’»

umbral hedge
#

🚎

spark cove
#

@austere talon still not sure what u mean about the circular import btw

charred monolithBOT
spark cove
#

no like what did u mean by dependency injection

spark cove
#

nvm doesnt really matter

charred monolithBOT
#

By default, when you open the Unread tab in the Inbox, discord spams a ton of GUILD_SUBSCRIPTIONS events to the gateway. If you're in a lot of servers, this can cause the gateway client to get ratelimited, leaving your client in an unfortunate crash-loop as the gateway attempts to reconnect but just gets ratelimited every time, until you CTRL+R or restart the client.

This plugin stops the client from emitting GUILD_SUBSCRIPTIONS events when you open the Unreads tab. This solves the crashes...

umbral hedge
austere talon
#

holy shit never open that tab worst mistake of my life

#

insane lag

charred monolithBOT
umbral hedge
#

you love

#

if ur happy with the regex i'll probs just merge it because its miniscule

#

its laggy because discord fires off a shit ton of events and bricks your client

#

discord loves insane shitcode

charred monolithBOT
umbral hedge
#

oh true

#

idk why i didnt

#

lmao

charred monolithBOT
umbral hedge
#

u love

#

i love how fucked githubs themeing is on tsx

austere talon
#

scroll up to the license header and you'll see why

#

<https

umbral hedge
#

yeah lmao

austere talon
#

it interprets that as jsx

#

inside a comment

#

stupid

umbral hedge
#

github hates multiline πŸ’”

charred monolithBOT
umbral hedge
#

i should review some PRs tomorrow

austere talon
#

I don't really understand why people keep complaining about me being slow at reviewing prs but then everyone complaining never actually helps me out

#

like this is an open source project it's not just me, anyone can review prs

umbral hedge
#

I would've done more but I've had basically no motivation for anything for a while now

austere talon
#

even if you don't know how to code you can still test the pr, see if everything works, if you have any ideas or improvements

umbral hedge
#

yeah

austere talon
#

I'm not blaming you lol I'm just pointing out that it's a bit stupid

umbral hedge
#

i wonder how we can encourage people to review more

austere talon
#

and just testing that everything works and adding ur own feedback for the functionality is already helpful

umbral hedge
#

I wanted to add guides for doing lots of stuff when I tried to make us a website
but then lost motivation again lmao

#

why are my adhd meds 6 months away sobb2

spark cove
#

i think

austere talon
#

yeah you're cool I appreciate you

quick ibex
charred monolithBOT
hazy kindle
#

what’s rad?

oblique hound
#

a person

#

@woeful sable

hazy kindle
#

rad

crude hearth
woeful sable
oblique hound
#

Hii c:

woeful sable
#

hey girl

oblique hound
hazy kindle
#

reunion

charred monolithBOT
somber ginkgo
quaint sapphire
charred monolithBOT
austere talon
#

wysi

#

that patch is very dumb idk why I merged that

#

never make one patch declare a new variable and a different patch use that variable

#

you're literally guaranteed to brick discord if the patch declaring the variable breaks

quick ibex
#

damn

charred monolithBOT
#
  • injects into the spoiler bar thingy to allow keeping the original filenames without disabling the plugin
    scrot
  • changes the behavior from always changing filename to retaining the original filename with the option to change the ones you want (!)
  • replaced timestamp method from nanosecond to millisecond as it was inaccurate (and honestly overkill)

currently the icon could use som...

austere talon
#

sry sun but the code is... not very good

#

0 structure (the order of things is so arbitrary, you have a constant then a function then another constant then an interface then another function. Structure your code properly, for example I prefer webpack finds, then constants, then types and interfaces, then misc variables like instances of queue logger etc, then functions, then the plugin definition, but honestly it doesn't matter much as long as its consistent)

calling react components as functions (this is extremely bad for many reasons, it completely breaks hooks or worse yet the component might not even be a function. use react correctly aka jsx)

extremely dangerous patch that hard bricked discord as mentioned above. In one patch you declare a new variable and in the other patch you naively use this variable with 0 safety. This means if your first patch fails (which it did in this case) but the second patch still works, your code now refers to a non existent variable which makes the entire module error and completely bricked discord without even an error screen

waitFor instead of lazys. waitFor is... not lazy, so anyone will have those finds executed even if they don't use the plugin

inconsistent style and variable names (random mix of arrow and named functions, one regex is named messageLinkRegex, the other is called isTenorRegex (this name is bad in itself because it implies this is a boolean, not a regex))

#

Also a total lack of null safety, both res and api Message could be null here yet you just use them directly with no check

#

returning Promise.resolve from an async function is also another anti pattern

#

this is also the reason I haven't really looked at your other prs because they're not very mergable for the same reason, by the time I'm done reviewing and improving them I could have just written them from scratch myself

hazy kindle
#

that’s a lot of valuable feedback πŸ™‚
i wonder if ai can do that alr – comment on and/or clean up code

verbal pumice
#

yeah that was my first plugin and it shows

verbal pumice
#

though the feedback is very appreciated!

austere talon
#

jumpscare

#

i somehow added an infinite loop

#

fun

umbral hedge
#

love

austere talon
#

wait no

#

why does typescript not error

#

its a map

#

you cant index a map like that

verbal pumice
#

messageID is a string and map["get"]() syntax probs

austere talon
#

okay i finished rewrite i think

austere talon
turbid hatch
#

its not valid

#

you cant index maps like that

austere talon
#

ye

#

thats why ia sked

#

yet ts goes nah this is fine

turbid hatch
#

tsserver debug time

austere talon
#

i hate typescript

charred monolithBOT
austere talon
#

oh wait i messedu p a little

charred monolithBOT
austere talon
#

there we go

#

@rigid venture that icon actually looks terrible i changed my mind

#

do u have any better idea

rigid venture
#

nop

#

also if u have a better way to indicate that it's on than literally coloring it green pls do

charred monolithBOT
rigid venture
#

this is real

charred monolithBOT
austere talon
#

name them what they are

rigid venture
#

that's hot didn't know it existed u should add that to patch helper

rigid venture
austere talon
#

like mention here right

#

true true

rigid venture
#

ya

austere talon
#

u cant use $self in functions btw

#

kinda bad

#

i will fix wait

rigid venture
#

mmm keep it but make it seperate

#

cuz it's good practice i think

austere talon
#

@spark cove

spark cove
#

REAL

austere talon
#

btw

#

i switched from .plugins.${pluginName} to .plugins[${JSON.stringify(pluginName)}]

#

cause this will cover all names correctly

#

no matter whether they contain spaces, quotes etc

spark cove
#

yea

limber skiff
#

dang I did plugins that declared a new variable and used it later

spark cove
#

thats what i was saying real to

austere talon
spark cove
#

cus it makes wayyy more sense

limber skiff
#

gonna make sure I properly handle null cases

austere talon
#

and also wrapped functions

limber skiff
#

this

austere talon
#

kill yourself powershell

#

how do i escape $ bruh

limber skiff
#

I did on FakeNitro for example, but I'm almost sure I properly handled cases the variable isn't there

austere talon
#

okay i got it

charred monolithBOT
austere talon
#

there now u can use $self in functions @rigid venture

rigid venture
#

awesom

split hornet
#

ven please remove

#

the

limber skiff
#

nvm I didnt handle it correctly in one case

charred monolithBOT
rigid venture
#

is there a place where i can use $self in the plugin now and i didn't or am i not blind

limber skiff
#

I will make a pr to fix those issues

rigid venture
#

so this

#

so CHONKY

austere talon
#

you can split into multiple lines

#

butalso

rigid venture
#

it's raw

austere talon
#

for this i would use a dedicated function

rigid venture
#

idk what that is stop speaking terms immediately

austere talon
#

like

#

i wouldnt have logic this complex in my patch

#

instead do like

rigid venture
#

api

#

NAAAAAAAAAH

#

oh i see what you mean

austere talon
#
"$self.buildItem(...),"

buildItem(...) {
  return {
    tooltip: "Anonymise Filenames",
    onClick() {
      ...
    }
    ...
  }
}
#

u know

rigid venture
#

yea yea yea yea

#

ok will do later maybe

#

i will push this for now

charred monolithBOT
austere talon
#

its best to have as little code in ur patch as possible

#

a good rule of thumbs is that if your code is too long to fit in one line then you should probably make it a function on ur plugin instance instead and call that

#

like this is bad bad

#

much better is to

rigid venture
#

oki

#

btw does $self work in raw literals

austere talon
#

what that

rigid venture
#

bleeeh i will test

#

like

#

$self

austere talon
#

it should work in any replacements in patches

rigid venture
#

like liek

#

oki

austere talon
#

explain

rigid venture
#

$self.anonymize

#

fuck dicsord

#

it should work it's okay

#

so

let thing = `$self.fn()`

doesn't get replaced

#

in patches

austere talon
#

ye

#

only in patches

#

wait wdym

rigid venture
#

YES

#

look

austere talon
#

show full

#

code

#

now

rigid venture
austere talon
#

that works

#

u just need to update ur branch

#

did u read at all

rigid venture
#

huh

austere talon
#

replace functions cannot use $self

#

i said that like 20 mins agop

rigid venture
#

ooooooooooooooooooooooooooooooooooooooooooooooh

austere talon
#

then i fixed

#

and pushed commit

rigid venture
#

i was confused because i already did that

#

yea i see

austere talon
rigid venture
#

I SEE

#

I'M SORRY

austere talon
#

its okay

#

i dont forgive you

rigid venture
#

i understand

austere talon
#

okay i forggave u

rigid venture
#

ur \i is making this error @austere talon

austere talon
#

no

rigid venture
#

yes

austere talon
#

thats ur regex bestie

rigid venture
#

no

#

the previous one worked fine

#

previous commit

austere talon
#

see whats the issue

rigid venture
#

is that a preface to an explanation or

austere talon
#

well

#

idk

rigid venture
#

fix yo shit

austere talon
#

its the same

#

its probably ur function silly

rigid venture
#

third group

austere talon
#

ah

#

well you were wrongly matching { before

rigid venture
#

well no

#

but yea i can just put type it ig

#

for now

#

ialready forgot what the fuck does what

#

i can not be trusted around regex holy fuck

rigid venture
#

love

limber skiff
#

hell yeah

#

crash handler just saved my discord

#

I'm always getting that object destroyed error though

#

I think it's related to notifications

charred monolithBOT
quaint sapphire
quaint sapphire
#

(was a guess)

rigid venture
#

this is why u should use some git gui tonguecat

honest geyser
#

gui is bloat

solemn spoke
#

cli is also bloat

honest geyser
#

less

solemn spoke
#

embrance making your own scripts to do every common task lmfao

honest geyser
#

yeah that's cool

frail skyBOT
#
Bad Patches

InvisibleChat (had no effect):
ID: 457173
Match: /.=.\.activeCommand,.=.\.activeCommandOption,.{1,133}(.)=\[\];/

SilentTyping (had no effect):
ID: 457173
Match: /[A-Za-z_$][\w$]*=[A-Za-z_$][\w$]*\.activeCommand,[A-Za-z_$][\w$]*=[A-Za-z_$][\w$]*\.activeCommandOption,.{1,133}(.)=\[\];/

Bad Starts

None

Discord Errors
Failed to load resource: net::ERR_FAILED ```
rigid venture
frail skyBOT
#
Bad Patches

InvisibleChat (had no effect):
ID: 457173
Match: /.=.\.activeCommand,.=.\.activeCommandOption,.{1,133}(.)=\[\];/

SilentTyping (had no effect):
ID: 457173
Match: /[A-Za-z_$][\w$]*=[A-Za-z_$][\w$]*\.activeCommand,[A-Za-z_$][\w$]*=[A-Za-z_$][\w$]*\.activeCommandOption,.{1,133}(.)=\[\];/

Bad Starts

None

Discord Errors
Failed to load resource: net::ERR_FAILED ```
austere talon
charred monolithBOT
cunning bobcat
#

storing this image in here to send in a comment

charred monolithBOT
umbral hedge
#

and it'll upload the img

cunning bobcat
#

oh

#

TIL

charred monolithBOT
cunning bobcat
#

(don't bother looking at that image; it's a trolley emoji)

charred monolithBOT
cunning bobcat
#

fucking chatGPT

solemn spoke
#

i had that issue when i tried to ask for it to draw an example of a line

crude hearth
cunning bobcat
#

markdown

charred monolithBOT
charred monolithBOT
#

Hey, sorry but we aren't accepting any more text replacement plugins. Only kind we will probably accept is a generic text replacement plugin. There is an open pr for it already at #540 . Maybe you can help out there?

Oh, that's fine, though it might be cool to have this one as it is preconfigured to match the most known and used services out there. Most people might not be really familiar with regex and it'll be hard for them to type the regexes for all these services. I could keep maint...

#

Hey guys!

Coming from #557, I could say I have a suggestion to this plugin. What if you could make a way to let users create their own lists for services? A simple dropdown with some categories such as:

  • Social Media (TikTok, Instagram, Reddit etc.)
  • Games (Steam, HumbleBundle etc.)

and that will basically add new records to your storage automatically. Basically some predefined lists users can install with a single click. Or you could just implement a button to activate th...

#

The other plugin replace string to string, with an optional 3rd string to make it will only run if 3rd string also match, so user dont need to know regex.

That's true, but regex is not just a "string to string" replace. Check the code, you'll see it checks whether user posted a video by looking at the following keywords in the link: vm, status, p etc. if it doesn't, there's no need to replace them. If users were to replace all Instagram, Twitter and TikTok links to proxy, it won't ...

quaint sapphire
#

i got this error

#

when launching discord

#

ofc i updated and it got fixed

quaint sapphire
#

darn

#

cant believe ven merged bad code like that, and yet ignored me for months for objectively better code

charred monolithBOT
hazy kindle
charred monolithBOT
#

Hey guys!

Coming from #557, I could say I have a suggestion to this plugin. What if you could make a way to let users create their own lists for services? A simple dropdown with some categories such as:

  • Social Media (TikTok, Instagram, Reddit etc.)
  • Games (Steam, HumbleBundle etc.)

and that will basically add new records to your storage automatically. Basically some predefined lists users can install with a single click. Or you could just implement a button to ac...

#

I thought about this a while ago, but maybe instead we could change it to be a Notification? Those are far less intrusive while still giving users this info

I could either change this PR or close this PR and open a new want as I do want to work on this feature. However, you can take it instead if you really want. Personally, I'd be glad to work on it. Also, do you mean toasts or native OS notifications?

austere talon
#

could have just changed that pr :P but that's fine too

#

@high oracle

turbid hatch
#

why is my build pissing itself

#

oh

austere talon
#

this is what the Vencord notifs look like

high oracle
#

looks sweet

#

I fucked up by not creating a new branch

#

now I have to hard reset

#

I'll just refork

#

easier

turbid hatch
#

lmao you fell into my trap

austere talon
#

you can even add click listener

turbid hatch
#

^

austere talon
#

like write "Click me to restart now"

turbid hatch
#

onClick and onDismiss (?)

somber ginkgo
#

falling into traps? flushed_moyai

high oracle
turbid hatch
#

onClose

#

uhhh

austere talon
high oracle
#

but honestly onClick sounds just fine

turbid hatch
#

it would be nice but we have to maintain OS compat too

turbid hatch
#

but yes

#

rich body

high oracle
#

oh right

#

of course

austere talon
#

it works on Windows

high oracle
#

I'm assuming richBody only works for vencord buttons?

austere talon
#

but not sure about mac and Linux

turbid hatch
#

mac does

#

linux varies

austere talon
high oracle
#

linux will be very DE dependent

austere talon
#

if you use onClick it works in both

high oracle
#

amazing

austere talon
#

my Linux notifications didn't have button support

#

cause I used dunst and didn't bother

turbid hatch
#

KDE/GNOME support them

#

i know that much

#

but yeah it really is just mileage may vary

austere talon
#

I just went with onClick because that's portable everywhere and it's how discord does it too

#

like if u click a notif it opens that chat

turbid hatch
#

what would be good wording

charred monolithBOT
austere talon
#

I think the notif default settings I did are pretty sensible

turbid hatch
#

"Reload to apply changes, or click here!"

#

oh

#

"Reload (or click here) to apply changes!"

austere talon
high oracle
#

"Vencord has been updated! Click here to restart." sounds better imo?

austere talon
#

I think that's for Lewis thing

high oracle
#

I think it's already implied that user can reload to apply changes

austere talon
#

loading new settings

turbid hatch
#

ye

high oracle
#

ah

turbid hatch
#

i dont want to have it as a "Click here to x" cuz it sounds like you need to

austere talon
#

"Settings successfully synced. Click me to restart to apply changes!"

turbid hatch
#

oh question

#

actually

#

hm

high oracle
#

Click me to restart cute emoji

turbid hatch
#

.....

#

only reloading might mean some hardrestart settings dont get loaded

somber ginkgo
#

click me...

turbid hatch
#

i wish we could add metadata to object keys

#

that'd be cool

#

then we could have a list of keys specifically marked as "requires hard restart"

austere talon
#

Also make the notif colour green

#

green-400

#

I think

#

or might be 460

high oracle
#

aight

austere talon
#

oh I meant lewi

turbid hatch
#

uhhhhhhhhhhhh

austere talon
#

you can just use default probably idk or green too u decide

turbid hatch
#

hhhhhhhhhhhhhhhhhhhow?

austere talon
#

see what looks best

#

you can just

turbid hatch
#

oh

#

color

#

got it

austere talon
#

pass color in the notification

#

it changes the colour of the progress bar

turbid hatch
#

didnt see it xd

austere talon
#

it doesn't do anything in native notifs for obvious reason

turbid hatch
#

it is neither

#

xd

#

lets see if i can find it...

#

wait yeah green-460

#

why is it not working hmmm

austere talon
grave mangoBOT
turbid hatch
#

ah there we go

high oracle
turbid hatch
#

forgot to put var

high oracle
#

sorry

austere talon
#

ye

#

Also u can put fallback

turbid hatch
austere talon
#

actually that's kinda weird maybe that's ur theme

turbid hatch
#

it is

#

though i think the green is too dark regardless

#

switch green looks right to me

#

although i suppose overall it doesnt make much of a dif

#

up to you

austere talon
#

yeah I didn't mean 460 actually

#

I did mean switch green

turbid hatch
#

ah gotcha

#

switch green it is

#

i'll apply it to the rest too nod

#

what's a good red

high oracle
#

@austere talon do you think there's a way to test this?

austere talon
#

discord has good Red too

high oracle
#

also, can I make the notification toggleable too?

turbid hatch
#

that looks nice

austere talon
#

ye

turbid hatch
#

and then blue for neutral

#

well

#

brand ig

#

but yes

somber ginkgo
#

whats that blue that discord uses for info banners

#

that isnt brand

high oracle
#

blurple?

#

oh

#

hold on

austere talon
#

error findByCode(".TWITCH", ".STREAMING", ".INVISIBLE")("dnd")
warning findByCode(".TWITCH", ".STREAMING", ".INVISIBLE")("idle")
success findByCode(".TWITCH", ".STREAMING", ".INVISIBLE")("online")

somber ginkgo
#

no blurple is brand

turbid hatch
high oracle
#

#444fd5

#

think it's this?

somber ginkgo
#

i swear theres a different blue used for info notices

high oracle
#

I'll migrate this to notification as well

#

notices are really annoying

austere talon
#

ye notices suck

turbid hatch
#

all dun

austere talon
#

the only reason those things use notices is because notifications didn't exist then

high oracle
#

lovely

high oracle
#

which should justify the content shift

#

imo that's a better ux

turbid hatch
#

i'd argue vencord's updates are important enough :P

high oracle
#

I mean most of the times it's super optional

turbid hatch
#

i guess

high oracle
#

should I keep setTimeouts?

austere talon
#

ye

#

Well eh

#

it's technically not needed I think

#

the setTimeouts are there to make sure discord is fully started up

#

but that might not be needed when we use notifications

#

and would save you 10 seconds

#

Well ig for the a vencord update is available it should wait

#

so you can immediately jump to the settings page

high oracle
#

I'll keep it for now

#

I'll remove them when testing to see if they work

high oracle
#

why did notices need to wait for discord to fully load?

limber skiff
#

imo that notification should not auto close

austere talon
#

because how would they show when your discord is still loading

limber skiff
#

just like notices

austere talon
#

it would be trivial to implement tho

limber skiff
#

ye

#

we also need close button

#

annoying to wait

austere talon
#

wait

high oracle
#

isn't there already one?

#

why would onClose exist?

austere talon
turbid hatch
#

its when you right click them

austere talon
#

maybe would be better to add a proper button

#

I assumed people knew

#

cause that's also how u dismiss os notifs

limber skiff
#

I did not knew

high oracle
#

right click is super unintuitive

high oracle
umbral hedge
#

I never dismiss system notifs with right click

limber skiff
#

proper button is better

umbral hedge
#

i didnt even know that was a thing

austere talon
grave mangoBOT
umbral hedge
#

til

austere talon
#

to add permanent notifs

turbid hatch
austere talon
#

vencord (rewrite) initial commit

high oracle
umbral hedge
#

Nice

austere talon
#

LOL I like how the structure basically hasn't changed at all

limber skiff
#

too easy to miss the notification

charred monolithBOT
austere talon
#

mm you should also add the recursive ones

#

like

#

notifications.timeout

#

that's a bit harder to write so I can try doing that if u don't know how

high oracle
#

I'll try

#

cursed

turbid hatch
#

i will Stop Touching Cloud

#

how do i rally people to start using my patch for a bit

austere talon
#

how did you do that so fast wtf

#

xinto 40000 iq

high oracle
#

I went to typescript docs

turbid hatch
#

that's a good point

#

i should do that

high oracle
#

turns out there's literal template types?

austere talon
#

ye

high oracle
#

pretty neat feature

austere talon
#

but I think u gotta write recursive type for this

high oracle
#

yeah

turbid hatch
#

yeah you will need to

#

cause "settings.backend" for instance isnt valid

#

since its an object

#

well

#

i guess it is valid

#

but only if i rewrite the entire object

#

xd

#

but [Symbol.iterator] definitely isnt

high oracle
#

yeah I'm trying to omit that bs

turbid hatch
#

Omit<keyof Settings, "[Symbol.iterator]">

#

trolley

#

if you want to omit all symbols i think you can do something like ```ts
Omit<keyof Settings, [Symbol.${string}]>

high oracle
#

can I do a reverse of omit?

austere talon
#

I think you can't do it like that

high oracle
#

something like !&

austere talon
#

wait

#

I wrote a type that resolves dotprop like foo.bar

#

but not sure how to do the inverse

turbid hatch
#

its easy in typescript 5 im pretty sure

#

but idk how to do it xd

austere talon
#

I'll experiment later

high oracle
#

I give up

#

can't make it work without bundling stdlib nonsense inside the autocomplete

charred monolithBOT
charred monolithBOT
#

Discord Account

Tami#7071

What happens when the bug or crash occurs?

There is no Invisible Chat Icon to use (and the plugin has no other options than setting a password so it is enabled)

What is the expected behaviour?

Show the Invisible Chat icon ^^

How do you recreate this bug or crash?

  1. Install Vencord
  2. Enable Invisible Chat
  3. No Button

Errors

No crash

Request Agreement

  • [X] I am using Discord Stable or tried on Stable and this bug hap...
charred monolithBOT
charred monolithBOT
austere talon
#

wtf is a sudo terminal

#

root terminal silly

charred monolithBOT
austere talon
#

why

#

just do it in a different commit

umbral hedge
#

Well I mean

#

post people will "sudo <cmd>"

charred monolithBOT
austere talon
#

?!?

austere talon
umbral hedge
#

wdym do it in a different commit

#

that is a commit

austere talon
#

in a different commit that isn't just a single small irrelevant fix

umbral hedge
#

oh
that wasn't very clear

charred monolithBOT
frail skyBOT
#
Bad Patches

InvisibleChat (had no effect):
ID: 457173
Match: /.=.\.activeCommand,.=.\.activeCommandOption,.{1,133}(.)=\[\];/

SilentTyping (had no effect):
ID: 457173
Match: /[A-Za-z_$][\w$]*=[A-Za-z_$][\w$]*\.activeCommand,[A-Za-z_$][\w$]*=[A-Za-z_$][\w$]*\.activeCommandOption,.{1,133}(.)=\[\];/

Bad Starts

None

Discord Errors

frail skyBOT
#
Bad Patches

InvisibleChat (had no effect):
ID: 457173
Match: /.=.\.activeCommand,.=.\.activeCommandOption,.{1,133}(.)=\[\];/

SilentTyping (had no effect):
ID: 457173
Match: /[A-Za-z_$][\w$]*=[A-Za-z_$][\w$]*\.activeCommand,[A-Za-z_$][\w$]*=[A-Za-z_$][\w$]*\.activeCommandOption,.{1,133}(.)=\[\];/

Bad Starts

None

Discord Errors

limber skiff
#

close button looks the same as modal one

austere talon
#

ah pretty good

#

you should wrap the svg into a <button>

limber skiff
#

that's not gonna mess up the css right

austere talon
#

and have the onClick on that button

limber skiff
#

like it doesnt have any bad defaults

austere talon
#

button?

limber skiff
#

ya

austere talon
#

button has insane defaults but you can unset: all

#

then add back cursor pointer

austere talon
#

you should always wrap in a semantic tag where possible like button in this case

limber skiff
#

I just copied discord css ven

austere talon
#

discord bad at coding

limber skiff
#

ughh

austere talon
#

I mean u can just keep it this way if that's how discord does it too ig

#

but it's bad

limber skiff
#

idk how to transition multiple props

charred monolithBOT
austere talon
limber skiff
#

@austere talon do I keep px for line height

austere talon
#

same story

#

but like I said if that's discords style it's whatever

limber skiff
#

okay done

charred monolithBOT
charred monolithBOT
charred monolithBOT
#

Discord Account

Chiggy#6420

What happens when the bug or crash occurs?

The EmoteCloner plugin is loaded, yet there's no option in the context menu related to cloning an emote. I've tried it in discord stable, discord canary, discord web stable, discord web canary. Same problem everywhere.

What is the expected behaviour?

The clone button to appear in the context menu when clicking an emote

How do you recreate this bug or crash?

  1. Install Vencord
  2. Enable EmoteCloner p...
charred monolithBOT
charred monolithBOT
charred monolithBOT
#

I don't trust this website because they redirect you to a strange site google.gprivate.com that claims to be "100% private" and "Simple, Untracked, Private Search.", yet they literally use trackers

"Ad & Affiliate Disclosure: Gogoprivate may receive compensation for recommendations made in search results that relate to a product, website or service. We have partnered with Google Adsense, Bing Ads and Sovrn to deliver relavant ads & affiliate links. By using Gogoprivate you agreeing to th...

charred monolithBOT
austere talon
#

@high oracle

#

im almost there

#

explode

high oracle
#

yop

charred monolithBOT
austere talon
#

okay anyway we ball

high oracle
#

ballers

#

imma take a look at issues to see if there's anything I can do

austere talon
#
type UseSettings<T extends object> = ResolveUseSettings<T>[keyof T];

type ResolveUseSettings<T extends object> = {
    [Key in keyof T]:
    Key extends string
    ? T[Key] extends Record<string, any>
    // @ts-ignore "Type instantiation is excessively deep and possibly infinite"
    ? UseSettings<T[Key]> extends string ? `${Key}.${UseSettings<T[Key]>}` : never
    : Key
    : never;
};
#

do u love

high oracle
#

horrific

#

love

#

@austere talon will you commit that yourself?

austere talon
#

u love

#

i hate how

#
type StringObj = Record<string, unknown>;
type ShouldBeString = keyof StringObj; // is actually string | number | symbol
#

so stupid

#

wait

#

it is string

#

but

verbal pumice
#

and also that Record<number, ...> is useless

#

rare to use but when i do sometimes wanna use it it sucks

austere talon
#

but in an extends and in clause

#

K should be string here

turbid hatch
#

it's because that doesnt narrow the type

#

keyof O is all valid keys of a record

austere talon
turbid hatch
#

haha you thought

austere talon
#

because it's a Record<string, any>

#

grr

turbid hatch
#

haha you thought

austere talon
#

Key extends string
UseSettings<T[Key]> extends string

#

these are both obsolete

#

but ts goes naaah bro this can totally be a symbol

charred monolithBOT
turbid hatch
#

on the playground it works fine

#

running 4.9.5

#

i dont actually know why its not narrowing

#

cause even your thing here works fine

#

on old ts

#

its probably a bug

austere talon
#

should i

austere talon
austere talon
turbid hatch
#

so funny thing

#

O seems like it's being interpreted as any

#

we know obviously from semantics that it is using it to do the type (cause using O means its not dimming the generic) but it seems to be that the typing system thinks its any

#

now with the string | number union, you will never get past that if it happens

#

this is actually an intended feature in some cases

turbid hatch
#

though that doesnt seem to be the issue here

#

ii dont know]

austere talon
#

whenevr that's the case u should try to not do that

#

u moved ```tsx
export let EmojiComponent: ComponentType<any>;
export let ChannelBeginHeader: ComponentType<any>;

limber skiff
#

guh how else will I do it

austere talon
#

you should move them to a different file

limber skiff
#

but I need to set the component on index

woeful sable
austere talon
#
// components.ts
export let EmojiComponent: ComponentType<any>;
export let ChannelBeginHeader: ComponentType<any>;

export function setEmojiComponent(component: ComponentType<any>) {
    EmojiComponent = component;
}

export function setChannelBeginHeaderComponent(component: ComponentType<any>) {
    ChannelBeginHeader = component;
}
// index.ts
definePlugin({
  setEmojiComponent,
  setChannelBeginHeaderComponent
})
limber skiff
#

makes sense

austere talon
#

btw if u wanna know why I'm so against circular dependencies

#

it might work fine now but it's very easy to introduce nasty bugs that are hard to debug

#

if you've ever tried using Settings.plugins.You.whatever on the top level and got an error, it's caused by circular import

#

@api/Settings imports ~plugins to get all plugins and their settings schema so it can return defaults and stuff

~plugins imports every plugin so it can build the plugin list

so @api/Settings indirectly imports your plugin. If you now import it from your plugin, you introduced a circular import

#

due to that circular import, if you use settings on top level, you access it before state it depends on is fully initialised and run into nasty bugs

#

same story applies for plugins, it's very easy to introduce something similar

limber skiff
#

Yeah I get it

#

I didnt realize I made a circular import

charred monolithBOT
quick ibex
#

was gonna lose my marbles

unborn garnet
#

πŸ˜”

unborn garnet
limber skiff
#

@austere talon should I try working on dev branch

unborn garnet
#

why is ven not merg ing

quick ibex
umbral hedge
#

because ur cringe

charred monolithBOT
#
const QueueIcon = () => <svg viewBox="0 0 24 24"><path fill="currentColor" d="M14 6H4c-.55 0-1 .45-1 1s.45 1 1 1h10c.55 0 1-.45 1-1s-.45-1-1-1zm0 4H4c-.55 0-1 .45-1 1s.45 1 1 1h10c.55 0 1-.45 1-1s-.45-1-1-1zM4 16h6c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1s.45 1 1 1zM19 6c-1.1 0-2 .9-2 2v6.18c-.31-.11-.65-.18-1-.18c-1.84 0-3.28 1.64-2.95 3.54c.21 1.21 1.2 2.2 2.41 2.41c1.9.33 3.54-1.11 3.54-2.95V8h2c.55 0 1-.45 1-1s-.45-1-1-1h-2z"></path></svg>;
woeful sable
#

.slice()????????????????????????????????

woeful sable
austere talon
#

bro

#

google removed [[SCOPES]] from devtools

#

that lets u see closure

#

for whatever reason

#

but peopple complained and googol added it back

limber skiff
#

insane css

frail skyBOT
#
Bad Patches

InvisibleChat (had no effect):
ID: 457173
Match: /.=.\.activeCommand,.=.\.activeCommandOption,.{1,133}(.)=\[\];/

SilentTyping (had no effect):
ID: 457173
Match: /[A-Za-z_$][\w$]*=[A-Za-z_$][\w$]*\.activeCommand,[A-Za-z_$][\w$]*=[A-Za-z_$][\w$]*\.activeCommandOption,.{1,133}(.)=\[\];/

Bad Starts

None

Discord Errors

charred monolithBOT
frail skyBOT
#
Bad Patches

InvisibleChat (had no effect):
ID: 457173
Match: /.=.\.activeCommand,.=.\.activeCommandOption,.{1,133}(.)=\[\];/

SilentTyping (had no effect):
ID: 457173
Match: /[A-Za-z_$][\w$]*=[A-Za-z_$][\w$]*\.activeCommand,[A-Za-z_$][\w$]*=[A-Za-z_$][\w$]*\.activeCommandOption,.{1,133}(.)=\[\];/

Bad Starts

None

Discord Errors

charred monolithBOT
charred monolithBOT
#

Maybe it's possible to integrate that in the FakeNitro plugin or add an optional one?

I was using this plugin on BetterDiscord that allowed it, but BD is kind of a crashy mess for me, so I'm giving Vencord a try.

This is the BD plugin I'm talking about: https://github.com/riolubruh/YABDP4Nitro
Maybe some hints can be found in there, although it also requires that Zeres library. So I'm not exactly sure what does the heavy lifting.
It also allows for custom resolutions and framerates, t...

charred monolithBOT
austere talon
#

how did u implement that @limber skiff

#

drop down?

limber skiff
#

ya

#

same select menu as plugin options

austere talon
#

why is there both Fetch Branches and Get Branches ipc

#

wouldn't only having get that does both sufficient

limber skiff
#

yeah

#

gonna change that

austere talon
#

as for release, maybe we could make it version based

#

we already have versions for the browser extension anyway

#

so it would make sense to be streamlined

#

so fetch latest release that isn't devbuild

#

not sure how you'd do that

#

probably need to fetch all releases first

limber skiff
#

hmhm

#

fetch the latest tag?

#

either way we need a release branch

limber skiff
#

or maybe not

austere talon
#

it returns a new function so arguments refers to the argument passed to that inner function

limber skiff
#

well I'm not sure if it is the function being serialized

#

but it's an object, not the arg I wanted

austere talon
#

I think the first argument is event

limber skiff
#

slicing it gives the proper one

austere talon
#

which is useful in some cases

limber skiff
#

okay I will revert that

austere talon
#

yes it's event

austere talon
limber skiff
#

ok reverted

austere talon
#

just based on tag / release

limber skiff
#

I'm not sure how to build from a tag release

austere talon
#

explain

#

you don't need to build

#

release would only be for people using normal install

#

if you're installing from source you get bleeding edge

#

Well any branch ig

#

but we don't need a specific branch for that

#

technically you can check out the tag if you really want to

#

like in git

#

but I don't think it's necessary

#

you decide

limber skiff
#

well

#

if we do use tags

#

we need a way to get the build from it

#

like we get the build files from the devbuild release

#

how should we do that

#

okay okay maybe like this:

#

when a tag from release branch is created

  • make a release with the same name
  • build the files and upload as assets
#

then we can fetch the releases and find the latest one

#

we just need a way to include the tag name on the build too, so we know inside the client which one is selected

austere talon
#

I thought that was clear xd

#

sorry

#

it would auto make a release similar to devbuild whenever tag created

#

just called "Release v1.1.1" or smth like that

limber skiff
#

makes sense

austere talon
#

I already have a workflow that publishes to chrome and Firefox on tag

#

so it would be trivial to also make it create a release

#

and then publishing is streamlined, whenever tag is pushed it releases for everyone

limber skiff
#

where should I store the release name inside the build?

austere talon
#

wdym exactly?

limber skiff
#

we are gonna need a way for the client to know what's the selected release

#

like branches but not branches

#

okay nvm I know how to do it

austere talon
#

I'm not sure im following

#

but in any case you can just introduce a new global variable or module

#

we already have ~git-hash and ~git-remote

#

so you could just add ~git-tag or smth like that

#

but I don't think u need it

limber skiff
#

god the build scripts are confusing

#

specially cuz I barely know what I'm doing lol

austere talon
#

it's pretty simple once u get the hang of it

#

you can just copy paste the ~git-hash one and make it do what u need

#

then you need to add it in modules.d.ts

limber skiff
#

do you I need to do the git-tag here too

#

on this external

#

already did here

austere talon
#

Well that's for browser

#

unless you want to use it somewhere that browser can reach no

#

if you do use it somewhere browser can reach then yes

limber skiff
#

I see

austere talon
#

you need to it in plugins too