#๐Ÿ‘พ-core-development

1 messages ยท Page 27 of 1

turbid hatch
#

not discord

austere talon
#

ah I see

turbid hatch
#

but once you have that, you can GET/PUT/DELETE /settings

austere talon
#

how about encryption? did u do that at all

turbid hatch
#

GET will return {"data": ..., "written": 123456}, PUT will return {"written": 123456}, DELETE is a 204

#

didnt do it for the PoC but its trivial

#

since im already storing as binary

austere talon
#

ye

#

encryption would be cool but should be done on client side for obvious reason

#

I think browser has good apis for that?

turbid hatch
#

subtlecrypto

#

yes

#

although i think encryption should be a case-by-case thing

#

instead of encrypting the whole file

austere talon
#

should we differentiate canary, ptb and stable or store all as one?

turbid hatch
#

i see no reason to differentiate release channels

turbid hatch
#

vencord runs the same on all of them

turbid hatch
# austere talon ?

so not encrypting the whole file, but individual values if its really necessary

austere talon
#

why so

#

wouldn't encrypting the whole file be simpler

turbid hatch
#

it seems redundant to encrypt a settings file if the settings are just "so and so plugin is on" and it bloats the filesize

austere talon
#

by how much?

turbid hatch
#

depends on the algorithm and bits

austere talon
#

I thought size should stay about equal when encrypting

turbid hatch
#

it can do, i think AES can?

austere talon
#

or even smaller since I assume encryption can also incorporate compression

turbid hatch
#

but you have to pick the right bit size

#

smaller? i havent heard of one that goes smaller

umbral hedge
turbid hatch
#

^

#

and tbh stable is the only supported branch anyway

#

ptb/canary are a "itll run but you wont get any support for issues"

#

so i see no reason why we should special case it

austere talon
turbid hatch
#

i could run it through brotli

#

or something

umbral hedge
#

discord has pako built in, so whatever that supports you could use ig

turbid hatch
#

im packing it with msgpack atm so its quite small now compared to its ascii form but we might be able to get better ratios

umbral hedge
#

zlib

austere talon
#

isn't brotli more for binary data?

turbid hatch
#

opposite

#

brotli is text data

umbral hedge
#

bro... tli

austere talon
#

for string compression I think of lzw or huffman

turbid hatch
#

less implementation detail on the clientside

austere talon
#

but then u have to send unencrypted stuff to the server

turbid hatch
#

true

#

hm

#

okay, i can move written to a header

#

thats fine

#

response.header("Vencord-Settings-Written", written!);

#

something like that

#

idk

austere talon
#

shouldn't custom headers start with X

turbid hatch
#

thats actually not recommended anymore

#

its recommended against

austere talon
#

๐Ÿค”

turbid hatch
#

they stopped recommending it because people were making custom headers

#

and they became pseudostandards

austere talon
#

http headers are such a messy thing

turbid hatch
#

and then became standards

#

e.g. X-Forwarded-For

#

that used to be a nonstandard header

austere talon
#

I love how a typo has become the standard for backwards compatibility

turbid hatch
#

now its a standard and in the RFC

austere talon
#

๐Ÿ˜ญ

turbid hatch
#

yeah lol

#

so they just said

umbral hedge
#

Referer moment

turbid hatch
#

"okay nevermind just write them without the X"

umbral hedge
austere talon
#

we will make a new convention

#

don't prefix with X

umbral hedge
#

we love trolley

austere talon
#

prefix with V

turbid hatch
#

VC-Settings-Written

austere talon
#

V-Settings-Written

turbid hatch
austere talon
umbral hedge
#

V-Settings-Exploded

turbid hatch
#

V- it is!

umbral hedge
#

this is so painful tbh

turbid hatch
#

yeah lol

umbral hedge
#

Referer, spelt wrong
Referrer-Policy, spelt correctly

austere talon
#

I mean

umbral hedge
#

most web servers do support referrer anyways tho

austere talon
#

it's better than purposely also misspelling the new one

#

we gotta start somewhere xd

umbral hedge
#

yeah

#

I actually kinda prefer the misspelling

#

looks nicer

cunning bobcat
#

you are not sober if you prefer the typo

umbral hedge
#

xd

#

Referer
Referrer

turbid hatch
#

xdd

umbral hedge
#

idk it just looks nicer to me

#

I still use Referrer

#

but yeah

cunning bobcat
#

i will refer to you as insane

turbid hatch
#

well anyhow

umbral hedge
#

I am insan

austere talon
#

megu using non standard headers ๐Ÿ‘Ž๐Ÿ‘Ž๐Ÿ‘Ž๐Ÿ‘Ž

umbral hedge
#

NO I MEANT IN SPELLING

turbid hatch
#

if i remove the packing stuff then you can store whatever you want

#

i'll just return it literally

#

:^)

cunning bobcat
#

