#👾-core-development

1 messages · Page 202 of 1

austere talon
#

i didnt see your pr sorry

charred monolithBOT
glass jasper
median rapids
#

yorp

charred monolithBOT
charred monolithBOT
#

New setting in AnonymizeFilenames:
A list of file extensions for which the opposite of anonymiseByDefault will be used.
So if anonymize by default is True, this is a list for file extensions which shouldn't be anonymized by default, and the other way around.

List setting could probably use a more useful description than the current one? Tried to keep it short.
File extensions for which to use the oppposite Anonymize by Default behavior

invertedExts could be cached but eh, its a...

charred monolithBOT
glass jasper
charred monolithBOT
still wasp
#

Finally someone did it

#

Yaeeeayyy

dawn coyote
#

I though it just looks odd having the avatar and the @ symbol lmao

charred monolithBOT
hallow kestrel
still wasp
#

I tried and failed

fossil inlet
charred monolithBOT
limber skiff
#

thinking of having additional author fields

#

perhaps a main author and other authors fields

#

mainly something which differs the main authors from the ones that do minor or medium changes

#

@austere talon thoughts?

frail skyBOT
#
Bad Patches

None

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

#
Bad Patches

ShowHiddenChannels (found no module):
ID: -
Match: ```
+1]})},"overflow"))

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

limber skiff
#

bitch

#

very not important patch so no rush to fix

glass jasper
# frail sky

can’t wait for canary user to complain about being to see them

limber skiff
#

that patch is just a fix for something very minimal

#

no one is gonna notice

charred monolithBOT
gritty iris
limber skiff
#

where did the 1 go

gritty iris
#

but for sake of stable compatibility I just removed the one for now

limber skiff
#

ah

gritty iris
#

did they just push stable wtf

#

they did

limber skiff
#

do you know how to load all chunks

gritty iris
#

nope

limber skiff
#

it's a console shortcut

#

loadLazyChunks()

gritty iris
#

noted

limber skiff
#

do it

#

and check if the find is unique

gritty iris
#

as in 1 or

limber skiff
#

check if it's only one result

gritty iris
#

ok

#

its the only one for })},"overflow"))

limber skiff
#

okay nice

gritty iris
#

same with +1]})})},"overflow"))

limber skiff
#

then we can switch the find for that

gritty iris
limber skiff
#

pr it for dev

#

I will merge

gritty iris
#

🔥

#

lemme make a branch rq

limber skiff
#

also is it me or your fork has the discord types branch from ryan merged?

gritty iris
#

equicord or disbored?

desert cosmos
limber skiff
#

equicord

gritty iris
limber skiff
#

how lmao

gritty iris
fossil inlet
limber skiff
#

screenshot I wanna see discord pink

limber skiff
gritty iris
#

IT DID THAT TO ME ON REPORTER

fossil inlet
#

before

gritty iris
#

everything was pink

desert cosmos
#

only accents

#

though

fossil inlet
limber skiff
#

LMAOOO

#

that's so fucking funny I wonder what chunk does that

fossil inlet
limber skiff
#

no that's discord stuff

fossil inlet
#

kinda makes a fire theme tho

limber skiff
#

loadLazyChunks forcefully loads everything that discord would lazily load at some point

#

like how it only loads settings when you open them

gritty iris
#

should be right

#

I forgot how to do the correct branch through git so I had to nav github.com

desert cosmos
limber skiff
brazen bone
#

That's weird, my force load function — which loads every chunk registered in the webpack, not just those that would actually eventually be loaded — does not pink

gritty iris
limber skiff
#

I know a difference from our implementation which could be the reason

brazen bone
#

Yeah the implementation is very different

gritty iris
#

I love that all I commit to vencord is 1-3 character changes

limber skiff
#

yours is more simple because it only loads them

#

but doesn't require their entry points

brazen bone
#

Oh, does yours execute them too

limber skiff
#

yeah

brazen bone
#

Yeah that might make a difference

gritty iris
#

pr is good

limber skiff
#

however

#

i figured the pink might had come from a lazy css chunk

gritty iris
#

I like pinkcord ska_capoonod

limber skiff
#

but if it was only that your implementation would have caught it

brazen bone
#

No, I don't load css chunks

#

Only js ones

limber skiff
#

you do

#

indirectly but you do

desert cosmos
#

it changes all the brand colors to hotpink 😭

limber skiff
#

I'm almost certain a css chunk always has their js part of it

#

and you forcefully load all the chunks that have js files mapped to them

#

when you call .e you indirectly load the css part too

brazen bone
#

Hm

#

I've never noticed any side effects like that

limber skiff
#

I'm almost certain but you could test more if you want

brazen bone
#

There are side effects such as some chunks overwriting the whole webpack object though, so I had to work around that

limber skiff
#

wreq.e internally uses wreq.f which js an object used for loading the js and css part of chunks

gritty iris
#

kyuu exploding stuff 101

limber skiff
#

actually I think it's cuz you are loading chunks meant to be inside a Worker

brazen bone
#

Actually you're right, it does pink

limber skiff
#

they have importScript stuff inside their own webpack instance

brazen bone
#

Must be a recent addition

limber skiff
#

someone debug and find where they turn the stuff pink

#

if anyone wants of course

gritty iris
brazen bone
gritty iris
#

hotpink

#

how do I even turn everything pink

glass jasper
# gritty iris hotpink

btw don’t put this your QuickCss

@import url("https://discord.com/assets/0817de0ebfeebd74217a.css");
gritty iris
#

hotpink 🔥

limber skiff
#

notice how it has importScripts(

#

that's why it includes its own webpack instance

desert cosmos
gritty iris
#

real

brazen bone
#

I really should make my extractor include the css

brazen bone
#

But I don't suppose there's any way to detect which chunks do that before actually loading them, is there?

limber skiff
#

you just have to fetch them first

brazen bone
#

I guess

gritty iris
#

wtf some things are hot pink

#

others aren't

#

hotpink booster

limber skiff
#

also

#

for your plugin you could just use that function to loadLazyChunks lol

#

no need to implementation on your own anymore

brazen bone
#

Hotpink is in module 59051, loaded as if (_24.default.cssDebuggingEnabled) require.e("59051").then(require.bind(require, 459645))

limber skiff
#

lmao

#

makes sense

brazen bone
#

I don't know why the .e'd module id is different from the require'd one

limber skiff
#

it's almost always like that

#

that's why it's so complicated to force load everything

brazen bone
#

Hm, okay

#

I haven't looked into that recently

limber skiff
#

you are required to manually look for where a chunk is loaded to find its entry point

#

(the required id)

#

not so long ago there was an object which had every entry point mapped to the chunks required to be loaded

#

you prob remember that

#

wreq.el

#

but yeah that's no longer generated

brazen bone
#

Yeah sounds familiar

#

loadLazyChunks is much slower than mine since it's less parallel

gritty iris
#

wtf stable just keeps crashing when I enter here

brazen bone
#

But it does successfully load everything except while avoiding the 7 worker shits

limber skiff
#

it's literally as fast as it can be

#

uses promise.all everywhere it can

#

however it requires a chunk to be loaded to finally be able to search for another chunk

#

which I can see where the difference comes from

brazen bone
#

Yeah I think that's the main part

#

Plus it does another fetch for each file beforehand, but the cache ought to take care of that, right?

gritty iris
#

I have no clue where this hot pink is coming from

limber skiff
#

yeah

gritty iris
#

ty

limber skiff
#

do you want the css that makes it happen?

gritty iris
#

I have it

limber skiff
#

ah

gritty iris
#

DEVELOPER_OPTIONS_CSS_DEBUGGING

brazen bone
#

Hey, where did the discord devtools button go btw

#

Used to be a bug net icon next to the vencord toolbox

#

Looks like you're supposed to be able to toggle css debugging from there

limber skiff
#

try clicking the help button in the top right

#

hovering over it*

brazen bone
limber skiff
#

check your dev settings maybe you need to enable

brazen bone
#

Did I accidentally untoggle the is staff setting somewhere

limber skiff
#

it was removed I think

brazen bone
#

Oh, it's a setting in experiments plugin

limber skiff
#

if anything I know there is a flux event you can dispatch to open it

brazen bone
#

Enabling that setting made it work

#

But it seems the css debug setting isn't there

#

The file contains lots of strings about build overrides

#

Probably somewhere under developer settings » add build override

#

Eh, I don't care enough to look into it

#

Probably that setting is meant to find things that are colored with absolute colors instead of --green-300 variables

limber skiff
#

oh wait you are right

#

very interesting

#

I remember they fixed some hardcoded stuff some weeks ago

gritty iris
#

im done trying to forcefully disable randomy things to do with css debugging

#

I'll accept my fate of hot pink

brazen bone
#

Try deleting the stylesheet node from the dom

#

Or unchecking it in the stylesheets tab, I think that's a thing you can do

charred monolithBOT
desert cosmos
rugged spire
#

NO

#

@desert cosmos the actual section heading exploded for no reason i think blobhuskcozy

charred monolithBOT
#

This commit is a proposed amendment of #1792.

Currently, the {{NICKNAME}} placeholder allows reading a user's nickname in voice events. If the user has no nickname, it uses the username instead.

I would like to propose the user's global display name be used, if available, before falling back to the username, because the username is always all lowercase, often difficult for the text-to-speech system to pronounce, and may not reflect how the user prefers to be known.

This commit make...

fossil inlet
#

Not the PR but the message

median rapids
#

meh

#

esl etc etc

fallen vale
charred monolithBOT
austere talon
hallow kestrel
#

Were sounded better imo, there’s no need for a change.

nimble plaza
#

yop

fallen vale
austere talon
#

seems like both are correct

#

but singular sounds so awful

fallen vale
#

were is more proper

limber skiff
#

@rugged spire I remember you were working with the sentry in the electron side

#

does that need to be disabled?

rugged spire
#

yeah

austere talon
rugged spire
#

I don't know anymore

austere talon
#

discord already has us blacklisted troll_smiley

limber skiff
#

yeah but still

rugged spire
#

I originally decided to nuke it because the sentry version was super buggy

limber skiff
#

it's funny how they have us blacklisted on electron side but not on renderer side

#

since one we already disable and the other not

rugged spire
limber skiff
#

I didn't see that

rugged spire
#

at this point my opinion is that sentry disabler in native should exist but only if it can be done in a non-hacky way

limber skiff
#

can you link me a message?

rugged spire
limber skiff
#

have you seen how we disable the one in the renderer?

rugged spire
#

Yes. Do not tell me to do it that way before trying to do it that way yourself because it doesn't work

rugged spire
limber skiff
#

I'm not

limber skiff
#

I'm just saying we do things in very hacky ways

rugged spire
#

I want you to know my "solution" was just blatantly monkeypatching require

rugged spire
limber skiff
#

to be fair the base of anything is a monkey patch

rugged spire
#

vee kept telling me to just insert null into the require cache directly but uh I really couldn't reliably load the require cache in the first place

limber skiff
#

I might try it for fun

rugged spire
#

Good luck. TL;DR of what you need to do is make require("@sentry/electron") return null

#

The Horrors

limber skiff
#

I will try next week when I'm home

limber skiff
#

not really a feat but who cares

#

oopsies

frail skyBOT
#
Bad Patches

None

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

rugged spire
limber skiff
#

canary...?

woeful sable
#

non existent

#

deleted from existence.

#

jshandle prob

limber skiff
#

cool

#

they changed the endpoint of asset files

woeful sable
#

ah

rugged spire
#

oh they did

limber skiff
#

where do they get the static-edge from

woeful sable
#

edge as in microsoft edge

#

🙏

limber skiff
#

I can't fix this so someone else will have to do

long stream
limber skiff
#

actually can someone send me the web.sjsjsjsisnsisjsj.js file

#

from canary

rugged spire
#

Google-Edge-Cache

long stream
limber skiff
#

does that exist in stable?

long stream
#

doesn't seem to be yet

#

it's blank on stable

limber skiff
long stream
#

sure

limber skiff
#

webpack needs to append that when loading chunks to lets see how it does

rugged spire
#

interesting

long stream
#

yea static-edge is just pointing to google cloud

rugged spire
#

Nop

#

Not google cloud

long stream
#

wdym

#

edge cache is part of google cloud

rugged spire
#

edge cache is at your ISP (kinda?)

long stream
#

nop

#

there's a difference between an isp and a datacenter that google rented out xd

rugged spire
#

yes

#

but what if the ISP effectively has a google cache server

#

i'm not confident thats whats happening in my case

#

hm

#

might be other side of my country cache server

limber skiff
#

but vencord is ran on normal discord.com so it tries to fetch the wrong url

rugged spire
#

WHAT IS THAT

limber skiff
#

then why would the fetch be failing

#

strange

gritty iris
limber skiff
#

I see

gritty iris
#

1 of the many

rugged spire
#

LMFAO

gritty iris
#

we love canary ❤️

dawn coyote
rugged spire
limber skiff
#

yeah but I'm not saying your work is not good in any way

rugged spire
#

Solves the problem of "I want my work to be credited but this isn't notable enough to say I made a significant portion of this plugin"

limber skiff
#

It just made me re-think about how sometimes someone does a huge plugin on their own and another person adds another good feature another time and get credited as a whole too

dawn coyote
#

oh you mean the devs array

#

eh you can remove me, I dont mind

limber skiff
#

it's not specific to your pr

dusk blaze
#

would definitely be nice to have

dawn coyote
#

I was confused because I thought it was about the functionality of the plugin lol

dusk blaze
#

but how would these additional authors would be shown in the UI

dusk blaze
#

maybe hide them from contributor modal

dawn coyote
#

maybe like that +9

dusk blaze
#

oh yeah

dawn coyote
#

that all additional authors go into that overflow thingy

brazen bone
#

But then you have to determine what is a major or minor contribution

dawn coyote
#

yeah fair

brazen bone
#

Though I guess that's kinda already the case

limber skiff
limber skiff
dawn coyote
#

I mean like, lets take the pr I made, it's relatively small, but it's 20 lines added out of 60 total lines

rugged spire
fossil inlet
#

Maybe just add a separate creator field

limber skiff
dawn coyote
#

yeah reasonable

dawn coyote
#

oh nvm I should remove the export

rugged spire
limber skiff
#

what is it

rugged spire
#

something like this

#

wtf did i cook with that enum name

brazen bone
#

Just one small issue with that

rugged spire
#

shut

#

you didnt see that

#

its fine

brazen bone
#

Love me some [object Object]

rugged spire
#

we can rework entire devs list code

#

no

limber skiff
rugged spire
#

true

#

there is git history for that

dawn coyote
#

I know this is way too much work, but technically you could use the git history of the plugins folder to get all contributors, and then set some requirement at how many line changes it counts as author

brazen bone
#

Line counts are a terrible metric though

dawn coyote
#

probably

gritty iris
#

Not stopping my 1-3 character changes from contrib gone

fossil inlet
#

has anyone ever had vesktop crash with this error before
console output:

❯ vesktop
[Vencord] Installed React Developer Tools
(node:16521) ExtensionLoadWarning: Warnings loading extension at /home/meyer/.config/vesktop/ExtensionCache/fmkadmapgofadopljbjfkapdkoienihi:
  Manifest version 2 is deprecated, and support will be removed in 2024. See https://developer.chrome.com/docs/extensions/develop/migrate/mv2-deprecation-timeline for details.

(Use `electron --trace-warnings ...` to show where the warning was created)
[16521:0726/161043.779636:ERROR:atom_cache.cc(229)] Add chromium/from-privileged to kAtomsToCache
[16521:0726/161253.098815:ERROR:CONSOLE(2)] "Electron sandboxed_renderer.bundle.js script failed to run", source: node:electron/js2c/sandbox_bundle (2)
[16521:0726/161253.098846:ERROR:CONSOLE(2)] "TypeError: object null is not iterable (cannot read property Symbol(Symbol.iterator))", source: node:electron/js2c/sandbox_bundle (2)
^C^C

after this it freezes and needs to be killed

turbid hatch
#

it's a bug with react developer tools being installed in electron

#

just doesnt affect everyone

fossil inlet
charred monolithBOT
median rapids
charred monolithBOT
frail skyBOT
#
Bad Patches

ShowConnections (had no effect):
ID: 958120
Match: ```
/currentUser:\i,guild:\i,onOpenProfile:.+?})(?=])(?<=user:(\i),bio:null==(\i)?.+?)/

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

