#👾-core-development

1 messages · Page 257 of 1

austere talon
chrome coral
#

📮?

austere talon
#

lc.ocr

rancid idolBOT
# austere talon lc.ocr
https://media1.tenor.com/m/G30f84wq-DYAAAAC/horusultra-rias.gif```
austere talon
#

wtf is this gif

fossil inlet
chrome coral
fossil inlet
#

o not 0

chrome coral
#

its uh

#

hsdxd

#

i would be embarassed to have this in a discord theme

fossil inlet
#

vencord users have no shame

charred monolithBOT
austere talon
#

does this guy have 4 different wallpapers

#

im so confused

kindred tree
#

bro thinks vencord is wallpaper engine

chrome coral
#

a

charred monolithBOT
limber skiff
#

spammer

#

🙄

glass jasper
# charred monolith

Was about to say litterbox but thats temporary uploading and would be pointless

austere talon
#

indeed

limber skiff
#

all it takes is 10 minutes to fix all the theme issues and people are complaining

elder plinth
#

can you use images hosted on discord? that seems like the easiest solution

elder plinth
#

the client should auto regenerate them if retrieved from within the client, no?

#

does that not work when used in this way I guess?

austere talon
#

no

fossil inlet
elder plinth
#

yeah just tried it. makes sense

charred monolithBOT
#

Content

Hi! Since i started using vencord about 6 months ago i've been hosting the images i use for my vencord backgrounds on my own private web server. Today i restarted discord and my background no longer loads and it says the domain is blocked. how can i override this? i will recompile vencord if i have to as i do not feel comfortable using a third party site to host my images as this both increases load times, increases my overall reliance on things not hosted by me and creates a dat...

elder plinth
#

lol

charred monolithBOT
chrome coral
#

@austere talon gl with theme support

austere talon
#

wha

austere talon
#

idk how to fix that honestly

oblique hound
#

I’ll just use the public one in the meantime

oblique hound
austere talon
#

we will sunset the feature of custom cloud sync server

oblique hound
#

Or that lol

scenic brook
#

Code in work hours or code after midnight, no inbetween

jagged reef
dusk blaze
#

i do that

#

or keep original idea of premium gating no CSP

opaque silo
odd heath
hollow musk
# charred monolith

like i said earlier, a toggle somewhere to disable it with a ton of warnings

austere talon
#

nah

odd heath
#

"to use this theme you must first click these 3 warnings!!!!"

#

So useless

hollow musk
#

or maybe just add the toggle if it is built from source?

hollow musk
#

damn i didnt see that part

odd heath
#

But yeah I doubt any malicious person would guide through a pnpm install atp just trick the victim into using a malicious installer

hollow musk
#

oh wait, i forgot, midnight uses wikipedia for the moon icon husk

odd heath
#

I do not mean to give tips to anyone by saying that

#

Thanks FBI

austere talon
austere talon
#

but yes blanket disable will never be added

odd heath
hollow musk
austere talon
#

it's not really to prevent you from malicious themes anyway

#

a good csp is very beneficial in many regards

#

unfortunately discords csp is not good in the first place so you miss out on a lot of potential security but hey it's better than nothing

odd heath
#

Fair

opaque silo
#

husk

odd heath
hollow musk
fossil inlet
opaque silo
#

@austere talon you are terrible and everything you touch turns to ash

austere talon
#

"wait you didn't whitelist hundreds of different niche domains of big websites that maybe 2 themes in existence use????"

charred monolithBOT
fossil inlet
#

fafa

desert cosmos
#

hello

fossil inlet
#

hiiii

desert cosmos
#

i woke up to my plugin exploding

fossil inlet
desert cosmos
austere talon
#

nuh uh

fossil inlet
#

@austere talon you forgot companion csp fr

austere talon
#

love

#

does it use localhost instead of 127.0.0.1

fossil inlet
#

i will pr guhhhhhh

fossil inlet
#

uses 127

austere talon
#

HOW

#

why doesn't it worm

#

it should

fossil inlet
#

crumbsniffer was using my fork

csp broke it fr

austere talon
#

connect-src 'self' ws:;

#

wtf is that

#

so fake

#

does discord not pass that already

#

arrpc works

#

show the csp error

fossil inlet
#

@opaque silo

#

@austere talon guhhh add wikimedia

midnight uses it

austere talon
#

never

fossil inlet
#

insane

opaque silo
#

u made the change on built in companion

#

his fork just needed it too

austere talon
#

INSANEEEEEE

#

@fossil inlet

fossil inlet
opaque silo
#

the evil ".concat(b ? "0" : "1") vs the wonderful ${+!b}`

austere talon
#

explain

opaque silo
austere talon
#

tf is that

#

the concat isn't real discord code

#

it's their bundler

#

the source code is format string

opaque silo
#

¯_(ツ)_/¯