megu ๐Ÿ‘Ž ๐Ÿ‘Ž ๐Ÿ‘Ž ๐Ÿ‘Ž ๐Ÿ‘Ž

umbral hedge
#

I still use Referer when dealing with headers

austere talon
#

wtf lewi is a packer real??

umbral hedge
#

lol

turbid hatch
#

!!!

#

packin deez nuts

umbral hedge
#

Packer by HashiCorp
Packer is a free and open source tool for creating golden images for multiple platforms from a single source configuration.

austere talon
#

we should also have the ability for people to selfhost the settings sync server

cunning bobcat
austere talon
umbral hedge
#

a person or machine that packs something, especially someone who prepares and packs food for transportation and sale.

turbid hatch
#

well it will be under GPL 3

#

i shamelessly stole all of vencord's eslint and licensing in preparation to shove it under vencord org or something

austere talon
#

Also have u added rate limits?

turbid hatch
#

xd

austere talon
#

and don't forget funny cors but u probably already thought of that

turbid hatch
#

already done cors

#

wasnt sure what to set the ratelimits to

#

size limits are 32k

austere talon
#

hmm

umbral hedge
#

app.use(cors()) trolley

austere talon
#

for rate limits we can just try it out

#

I would say maximum 1 request per second and 20 requests per hour

#

but could just go higher or lower if needed

austere talon
turbid hatch
#

reading is cheaper than writing

#

so

#

yeah i could say only 20 syncs an hour

#

but unlimited reading

austere talon
#

but writing is more needed

turbid hatch
#

ye

austere talon
#

Reading is really only needed once every time u start discord

turbid hatch
#

ye

austere talon
#

hmm it would be cool if we could have it so that when you change a setting on one client it immediately updates on other client

turbid hatch
#

how do you do binary data again

#

i forgot

austere talon
#

but don't think that's possible without a constant websocket connection?

austere talon
turbid hatch
#

thats basically just file uploads isnt it

#

like on http

#

i forget how you just transmit binary

austere talon
#

either form data or b64

#

or just make the body binary

turbid hatch
#

hm

austere talon
#

I think base64 would be the easiest

turbid hatch
#

i can live with that

#

saves me having to write custom parsers

austere talon
#

I just though of a pretty big limitation with settings sync

turbid hatch
#

hm?

austere talon
#

settings are absolutely needed synchronously

#

so you'll have to restart after syncing changed settings

turbid hatch
#

i already thought of this

#

when you GET the settings for the first time, check the written header

#

if it matches the local timestamp, okay we're synchronized

#

if not, then show a popup saying the local settings are out of date

#

and offer a restart

austere talon
#

yeah that's what I thought but the restart bit is inconvenient

turbid hatch
#

or block until settings are synchronized, but that slows down startup time

austere talon
#

also what would that header be?

#

why not use an etag

umbral hedge
#

nag bar, "settings changed remotely, restart to apply"

turbid hatch
#

because i forgot etags existed ven

#

๐Ÿ™„

#

duhhh!!!!

austere talon
#

I would use sha1 hash of the encrypted settings data as etag or smth

umbral hedge
#

age of empires really said delet ๐Ÿ’€

turbid hatch
#

m

#

the reason why i said timestamp originally is uhhhh

#

conflict resolution

#

e.g. client has newer settings then cloud because of some reason

#

so when they try and sync it should warn them saying that the settings in the cloud are newer

#

i could do something similar to the auth header

#

where the etag is a b64 of the timestamp of writing and the hash of the data

uneven yacht
#

hewwo where do you report bugs

#

it seems that platformindicators makes discord crash on discord dev

cunning bobcat
#

dev as in the development branch?! the one with the black icon?

uneven yacht
#

yes

cunning bobcat
#

why tf are you using that husk

uneven yacht
#

i'm not

#

a friend is

cunning bobcat
#

oh okay

uneven yacht
cunning bobcat
#

why tf they using that ๐Ÿ’€

uneven yacht
cunning bobcat
turbid hatch
#

its not supported regardless

#

so be prepared to expect a "wontfix"

uneven yacht
#

i mean it shows up in vencord installer so i'd see why some would think it is

turbid hatch
#

though yes it does appear platform indicators is broken

uneven yacht
#

and that person in support is on ptb so yeah

cunning bobcat
#

hmm

#

so it made it into ptb

turbid hatch
#

its on canary too

#

though it doesnt crash

#

this is just a discord dev issue

uneven yacht
#

it crashes when you open settings

turbid hatch
#

yeah thats just a discord dev issue lol

cunning bobcat
#

oh fuck i was gonna test it myself

uneven yacht
#

which is kinda annoying

cunning bobcat
#

but ig not

uneven yacht
#

that person on ptb has the same issue

turbid hatch
#

then i guess platformindicators is just borked

#

ill go have a look

#

but yeah one of the support questions is "if you havent already, have you tried stable?"

charred monolithBOT
uneven yacht
#