#
Bad Patches

ShowConnections (had no effect):
ID: 958120
Match: ```
/currentUser:\i,guild:\i,onOpenProfile:.+?})(?=])(?<=user:(\i),bio:null==(\i)?.+?)/

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

glass jasper
#

🪦

charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
fossil inlet
# charred monolith

Tbh idk why nobody did this earlier.
It wasn’t even that hard, just an hour of looking at the debugger and setting breakpoints to find the right place to patch

charred monolithBOT
rugged spire
# charred monolith

@fossil inlet and @dusk blaze should kill explode me for this comment I think

#

before vee yells at me the witty comments are totally just a coping mechanism

#

FUCK I NEED TO FIX SPN

#

AGAIN

#

FUCKING DISCORD

charred monolithBOT
rugged spire
charred monolithBOT
charred monolithBOT
uneven needle
#

good idea?

rugged spire
#

Yes

surreal fiber
uneven needle
#

:D

surreal fiber
#

how can you use software in finnish

uneven needle
#

it aint that bad

weak thistle
#

it is that bad

charred monolithBOT
rugged spire
# rugged spire
poll_question_text

fix simplified profile notes

victor_answer_votes

4

total_votes

7

victor_answer_id

2

victor_answer_text

procrastinate

#

yeah its 1 fucking am

#

?remindme 14h fix spn, maybe

shut vineBOT
#

Alright @rugged spire, in 14 hours: fix spn, maybe

fossil inlet
shut vineBOT
#

Alright @fossil inlet, in 3 hours: look into this

charred monolithBOT
charred monolithBOT
charred monolithBOT
shut vineBOT
#

@fossil inlet, <t:1722096210:R>: look into this

shut vineBOT
#

@fossil inlet, <t:1722107034:R>: look into this

charred monolithBOT
charred monolithBOT
jagged cloak
#

oh thanks

#

i wasn't gonna do it until xiexe removed the udp stuff lol

#

bro i tried to go to files view and realized it's an issue and not a pr

nimble plaza
#

i made the changes as a userplugin but forgot to pr

austere talon
#

cause u can connect to WS in browser

jagged cloak
#

yeah

#

was added like couple months ago

charred monolithBOT
#

Dynamically grabbing files from all these random github repos is incredibly insecure.

This isn't the best way to accomplish this goal by far, but it would be better fixed sooner rather than later.

My changes that stop hotlinking from cdns is controversial, it can safely be undone.

My editor changed some indentation in the areas with html, I can go back and fix that if needed

#

everything remotely fetched from Vencord is either from a trusted author or commit/version pinned which means impossible to modify

also you do realize you are calling assets from the owner of Vencord and other file types such as png and css insecure

yes, pngs and css files can easily be changed to illegal content.

being a trusted author doesn't mean anything if it takes no authorization to change it, they could get hacked, go rogue, or get bribed.
being version pinned only mea...

fossil inlet
# charred monolith

and commit pinned files can still be modified by abusing git rebase
correct me if im wront, but isnt that the sha hash of the file not the git hash?

brazen bone
#

No, it's the commit id

#

But rebasing changes the hash

charred monolithBOT
charred monolithBOT
#

Unpkg and cdnjs are both trusted cdns and the versions are pinned meaning the library authors can't change the code. Fyi, cdnjs is owned by cloudflare, so if you don't trust cdnjs, you shouldn't be using Discord at all, because cloudflare can already run arbitrary code in Discord due to Discord using them as a cdn.

Images and Audios are inherently safe since they can't execute code.

All code files linked to github are pinned to long commit hash which means it's impossible for the author...

frail skyBOT
#
Bad Patches

ShowConnections (had no effect):
ID: 958120
Match: ```
/currentUser:\i,guild:\i,onOpenProfile:.+?})(?=])(?<=user:(\i),bio:null==(\i)?.+?)/

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

