#πŸ‘Ύ-core-development

1 messages Β· Page 108 of 1

junior olive
#

I won't be merging it sorry

#

by the time you'd PRed it I'd figured it out

quaint sapphire
#

Yes you already told me that

#

But how do you expect me to help if I don't know what code you are using?

junior olive
#

??? What I don't need help now

#

I was showing you I got it working

quaint sapphire
#

You pinged me with an issue

junior olive
#

There's no issue

#

it works

quaint sapphire
#

My bad then, I am blind

junior olive
#

blobcatcozy no worries

#

Thanks for the help

quaint sapphire
#

Me being blind is a re-occurring theme

austere talon
#

okay tiem to uninstall kde again

charred monolithBOT
austere talon
#

@topaz thistle the instructions seem wrong

#

the install script does not build a .node addon for me

#

really strange

#

based on the workflow that should be right

#

oh i got it, you also need to run pnpm cpcmds

#

link() takes the name? if so, what's the point of even having ids?

#

i should probably put these on the pr

charred monolithBOT
frail skyBOT
#
Bad Patches

MoreUserTags (had no effect):
ID: 609853
Match: /children:\[(?=\i,\(0,\i\.jsx\)\("span",{className:\i\(\)\.botText,children:(\i)}\)\])/

IgnoreActivities (had no effect):
ID: 238852
Match: /(?<=\(\)\.activityTitleText.+?children:(\i)\.name.*?}\),)/

IgnoreActivities (had no effect):
ID: 238852
Match: /(?<=\(\)\.activityCardDetails.+?children:(\i\.application)\.name.*?}\),)/