canary and ptb gives time for modders to update plugins

cunning bobcat
#

insert comment about powercord using canary here

uneven yacht
#

we don't talk about that

#

is powercord still a thing?

cunning bobcat
#

no lmao

#

it EOL'd before swc hit

turbid hatch
#

replugged came out shortly after and then had to be rewritten for SWC

#

i think they're still rewriting it

cunning bobcat
#

yeah still being rewritten

#

it's going pretty smoothly so far though

turbid hatch
#

its a dying battle tbh

uneven yacht
#

yeah..

#

only mods i know of right now is shelter and vencord

#

shelter doesn't have much

turbid hatch
#

anyway

austere talon
#

haha

turbid hatch
#

thats pretty much why i mainline canary btw

#

cause i run funny vencord

uneven yacht
#

yeah plugin devs should use canary

austere talon
#

my stance on supporting canary and ptb is essentially feel free to report bugs but don't expect them to be fixed until they happen on stable too

turbid hatch
#

dev branch wontfix pls

austere talon
#

cause its too much effort for things they might just revert again

uneven yacht
#

yeah but probably still has to be fixed because changes usually make their way to stable eventually

turbid hatch
#

moment

#

time to define a new content type for vencord setting bodies

austere talon
#

lmao

#

wouldn't just using octet stream be the most sensible

uneven yacht
#

it was naia complaining to me that discord broke

#

so i had to troubleshoot for her

#

guh

turbid hatch
#

you have to add it as a content type parser

#
fastify.addContentTypeParser("application/octet-stream", { parseAs: "buffer" }, (request, body, done) => {
    done(null, body);
});
#

like this

austere talon
#

๐Ÿค”

#

silly

#

why

#

idk anything about node server frameworks, since I'd never choose node for backend

cunning bobcat
#

@turbid hatch ping me when the thing is done so i can reimplement it in python and call it a completely separate project like i did with Project PCB (Powercord Custom Backend trolley)

turbid hatch
#

fastify is primarily a REST-based framework

#

you're mainly dealing with json

austere talon
#

imo go is best for backends

turbid hatch
#

so it has first class support for doing json stuff (e.g. you can just return { abc: true } and it will work fine)

#

but everything else requires plugins

austere talon
#

ig the demand for binary data in backends isn't that big

turbid hatch
#

m, especially when its mostly file uploads

austere talon
#

I wonder what the content type for protobuf is

cunning bobcat
#

why are you doing binary data anyways

turbid hatch
#

so the client can compress and encrypt the settings data

#

instead of server

cunning bobcat
#

oh okay

turbid hatch
#

for all intents and purposes the server is just the world's shittiest K/V store abstraction

umbral hedge
#

intents and purposes*

turbid hatch
#

thats what i said

umbral hedge
austere talon
#

maybe lewi is dealing with intensive purposes here

#

you never know

turbid hatch
#

maybe i'll switch to go

#

xd

austere talon
#

it doesn't really matter u decide

umbral hedge
#

Kitsune.go

turbid hatch
#

im just tempted cuz it makes it easy

austere talon
#

do u know go?

turbid hatch
turbid hatch
austere talon
#

Mister Go

turbid hatch
#

used it for a good few years

#

xd

austere talon
cunning bobcat
austere talon
#

surprised that you even wrote it in node then

turbid hatch
#

habit

austere talon
#

icic

turbid hatch
#

i dont use it enough for backends and i always write stuff in node

#

megu can attest

austere talon
#

lewi has node addiction

turbid hatch
#

p much

umbral hedge
#

same

turbid hatch
#

kitsune's entire infra is in typescript

#

xd

umbral hedge
#

I do everything quicket in node so i just default to node even when i want to try a diff lang

austere talon
#

tbh my main reason to use go for backends is the incredible performance difference

umbral hedge
#

im waiting for ven to force me to use go for something

austere talon
#

mantika wrote reviewdb backend in python initially and after rewriting in go it uses considerably less resources and way shorter response time

turbid hatch
#

tbh the main bottleneck will be redis here

#

unless i switch stores

#

oh i could do that

#

hm

austere talon
#

huh

turbid hatch
#

im using redis atm

austere talon
#

why even redis

#

I never used redis tbh

#

idk if its good

turbid hatch
#

closest to cloudflare k/v

#

and its fast

#

very fast

austere talon
#

I've only ever used postgres

turbid hatch
#

i use it as a caching layer in front of postgres a lot

austere talon
turbid hatch
#

cuz i think fastify is a little faster than redis

#

xd

austere talon
#

huh

umbral hedge
#

redis is nice

austere talon
#

Well I don't think performance matters anyway

umbral hedge
#

fastify is a web framework
redis is a k/v store
wdym "fastify is faster than redis" fear

turbid hatch
#

i mean as long as it returns in less than half a second

#

i think its fine

austere talon
#

since you'll only be requesting it once like every few hours usually