austere talon
#

no real person uses concat

opaque silo
#

insane bundler then

charred monolithBOT
wary dew
#

H-h-h-h-h-h-h-h-h-h-h-h-hey vencord owner 🥹 Can you merge ❤️

austere talon
#

fym directly refer to image

#

non direct like won't even work

#

and I disagree with adding gofile

charred monolithBOT
wary dew
#

???

wary dew
charred monolithBOT
#

any value coming from the renderer is inherently unsafe and shouldn't be trusted, otherwise context isolation is pointless

a safe way to implement this would be to have ipc methods for whitelisting domains, showing an explicit native confirmation modal and then storing this in a separate settings file the renderer has no access to (NativeSettings)

that's exactly what I was planning on adding

granite wharf
#

reddit

prime dew
# charred monolith

Why would you use reddit...? Posts can be deleted, subreddits closed, accounts stolen and emptied

charred monolithBOT
charred monolithBOT
dusk blaze
wary dew
#

Seriously what is the point in this stupid csp shit

#

Oh no imma get ip logged

#

💔

brazen bone
#

Csp does not exist to protect you from malicious themes

#

It's one of many layers of defense to protect you from unexpected threats

wary dew
brazen bone
#

Nothing

scenic brook
#

It blocks domains for the entire app, not just css

brazen bone
#

Css is not dangerous

prime dew
wary dew
#

Yeah but someone can easily just upload the script to github and call it a day

brazen bone
#