MoreUserTags (found no module):
ID: -
Match: .renderBot=function(){

Bad Starts

None

Discord Errors
font-weight: bold;
color: purple;
 resetSocketOnError ReferenceError: Cannot access 'Sye' before initialization
    at Module.default (WebpackModule158583:2:50)
    at VencordWeb:13:748
    at Kf (VencordWeb:6:10726)
    at VencordWeb:6:10823
    at [vencord.lazy.get] (VencordWeb:6:8193)
    at ms.<computed> [as get] (VencordWeb:6:8667)
    at Object.handleProtoChange (VencordWeb:49:50890)
    at CONNECTION_OPEN (WebpackModule473419:2:5861)
    at https://discord.com/assets/675ae39865fd3f811445.js:12291:975
    at https://discord.com/assets/675ae39865fd3f811445.js:12281:847
%c[FetchBlockedDomain] 
font-weight: bold;
color: purple;
 Unable to process domain list delta: Client revision number is null
%c[FetchBlockedDomain] 
font-weight: bold;
color: purple;
 Downloading the full bad domains file ```
#
Bad Patches

MoreUserTags (had no effect):
ID: 609853
Match: /children:\[(?=\i,\(0,\i\.jsx\)\("span",{className:\i\(\)\.botText,children:(\i)}\)\])/

IgnoreActivities (had no effect):
ID: 238852
Match: /(?<=\(\)\.activityTitleText.+?children:(\i)\.name.*?}\),)/

IgnoreActivities (had no effect):
ID: 238852
Match: /(?<=\(\)\.activityCardDetails.+?children:(\i\.application)\.name.*?}\),)/

MoreUserTags (found no module):
ID: -
Match: .renderBot=function(){

Bad Starts

None

Discord Errors
font-weight: bold;
color: purple;
 resetSocketOnError ReferenceError: Cannot access 'Sye' before initialization
    at Module.default (WebpackModule327755:2:50)
    at VencordWeb:13:748
    at Kf (VencordWeb:6:10726)
    at VencordWeb:6:10823
    at [vencord.lazy.get] (VencordWeb:6:8193)
    at ms.<computed> [as get] (VencordWeb:6:8667)
    at Object.handleProtoChange (VencordWeb:49:50890)
    at CONNECTION_OPEN (WebpackModule473419:2:5861)
    at https://canary.discord.com/assets/6450a8359308948cabef.js:12295:975
    at https://canary.discord.com/assets/6450a8359308948cabef.js:12285:847
%c[FetchBlockedDomain] 
font-weight: bold;
color: purple;
 Unable to process domain list delta: Client revision number is null
%c[FetchBlockedDomain] 
font-weight: bold;
color: purple;
 Downloading the full bad domains file ```
charred monolithBOT
junior olive
#

@austere talon i don't feel like looking into vencord internals, how does cloud work? is only stuff saved with datastore backed up or is it just indexeddb

austere talon
#

not backed up at all

#

only settings are

junior olive
#

oh okay

austere talon
#

thats the entire point of storing credentials not in settings

junior olive
#

sure

austere talon
#

so it's not synced, which is especially important when people share configs (which they do a lot)

junior olive
#

got it

austere talon
#

you dont wanna know how many "i gave my friend my settings json now he has my reviewdb account" support requests we got

junior olive
#

i didn't look into rvdb's storage reasoning too much, i kinda assumed settigns api wasnt capable of handling it or smt

austere talon
#

its pretty simple:

  • small json serialisable data synced: settings
  • large data, data that shouldn't be synced, or non json serialisable like maps/set: datastore
junior olive
#

buh vee why is my replacement complaining about unexpected .

#

wait

#

nop still mad

#
        {
            find: "'partialize'",
            replacement: {
                match: /.=function\(.,.\){return/,
                replace: "$self.zustandPersist=$&"
            }
        }
junior olive
austere talon
#

yes

junior olive
#

interesting

#

Do plugins have to use it? I'm not opposed to it but I'm trying out zustand persist (backed with indexeddb) and it's able to just work directly with indexeddb

austere talon
#

why are u wanting to add so many dependencies

#

if every plugin did that our bundle would explode

junior olive
#

I'm not adding dependencies lol

#

it's in discord

austere talon
#

oh i see

#

why do they have so much shit

junior olive
#

That's the patch I'm trying to write rn

austere talon
#

flux, zustand, zustand-persist

junior olive
#

well

#

zustand is zustand and a few included middlewares

austere talon
#

honestly i would try to avoid relying on that cause it seems like smth they might just remove one day cause its not really needed for them

#

but eh its whatever

radiant reef
austere talon
#

its okay to use that, but make sure it doesnt conflict with discord stuff

junior olive
#

i'd like to try zustand persist real quick but if not i can easily replace it with homegrown solution

#

I need to get this patch working tho

#

and i am totally lost

austere talon
#

anyway sorry for misunderstanding

junior olive
#

no problem i get it

#

i've only added zustand as dev dep and that can be removed once plugin is finished if it matters

#

(for types)

radiant reef
junior olive
#

do u think u could help me with this patch that wont fucking work Smile

#

@austere talon aha they probably wont remove it they use it themselves

#

(persist)

#

surprisingly

#

I'm so confused is \i special in vencord

#

how the fuck are 2 of my patches working if it's just a escaped char

austere talon
#

js no work like this

junior olive
#

guhhhhhh

austere talon
junior olive
#

oooo

#

fancy

austere talon
#

yes its our own regex extension

junior olive
#

ok i need to figure out how to steal persist then

austere talon
junior olive
#

vee how would u do this one

austere talon
#

dunno im eepy

junior olive
#

o ok

#

go to slep

austere talon
#

you want d right

junior olive
#

yop

austere talon
#

uh

#

its exported buddy...

junior olive
#

guh!?

#

how do i get it

#

still via regex or?

austere talon
#

findByCode("'partialize'")

junior olive
#

inchrest

#

LMAO that was easy wtf

#

thanks vee blobcatcozy

#

i wonder if the other one is exported

austere talon
#

why did u think it wasnt exported

junior olive
#

it was

#

It's not that I didn't

#

Remember I'm coming from mobile modding and have never modded pre-swc

#

i thought the classic way of finding was dead

austere talon
#

naaah lol

#

the only time u need patch is if its not exported

#

which is extremely rare

junior olive
#

bro 😭

austere talon
#

i think there are only 2 instances of that in vencord

junior olive
#

oh my god i wonder if my other 2 patches are exported

#

all this pain,,,

austere talon
#

mostl ikely lol

#

see it as practice sorrykirino

junior olive
#

oh the other one isn't

austere talon
#

you already use wpex(s) right

junior olive
#
        // Obtain CustomizationSection component
        {
            find: "e.titleIcon",
            replacement: {
                match: /function (\i)\(\i\){var \i,\i=\i\.title/,
                replace: "$self.CustomizationSection=$1;$&"
            }
        },

this one isn't

junior olive
austere talon
#

okay so

#

you can use wreq(id) to import a module by id

#

so you can check what exports it has

#

and then write ur filter with that

#

if the exports are not enough to find it, we have mapMangledModule which lets u first find a module by its source code (like the find in patches), then match the exports

junior olive
#

interesting

austere talon
#

ull figure rest out

junior olive
#

thank u vee

austere talon
austere talon
#

Run autofix to sort these imports!

moment

#

is this good or bs

#

i have no idea

austere talon
charred monolithBOT
cunning canyon
#

uhhh my pnpm test explod

charred monolithBOT
austere talon
junior olive
#

i should use findByCodeLazy right Smile

#

mmmmmm

limber skiff
#

yes

junior olive
#

LMAO

#

i forgot to build

limber skiff
#

lol

junior olive
#

WHAT

charred monolithBOT
junior olive
#

guhh they have a old zustand version and it serializes bc it was built for sessionstorage and localstorage at that point

charred monolithBOT
frail skyBOT
#
Bad Patches

IgnoreActivities (had no effect):
ID: 37478
Match: /(?<=\(\)\.activityTitleText.+?children:(\i)\.name.*?}\),)/

Bad Starts

None

Discord Errors
font-weight: bold;
color: purple;
 resetSocketOnError ReferenceError: Cannot access 'Sye' before initialization
    at Module.default (WebpackModule158583:2:50)
    at VencordWeb:13:748
    at Yf (VencordWeb:6:10726)
    at VencordWeb:6:10823
    at [vencord.lazy.get] (VencordWeb:6:8193)
    at ms.<computed> [as get] (VencordWeb:6:8667)
    at Object.handleProtoChange (VencordWeb:49:50890)
    at CONNECTION_OPEN (WebpackModule473419:2:5861)
    at https://discord.com/assets/675ae39865fd3f811445.js:12291:975
    at https://discord.com/assets/675ae39865fd3f811445.js:12281:847
%c[FetchBlockedDomain] 
font-weight: bold;
color: purple;
 Unable to process domain list delta: Client revision number is null
%c[FetchBlockedDomain] 
font-weight: bold;
color: purple;
 Downloading the full bad domains file ```
austere talon
frail skyBOT
#
Bad Patches

IgnoreActivities (had no effect):
ID: 37478
Match: /(?<=\(\)\.activityTitleText.+?children:(\i)\.name.*?}\),)/

Bad Starts

None

Discord Errors
font-weight: bold;
color: purple;
 resetSocketOnError ReferenceError: Cannot access 'Tye' before initialization
    at Module.default (WebpackModule327755:2:50)
    at VencordWeb:13:748
    at Yf (VencordWeb:6:10726)
    at VencordWeb:6:10823
    at [vencord.lazy.get] (VencordWeb:6:8193)
    at ms.<computed> [as get] (VencordWeb:6:8667)
    at Object.handleProtoChange (VencordWeb:49:50890)
    at CONNECTION_OPEN (WebpackModule473419:2:5861)
    at https://canary.discord.com/assets/3950eaa843062682ee76.js:12296:975
    at https://canary.discord.com/assets/3950eaa843062682ee76.js:12286:847
%c[FetchBlockedDomain] 
font-weight: bold;
color: purple;
 Unable to process domain list delta: Client revision number is null
%c[FetchBlockedDomain] 
font-weight: bold;
color: purple;
 Downloading the full bad domains file ```
charred monolithBOT
junior olive
#

oh god ven

#

vencord tests doesnt like zustand types

spark cove
#

discord has zustand???

junior olive
#

yeah

spark cove
#

WHERe

junior olive
#

i'm using it in vencord rn

#

1s

spark cove
#

i made a budget zustand cus i didnt think they did 😭

junior olive
spark cove
#

ooo so fire

junior olive
#

i just realized that doesn't need to be tsx anymore oops

austere talon
#

it doesn't matter tbh

#

discord names all their files .tsx even if they don't contain any jsx

junior olive
#

meh

austere talon
#

it's kinda smart cause that means u don't have to rename files to add jsx

junior olive
#

meh i renamed it anyways

spark cove
#

is esbuild updated in vencord yet

#

πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’”

#

πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’”

#

πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’” πŸ’”

austere talon
#

vban vapper spam

nimble pendantBOT
spark cove
#

sorry internet lagged

austere talon
#

this is so me

spark cove
#

this make me cry

#

cus

junior olive
spark cove
#

current esbuild version doesnt support

#

ts 5.0+ syntax

#

i think

#

im trynna use

#

const type param

austere talon
#

you will fix conflicts

#

and test

#

then we merge soon

#

maybe tmrw

#

tbh i kinda forgot prs on codeburger existed

#

I should look at them again

limber skiff
#

wha it's working

spark cove
olive aurora
#

soon

junior olive
#

@spark cove sad not all of zustand is included

#

i wonder if the piece i want got removed from mobile too

#

that'd be really shit

spark cove
#

f

#

all i really needed personally was this functionality

#
function createExternalStore<S>(init: () => S) {
    const subscribers = new Set<() => void>();
    let state = init();

    return {
        get: () => state,
        set: (newStateGetter: (oldState: S) => S) => {
            state = newStateGetter(state);
            for (const cb of subscribers) cb();
        },
        use: () => {
            return React.useSyncExternalStore<S>(onStoreChange => {
                subscribers.add(onStoreChange);
                return () => subscribers.delete(onStoreChange);
            }, () => state);
        },
        subscribe: (cb: () => void) => {
            subscribers.add(cb);
            return () => subscribers.delete(cb);
        },
    } as const;
}
junior olive
#

I've got a store that handles the user's decorations and selecting the active one uses subscribeWithSelector

#

the subscription manages saving the selection to the server with a debounce

#

meh it's fine

spark cove
#

it was small and it gave me nice typings

junior olive
#

on second thought I only "needed" that for mobile and i could probably do away with it there too

spark cove
#

subscribeWithSelector

junior olive
#

yop

spark cove
#

lemme look

junior olive
#

i couldn't find it

spark cove
#

i mean docs

junior olive
spark cove
#

cus i never used

junior olive
#

o

spark cove
#

oh interesting

#

is this like for transient updates

junior olive
spark cove
#

oh real

#

u could prob write that

#

as a utility function

junior olive
#

the code is pretty small i could probably just add it

#

but honestly

#

i don't need it for desktop

olive aurora
#

just read what zustand is and i think web development is a failure

junior olive
#

The way I was using it was so that the user could go into the plugin settings, select a different decoration, and just leave

#

but desktop i will just have a save button

charred monolithBOT
junior olive
#

Is it possible to use discord's styles? I need to recreate a component (and probably a few more) as the module it's in is lazy loaded

#

I doubt I can require the module

#

nvm i got it

#

i lied but i might have a better solution

topaz thistle
topaz thistle
junior olive
#

This is where the module gets required, could i patch this somehow to require it all the time (or when I need it)

charred monolithBOT
#

following the README instructions does not build the addon. I also had to first run pnpm cpcmds. that script should probably be called inside the install script or the README should be updated

link() seems to take the name as argument. if this is the case, why does .list() even give you ids?

cpcmds only creates the compile commands for ide auto completion, it is not needed. The workflows also do not use it.

topaz thistle
#

If you share the whole desktop audio on windows, every applications audio except discords will be shared right?

#

Or wait

#

Windows doesn't event Support that right

junior olive
gaunt grail
#

I noticed the terminal method of installing vencord is gone from the how to install thingy. Is there a reason for that or just forgor

quaint sapphire
#

well, the terminal method just uses the GUI...

#

is it really a terminal method anymore?

junior olive
#

@quaint sapphire does vencord have anything like old mod's magic require

quaint sapphire
#

magic require?

#

is that a better discord thing?

#

are you talking about finding webpack modules?

junior olive
# junior olive hehe

i have no idea what magic require was but i was talking to a friend about this and they were wondering if vencord has smth like that bc this seems unorthodox

#

to be clear I seem to have overengineered loading a module that has shit i want

#

(Also finding out now my patch somehow breaks the original functionality but)

quaint sapphire
#

eh, a small patch like that aint a biggy

junior olive
#

it just seems unorthodox

#

and also breaks the bit it patches somehow which is the bigger concern

quaint sapphire
#

uhh, how does it break it? is it a name conflict or smth?

junior olive
#

the modal no longer opens

quaint sapphire
#

lemme write the snippet

junior olive
#

errr

#

My issue is the module isn't loaded

#

this patches something to extract the code that loads the module

quaint sapphire
junior olive
#

i mean i can try it but

quaint sapphire
#

but what?

junior olive
#

How is it going to work if the module isn't loaded..

quaint sapphire
#

it loads the module...

junior olive
#

but won't it load all the modules?

quaint sapphire
#

no?

junior olive
#

then how does it find it lol

#

doesn't it need the modules to inspect them and find the right bit

#

yeah it doesn't work

quaint sapphire
#

all modules are loaded, just not executed

junior olive
#

Vencord.Webpack.wreq(Vencord.Webpack.findModuleId(".decorationGridItem"))

quaint sapphire
#

what did you write?

#

for that you use findByProps

junior olive
#

...it doesn't have props tho

#

are you suree all modules are loaded bc i can't find .decorationGridItem with devtools search until i open the change decoration modal, which seems to fetch another js file??

#

I want module 489030

quaint sapphire
#

does that even exist?

junior olive
#

it is a module

#

open the avatar decoration modal

#

and it will appear

junior olive
quaint sapphire
#

huh, thats true

#

if you can determine the ID, you can use Vencord.Webpack.wreq.e(id) to force load it

junior olive
#

Ok

quaint sapphire
#

this snippet loads all webpack modules (taken from scripts/generateReport.ts)

const ids = Function("return" + wreq.u.toString().match(/\{.+\}/s)![0])();
for (const id in ids) {
    const isWasm = await fetch(wreq.p + wreq.u(id))
        .then(r => r.text())
        .then(t => t.includes(".module.wasm") || !t.includes("(this.webpackChunkdiscord_app=this.webpackChunkdiscord_app||[]).push"));

    if (!isWasm)
        await wreq.e(id as any);
    await new Promise(r => setTimeout(r, 150)); }
#

although thats not what you want to do

#

just wanted to give the source of my info

junior olive
#

I know where the 2 ids are, but how can i get them from the module?

#

I don't need to patch just regex them

#

is that possible

quaint sapphire
#

if there are other modules that contain those IDs, then you may be able to do it

junior olive
#

yes

#

look near isTryItOutFlow;

#

the Promise.all

quaint sapphire
junior olive
#

I already have the regex to extract the promise.all

quaint sapphire
#

give it

junior olive
#
{
            find: "isTryItOutFlow;",
            replacement: {
                match: /var \i=function\(\i\){.+(Promise.all.+?\\))/,
                replace: ";$self.requireDecorationModules=()=>($1);$&"
            },
        }
#

this is the patch that somehow breaks opening that modal

quaint sapphire
#
(Vencord.Webpack.findByCode('.isTryItOutFlow;')+"").match(/(Promise.all.+?\])/)?.[1]
junior olive
#