#

and maybe write a few times

umbral hedge
#

lol

austere talon
#

you could make it take 5 seconds to respond and it'd still be good enough

#

just don't make it eat 3tb ram and we good

turbid hatch
#

i think i was trying to say "fastify will be waiting on redis for longer than its dispatching the request"

austere talon
turbid hatch
#

making it not eat ram, not making it eat ram

umbral hedge
austere talon
#

wow lewi is devilbro's son confirmed?

turbid hatch
#

crying

#

kitsune wireguard is dead

#

i was going to show off the encoder ram usage being like

#

minimal

umbral hedge
#

lol

#

tfw removing the port from wg config fixes wg painWatame

turbid hatch
austere talon
#

waitgroup

turbid hatch
#

i dont have a port in it

#

xd

umbral hedge
#

huh aoe 4 doesn't have many civilisations

austere talon
#

megu is a go programmer they already familiar with waitGroups

turbid hatch
#

oooh the server was restarted

#

i think

#

yeah

turbid hatch
#

the kitsune controller container isnt running

austere talon
grave mangoBOT
turbid hatch
#

makes sense

austere talon
#

ignore the variable name two lines below

umbral hedge
#

wiregroup

#

waitguard

turbid hatch
#

its fine we'll restart it when uhhhhh

umbral hedge
turbid hatch
#

kitsune development kicks back off again xd

uneven yacht
#

wiregroup
waitguard
wireguard

turbid hatch
#

WHY NOT JUST

#

ASSET

umbral hedge
turbid hatch
#

yeah dont worry about it

austere talon
turbid hatch
austere talon
#

so in my element that I forgot ass is a real word

umbral hedge
#

Aegisub SubtitleS (ASS)

turbid hatch
#

Advanced SubStation (Alpha)

turbid hatch
umbral hedge
#

i will choose england ๐Ÿด๓ ง๓ ข๓ ฅ๓ ฎ๓ ง๓ ฟ for my civ

cunning bobcat
umbral hedge
#

thats a silly server

cunning bobcat
#

yeah

#

a silly server is unfortunately no longer running

#

(everybody stopped playing and decided to get lives)

austere talon
grave mangoBOT
austere talon
#

githubdone-chan uwu

turbid hatch
#

uwu

austere talon
#

I didn't notice that one either

#

๐Ÿฅน

#

I may be silly

turbid hatch
#

alright

#

i got it working with octet-stream

#

so you can just dump things

#

and yay

#

size limits work

cunning bobcat
umbral hedge
#

ew, the french

#

why are there duplicate civs ๐Ÿ˜ญ

#

dumb game

cunning bobcat
#

average github channel

umbral hedge
#

ye

turbid hatch
#

veeeeeeeeeeeeeeeeen

#

uwu

#

can i have a repooooo

umbral hedge
#

I can make u one

#

what do u want it called

turbid hatch
#

meguuuuuuuuuuuuuuuuuwuuu

#

idk

#

uh

#

Backendโ„ข๏ธ

umbral hedge
#

settings-server

turbid hatch
#

troll

umbral hedge
#

I mean backend makes sense if it's going to eventually (maybe) do more than just settings sync

turbid hatch
#

we could possibly move donators from being a csv file in a gist onto it

#

and etc.

umbral hedge
#

๐Ÿ‘

#

sounds good

#
  • i prefer us only having one server anyways
turbid hatch
#

makes it easier for ven to add peeps

#

ye

turbid hatch
#

so for now it'll just be settings sync but i can uh

#

move it to /settings/ later

turbid hatch
cunning bobcat
#

wtf

#

why

#

that's just horror

umbral hedge
#

the donator badges is a csv file with user id, badge name, image

turbid hatch
#

because its convenient to update

umbral hedge
#

because its easy

#

since they're custom badges

turbid hatch
#

but if we're having a backend we can move it onto there and have it be json

#

and then have a User Interfaceโ„ข๏ธ

#

and maybe get fancy and add the ability for users to customise it or whatever but thats very far future thinking

umbral hedge
turbid hatch
#

lets just get settings synchronized

#

๐Ÿ™

#

invite pl0x

umbral hedge
#

ye

#

1 sec

cunning bobcat
#

invite Captain8771

#

(i will sabotage)

umbral hedge
#

you should(?) be able to push to main

#

but lmk if u cant

turbid hatch
#

yes

#

hawt

#

ill push what i have for now

umbral hedge
#

epic

elfin dew
cunning bobcat
#

simply don't update to fix that

elfin dew
#

beautiful readme

austere talon
#

it's extremely simple to update

cunning bobcat
#

idk just feels wrong

also

csv

turbid hatch
#
56        0.052 git init
57        0.701 git add .
58        0.378 git commit -m "add initial backend code"
59        0.036 git remote add origin https://github.com/Vencord/Backend
60        0.045 git branch -m main
61        1.321 git push -u origin main
62        1.123 git pull
63        1.109 git push -u origin main
64        0.514 git pull origin main
65        0.740 git pull origin main --allow-unrelated-histories
66        1.854 git push -u origin main
elfin dew
#