#
Bad Patches

ShowConnections (had no effect):
ID: 958120
Match: ```
/currentUser:\i,guild:\i,onOpenProfile:.+?})(?=])(?<=user:(\i),bio:null==(\i)?.+?)/

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

charred monolithBOT
#

Unpkg and cdnjs are both trusted cdns and the versions are pinned meaning the library authors can't change the code. Fyi, cdnjs is owned by cloudflare, so if you don't trust cdnjs, you shouldn't be using Discord at all, because cloudflare can already run arbitrary code in Discord due to Discord using them as a cdn.

Images and Audios are inherently safe since they can't execute code.

All code files linked to github are pinned to long commit hash which means it's impossible for ...

jagged cloak
#

name checks out

fallen vale
#

I mean, they're persistent, I'll give em that

glass jasper
pine topaz
#

!! the glowies are gonna hack vee and ruin my vencord!!

charred monolithBOT
fallen vale
charred monolithBOT
#
desert cosmos
#

they do have a point

#

it looks more like a fridge than console

#

alternatively just replace it with this lol

glass jasper
dusk blaze
#

nop

fallen vale
desert cosmos
#

does discord really not have an console icon

charred monolithBOT
gritty iris
frail skyBOT
#
Bad Patches

ShowConnections (had no effect):
ID: 958120
Match: ```
/currentUser:\i,guild:\i,onOpenProfile:.+?})(?=])(?<=user:(\i),bio:null==(\i)?.+?)/