ok yeah ez

#

alr brb

quaint sapphire
#

make sure that it is lazily executed

junior olive
#

Cool, I got it going

#
    requireDecorationModules() {
        const modules = findByCode("isTryItOutFlow;").toString().match(/(Promise.all.+?\])/)?.[1].matchAll(/[0-9]+/g);

        for (const module of modules) {
            wreq.e(module[0]);
        }
    }
charred monolithBOT
junior olive
quaint sapphire
#

ayy

charred monolithBOT
lime stone
quaint sapphire
#

be careful

#

you are treading on dangerous grounds

#

you want to combine multiple projects into one?
do you realise how many more "support" requests that would generate?

lime stone
#

LOL i think it'd be ok

lime stone
#

the problem is vencord will end up with many different plugins with a different ux and process

crude hearth
#

jk

#

But hm avatar decord userpfp

#

What else

#

It would make other plugins useless so automaticly bad idea

lime stone
#

?

charred monolithBOT
lime stone
#

vencord comes with all the plugins so having multiple inconsistent plugins to achieve part of the same goal is weird

#

and USRBG is kind of weird fetching things from a github repo

charred monolithBOT
lime stone
#

there should be a plugin that lets you type tone tags without slash commands getting in the way 😭

topaz thistle
#

tone tags?