csv horror

turbid hatch
#

most sane git repo setup

austere talon
#

csv is objectively more human friendly than json

cunning bobcat
#

json?

turbid hatch
#

json is not as easy as

#

copy paste a single line

#

done

austere talon
#

json is painful to write, especially on phone

elfin dew
austere talon
#

I have to do badges with json for Aliucord and I hate it

elfin dew
#

i can read xaml better

cunning bobcat
#

hmm yes can i have a comma here
proceeds to break the csv setup

austere talon
#

for vencord I just add a line to the file like ID,Tooltip,Link

austere talon
#

simple solution

cunning bobcat
#

i will have a comma in my tooltip

austere talon
#

if you want an actual solution, csv literally has a solution for that

#

optionally quoting columns

cunning bobcat
#

what

turbid hatch
#

i cant believe people are only just finding out its csv

#

wtf

cunning bobcat
#

i saw this and thought i was on the list (i only memorised the first 2 digits of my id)

austere talon
grave mangoBOT
# austere talon https://github.com/Vendicated/Vencord/blob/main/src/plugins/apiBadges.tsx#L88-L9...

**apiBadges.tsx: **Lines 88-97

const badges = await fetch("https://gist.githubusercontent.com/Vendicated/51a3dd775f6920429ec6e9b735ca7f01/raw/badges.csv").then(r => r.text());
const lines = badges.trim().split("\n");
if (lines.shift() !== "id,tooltip,image") {
    new Logger("BadgeAPI").error("Invalid badges.csv file!");
    return;
}
for (const line of lines) {
    const [id, tooltip, image] = line.split(",");
    DonorBadges[id] = { image, tooltip };
}
austere talon
turbid hatch
#

there you go you can make it python now

cunning bobcat
#

wait i should've found this i've looked through your gists trying to find the webpack grabber thing twice before

cunning bobcat
austere talon
#

I think that gist is private

cunning bobcat
#

its a github repo

austere talon
#

yeah the gist is private

turbid hatch
#

it is a secret gist ye

cunning bobcat
#

why do you have both a gist and a repo husk

austere talon
#

what

turbid hatch
#

no the badges gist is private

#

there is no badges repo

cunning bobcat
#

oh

#

i am an idiot lmao

austere talon
turbid hatch
#

xd

austere talon
#

this is json and its hell to maintain

#

every time I want to add a badge I need to copy paste the json scaffold from a different file

#

json is just bad for humans

#

it was never meant for humans

cunning bobcat
turbid hatch
#

oh ven

#

top level await my beloved

#

<3

umbral hedge
#

real

austere talon
#

esm blbctscrd

umbral hedge
#

esmbot

cunning bobcat
turbid hatch
#

yeah node-fetch is esm now

cunning bobcat
#

@woeful bison

turbid hatch
#

and i thought instead of downgrading why dont i just make it esm

austere talon
#

terrifying

turbid hatch
#

then i dont need an async function main() {}

umbral hedge
#

the "gigantic" map on aoe4 is pretty small
maybe theres a mod to improve it

austere talon
#

there's a cjs version of node fetch

turbid hatch
#

or async iife

#

yeahhhh but ehhh

#

this works xd

austere talon
#

you will love importing from "./foo.js" in a typescript project

turbid hatch
#

i already have to do source-map-support/register.js

austere talon
#

so bad

#

typescript dumb

cunning bobcat
#

then use js dummy

austere talon
#

I hate that ts doesn't do that for u

grave mangoBOT
austere talon
#

this should probably be byteLength

turbid hatch
#

oh yep

austere talon
#

and the code should be 413 not 400

turbid hatch
umbral hedge
#

413

turbid hatch
#

that probably goes for the one above too then xd

austere talon
turbid hatch
#

w

#

what?

#

oooookay...

#

it pushed fine the second time

austere talon
#

https

#

why do u use https

#

token based auth? blbctscrd

turbid hatch
#

why not use https

#

i have a v2 pat

umbral hedge
#

you will use ssh immediately

austere talon
#

ssh better

turbid hatch
#

github recommends https

#

xd

austere talon
#

๐Ÿค”

turbid hatch
#

but i will switch to ssh at some point

austere talon
#

GitHub have changed their recommendation several times (example).

It appears that they currently recommend HTTPS because it is the easiest to set up on the widest range of networks and platforms, and by users who are new to all this.

turbid hatch
#

o

austere talon
#

interesting

turbid hatch
#

tbf that is true

#

my corponet doesnt allow oubound/inbound ssh connections

#

only local ones

austere talon
#

I think ssh will always be more secure

#

since using a passphrase is less secure than private key

turbid hatch
#

i haev my ssh key as a signing key too