**__ImageZoom (errored):__**
ID: `124347`
Match: ```
/placeholderVersion:\i,/

Error: ```
Invalid destructuring assignment target


**__PictureInPicture (had no effect):__**
ID: `546432`
Match: ```
/\.nonMediaMosaicItem\]:!(\i).{0,10}children:\[(\S)/

FriendsSince (had no effect):
ID: 926150
Match: ```
/BOT_PROFILE_CREATED_ON,.{0,100}userId:(\i.id)})})/


**__ShowHiddenChannels (found no module):__**
ID: `-`
Match: ```
+1]})},"overflow"))

SpotifyControls (found no module):
ID: -
Match: ```
"AccountConnected"

Bad Webpack Finds
findByCode("type:\"UNSYNCED_USER_SETTINGS_UPDATE\",settings:{useSystemTheme:\"system\"===")
findStore("SummaryStore")
Bad Starts

None

Discord Errors

None

limber skiff
#

ignore this one

frail skyBOT
#
Bad Patches

ShowConnections (had no effect):
ID: 958120
Match: ```
/currentUser:\i,guild:\i,onOpenProfile:.+?})(?=])(?<=user:(\i),bio:null==(\i)?.+?)/


**__ImageZoom (errored):__**
ID: `124347`
Match: ```
/placeholderVersion:\i,/

Error: ```
Invalid destructuring assignment target


**__PictureInPicture (had no effect):__**
ID: `546432`
Match: ```
/\.nonMediaMosaicItem\]:!(\i).{0,10}children:\[(\S)/

FriendsSince (had no effect):
ID: 926150
Match: ```
/BOT_PROFILE_CREATED_ON,.{0,100}userId:(\i.id)})})/


**__ShowHiddenChannels (found no module):__**
ID: `-`
Match: ```
+1]})},"overflow"))