topaz thistle
#

My client may be too old xd

verbal pumice
#

it only shows if you enable the experiment

#

oh yeah it also crashes on mobile trolley

lime stone
#

no i'm talking about tone tags

#

not sounds

#

use google 😭

#

it's like /j /s

austere talon
#

omg i borkee mobile support I didnt realise

spark cove
#

Something like waitFor

austere talon
spark cove
#

@austere talon what's the way

austere talon
#

to you want to share audio of Firefox , Firefox, Firefox or Firefox Firefox Firefox Firefox

spark cove
#

Ummm

#

Virus???

gaunt grail
#

Which is what I meant sorry

crude hearth
#

@austere talon did u add whole desktop audio sharing

#

actually nvm

#

that would share discord audio too trolldayruined

#

everyday I wonder if I can change bitrate of discord screenshare

real flower
#

cuz the way it works it adds everything to a sink

#

and captures that

#

so

gaunt grail
real flower
#

it just adds everything BUT discord

#

and bam

#

works perfectly

gaunt grail
#

I mean

#

vs w

#

Awh

austere talon
#

that was removed and instead replaced with manual cli usage

gaunt grail
#

Ah PensiveFluent

austere talon
#

because most people who need to the script are windows 7 and on win7 iwr won't work

#

so the launcher script doesn't work either on win7

#

the powershell script is still there so you can still use it

gaunt grail
#

Yeah

quaint sapphire
#

oh yeah win 7 has an ancient powershell version

#

meanwhile win 10 ships with curl

gaunt grail
#

We just use it since it feels faster

austere talon
#

ancient powershell either doesn't have iwr or doesn't properly support the new ssl standard

gaunt grail
#

So was surprised to see it gone

gaunt grail
#

More likely SSL

quaint sapphire
#

you can use C# apis from powershell, so it should be possible to migrate to that

gaunt grail
#

Wait nope

#

Windows 7 doesn't have iwr, that was in 3.0 which it has 2.0

#

Interesting

quaint sapphire
#
Add-Type -AssemblyName System.Net.Http;

Write-Host "Downloading VencordInstaller.exe ...\n";

$uri = "https://github.com/Vencord/Installer/releases/latest/download/VencordInstaller.exe";
[System.Net.Http.HttpClient]::new().GetByteArrayAsync("https://github.com/Vencord/Installer/releases/latest/download/VencordInstaller.exe").Result | Set-Content -Path "VencordInstaller.exe" -Encoding Byte;

this is the powershell code to download the exe w/o iwr husk

#

@gaunt grail can you test on windows 7?

gaunt grail
#

Oh im on windows 11

quaint sapphire
gaunt grail
#

We use the funny powershell command on windows 11

quaint sapphire
#

oooooh

gaunt grail
#

Yeah

quaint sapphire
#

and you have the old version?

gaunt grail
#

Old version?

quaint sapphire
#

powershell legacy

gaunt grail
#

No

quaint sapphire
#

what was this talk about windows 7?

gaunt grail
quaint sapphire
#

oooh

#

well, if anyone can test this on win 7, we might be able to have a one-liner install script for windows 7 as well then

austere talon
#

just manually download and run it's easy

quaint sapphire
#

gave as alternative to iwr

#

it is mad crazy that you can use C# classes from powershell tho

#