austere talon
#

but eh it doesn't matter much :P

turbid hatch
#

so makes sense

austere talon
#

just make sure you don't accidently expose your .git folder via a Web server

#

or you'll leak ur PAT

turbid hatch
austere talon
turbid hatch
#

vrum

turbid hatch
#

^^

austere talon
#

fair fair

limber skiff
austere talon
#

why does everyone post react component stack lmao

#

it's so useless

#

the actual error above is way more useful

umbral hedge
#

:')

#

we will generate stack errors from sourcemaps

austere talon
#

wp.findByCode("STATUS_YELLOW", "TWITCH", "STATUS_GREY")

#

le not found

#

getStatusColor

turbid hatch
#

yeah it seems like they changed how status colors work

#

xd

#

colorsighted still works though since that changes the actual status masks rather than the component itself

austere talon
#

that function is like

function getStatusColor(status) {
  switch (status) {
    case Status.IDLE:
      return CssVars.STATUS_YELLOW;
    ...
  }
}
#

i cant find it anymore sooo

turbid hatch
#

is that for getting the colors

austere talon
#

yes

#

we can probably just use this

turbid hatch
#

yeah that doesnt seem to exist anymore - its just used by some build override warning

austere talon
#

status_grey is gone

#

why do they hardcode it here

#

i cant even find that in the code

turbid hatch
austere talon
turbid hatch
#

found it

austere talon
#

ohhhh

#

interesting

turbid hatch
#

statusColor is a prop

#

on whatever this component is

austere talon
#

i = e.statusColor

#

#23a55a

#

why does devtools show it as rgb

#

that is the function

turbid hatch
#

so they changed it to use their palette?

#

instead of specific STATUS_ colors

austere talon
#

ye

turbid hatch
#

interesting

austere talon
turbid hatch
#

.TWITCH isnt in there

austere talon
#

lewi blind

turbid hatch
#

.TWITCH is in there

austere talon
#

okay works

charred monolithBOT
austere talon
turbid hatch
#

fix confirm!

austere talon
#

i hate that we have to find functions by code like that

#

i am anger

#

ah yeah

#

discord renamed their colours??

#

where did status-green-600 go

#

its fucking gone

turbid hatch
#

burned to ashes

umbral hedge
#

the

austere talon
#

its just green-600?

#

i hate discord

#

its just primary-400?

#

ewww what is that

#

we back

charred monolithBOT
austere talon
#

The crash seems to come from Badges api not using ErrorBoundaries

#

bad

umbral hedge
#

doesnt badges api just inject into an array tho

charred monolithBOT
umbral hedge
#

ah

austere talon
turbid hatch
#

yes

#

most of them

austere talon
# umbral hedge ah

this is why for any custom component you should always wrap it in an ErrorBoundary if you can

#

also this is the first time in my life that I had a use for &&=

#

so win in my book

umbral hedge
charred monolithBOT
austere talon
#

not possible

charred monolithBOT
austere talon
#

๐Ÿคจ

#

NOOOO WHY DOESNT IT HAVE FAKEROOT

charred monolithBOT
limber skiff
#

I just posted it cuz whatever

#

it wasn't my screenshot lol

charred monolithBOT
austere talon
#

LOL

#

THAT MESSAGE

#

I added that years ago jokingly

#

It looks like youโ€™re in an unsupported country for Brave Creators with Uphold, so your channels wonโ€™t appear as verified. However, once your country is supported, youโ€™ll automatically become verified and be eligible to receive payouts to your Uphold account. Learn more.

turbid hatch
#

lol

austere talon
#

wait i have 10 bucks on uphold

#

im rich

charred monolithBOT
umbral hedge
#

United States only

charred monolithBOT
austere talon
#

did you solve World Hunger

limber skiff
#

not yet

austere talon
#

what are the fixes

limber skiff
#

Properly handle when someone has nitro but is using the send fake emoji option

#

like sending the emojis normally unless they don't have external emojis perms

#

same thing for stickers

#

bruh distok.top is gone

austere talon
#

lol

#

you can ask in their discord

limber skiff
#

ask what lol

austere talon
#

whether they just forgot to renew

limber skiff
#

oh lol

austere talon
#

wait we use distok for fake nitro right

austere talon
#

I have all lottie emotes as gifs in #assets

#

we can use that if necessary

#

but I assume they just forgot

#

I left their discord a while ago and don't remenber invite

frail skyBOT
#
Bad Patches

VoiceChatDoubleClick (had no effect):
ID: 298716
Match: /onClick:([A-Za-z_$][\w$]*)(?=,.{0,30}className:"channelMention")/

RevealAllSpoilers (found no module):
ID: -
Match: .revealSpoiler=function

Bad Starts

None

Discord Errors

#
Bad Patches

VoiceChatDoubleClick (had no effect):
ID: 298716
Match: /onClick:([A-Za-z_$][\w$]*)(?=,.{0,30}className:"channelMention")/