SpotifyControls (found no module):
ID: -
Match: ```
"AccountConnected"

Bad Webpack Finds
findByCode("type:\"UNSYNCED_USER_SETTINGS_UPDATE\",settings:{useSystemTheme:\"system\"===")
findStore("SummaryStore")
Bad Starts

None

Discord Errors

None

shut vineBOT
#

@rugged spire, <t:1722087252:R>: fix spn, maybe

limber skiff
#

I do not like the fact how this didn't error now

#

and did another day

glass jasper
limber skiff
#

outdated branch

glass jasper
#

oh ok… got scare for a second

austere talon
#

bro scared me

gritty iris
#

same

austere talon
gritty iris
#

discord bouta push stuff to recreate that

limber skiff
charred monolithBOT
charred monolithBOT
#

why bro's pr is closed ☹️

Because this solves a non-issue and makes an ugly mess of files. Even as someone who thinks hotlinking is a bad idea in Vencord, it doesn't even fix certain hotlinks that bothered me, and of those that it does fix, it does them in such a messy way (you do not need commit hashes in the filesystem like that) that I'm not surprised that this was closed

rugged spire
#

fine

#

one part fixed

#

other part fixed

charred monolithBOT
#

Okay, since I can already foresee this going on for ages, I'm just going to lock it with the final statements:

  • This PR solves nothing, really, and would be immediately superseded by #2707 anyway.
  • The image assets that Vencord fetches are, once again, immutable and cannot be replaced, simply removed.
  • As Vee already said, cdnjs is used by Discord themselves so if a supply chain attacked occurred there would be much bigger issues. Same with unpkg.
  • Loads of your hotlinks now link to `...
turbid hatch
median rapids
#

real

charred monolithBOT
rugged spire
turbid hatch
#

ty

brazen bone
#

Regarding that hotpink css debugging mode mentioned a few days ago — anyone else noticed that the -hsl variables all have invalid syntax? They're set to 330 100 71% when it should be 330 100% 71%

austere talon
#

wha?

brazen bone
#

If you force load all webpack chunks everything becomes hotpink

austere talon
#

FIRE

brazen bone
austere talon
#

why does discord bundle that with the main release

brazen bone
#

Who knows

austere talon
#

10/10 Design

brazen bone
#

Why is it triggered by simply loading a chunk rather than say, a css class

woeful sable
#

im still on aliucord 😭

brazen bone
#

Love the [server] tag

austere talon
woeful sable
#

polls uhh semi work 😭

woeful sable
#

🙏

rugged spire
charred monolithBOT
analog knoll
#

Has anyone looked into venmic implementation for macos, to get screenshare audio in vesktop.

austere talon
#

you just need to use screen capture kit

#

I think

#

but also there's some issue or pr about this

rugged spire
median rapids
umbral hedge
#

I just read the google doc and kinda laughed

#

because even if the moyai.mp3 was on the vencord repo

#

I could still just change it

glass jasper
austere talon
umbral hedge
#

lmao

#

its so bad

brazen bone
#

I'm still on vendetta

umbral hedge
brazen bone
#

Hasn't broken yet so why switch

umbral hedge
#

they're making a mountain out of a mole hill

austere talon
#

please tell me this was written by AI

#

I refuse to believe people that retarded actually exist

umbral hedge
#

It's not AI sobbing (i think)

median rapids
#

fully real

austere talon
#

LMAOOO @limber skiff did u see this

limber skiff
#

yes LOL

#

I love merging vulnerabilities and ignoring the bot

austere talon
#

can't believe you'd merge code with a deliberate security hole flagged by github 😔

#

bad maintainer

surreal fiber
#

how dare project maintainers merge code without asking others to review it

austere talon
#

that point was so funny

#

imagine telling Linus Torvalds that it's unfair bias that he can make changes to Linux code without asking others for approval

limber skiff
#

it's illegal to force commit ykk

#

thank god they didn't pay attention to the commit messages of our branches

austere talon
#

LOL

#

they make meaningless commit messages like shskwnsodjsowowidkdjs...

limber skiff
#

just like us

austere talon
#

what's even that lol project he was talking about 😭

#

where tf is that

limber skiff
#

I didn't see about that

brazen bone
#

Hope he finishes that "dev response" section

#

Should be pretty easy

#

Just "🤣"

austere talon
#

what even is that milestone lmaoo

#

did megu make that

limber skiff
#

no idea I never touched that section

austere talon
#

me neither xd

#

it's a meme from 2 years ago 😭

limber skiff
#

lmaooo

scenic fog
#

We are working on a document on how to migrate to better discord as a Vencord user for the time being
never used BD but aren't all plugins community-maintained or something? 🤔

spark pivot
#

We are working on a document on how to migrate to better discord as a Vencord user for the time being (contrary to popular belief, it really isn’t slower) and will be porting the Vencord plugins with no good alternatives to better discord.
(I personally did a quick look at better discord’s code, while it’s not great there were no major issues to write home about)
if you cared enough to make this 22 page document on vencord about how insecure it is you definitely would have realized how much worse bd is security wise

austere talon
#

betterdiscord is actually insecure

#

unlike vencord

limber skiff
#

still open from 4 years ago

brazen bone
#

BD also seems like a huge pain to write plugins for

austere talon
#

betterdiscord contains a sandbox escape by design, which means that any code inside the browser sandbox can escape to the host and do anything on your system

this means that any plugin could technically do anything on your system, and if discord has an XSS it could much worsen the impact

limber skiff
#

this guy is about to suggest migrating to replugged next

brazen bone
#

Consider how hard it is to read bd plugins

austere talon
spark pivot
#

consider that most bd users just decide to install plugins without looking into them too much which is just waiting for a token grabber

austere talon
#

the only point that still applies is the CSP

#

which vencord is also partially guilty of

limber skiff
#

probably yeah

austere talon
#

ive been meaning to make csp more strict than it currently is

#

but you will always get user complaints

swift fjord
#

as long as you don't patch the exploit im using

prime dew
austere talon
#

there's no reason to enable node integration or disable context isolation

#

yet all mods did it

brazen bone
#

It sounds good on paper that mods are more powerful

austere talon
#

the only reason is so you can use nodejs stuff in the browser but like just use ipc

limber skiff
#

probably one mod did and the rest went along with it

austere talon
#

vencord has full nodejs capabilities via easy ipc

#

and is secure

#

meanwhile betterdiscord still exposes a shit ton of nodejs apis to the browser which enables sandbox escapes