you could even make the vencord gui installer with just powershell, by using winforms

austere talon
#

yeah

#

it's cool

lone thorn
#

would be cool if it would boot...

austere talon
crude hearth
#

Who even uses windows 7

#

Even chrome dropped support for windows 7 afaik

lone thorn
#

not me, linux user all the way

#

yeah doesn't work, at least not with the version of powershell it ships with. Though this might be a .net thing also.

#

oh well

quaint sapphire
#

3.5 or smth

#

most windows 7 users install it anyways, it is as good as builtin

topaz thistle
#

Is the goal here really to not talk or is the channel name a joke xd

lime stone
#

no you actually explod

topaz thistle
#

fug

verbal pumice
#

try it and find out

lime stone
#

you exploded

austere talon
topaz thistle
#

I fucked around and found out :)

austere talon
#

the lore behind the channel is that i was developing VCNarrator which is like teamspeak narrator

topaz thistle
#

Lmfao

austere talon
#

"curve joined your channel"
"curve moved to exploders"
"curve moved to if you talk you explod like its a really massive explosion you really dont want to explod here so do"

#

someone made that the channel name to troll me

topaz thistle
#

Hahahha

#

Is the Narrator still a thing?

austere talon
#

yeah

#

just enable it and you can try it

topaz thistle
#

Oh that's actually in Vencord already

#

Will absolutely check that out lmfao

austere talon
#

it uses your system narrator so it's a bit meh at times but it's super convenient when you're not focused on discord so you immediately know who joined without checking

#

especially for gaming

topaz thistle
#

πŸ‘Œ

shy veldt
charred monolithBOT
lone thorn
#

Only way I could get this to work under Windows 7 is with the following.
Update the certificate store
https://support.microsoft.com/en-us/topic/support-for-urgent-trusted-root-updates-for-windows-root-certificate-program-in-windows-a4ac4d6c-7c62-3b6e-dfd2-377982bf3ea5
Install .net 4.8 (certificate store update required)
https://dotnet.microsoft.com/en-us/download/dotnet-framework/net48
Install WMF 5.1 (this updates powershell, it won't work under 2.0 which Win7 ships with)
https://www.microsoft.com/en-us/download/details.aspx?id=54616
(The zip contains a ps1 script to run, I am unsure if the msu will work.
Powershell -noprofile -executionpolicy bypass -file .\Install-WMF5.1.ps1 )

lime stone
#

hmm, it would be cool to have a plugin that uses a browser extension and rpc to jump to messages (the same way invites work)

#

i wonder how possible that is

#

and it would mean having to get another extension on stores blobcatcozy

#

or maybe have a vencord plugin on the browser side which sends the message

#

maybe not, i don't think that'd be possible without more extension-side stuff

austere talon
#

LOL

#

how many voices are there 😭

#

why did noone ever tell me this

#

WHY ARE THERE 13K VOICES

#

WHAT THE FUCK

#

can you run speechSynthesis.getVoices()

#

how many does it give u

#

13k too?

#

omg

#

new Set(speechSynthesis.getVoices().map(v => v.name))

#

oh my god

#

😭

#

what are they cooking

#

who needs this many voices

crude hearth
#

Yes

junior olive
spark cove
#

what for out of curiousity

junior olive
#

It has components I want to use, and the module might not be loaded by the time I want to use them, so I need to load it when I need it

spark cove
#

oh i see

#

yea i think the best way would be a patch that finds the module id and just uses webpack require

austere talon
#

might not be loaded
are you sure?

#

if you say might that sounds like you just think that

spark cove
#

i think they mean its possible to trigger their ui before causing the chunk to load

junior olive
#

Yes

spark cove
#

but not necessarily always the case

#

just a case that needs to be handled

junior olive
#

The chunk is only loaded when discord's decoration change modal is opened

spark cove
#

i did a similar thing before

#

for a plugin that i never finished xd

junior olive
#

and the user might not have gone there before using decor (especially if they're not a nitro user etc)

spark cove
#

but i was using the file chooser from the guild sticker uploader

#

actually might not even need a patch really

austere talon
#

i mean it shouldn't be too hard with vencord's api

junior olive
#

I got it working it just needs cleaning up

spark cove
#

Alternatively we could replace n with wreq and eval it?

junior olive
#

yeah I'm pretty much recreating their promise.all but with wreq instead of what is probably wreq but with a different name

charred monolithBOT
spark cove
#

it doesnt seem like thats an alternative it seems like thats what ur already doing tho

#

i think thats probably the best way to do it

#

altho u should be awaiting it lol

junior olive
#

If the .then changes to load two modules

#

it'd only load one

#

unless that shouldn't happen?

spark cove
#

i'd imagine they'd be in the same chunk anyways

junior olive
#

yeah okay it's not a issue thenn

spark cove
#

also

#

i dont think u need the .then(...)

#

if u arent gonna use the values

austere talon
#

idk why it's always called n

junior olive
#

I was just recreating exactly what discord did xd

spark cove
#

true

#

basically wreq.e is doing the chunk loading

austere talon
#

the first part consisting of n.e calls loads chunks by their id

#

the second part in the .then then requires modules from those chunks

#

you only need to load the chunks, then you can just require them

charred monolithBOT
junior olive
#

yeah and that function requires the module as it should

spark cove
junior olive
#

but I have a patch that patches the module to get something from it

#

(and will prolly have more)

spark cove
#

oh are exports not initialized on chunk load

#

i thought they were but i dont actually know

junior olive
#

I don't think so?

#

Unsure tbh

spark cove
#

im checking rn

#

and i noticed ur regex is pulling the module ids as well as the chunk ids

#

should prob make it /(Promise.all.+?\]\))/

#

so it doesnt try to require a non-existent chunk

junior olive
#

I know it's pulling the module ID

#

it pops the last one off

spark cove
#

oh

junior olive
spark cove
#

scary

junior olive
#

yeah

#

it could totally be done better

#

fine rq i will test if i really need to require it ok

#

i do

spark cove
#

not trying to annoy u

#

but yea i just tested too i was curious

junior olive
junior olive
#

idm feedback this is my first serious vencord plugin and it's a relatively big one