(Though it can burn your cpu to pieces if you're stupid)

gritty canyon
brazen bone
still maple
#

Also fun fact guys, if you don't like CSP, just remove it by reverting the commit on your fork <3

brazen bone
#

But yes, permitting GH is also somewhat dangerous

still maple
#

Problem solved

brazen bone
#

It's just that vencord couldn't work without it so it's a compromise

gritty canyon
wary dew
brazen bone
#

If yo shit is broken by csp, fix yo shit

wary dew
#

Fuck is that emoji

brazen bone
#

Connecting to arbitrary untrusted websites is a bad idea

gritty canyon
#

i fucking hate discord

gritty canyon
brazen bone
wary dew
#

Csp

#

Dont force keep it enabled

brazen bone
#

Are you offended by "warning: do not swim with piranhas" signs as well?

wary dew
#

I just think its stupid that its not an option the user can disable

#

It should be on by default

brazen bone
#

Then why are you offended by this particular "do not swim with piranhas" sign

gritty canyon
#

if you know how to clone the source, remove csp you can do that!
if you dont, you shouldnt! as shrimple as that

wary dew
#

What is your point here

brazen bone
#

Yeah you'll only get your account hacked rather than your leg being bitten off

wary dew
gritty canyon
# wary dew What is your point here

that adding a specific option exposes people to danger and if this gets abused by a malicious attacker later on vencord & other client mods will be blamed

wary dew
#

What is this preventing

#

And not just github but also github pages

gritty canyon
#

this is exactly the same thought behind userplugins

still maple
wary dew
#

Maybe, get this, the user should know what they're installing 😱

brazen bone
#

Yes

brazen bone
#

User can install a vulnerable custom build if they want

#

But most users don't want vulnerabilities I think

gritty canyon
wary dew
brazen bone
#

Because you are asking for vencord to add a "allow vulnerability" switch

gritty canyon
brazen bone
#

And yes, windows allows you to install viruses

#

It does its darnedest to prevent viruses from installing themselves by receiving a malicious chat message, though

wary dew
#

Discord has context isolation on in electron. There is no benefit to this especially when they can again, put the script on github.

still maple
#

Windows literally use many popups to prevent you from installing shit on your own machine

#

Sometimes even blocking legit stuff

wary dew
still maple
#

And it's annoying
But it's F great so i don't have to fix my grandpa computer every fucking day

still maple
#

Vencord now ship with Vencord Defender
If you are not happy, clone the code and remove it and that's it

wary dew
#

Windows defender is a separate app shlawg🥹

still maple
brazen bone
scenic brook
#

You can build Vencord yourself and disable csp

#

Write yourself a userplugin to add specific ones you want dynamically if you want, it's just not supported officially

wary dew
#

This will only make this situation worse. People will go to shady repos where csp is disabled and God knows what is in there.

#

This is a literal perfect attack vector

gritty canyon
#

do you genuinely think people without any knowledge of csp will see "failed to fetch" or "unsupported domain" or whatever and google "vencord without csp" & download vencord from an unofficial source instead of the theme developer just changing their theme to use a valid url 😭

still maple
dusk blaze
#

fun fact a theme can log your (first 3 digits of) user ID or whatever you're typing ask @inland fable he's done like 900 of these POCs

#

the resource itself is irrelevant

#

the resource host is

dusk blaze
#

only like two people will link hsdxd gifs from tenor (real world example)

wary dew
austere talon
#

discord moment

still maple
austere talon
#

if discord used a better csp I would also make sure it's XSS safe

grave mangoBOT
#

dnr-rules.json: Lines 7-10

"responseHeaders": [{
  "header": "content-security-policy",
  "operation": "remove"
}]
still maple
#

Lmao

austere talon
#

lol i don't think there's any better way to do this in tauri

#

the vencord extension also just removes the header

#

peak

kindred tree
#

should probably show an example... like even for simple shit it adds random stuff sometimes
I've also seen times where it's just a word and it adds like a million words of context to explain it better, instead of just translating it

#

deepl is very inconsistent from my experience and the accuracy is also sometimes lacking

brazen bone
#

If you translate a single word, translating that word as detailed as possible is a good thing

charred monolithBOT
charred monolithBOT
desert cosmos
#

open pr
close pr

desert cosmos
#

i read "updated github actions workflows" and thought it was a spam pr

long stream
charred monolithBOT
desert cosmos
#

why would you host css on pastebin

#

i would rather host MALWARE on there..

charred monolithBOT
fossil inlet
# charred monolith

Well, I would never use pastebin. I think that it's good that you can make something without creating an account on it.

idle fossil
desert cosmos
#

just blame nin0

grave mangoBOT
charred monolithBOT
frozen spindle
#

Best file host

frozen spindle
#

Absolutely wrong update

dusk blaze
frozen spindle
#

Yes

jolly egret
#

keylogger theme

frozen spindle
#

100%

#

This is absolutely hot trash

charred monolithBOT
frozen spindle
#

Absolute meme of a change

frozen spindle
glass jasper
#

Github gist is crazy

charred monolithBOT
#

when holding backspace and alt-tabbing out, the isDeletePressed variable stays true, which causes messages to be deleted unintentionally on click.

this bug has happened to me like 30 times on accident and it's annoying. it’s not super frequent, but when it does happen, it’s really frustrating.

this probably impacts a lot of other users. in fact i know it impacts a few of my friends using vencord.

![cat](https://github.com/user-attachments/assets/9ccfec39-973c-4a05-b822-fddcd092...

austere talon
#

how

#

why

#

who tf is holding delete while alt tabbing 😭

#

that never happened to me in my entire life

#

but good catch

charred monolithBOT
kindred tree
#

that’s also a discord issue for me rather than a vencord issue

fallen vale
#

oops :3

austere talon
#

oops

frozen spindle
charred monolithBOT
charred monolithBOT
#

Hi just decided to add a little version-number badge image right next to Vencord logo.

Changes by other contributors in updating the image can simply be done by editing this URL:

https://img.shields.io/badge/<hash>-<version>-green.svg

This should make it easier for package maintainers of desktop clients especially on NixOS since it seemes to be 1 version late:

https://search.nixos.org/packages?channel=25.05&from=0&size=50&sort=relevance&type=packages&query=vencordNixOS Vencord Versions

hollow musk
opaque silo
austere talon
#

lol

#

I assumed it automatically updated

opaque silo
#

wait I'm sure theres an actual dynamic shield thing

austere talon
#

it's not really useful tho

#

redundant information

#

and the version number is meaningless

opaque silo
austere talon
#

yes

#

the version number isn't relevant

#

and for the hash just look at the latest hash

opaque silo
austere talon
opaque silo
#

doesn't show the hash tho

#

wait yeah its meaningless

#

blehg

austere talon
opaque silo
#

make the logo the vencord pink colour

austere talon
#

the horror

opaque silo
#

🤥

charred monolithBOT
#
[Vendicated/Vencord] New branch created: Vendicated-patch-1
austere talon
#

you love

opaque silo
#

ew why all black

austere talon
#

racist

#

make better colours

grave vaporBOT
opaque silo
#

?

austere talon
#

[ :e: Removed by <@&1062536788184404069>rumbsniffer ]

opaque silo
#

ur soo stupdu

austere talon
#

okay do

#

pr

#

pr to my pr

#

u stupid chud

opaque silo
#

??

#

ur being mean

#

apologize rn or I'm not pring the mono microphone

#

steromic is real

austere talon
#

sorry my little chud

opaque silo
#

dont call me a chud ur the chud

opaque silo
#

i don't want your virus

#

leave me alone

austere talon
#

the pink just looks bad here

#

i think

#

actually it's alright

#

sure

opaque silo
#

soo flip floppy

opaque silo
#

@austere talon i might be doing it wrong but i cant repro the single ear microphone thing

charred monolithBOT
opaque silo
charred monolithBOT
#
[Vendicated/Vencord] New branch created: quickreply-new-messages
austere talon
#

Quick sound check to make sure you are hearing left and right audio from the correct side. If you are hearing the speech from both sides, then something is mixing the audio. It could be hardware (headphones or a plug that only supports mono) or software ("mono audio" could be selected in the accessibility settings on your device, for example).

...

▶ Play video
opaque silo
#

well the guy said it was the microphone doing it

#

not the stream

#

stereo stream def works tho

charred monolithBOT
#

Basically the plugin stores your current reply position for up/down functionality to work

Previously it would store a simple int (index), but this meant that if someone sent a new message it would skip a message (the more new messages, the more severe)

Now it instead stores the current message id and then dynamically finds the next message

The logic for this is kinda complicated so I'll have to test this a bit more to ensure there aren't any bugs

Also renames MessageActions -> Mes...

austere talon
#

make sure stereo actually works on the receiver

#

not all clients can receive stereo

#

that's why I told you to test it with streaming to make sure it actually works xD

opaque silo
#

ohh

#

ok well it does

#

soo idk

charred monolithBOT
austere talon
#

not a fan of .{0,8}

opaque silo
#

.concat(b ? "0" : "1")

austere talon
#

ulgy

opaque silo
#

matches the ternary

#

ur ugly

charred monolithBOT
austere talon
#

it's ulgy

opaque silo
#

FINE

#

@dusk blaze ur rotted in the head

#

happy?

dusk blaze
#

imagine a Rust crate where you like define a plugin then plugin.exportTo("src/index.ts") then we'd have blazing fast plugins

opaque silo
#

did you get a lobotomy

dusk blaze
opaque silo
#

actually horror

austere talon
#

nuh uh

opaque silo
#

pure evil

austere talon
#

dude ${+$1} is horrifying

opaque silo
#

its wonderful

austere talon
#

you are evil @opaque silo

#

bad things will come upon you

#

you hecking chud

opaque silo
#

stop b eing so mean to me

austere talon
#

it's out of love

opaque silo
#

does this make you happy

austere talon
#

EVIL

#

i already pushed to ur pr

#

look u can't even tell it isn't official discord code

opaque silo
#

im going to barf

austere talon
#

why

opaque silo
#

you sicken me

dusk blaze
#

@austere talon intentionally makes patches unreadable to keep a monopoly on vencord development

austere talon
#

wtf is dtx anyway

opaque silo
austere talon
opaque silo
#
                    match: /"(minptime=10;useinbandfec=1;usedtx=)".concat\((\i).{0,8}\)/,
                    replace: "`$1${+!$2};stereo=${+$2};sprop-stereo=${+$2}`"

@austere talon im pushing

austere talon
#

Discontinuous Transmission (DTX), where parts of the
encoded signal that correspond to periods of silence in the input
speech or audio signal are not transmitted to the receiver. A
receiver can distinguish between DTX and packet loss by looking for
gaps in the sequence number, as described by Section 4.1

austere talon
opaque silo
#

remove the concat completely

#

$(+!$2)

austere talon
#

STEREO MIC PLUGIN REAL???

opaque silo
#

unironically it is real

austere talon
opaque silo
austere talon
#

chud behaviour

opaque silo
#

STOP CALLING ME THAT

#

it hurts my feelings

austere talon
#

despicable

austere talon
opaque silo
#

stay away from me

opaque silo
austere talon
#

esbuild wrote this code

opaque silo
#

i train chatgpt to write like that

#

i pr vencord a massive refactor to make everything clean and concise

austere talon
opaque silo
#

???? why is it inverting them

#

😭

dusk blaze
#

0 and 1 are numbers

#

treated as such

opaque silo
#

actually horror

dusk blaze
#

!0 means to return true if the value is falsy, and 0 is falsy

austere talon
#

!0 = true
!1 = false

#

shorter

dusk blaze
#

i do this for true !!!0

austere talon
#

js gore @opaque silo

opaque silo
#

i should start writing like that

#

will make all my js blazingly fast

austere talon
#

es team: guys let's add a new typeof value that comes after u in the alphabet
the evil minify optimisation: YOU SHALL EXPLODE

#

it's so funny that bundlers rely on the fact that undefined is the last type in the alphabet

#

and minifies to >"u"

austere talon
#

trying to add a new method to some stdlib object? well think again because insane websites write their own methods to stdlib objects and you just broke amazon

#

that's why some methods have weird names in js

opaque silo
#

breaking amazon sounds like a good idea

opaque silo
austere talon
#

iirc array.flat() was supposed to be called array.flatten() but that conflicted with a very popular library that would define its own array.flatten and it broke popular sites

#

so they named it flat instead

#

i read that in some google blog

#

chatgpt found it

austere talon
#

The proposal author jokingly suggested renaming flatten to smoosh to avoid the compatibility issue. The joke was not clear to everyone, some people started to incorrectly believe that the new name had already been decided, and things escalated quickly.

#

lmao

opaque silo
#

why are they freaking out about a method being called smoosh

#

webdevs hate fun

#

oh my god...

#

@austere talon YOU HATE FUN

austere talon
#

(unless it's a 100% standards compliant polyfill)

austere talon
#

🐮

charred monolithBOT
median rapids
charred monolithBOT
austere talon
#

Discord web's encoder always uses mono

#

even for stream audio

#

that patch makes it stereo

#

but I fucked up and it also applies to voice, not just video

#

that commit fixes it so it only makes video stereo

#

it was causing issues for some users where their voice would only be on the left side lmao

#

probably because feeding mono audio into stereo encoder

#

so it would use the mono audio as the first (left) channel

charred monolithBOT
#
[Vendicated/Vencord] branch deleted: quickreply-new-messages
woeful sable
#

btw can you replace the CustomCommands plugin with something else? pretty sure it’s gone

charred monolithBOT
limber skiff
#

vendicated patch

charred monolithBOT
#
[Vendicated/Vencord] branch deleted: Vendicated-patch-1
median rapids
#

swear all clients always sent mono

opaque silo
#

yeah its fairly new

fossil inlet
austere talon
#

that issue isnt real

#

it always handled blocked messages correctly 😭

#

oh

#

you mean without NoBlockedMessages

#

no it only skips it if it's hidden due to NoBlockedMessages

#

does discord not expand the blocked message when you create a reply?

fossil inlet
#

No

austere talon
#

insane

#

you will pr fix

#

just make it expand ig

#

the changes mainly address skips when a message is deleted / created

fossil inlet
austere talon
#

that's what the change fixes

fossil inlet
#

Ah

austere talon
#

you crashed my browser

#

i closed ur issue tab and it crashed

fossil inlet
austere talon
#

oh my god i wrote this and then accidentally closed my browser I am so grateful that Github automatically saves your draft

charred monolithBOT
dusk blaze
#

@austere talon has been destroyed

charred monolithBOT
austere talon
#

surprised this hasn't been brought up more

#

themes with spaces have always been broken

dusk blaze
fossil inlet
#

me wondering why nothing is working

the perfidious malformed patch

fossil inlet
#

guhhhh what am i doing wrong here

#

(this is for a userplugin, not my pr)

fossil inlet
#

@fossil inlet

#

what the hell

fossil inlet
#

bro didn't even test it (tbh i didnt even know that this wasn't the case either trolley)

#

(me when broken code works better blobcatcozy )

charred monolithBOT
charred monolithBOT
#

plugin which shows your most interacted users in a word cloud or whatever you call it

discord has two stores for affinities, i just added an option to switch between them (will change if needed), i dont think v1 is used anymore though as v2 is only updated on my alt and v1 completely empty

also has a count option

the way i calculate affinity is very close to discord i think, when creating one for v1 and v2 they're close, but not perfect

i thought about adding more like usernames ...

desert cosmos
#

why are file names in camelCase and plugins in PascalCase

#

insane

charred monolithBOT
fossil inlet
desert cosmos
#

just make everything camel case

#

camel case so good

fossil inlet
fossil inlet
limber skiff
#

you are

#

the second try catch

fossil inlet
#

thanks

austere talon
#

i will see if I can make Discord's csp actually safe

#

aka removing unsafe-inline

#

@limber skiff I wonder if it would be feasible to eval with a script tag

#

so we can also remove unsafe-eval

#

actually i think discord depends on unsafe-eval nvm

austere talon
fossil inlet
austere talon
#

why would it?

fossil inlet
austere talon
#

no

fossil inlet
#

Oh

austere talon
#

unsafe-inline is

<script>alert(1)</script>
fossil inlet
#

Oh

austere talon
#

and also ```html
<img onerror="virus()" src="fake">

fossil inlet
#

So like preventing HTML injection

austere talon
#

unsafe-eval is eval(), Function(), etc

#

unsafe-inline is the biggest security problem

austere talon
#

aka XSS

brazen bone
#

For what exactly

limber skiff
#

stealing tokens

austere talon
#

anyway i think discord depends on eval lmao

limber skiff
#

script tag with nonce?

austere talon
#

ye

#

well

#

no need for a nonce

limber skiff
#

what prevents anything from doing the same then

austere talon
limber skiff
#

ah I see

austere talon
#

but those scripts can't be parser inserted

austere talon
#

so it's the best of both worlds

#

ease of use of unsafe-inline, safety of strict csp

#

it's fire

#

doesnt seem like anything even needs unsafe-inline...

#

i will try just removing unsafe-inline

fossil inlet
austere talon
#

evil

#

do we really need to duplicate so much code 😭

fossil inlet
austere talon
#

also test for compatibility with mentionavatars plox

scenic brook
#

In my PR I added a function that just returns the prefix, first part and second part to be used in the different render functions, could probably just steal that

fossil inlet
#

does vencord not have classnames

austere talon
#

whar?

brazen bone
#

Probably means classnames(className, { foo: true, "has-bees": bees != 0 }) for classname props

scenic brook
#

It has classes that does that I think

elder plinth
#

ah man I didn't realize discord-types was an external package

#

it needs to be updated for my pr .-.

scenic brook
#

I think vee made it easier for it to be updated last time it was needed so probably not a huge ask

elder plinth
#

github for it hasnt been updated for 2 years

#

am I at the wrong place

charred monolithBOT
scenic brook
#

Maybe I'm thinking of something else

elder plinth
#

idk this github only has 17 stars so I feel like im in the wrong place

#

only thing that shows up on google other than discord-api-types though which has a loooot more activity but doesnt seem to be the one?

scenic brook
#

Oh I was thinking about standalone-electron-types, my bad

#

You'll just have to type it yourself, I don't think there's really any maintained typings for discord because it just changes all the time

#

The api types are different

austere talon
fossil inlet
elder plinth
#

the github for discord-types doesnt look like it's taking prs rn. what to do 🤔

#

I just put a // @ts-expect-error: line and it worked lol. is that fine or how should I handle this

elder plinth
#

oh true

#

surely the test will pass this time

#

yippee

elder plinth
# fossil inlet (foo as any)

did you add anything more to your pr update that it didnt have originally cause part of mine was including yours

elder plinth
#

well I spent like the last 6 hours updating those prs so time to sleep 💤

#

editor's note: gradients are the devil

charred monolithBOT
fossil inlet
#

GITHUB INSANE

jolly egret
opaque silo
fossil inlet
#

github bad ux...

elder plinth
austere talon
#

insanity how did 3 million webpack finds break

limber skiff
austere talon
still maple
inland fable
inland fable
#

4 first digits i think

#

NOt sure if the classes are updated

still maple
#

wha the hell

#

ok i see

#

that's a bit big brain

#

altho not what you type, powerful

inland fable
still maple
#

wait what

fossil inlet
#

minified component names my beloved

charred monolithBOT
jagged reef
opaque silo
# inland fable

am I insane or could this simply be every 2 digit number combo and it'd send every digit of the id then you could reconstruct the possible ids on the backend

inland fable
#

there's no wildcard character or anything

#

you can match x first or x last (or both)

#

it does get unbearable laggy at some point too

inland fable
#

maybe it'd match from avatar hash too like that

#

but maybe not a problem maybe you're right

opaque silo
#

if the id is 10234 the selectors for 10 02 23 34 would match

#

then you can reconstruct based on IP on the server

opaque silo
scenic brook
#

Surely you wouldn't know the order of the two digit combinations though

#

They'd just be in the order of the rules wouldn't they?

opaque silo
#

well if you get 10 02 23 34 rules returned they can only fit together one way

scenic brook
#

Sure but something like 430184 = 01 30 43 18 84
Could be 184301

#

I just woke up so that might be wrong but you get the idea

opaque silo
#

could also match for /1

#

so you know the starting digit

#

same for the end

#

I'm sure there's a bazillion ways to narrow down the order

#

anyway CSP stops this now I think

#

actually no because *.github.io is white listed

#

lol

scenic brook
#

This works now

dusk blaze
jolly egret
#

can't even use your own vencloud anymore

austere talon
#

yes

#

will be fixed

jolly egret
#

aight

charred monolithBOT
charred monolithBOT
austere talon
#

explode

charred monolithBOT
charred monolithBOT
desert cosmos
#

i love commit messages

scenic brook
#

Me when "misc changes"

opaque silo
#

vencord will use conventional commits inshallah

jolly egret
#

doesn't matter when it all gets squashed on merge

austere talon
still maple
charred monolithBOT
austere talon
charred monolithBOT
charred monolithBOT
#

Pull Request Overview

This PR introduces functionality to let users manually whitelist domains for theme integration by adding CSP checks and override mechanisms.

  • Introduces CSP validation checks before performing cloud settings requests and data erasure.
  • Implements CSP override handling via new IPC handlers and custom settings in native settings.
  • Updates CSP policies and error handling in the settings UI to support domain whitelisting.

Reviewed Changes

Copilot reviewed ...

austere talon
limber skiff
#

lmaooo

austere talon
#

damn it was actually useful

#

the other comment is wrong but whatever

charred monolithBOT
limber skiff
#

actually I think you should do the other too

austere talon
#

nah the code is right

limber skiff
#

not because of the reason it explained

#

but its more clear

#

it shows what the expected url is

austere talon
limber skiff
#

I know

austere talon
#

oh wait

limber skiff
#

using !url.startsWith("https://i.imgur.com/") its more clear

austere talon
#

i get it but

#

it's not guaranteed to be imgur xD

limber skiff
#

ahh

#

I see

austere talon
limber skiff
#

that's just one case

austere talon
#

like if you try to load banana.com

limber skiff
#

yeye

austere talon
#

but yeah still good feedback then

limber skiff
#

I thought that code was specific to imgur

austere talon
#

it didnt know it can be anything

#

actually solid suggestions

#

time to make copilot review all prs

limber skiff
#

I wont review rn cuz im about to sleep

#

sorryyy

austere talon
#

all good

#

tomorrow is fine blobcatcozy

#

need more testers anyway

surreal fiber
#

vencord 2 coming soon, fully vibecoded

charred monolithBOT
#

Pull Request Overview

This PR enables users to manually whitelist domains for themes and ensures cloud sync operations respect CSP rules by integrating an override request flow.

  • Introduces checkCloudUrlCsp in cloud utilities and guards network calls.
  • Adds native IPC handlers and a CSP manager to store and apply custom CSP rules.
  • Updates the Themes settings UI to list blocked resources and allow domains.

Reviewed Changes

Copilot reviewed 12 out of 12 changed files in this pu...

austere talon
#

true again...

#

why are there so many keys

#

am i okay

#

(it's cause i refactored a lot of times, all of these used to be the top level element at one point)

charred monolithBOT
austere talon
#

it likes my code now 😊

charred monolithBOT
#

Pull Request Overview

This PR enables users to manually whitelist domains for theme assets by integrating CSP checks into cloud sync, adding IPC handlers for overrides, and updating both backend and UI to manage blocked resources.

  • Add checkCloudUrlCsp guard and new IPC events to settings sync and cloud actions
  • Implement native CSP override logic (main/csp) and persist custom rules
  • Extend Settings UI (ThemesTab & CloudTab) with blocked-resource lists, allow buttons, and relate...
austere talon
#

NEVERMIND

#

even this is true 😭 but i am aware and decided earlier that i would just not support those cases

charred monolithBOT
#

Adds soundboard sound cloning functionality to the existing ExpressionCloner plugin, allowing users to copy soundboard sounds between Discord servers.

How it works

  1. User right-clicks any soundboard sound
  2. Selects "Clone Sound" from context menu
  3. Chooses target server from modal dialog
  4. Sound is fetched, processed, and uploaded to selected server
  5. User receives confirmation notification

Technical Implementation

  • Fetches audio files from Discord CDN
  • Converts to b...
austere talon
#

ai 😭

fossil inlet
#

does it work tho

wise ledge
fossil inlet
wise ledge
#

actually nvm they're all strings when disregarding the errorboundary my badddddd

wise ledge
#

i was scrolling to find something lollll

wise ledge
#

no I looked at that

#

but I misunderstood the code that time

fossil inlet
wise ledge
#

conclusion, I am ultra dumb

fossil inlet
charred monolithBOT
#

Content

I should be the one who chooses whether to use a whitelist on my CSS or not. It's my account, and thus I'm the one who should choose the "security" measures.

Why don't you upload your resources to GitHub?

  1. Because I can't upload anything I want to GitHub, depending on what it is, the repository might get taken down.
  2. I'm not creating a repository to hold random files. GitHub is not meant as a file upload service.

And why don't you use Imgur?

  1. It's not as reliable as t...
desert cosmos
#

"might get taken down"

charred monolithBOT
scenic brook
# charred monolith

So many people seem to think this is specifically meant to stop unwanted css

#

I get that themes are what's mostly affected but still

charred monolithBOT
gritty canyon
#

took more time to write the pr description than to fix the bug 😭

charred monolithBOT
#

Theres an ongoing pull request that adds a whitelist for CSP. This allows users to trust URLs (similar to Discords trust system) in which allows you to use custom domains for your CSS. Just a reminder, this was only originally added to follow basic security practices and nothing more.

#3476

Ah okay, I wasn't aware of that PR since no one commented about it in the other issues (#3467, #3462) (and I will admit that I also didn't check b...

chrome coral
# charred monolith

this might just be me but maybe this should be reused instead of copypasted twice

gritty canyon
#

no reason to reuse it because its only used in exactly 2 places, if it was actually used more than twice id think about reusing it but that just makes the pr more complicated than it needs to be

charred monolithBOT
gritty canyon
#

nice ai

hollow musk
austere talon
gritty canyon
#

np

desert cosmos
#

why do people add themselves to the very top of the devs constant

scenic brook
#

600 lines too far to scroll

gritty canyon
still maple
elder plinth
#

because I'm more important than V

still maple
desert cosmos
#

🐝

charred monolithBOT
odd heath
charred monolithBOT
still maple
austere talon
#

you are indeed blind :P

limber skiff
#

really?

#

where is it lmao

austere talon
#

old code

austere talon
#

theres little need

#

ts union types do essentially the same thing as a const enum

limber skiff
#

oh I am blind

austere talon
charred monolithBOT
#

Hey, Giorgio from Kagi here :) - Thank you for bringing Kagi Translate support to Vencord.

I see you are using an hardcoded language list - if you'd like, you can use this API endpoint (https://translate.kagi.com/api/list-languages) instead, which returns an up-to-date list of our supported languages. Using something not in the list could still work (e.g. translating to morse code) and will be processed, it's just not officially tested/supported.
Also, proofread as a target language is ...

limber skiff
#

useExternalStore I forgot what's called

#

unless that's too much work

#

then eh

austere talon
limber skiff
#

thankfully it isn't abusing an api

#

imagine if it was

austere talon
#

lmfao

kindred tree
#

this was not on my bingo card

austere talon
austere talon
kindred tree
# charred monolith

so.. would it be better to fetch the language list on plugin startup, or should I keep it hardcoded in a constant and instead just add the comment so it can be easily updated later? @austere talon

#

I feel like the latter would be preferred for fast startups no?

austere talon
#

fetch it on demand

kindred tree
#

and then what if the api doesn't respond the second you hit it to fetch the languages..?

#

wouldn't that break everything

austere talon
#

wdym

limber skiff
kindred tree
#

if you fetch the languages when the plugin starts, but the api doesn't respond so you don't have a languages list

#

wouldn't that fuck with something

#

or am I misunderstanding the "fetch it on demand"

austere talon
#

add appropriate handling

kindred tree
#

check the http status code and if it fails...?

#

idk what the desired way to handle that would be

limber skiff
#

@austere talon time to remove another plugin

#

no more gif on the ban modal

austere talon
#

like rn if you have it configured to use deepl but your token isnt valid, it will fall back to google

kindred tree
#

ok

#

I'll see what I can do

#

thanks

charred monolithBOT
limber skiff
#

vtest dev2

nimble pendantBOT
nimble pendantBOT
nimble pendantBOT
charred monolithBOT
#

Hey, Giorgio from Kagi here :) - Thank you for bringing Kagi Translate support to Vencord.

I see you are using an hardcoded language list - if you'd like, you can use this API endpoint (https://translate.kagi.com/api/list-languages) instead, which returns an up-to-date list of our supported languages. Using something not in the list could still work (e.g. translating to morse code) and will be processed, it's just not officially tested/supported. Also, proofread as a target languag...

limber skiff
#

why no workie

#

I think they have duplicate code and changed the location

#

of course

charred monolithBOT
limber skiff
#

vtest dev2

nimble pendantBOT
nimble pendantBOT
nimble pendantBOT
charred monolithBOT
prime dew
#

besides the obvious answer "with a gif", of course

prime dew
#

really

#

that's funny

glass jasper
limber skiff
#

nah

#

should have been removed before already

charred monolithBOT
austere talon
prime dew
prime dew
austere talon
#

well yeah from scratch

prime dew
charred monolithBOT
austere talon
#

i added restart prompt @limber skiff

#

should the cloud sync one also do it?

#

yeah i shall

charred monolithBOT
austere talon
#

could make it a util but eh

#

better to duplicate a few lines of code than have 3 billion niche utils

charred monolithBOT
austere talon
#

should we merge the whitelist pr

gritty canyon
#

can you check my latest pr its a two (2) line code change

austere talon
#

it messes up pr order

#

it updates all prs

limber skiff
fossil inlet
#

tbh more of a github issue blobcatcozy

limber skiff
#

alright

austere talon
austere talon
#

the plugin page already has ever so slight lag when first loading

#

the more checks we add (and checking every plugin's settings is like 500 checks probably) the slower it will get

gritty canyon
#

😭 okay

#

ill make the plugin page lazy load blobcatcozy

austere talon
#

you could figure out how to use discord lazy scroller but meh

limber skiff
#

btw

#

is media-src not needed?

austere talon
#

nah

#

The HTTP Content-Security-Policy (CSP) media-src directive specifies valid sources for loading media using the <audio> and <video> elements.

#

we dont need that

limber skiff
limber skiff
charred monolithBOT
austere talon
#

why does it return undefined

#

oh

charred monolithBOT
limber skiff
#

what's wrong

#

oh

#

true

austere talon
#

undefined && thing

limber skiff
#

I didn't even realize it

opaque silo
limber skiff
#

sometimes code like that isn't so obvious

limber skiff
austere talon
#

(esbuild will do that anyway)

opaque silo
#

you write ugly code just like your soul

limber skiff
austere talon
#

this is what esbuild turns it into (formatted with prettier)

opaque silo
#

the bundler is the hubris of man

austere talon
#

it's clean and logical

opaque silo
#

okay but in that case youre just returning a single line do something with thing

#

doesnt matter anyway and your mind is corrupt 🥰

jolly egret
#

gotta love removing a line in a suggestion