#

really there's no reason a mod should have that

austere talon
swift fjord
brazen bone
#

The native.ts approach only works with statically loaded plugins, no?

#

So it wouldn't work on bd

fiery jungle
austere talon
#

it can also be done dynamically at runtime

#

not hard

#

most of vencord's native.ts logic is at runtime

brazen bone
#

I'll admit that I haven't looked into how it works, since it doesn't work in userscript anyway

austere talon
#

really all it is is:

  1. send vencordPlugins.MyPlugin.myFuncName event from browser to main
  2. look up MyPlugin in the plugin object
  3. invoke its myFuncName method
  4. return the result
charred monolithBOT
#

Some conversation happened on Discord after I posted the Badge Simulator :tm: above (which is just a big HTML page that gives a preview of all non-square donor badges with object-fit: cover and object-fit: contain), and the takeaway is: most badges aren't affected that much, a few look a lot worse, a few look a lot better.

I think the right move would be to close this PR and let people reach out to fix their badges if they don't like how it fits, to replace it with an image that is ac...

austere talon
#

could easily implement this in bd too

#

but they would have to change the plugin format

#

single format won't cut it

#

@scenic fog usually I check that badges look alright and if not i resize them but sometimes I forget

#

I checked yours too but it looked alright to me (on dark theme)

limber skiff
#

but it being modifiable at runtime means the issue is present again since you can create the logic you want and escape the context isolation

austere talon
#

I have no idea why it looks so much worse on light theme lmao, but yes of course you can change it to a better cropped one

austere talon
#

not if you give no control to renderer

#

you only trust the main process

limber skiff
#

I see

#

and of course the logic for installing a plugin would be in the main

austere talon
#

it's still a sandbox escape though technically so I wanted to fix it

#

on BetterDiscord it's much more severe because it allows you to write any file on the host

and also exposes an api that lets you open file:// urls

so you can write an executable then open it

or you can overwrite some discord file and it'll be run on next launch

or even patch other programs to deploy a virus

#

replugged also had a sandbox escape some time ago in their updater cause it allowed the renderer to replace replugged.asar with any asar

i reported it to them and they fixed it I think

rugged spire
faint echo
#

like what the html integrity attr on link and script tags, idk if that is csp enforcable tho

rugged spire
#

isnt there no way to load hotload script tags in vencord at this point

#

patch helper eval is locked to dev build

charred monolithBOT
spark pivot
#

It’s not like it’s showing that your deafened to everyone

rugged spire
#

where it says you're deafened but you can still hear

spark pivot
#

Exactly

rugged spire
# spark pivot What how

i would assume that gain is just set to 0 on web clients when deafened or something like that shiddohwell

spark pivot
rugged spire
#

i never looked at the code that it patches

#

i only read the patch itself

charred monolithBOT
jagged cloak
#

lmao

jagged cloak
#

fixed now

charred monolithBOT
#

it might take some time for the websocket connection to open, which will cause this to fail:

start();
socket.send(...)

You can solve that by making this function return a Promise that resolves once a connection has been opened:

    socket = new WebSocket(`ws://127.0.0.1:${settings.store.webSocketPort ?? 42070}/?client=Vencord`);
    return new Promise<void>((resolve, reject) => {
    	socket.onopen = resolve;
    	socket.onerror = reject;
    	setTimeout(...
charred monolithBOT
nimble plaza
#

typed a paragraph just to remember that patch groups exist

fallen vale
#

PSA: DONT RENAME YOUR DAMN BRANCHES PLEASE

spring gorge
#

i fixed it

#

i hate git!!

fallen vale
spring gorge
#

im just tryna work on plugin

#

😭

spark pivot
#

I hate git can we just file upload everything and have no versioning

still wasp
frail skyBOT
#
Bad Patches

ShowConnections (had no effect):
ID: 958120
Match: ```
/currentUser:\i,guild:\i,onOpenProfile:.+?})(?=])(?<=user:(\i),bio:null==(\i)?.+?)/

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

#
Bad Patches

ShowConnections (had no effect):
ID: 958120
Match: ```
/currentUser:\i,guild:\i,onOpenProfile:.+?})(?=])(?<=user:(\i),bio:null==(\i)?.+?)/

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

fallen vale
#

just put all the code in a huge docx file

still wasp
#

Entire codebase is now vencord.zip hosted on catbox

spark pivot
#

If you want to """pull""" """request""" you have to send a zip bomb file with your changes to vee

fallen vale
fossil inlet
jagged cloak
#

nuh zippyshare

charred monolithBOT
charred monolithBOT
keen blaze
#

made the default list way better

#

oki

#

added youtube instead of ddg lite

prime dew
charred monolithBOT
charred monolithBOT
still wasp
#

Insert 1984 it can be done with a user app gif

#

Someone needs to make that

charred monolithBOT
dusk blaze
#

could use diff formatting

still wasp
#
suggestion
charred monolithBOT
#

this can easily be done with a user app, i doubt this will be merged

But it will more useful as a plugin in vencord, because this operates only on the client side and has nothing to do with discord.
Whereas if its an user app or a bot, Discord will be able to see what is being shared and decoded. And the reason why someone encode such stuff, There is a reason they dont want discord to be able to see that stuff.

dusk blaze
#

bro thinks base64 is private SKULL_SKELETON

charred monolithBOT
fallen vale
#

lol

grizzled halo
#

honestly if you want privacy in discord, you are better off using a different platform, its way too niche

crude hearth
#

Discord can already decode it as soon as you send the message

#

If it was AES or whatever it would be something

#

(still very in secure considering you need to put some default password)

charred monolithBOT
charred monolithBOT
glass jasper
# prime dew

I have a ever growing collection of those gifs

swift fjord
dusk blaze
#

bet forgejo can do this 1000x better

swift fjord
#

i mean all it does is add a button to commit the change

brazen bone
#

Thinking about PRing my MessageLinkTooltip, but the existence of MessageLinkEmbeds makes that kinda awkward. They're similar enough in functionality that it's silly to have both, but have very little in common in implementation, so merging them into one feels weird. Thoughts?