spark cove
#

ah oki i just misread

junior olive
#

I need to figure out how to use masonrylist now blobCatCozy

spark cove
#

its always called n cus all the minified webpack vars have hardcoded names

#

they dont really change between releases

charred monolithBOT
nimble plaza
#

now that i think about it, isnt replugged compat possible (or atleast more feasable than bd)

#

bc of the patch system

charred monolithBOT
stark flint
#

it's a web thing

limber skiff
#

I mean replugged uses the same patching system as bd

spark cove
#

you could make a "replugged" type alias in tsconfig and write a somewhat compliant api

nimble plaza
limber skiff
#

it does too

#

and could maybe have conflicts with our patches

charred monolithBOT
junior olive
#

@spark cove i think we are so back

spark cove
#

massive

junior olive
#

mmm can that close buton get its ass back over to the right side

#

hmm does discord have a new set of modal components?

#

noticing that mine is less rounded

lime stone
#

maybe the modals got so big they rounded them more

austere talon
#

ive noticed these fairly consistent variable names a lot

#

props is 90% of the time called e, react r, and a few more

austere talon
junior olive
#

is 3 bc of that twitter shit u were sent

austere talon
#

yeah

spark cove
#

i wonder why tho

short bridge
#

did yall see new profile effects?

junior olive
shy veldt
shy veldt
#

fiery devstream part 2

#

part 6 actually

junior olive
#

nop not rn

short bridge
shy veldt
#

i will scam you

junior olive
#

@shy veldt reverse engineer profile effects for future decor feature

junior olive
#

sent all the shit u have on them then

short bridge
shy veldt
#

i need to know how the shit works before i make it work

shy veldt
#

it takes the positions and stuff (math so hard)

junior olive
#

sounds husk ill look into it ig

shy veldt
#

and in user_profile in /profile ep it has profile_effect: {id: "id"}

#

the client looks up the id from the request before that it saved

#

and takes the effect from it

#
{
    "type": 1,
    "id": "1139323075519852625",
    "title": "Hydro Blast",
    "description": "Time to make a splash.",
    "accessibilityLabel": "Spinning splash of water hurling towards its target, Animated",
    "animationType": 2,
    "thumbnailPreviewSrc": "https://cdn.discordapp.com/assets/profile_effects/effects/b17d139f2e9/splash/thumbnail.png",
    "reducedMotionSrc": "https://cdn.discordapp.com/assets/profile_effects/effects/b17d139f2e9/splash/reducedMotion.png",
    "effects": [
        {
            "src": "https://cdn.discordapp.com/assets/profile_effects/effects/b17d139f2e9/splash/intro.png",
            "loop": false,
            "height": 880,
            "duration": 2880,
            "start": 0,
            "loopDelay": 0,
            "position": {
                "x": 0,
                "y": 0
            },
            "zIndex": 100
        },
        {
            "src": "https://cdn.discordapp.com/assets/profile_effects/effects/b17d139f2e9/splash/loop.png",
            "loop": true,
            "height": 880,
            "duration": 2880,
            "start": 5760,
            "loopDelay": 5760,
            "position": {
                "x": 0,
                "y": 0
            },
            "zIndex": 100
        }
    ]
}
#

you love the big horror

#

and ofc its apngs

junior olive
#

i love apngs

shy veldt
#

ig

#

or something

junior olive
#

yea getUserProfile

shy veldt
junior olive
#

lmaoo

junior olive
#

@shy veldt @spark cove blobcatcozy

shy veldt
#

rna try to play a video challenge (impossible)

junior olive
#

lol

spark cove
#

yo kinda real

junior olive
#

There's only a few things left

spark cove
#

real progress

#

are u gonna make the ui look similar to decos

junior olive
#

yes

shy veldt
spark cove
#

real real

austere talon
#

good stuff

junior olive
#

I need to do:

  1. pretty grid of decorations like normal decorations ui
  2. make it more like normal decoration ui
  3. create decoration modal
  4. PresetStore + show presets in UI
  5. somehow properly show that the decoration changed? fluxdispatcher isn't working
  6. not vencord but fix and improve vendetta plugin
  7. improve review bot to allow banning users from requesting
  8. move to timezonedb-style fetching (how do i do this on mobile)
shy veldt
#

5? ? ?

#

what

junior olive
#
    select: async (decoration: Decoration | null) => {
        if (get().selectedDecoration === decoration) return;
        set({ selectedDecoration: decoration });
        setUserDecoration(decoration);

        const user = UserStore.getCurrentUser() as any;
        user.avatarDecoration = decoration ? { asset: decorationToString(decoration), skuId: SKU_ID } : null;
        user.avatarDecorationData = user.avatarDecoration;
        FluxDispatcher.dispatch({ type: "USER_UPDATE", user });
    },
#

it doesn't seem to reflect the updated decoration in the app

shy veldt
#

user_update 😟

shy veldt
austere talon
#

Im pretty sure there's a separate event for current user

junior olive
#

oh bruh

austere talon
#

search for CURRENT_USER_UPDATE

junior olive
#

ok 1s

austere talon
#

idk if there actually is lol

junior olive
#

gonna add more to the todo

olive aurora
#

hop on async select() {}

austere talon
#

yop

shy veldt
junior olive
#

idk if can

#

this is in a object

austere talon
#

wdym

junior olive
#

select func is in my zustand store

export const useUserDecorationsStore = proxyLazy(() => create<UserDecorationsState>((set, get) => ({
    decorations: [],
    selectedDecoration: null,
    fetch: async () => set({ decorations: await getUserDecorations(), selectedDecoration: await getUserDecoration() }),
    create: async (newDecoration: NewDecoration) => {
        const decoration = (await setUserDecoration(newDecoration)) as Decoration;
        set({ decorations: [...get().decorations, decoration] });
    },
    delete: async (decoration: Decoration | string) => {
        const hash = typeof decoration === "object" ? decoration.hash : decoration;
        await deleteDecoration(hash);

        const { selectedDecoration, decorations } = get();
        const newState = {
            decorations: decorations.filter(d => d.hash !== hash),
            selectedDecoration: selectedDecoration?.hash === hash ? null : selectedDecoration
        };

        set(newState);
    },
    select: async (decoration: Decoration | null) => {
        if (get().selectedDecoration === decoration) return;
        set({ selectedDecoration: decoration });
        setUserDecoration(decoration);

        const user = UserStore.getCurrentUser() as any;
        user.avatarDecoration = decoration ? { asset: decorationToString(decoration), skuId: SKU_ID } : null;
        user.avatarDecorationData = user.avatarDecoration;
        FluxDispatcher.dispatch({ type: "USER_UPDATE", user });
    },
    clear: () => set({ decorations: [], selectedDecoration: null })
})));