RevealAllSpoilers (found no module):
ID: -
Match: .revealSpoiler=function

Bad Starts

None

Discord Errors

austere talon
#

so we dont have 3 million commits fixing fakenitro

limber skiff
#

yeah

limber skiff
#

I fixed that yesterday

austere talon
#

which

limber skiff
#

vc double click

austere talon
#

xd

#

did i maybe not merge

limber skiff
#

wait

#

no

#

that's my patch

#

maybe it didn't work?

austere talon
#

inb4 they reverted change

limber skiff
#

I will cry

charred monolithBOT
limber skiff
#

nah

#

it may just be me being dumb

#

it works

#

??

#

wtf

#

how is that not working

#

god

#

maybe it's a lazy loaded module that has the find I use

austere talon
#

distok server

limber skiff
#

ven I will just send you the thing to change and you will commit

#

I dont want to make another PR lol

#

change .EMOJI_IN_MESSAGE_HOVER to [[2*

austere talon
austere talon
limber skiff
#

it's a find

#

||ignore this||

austere talon
#

wha

limber skiff
#

lol I'm confusing you so much

grave mangoBOT
limber skiff
grave mangoBOT
limber skiff
#

I don't want to make another pr just to fix those

austere talon
#

wtf is removeObscurity

#

did they add some other spoiler-like thing

limber skiff
#

no they renamed it

rare shale
#

I would like to point that it's sleeping time

#

I will now go

charred monolithBOT
#

#313

At present, you can authorize the Vencord OAuth application (in app) and sync settings to and from the server, with timestamp validation. Next steps would be to sync on startup if necessary, encryption(?), actually check if settings sync is enabled for certain operations, and then finally prettying up the UI before shipping.

The backend server (https://github.com/Vencord/Backend) is a running project alongside this PR and nothing is final as of writing.

austere talon
#

@limber skiff

limber skiff
#

F

#

can't we just convert discord stickers to gif too

#

aren't they apngs or something

turbid hatch
# charred monolith

this is heavy spaghetti rn btw, ill tidy it up nearer to review time but i just wanted to push the code out so i didnt forget xd

austere talon
turbid hatch
#

neato

limber skiff
austere talon
turbid hatch
#

ye

limber skiff
#

I don't even have the experiment enabled

austere talon
#

i made it public

limber skiff
austere talon
#

therr u go

#

most of them are good

#

its just that one i sent

#

i have a huge json that has the id to link mappings on my laptop

limber skiff
#

how did you generate them

austere talon
#

script

#

i have it on github somewhere

#

just search lottie in my repos or smth

limber skiff
#

can you regen them?

austere talon
#

idk why it says apng2gif

#

instead of lottie2gif

#

i may be stupid

charred monolithBOT
rare shale
#

a wrong chat

#

sorry

charred monolithBOT
spark cove
austere talon
spark cove
#

nop

austere talon
#

you can use it to divide your code into regions then fold specific regions

spark cove
#

oo

#

interesting

austere talon
#

I think the feature was invented by Visual Studio? but might be wrong

spark cove
#

yea that makes sense

turbid hatch
#

ye it was part of c# as a noop preprocessor comment

#

for ides

#

in vsc you can use them anywhere to create folds

#

its just for organisation

#

ill split them out to proper files later :P

#

@spark cove

spark cove
#

ah real

charred monolithBOT
charred monolithBOT
#
[Vencord/Installer] New branch created: dependabot/go\_modules/golang\.org/x/image\-0\.5\.0
#

Bumps golang.org/x/image from 0.1.0 to 0.5.0.

Commits

e6c2a4c tiff: don't pre-allocate giant slices before reading
3db422c go.mod: update golang.org/x dependencies
bb712eb go.mod: update golang.org/x dependencies
9b8a3be font/plan9font: limit the font image's dimensions
c5235ae font/plan9font: fix byteoffset for non-zero origin
0888fdd font/plan9font: fix bounds overflow
9fdfde7 go.mod: update golang.org/x dependencies
See full diff in compare view

[!...

austere talon
#

GO AWAY DEPENDABOT

#

why does it do that I didn't enable it for that repo

charred monolithBOT
#
[Vencord/Installer] branch deleted: dependabot/go\_modules/golang\.org/x/image\-0\.5\.0
charred monolithBOT
charred monolithBOT
#

Discord Account

RobertR11#7841

What happens when the bug or crash occurs?

Using the CSS :has() selector in the QuickCSS editor doesn't do anything. Other selectors like :not() do work though.

Example of :has() that removes the nitro button above the direct messages list, which does work in other CSS editors like Stylus, but not in Vencord:

.channel-1Shao0:has(a[href="/store"]) {
    display: none;
}

What is the expected behaviour?

I expect the :has() select...

cunning bobcat
#

no way i was actually helpful (real?)

austere talon
#

lol did that guy expect us to backport has selector

cunning bobcat
#

no i think they just didnt know about it not being on discord

charred monolithBOT
charred monolithBOT
jagged cloak
#

oh jooby

charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
frail skyBOT
#
Bad Patches

VoiceChatDoubleClick (had no effect):
ID: 298716
Match: /onClick:([A-Za-z_$][\w$]*)(?=,.{0,30}className:"channelMention")/

RevealAllSpoilers (found no module):
ID: -
Match: .revealSpoiler=function

Bad Starts

None

Discord Errors

#
Bad Patches

VoiceChatDoubleClick (had no effect):
ID: 298716
Match: /onClick:([A-Za-z_$][\w$]*)(?=,.{0,30}className:"channelMention")/

RevealAllSpoilers (found no module):
ID: -
Match: .revealSpoiler=function

Bad Starts

None

Discord Errors

charred monolithBOT
charred monolithBOT
#

i don't think this is something I'm interested in doing since I don't think it's very useful and just adds more things I need to maintain, not to mention once there's a winget package, people will also ask for a scoop package, a deb, an aur package, and so on. The installer is something you usually will only need to use once anyway so I don't really see the point and if you really find it that much of a chore you could write a simple powershell script to do it for u!

I'm pretty sure winge...

charred monolithBOT
#

Discord Account

refact0r#1494

What happens when the bug or crash occurs?

Unlike the vencord and updater pages, the toggle buttons on the plugins page don't get a checked-16gMAN class when toggled on. This means that themes can't change the color of the button when toggled on. (i hate green)

What is the expected behaviour?

The toggle button should have
class="container-1QtPKm default-colors checked-16gMAN" when toggled on
class="container-1QtPKm default-colors" when t...

charred monolithBOT
woeful sable
#

no

#

I'm so close to denying this PR

charred monolithBOT
#

I'll share the code from my, now abandoned, timezones plugin

import { Devs } from "@utils/constants";
import { useForceUpdater } from "@utils/misc";
import definePlugin from "@utils/types";
import { findByCodeLazy, findByPropsLazy } from "@webpack";
import { Text, useEffect, useState } from "@webpack/common";

import { timezones } from "./all_timezones";

const EditIcon = findByCodeLazy("M19.2929 9.8299L19.9409 9.18278C21.353 7.77064 21.353 5.47197 19.9409");
const ...
charred monolithBOT
quaint sapphire
#

test

quaint sapphire
#

@crude hearth why do you save the timezones like that?

#

you could have used an object instead of mixing them with the other settings

#

jesus

crude hearth
quaint sapphire
#

anyways, im working on your plugin as well, since there is no reason to work on a separate one

crude hearth
#

tbh I think most of the plugin is done

#

right now I need to be sure its working and make a modal to set timezones

#

instead of ugly retarded slash commands

quaint sapphire
#

i think this should be enough to safely migrate any existing settings

    start() {
        const settings = () => Vencord.Settings.plugins.Timezones;
        const keys = Object.keys(settings()).filter(key => key.startsWith("timezones."));

        const migratedTimezones = settings().timezones || {};
        for (const key of keys) {
            migratedTimezones[key] = settings()[key];
            delete settings()[key];
        }
        settings().timezones = migratedTimezones;
    },
#

why did I wrap the settings in a function? cause I am paranoid about the proxy

#

yep works

#

phew

#

i also added input validation

#

same list can be used for a dropdown in the modal to pick the timezone

crude hearth
#

theres probably no one using it

#

since its a draft

charred monolithBOT
austere talon
#

use DataStore

charred monolithBOT
charred monolithBOT
quaint sapphire
austere talon
#

you should not store them in settings anyway

charred monolithBOT
limber skiff
#

guhhh

#

I did that wrong

austere talon
#

don't use settings via Settings.plugins.YourPlugin

#

bad

limber skiff
#

oh right

#

I didn't even notice that

austere talon
#

@spark cove make eslint rule that enforces use of settings store NOW

limber skiff
#

@rustic nova define plugin settings outside the definePlugin object, export it and use there

woeful sable
#

I will open PR migrating all plugins to definePluginSettings

spark cove
#

making that rule implies fixing all to pass tests

austere talon
#

unless you make it a warn for now

spark cove
#

true

austere talon
#

actually making an eslint rule for this should be super easy I think?

#

check if property "plugins" is read on an object called "Settings"

#

done

quaint sapphire
austere talon
#

is there a way to load plugins from local files

woeful sable
#

what if u just check for @deprecated usage

austere talon
quaint sapphire
austere talon
#

settings aren't the appropriate place to store data

#

Use DataStore

quaint sapphire
#

ah yes

austere talon
#

it has similar api but async

quaint sapphire
#

to be fair, the data store api was still in the works when i started making my other plugins

woeful sable
limber skiff
#

you will

#

just kidding only if you really wants

quaint sapphire
#

jk

austere talon