glass jasper
# charred monolith

@dusk blaze fun fact /?q= isnt actually needed to make a sreach on DuckDuck its unneeded filler

#

I’m saying this because you should submit the removal of that

#

the ?ia=web it’s just something that they add after the fact

spice python
glass jasper
austere talon
dusk blaze
#

true

dusk blaze
#

just noticed

austere talon
#

you can rework this setting

#

display style

#

or smth like that

#

but have very little in common in implementation
how?

charred monolithBOT
glass jasper
#

Probably was a better way to do that, but

glass jasper
brazen bone
#

But I don't remember what, so I guess I'll see what happens if I just use the existing fetcher

charred monolithBOT
brazen bone
#

Looked into the Tooltip&Embed merge a bit more, and my conclusion is that it would get very messy, with bad code and poor ux.

  • The settings don't make much sense
    • Using tooltip makes rich/automod choice quite redundant. Adding tooltip as a fourth choice would be one solution, but having three choices for three very similar options and one for something very different is unsatisfying
    • Background color is meaningless; it will have tooltip background
    • Black/whitelist isn't entirely nonsensical, but not very useful since you're already actively choosing to trigger it by hovering
  • In embed mode it uses accessory api, while tooltip requires a patch. Is there any way to make a select setting require restart only on certain choices?
  • Rendering is almost entirely different between the two cases. Pretty much the only common code between the modes is the webpack finds for ChannelMessage and MessageDisplayCompact.
  • Message fetching logic also differs greatly
    • In embed mode, it uses a Queue to load all linked messages as fast as possible without spamming discord's servers.
      • It also caches results, but since MessageStore also stores the fetched messages this mainly seems to store load failures
    • In tooltip mode, we only want to load one message at a time, and we want that one to load as fast as possible
      • Sure, it's possible to have 50 message links and slide the mouse over them quickly, but is that edge case worth optimizing?
      • Caching failures doesn't seem useful here, and imo leads to a worse user experience. Load failure? Move the mouse off and try again
      • Tooltip mode also requires a loading spinner, which I don't know if it's easy to implement with the queue approach

So merging them would basically turn it into two different plugins under one name, with conflicting settings and vanishingly little common code. That's not something I'm willing to do as I don't like writing bad code.

austere talon
#

i don't understand most of the concerns

#

you don't have to use the queue system

brazen bone
#

It would be two plugins under one name, sharing almost no code

austere talon
#

the fetching is already a plain function (iirc, if not, just reactor it) so it shouldn't take much to skip the queue

#

why do rendering differences matter? Just make two components

austere talon
#

it's the same thing

#

displaying linked messages inline

brazen bone
#

Two plugins with similar purpose, yes, but different and incompatible both design and implementation

austere talon
#

it's not incompatible tho

#

tbh just allow having both options on at once

#

make it separate options

#

both enabled by default

brazen bone
#

Hm

#

Yeah that'd work better I think

austere talon
#

there's not really any downside from having both options at once

#

and just make the hover part ignore the blacklist

#

should be intuitive

brazen bone
#

Yeah fair

#

What's the updateMessage thing for btw, rerendering the message once it's fetched?

limber skiff
#

yes it's written in the documentation of it

austere talon
#

embeds added

#

need to rerender

brazen bone
#

Seems weird to rerender the whole message because an embed finished loading

austere talon
#

wha

limber skiff
#

it's how discord does it

austere talon
#

it's the same as when someone edits a message

limber skiff
#

yep, and it doesn't matter honestly

#

remember how a context menu is fully re rendered on every button hover

brazen bone
#

I get that it doesn't matter, but it still seems weird

limber skiff
brazen bone
#

The embed ought to only rerender itself, not its parent

brazen bone
#

And it's not like rerendering is always recursive, if it returns a similar enough component react will just reuse the previous dom

limber skiff
#

it's still hella expensive

#

hover over buttons over and over and watch your cpu usage go up

brazen bone
#

Yeah not disputing that point

austere talon
#

it's adding embeds to the message

#

and it's hard to so specifically rerender something

#

then discord has to diff the messages and figure out what changed

brazen bone
#

It can add a component that initially renders as empty

austere talon
#

it's way easier to just rerender the whole message

brazen bone
#

And then useState or whatever to update once loaded

austere talon
#

the parent component is memo'd

#

it doesn't really work like that in a tree model

#

you're basically proposing they use a retained rendering model

#

which isn't how react works

brazen bone
#

/shrug Always worked that way for me

austere talon
#

they use memos so if only the embeds change, only the embed component is rerendered

brazen bone
#

Yes

austere talon
#

both are bad

brazen bone
#

Which is a component like any other, and can rerender itself once the data it needs is available

austere talon
#

but the data is passed down from parent

#

you have to rerender the parent that manages the data

#

unless you propose every embed component should add its own subscriptions

brazen bone
#

The MessageEmbedAccessory parses out the embeds, fetches the data for each mentioned message, and rerenders the parent message. What I'm proposing is that it creates a child for each of those message mentions, and that child uses some nice useState or useStateFromStores or whatever to rerender once the message is fetched

#

But it's not like it's particularly important anyway

limber skiff
#

it's fineee the way it is

#

not like the updateMessage function was made just for that anyways

austere talon
shut vineBOT
austere talon
#

its kinda bad currently that it might make links just not openeable if you have no handler

#

like trying to open steam link without steam installed

#

it will open steam:// and cancel the https:// and then ur system is like nah bro we don't have a steam:// handler so the link isn't opened at all

limber skiff
#

possible to add a context menu to open normally?

austere talon
limber skiff
#

there is no good way of detecting if an app is installed so it's the other solution

austere talon
limber skiff
#

wait don't tell me it does that lmao

#

😭

#

i see

#

I thought you were mentioning the issue would still happen

limber skiff
#

nooooo

austere talon
#

well on linux you can do this

#

idk about other platforms

limber skiff
#

what's left for asar installer

austere talon
#

the update issues u had on windows

limber skiff
#

I might get my computer back in the next days so I'm able to help again