i dont think i can do async select here can i?

#

ok w/ current user update it seems to work

#

w

#

oh hm

#

i guess i can

#

yw

lime stone
junior olive
#

thank uu

lime stone
#

😭

#

can this be disabled with css or is this something you'd need a plugin for

#

this looks like it'd be really distracting

#

discord is probably doing some software rendering, right?

#

it's very laggy

#

nvm, it looks more like they did it with css because f8 keeps the animation

verbal pumice
#

protip they dont animate with reduced motion on

lime stone
#

hmm... maybe there could bve ModularReducedMotions

junior olive
lime stone
#

oh guh

pine topaz
#

everything is a fucking apng

#

i hate apngs

lime stone
#

how come it doesn't loop while pasued

short bridge
junior olive
#

how the FUCK does masonrylist work

austere talon
#

wtf free masonry??

charred monolithBOT
junior olive
#

i just got ratelimited by cf again

#

😭

#

ohm y godd

mortal fractal
#

why are you not just looking at what the normal one does and copying it smh

#

if not just exporting it

junior olive
#

and im struggling

mortal fractal
#

where

#

compare the two in react devtools and see if theres something structurally missing?

junior olive
#

i think im just missing styles

charred monolithBOT
charred monolithBOT
frail tree
#

Someone make a plugin to see when someone was last online

teal halo
#

sounds creepy

#

on discord

junior olive
charred monolithBOT
junior olive
#

we're getting closer

#

there's a bunch of shit i missed

short bridge
#

Looks neat

charred monolithBOT
median rapids
woeful sable
#

Anyone know why vencord refuses to load when using 3rd party plugins now? It was working perfectly fine a few hours ago and then some update came I guess and the only way for vencord to load is when there are only the original plugins. I dont think there are any bugs in the plugins since there are no errors when its built

austere talon
#

figure it out yourself

charred monolithBOT
woeful sable
charred monolithBOT
austere talon
#

why does it even match so much

#

if it just puts it right back and doesn't use anything

frail skyBOT
#
Bad Patches

ImageZoom (had no effect):
ID: 159689
Match: /(render=function\(\){.{1,500}limitResponsiveWidth.{1,600})onMouseEnter:/

IgnoreActivities (had no effect):
ID: 37478
Match: /(?<=\(\)\.activityTitleText.+?children:(\i)\.name.*?}\),)/

Bad Starts

None

Discord Errors
font-weight: bold;
color: purple;
 resetSocketOnError ReferenceError: Cannot access 'Aye' before initialization
    at Module.default (WebpackModule327755:2:50)
    at VencordWeb:13:748
    at Yf (VencordWeb:6:10726)
    at VencordWeb:6:10823
    at [vencord.lazy.get] (VencordWeb:6:8193)
    at ms.<computed> [as get] (VencordWeb:6:8667)
    at Object.handleProtoChange (VencordWeb:49:50890)
    at CONNECTION_OPEN (WebpackModule473419:2:5861)
    at https://discord.com/assets/269f1522ef537311f6f8.js:12309:324
    at https://discord.com/assets/269f1522ef537311f6f8.js:12299:299
%c[FetchBlockedDomain] 
font-weight: bold;
color: purple;
 Unable to process domain list delta: Client revision number is null
%c[FetchBlockedDomain] 
font-weight: bold;
color: purple;
 Downloading the full bad domains file ```
#
Bad Patches

ImageZoom (had no effect):
ID: 159689
Match: /(render=function\(\){.{1,500}limitResponsiveWidth.{1,600})onMouseEnter:/

IgnoreActivities (had no effect):
ID: 37478
Match: /(?<=\(\)\.activityTitleText.+?children:(\i)\.name.*?}\),)/

Bad Starts

None

Discord Errors
font-weight: bold;
color: purple;
 resetSocketOnError ReferenceError: Cannot access 'Aye' before initialization
    at Module.default (WebpackModule327755:2:50)
    at VencordWeb:13:748
    at Yf (VencordWeb:6:10726)
    at VencordWeb:6:10823
    at [vencord.lazy.get] (VencordWeb:6:8193)
    at ms.<computed> [as get] (VencordWeb:6:8667)
    at Object.handleProtoChange (VencordWeb:49:50890)
    at CONNECTION_OPEN (WebpackModule473419:2:5861)
    at https://canary.discord.com/assets/7b0ea235358ddfa742d6.js:12309:324
    at https://canary.discord.com/assets/7b0ea235358ddfa742d6.js:12299:299
%c[FetchBlockedDomain] 
font-weight: bold;
color: purple;
 Unable to process domain list delta: Client revision number is null
%c[FetchBlockedDomain] 
font-weight: bold;
color: purple;
 Downloading the full bad domains file ```
charred monolithBOT
austere talon
cunning canyon
#

ok

austere talon
#

le spam

austere talon
#

use either mediaLayoutType or showThumbhashPlaceholder as anchor

#

actually yeah just

match: "showThumbhashPlaceholder:",
replace: "...$self.makeProps(),$&"
cunning canyon
#

ah

junior olive
austere talon
#

hmm i need to refactor the arrpc plugin

#

so i can hijack its handlers in vesktop

junior olive
#

fun

austere talon
junior olive
#

yeah but only once u hover over the pfp

#

i bet there's a diff dispatch

#

but.. mehhhhh

austere talon
#

i mean

#

they probably use some hook themselves

#

not much u can do its whatever

junior olive
#

yeah meh

austere talon
#

you'd have to add another patch

junior olive
#

that's not a problem KEKW

#

5 patches 7 replaces

#

i'm quite good at them now if i do say so myself

charred monolithBOT
austere talon
#

i did not test this code GabDumb

junior olive
#

hehe

junior olive
#

got the new item icon to fuck off now i need to get the lock to fuck off

austere talon
cunning canyon
#

ah makeProps(this)

charred monolithBOT
austere talon
#

guh wrong branch

junior olive
#

we are so very back

austere talon
#

ready? @cunning canyon

cunning canyon
#

yes

austere talon
#

you added back the patch

#

did u realise its not actually useless?

cunning canyon
#

it is not loaded when i test it in vscode or something
so i thought it doesnt exist anymore
but then it works

charred monolithBOT
cunning canyon
#

yes

junior olive
austere talon
#

it is not loaded when i test it in vscode or something
lazy loaded

austere talon
#

wait u didnt add readme

#

kill

#

please add a README

cunning canyon
austere talon
#

yea

#

its fine

junior olive
#

@austere talon icons on desktop how do they work?

charred monolithBOT
junior olive
#

these icons seem to be svg

#

is there a specific way i should get them or

austere talon
junior olive
#

true..

austere talon
#

what is that sentence 😭

junior olive
#

ok let me rephrase

austere talon
#

oh i think i get it

#

generally we just copy paste their svgs

junior olive
#

oh ok

austere talon
#

because finding svgs from webpack isnt very robust since most of them are wrapped

#

and it's easier to just copy paste since they're usually small

#

the shop one might be more complex so it might be better to webpack search it

junior olive
#

alrighty i'll copypaste

#

nah i dont need shop

austere talon
#

yeah

junior olive
#

i need a different one for that which is gonna be fun to find

austere talon
#

the none is probably incredibly simple

#

like its a circle and a stroke

junior olive
#

i need a create/upload/plus icon for the other

#

i think i used a plus on mobile

austere talon
#

look in src/components/Icons

#

there should be upload there

#

there isnt

#

unlucky

junior olive
#

sad

#

should i add noneicon to common?

junior olive
woeful sable
junior olive
#

send

woeful sable
junior olive
#

ehhh

charred monolithBOT
#

following the README instructions does not build the addon. I also had to first run pnpm cpcmds. that script should probably be called inside the install script or the README should be updated
link() seems to take the name as argument. if this is the case, why does .list() even give you ids?

cpcmds only creates the compile commands for ide auto completion, it is not needed. The workflows also do not use it.

yep, i just confirmed this was just happening because of non clea...

junior olive
charred monolithBOT
woeful sable
#

i’m on mobile

junior olive
#

yeah remix isn't a thing on desktop 😭

woeful sable
#

right click an image and it’ll show

#

it is

junior olive
#

nuh uh

#

not for me

woeful sable
#

should be an experiment

#

if not

junior olive
#

ima just find a diff icon

charred monolithBOT
junior olive
austere talon
#

i wanna make readme creation a community project

#

good opportunity for people who don't know how to code to contribute to vencord and make their first git(hub) experience maybe

junior olive
#

damn typings

austere talon
#

uh

#

try this option

#

but optimally that error shouldnt happen

#

why is zustand borked

junior olive
junior olive
charred monolithBOT
woeful sable
#

for role coloreverywhere can the top role colour be the chat text colour πŸ™πŸ»

junior olive
#

wHAT

#

im so confused

#

no no no

junior olive
#

i had a fucking heart attack i incorrectly rebased and thought i lost all the plugin code

#

@austere talon it isn't running pr tests anymore for some reason

cunning canyon
junior olive
#

i changed target to dev bc i saw u merging into that not main

woeful sable
junior olive
#

guh

#

test only goes on main

#

ok back to main target we go

charred monolithBOT
pine topaz
#

letting the days go by

charred monolithBOT
charred monolithBOT
charred monolithBOT
limber skiff
junior olive
limber skiff
#

do lol

#

dont worry about a lot of patches haha, as long as they are efficient

junior olive
#

I have no idea if they're efficient

#

I hope they are

#

wouldn't mind someone looking over them

limber skiff
#

the console logs how long they took to finish

junior olive
#

oh huh

limber skiff
#

depending on how much you match most take like 1ms

#

but if you match a lot some take like 50ms

junior olive
#

hm i don't see the any logs?

limber skiff
#

enable all log levels

#

and have watch mode

junior olive
#

nvm

#

i filtered the wrong thing

#

lmao yeah ok we're fine

#

oh some of those aren't mine

limber skiff
#

yeah they are totally fine

junior olive
#

if that bitch ass footer doesn't go to the right spot i swear

charred monolithBOT
junior olive
#

@spark cove would u happen to still have the code to get the sticker upload file input it is actually very pretty

charred monolithBOT
charred monolithBOT
shy veldt
junior olive
winter trench
junior olive
#

not out yet

winter trench
charred monolithBOT
junior olive
#

Just waiting for vap to lmk if they have the fancy file input I want still or if I have to get that myself

junior olive
#

what

woeful sable
#

the file input

short bridge
#

Fiery can I ask you something?

junior olive
#

wat

short bridge
#

Is it possible I mean teorethicaly to merge plugins into one?

woeful sable
#

i’m assuming all of fake nitro

short bridge
junior olive
#

yes but why would you, you'd just be copying code from one plugin into the other making a frankenstein of a plugin

short bridge
junior olive
#

decor is too big to be part of another plugin and i don't really want it to be

short bridge
junior olive
#

plus decorations and profile effects aren't nitro only and decor isn't going to allow reuploading official decorations discord sells

short bridge
#

Sorry for the ping idk what happened to disable ping response plug-in

junior olive
#

idm but combining the 3 server-backed plugins into a fakenitro plugin would just be unreasonable, they'll be easier to maintain seperate among other things. maybe unlocker plugins like freemoji, stickers that type but not decor, usrbg and usrpfp

short bridge
#

Well I think ur right

charred monolithBOT
charred monolithBOT
torn knot
junior olive