#

oh

austere talon
limber skiff
#

noo lmao

#

I'm traveling

austere talon
#

xD

#

ahhaha

limber skiff
#

vee I have 20 years

#

😭

#

that would be crazy lmao

austere talon
#

"get it back" made it sound like it was taken away from you ahahhaha

limber skiff
#

true true

charred monolithBOT
limber skiff
#

ig I should make getUserSetting not type the return as nullable

#

not the first case I see someone using ! after calling it

brazen bone
#

Just throw something if it fails ig

limber skiff
#

yep

charred monolithBOT
austere talon
frail skyBOT
#
Bad Patches

ShowConnections (had no effect):
ID: 958120
Match: ```
/currentUser:\i,guild:\i,onOpenProfile:.+?})(?=])(?<=user:(\i),bio:null==(\i)?.+?)/

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

#
Bad Patches

ShowConnections (had no effect):
ID: 958120
Match: ```
/currentUser:\i,guild:\i,onOpenProfile:.+?})(?=])(?<=user:(\i),bio:null==(\i)?.+?)/

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

limber skiff
austere talon
#

why

#

at that point your plugin will likely misfunction anyway

limber skiff
#

I regret that now too

#

stupid decisions I make sometimes

charred monolithBOT
rugged spire
# frail sky

i can almost certainly promise if you put .+? or another quantifier after every , in currentUser:\i,guild:\i, it will magically fix itself

gritty iris
#

Current user isn't in that find anymore

rugged spire
#

horror

#

i was TOO confident

raw lotus
#

Doesn't seem to be working for me too on Windows

charred monolithBOT
charred monolithBOT
fallen vale
charred monolithBOT
shut vineBOT
austere talon
#

nop

gritty iris
#

never

charred monolithBOT
austere talon
#

imo cider should support the apple:// protocol

#

or whatever protocol Apple uses

#

I would assume that most cider users only have cider and not the normal apple music app

gritty canyon
#

i tested the cider protocol

#

and it doesnt really work

#

in the sense of when its loading and you click on a link it just.. copy pastes your clipboard into the message box..?

austere talon
#

Also at this point I think the plugin should be rewritten in some way to avoid the repetitive logic

gritty canyon
#

its very funky and the cider devs have to work on it

#

kinda true

gritty canyon
#

im gonna do that then venniecozycat

austere talon
#

uuuuhhhhh

#

its fine i think xd

#

how do you wanna rework it

gritty canyon
# austere talon how do you wanna rework it

well id add an object to store all the info for each link (the regex, description, protocol/customHandler (for weird urls i guess)) then auto generate plugin settings and ofc use it in the handleLink function, or do you have something different in mind?

austere talon
#

yusss exactly like that

gritty canyon
#

amazing :3

austere talon
#

protocol/customHandler
well besides this

gritty canyon
gritty canyon
austere talon
#

i'd just do like

spotify: {
  match: /https://..../,
  replace: "spotify://$1/$2"
}
#

via regex groups

gritty canyon
#

oo

#

right!

austere talon
#

either that or

#
spotify: {
  matcher: /https:\/\/..../,
  formatUrl: (match, group1, group2) => `spotify://${group1}/${group2}`
}
#

second is proably better

gritty canyon
#

okay! ill do the second one then

#

i have a slight hunch that you like regex :3

austere talon
#

well regex is best for this

#

how else would u do it 😭

#

but yus

#

regex is cute

gritty canyon
still wasp
gritty canyon
#

ELSE IFS

gritty iris
#

IFS

#

Because we like making life harder

frail skyBOT
#
Bad Patches

ShowConnections (had no effect):
ID: 958120
Match: ```
/currentUser:\i,guild:\i,onOpenProfile:.+?})(?=])(?<=user:(\i),bio:null==(\i)?.+?)/

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

#
Bad Patches

ShowConnections (had no effect):
ID: 958120
Match: ```
/currentUser:\i,guild:\i,onOpenProfile:.+?})(?=])(?<=user:(\i),bio:null==(\i)?.+?)/


**__MessagePopoverAPI (errored):__**
ID: `773176`
Match: ```
/\i&&!\i\?\(0,\i\.jsxs?\)\(.{0,200}renderEmojiPicker:.{0,500}\?(\i)\(\{key:"reply-other"/

Error: ```
Could not find message variable

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

charred monolithBOT
#

Im not sure to be honest, from all the links I've gotten from iTunes/Apple Music and tested they've included the locale. But then again, without passing locale iTunes either crashes or errors. There are also no locale problems as iTunes translates the page again (i.e. using de as the locale on an English device also displays the page in English) so I see no issue using us in the replace here. Anyway just to be safe I'll update the match to have the locale optional.

#

this makes GifPaste have two selectable behaviors from the settings modal:

  1. insert the gif into the input box
  2. instantly send the gif

you can select between the two behaviors, and this PR adds another setting which handily allows you to use the alternate behavior when the shift key is held down.

in essence, if your behavior is set to "Insert link into the chatbox", you can now hold shift to instantly send a gif. (similar to skipping a modal)

conversely, if your behavior is set ...

charred monolithBOT
gritty canyon
#

SHIGGY

austere talon
#

dont mind me i am testing smth

#

trying to figure out the requirements for getting free copilot from being maintainer

charred monolithBOT
austere talon
#

interesting

#

it still doesn't have it

gritty canyon
#

i feel honored

austere talon
#

we should replace this vendicated fella with shiggybot

#

way better...

#

actually merges prs

gritty canyon
#

nop!!!

#

both are very cute

charred monolithBOT
austere talon
#

rip popover api

still wasp
#

The pull request tidal wave is finally here

#

The blood sacrifices worked guys

brazen bone
#

Whose blood?

still wasp
#

We don't speak of them anymore

glass jasper
pine topaz
#

ougghjjhhh

#

drained....

still wasp
#

How is that motherfucker still alive

pine topaz
#

mommy always said i was special

brazen bone
#

Some people are built different

#

Not needing blood? I've seen weirder

pine topaz
#

no i need blood

#

i have 23 minutes to live