#๐พ-core-development
1 messages ยท Page 26 of 1
it's an issue with old chromium I think
you close it, click on the unformatted and format
I have it set to always format
I'll just keep using armcord
do you use Windows or Linux?
F
is using armcord for development better
on Linux you can easily use system electron and it fixes it
overall
depends
it has properly working devtools and restarts a bit faster, but no DiscordNative so you can only test the browser side of things
god we need web development
I don't think I've used discord native once
well
maybe for volume booster
lol
Also it stores settings in localStorage so it's a bit harder to edit settings when you're in a crash loop
ah
we will make armcord vencord fork that saves vencord settings locally
I would do it but I would need to kinda learn from scratch
since most if not all context menus are lazy loaded we could auto patch them
we will add hot-reloading
except actuallyy maybe https://esbuild.github.io/api/#live-reload
whew armcord starts so much faster
- find module id and export name of openContextMenu
- add following patch
{
find: "(THE_ID)",
all: true,
replace: {
match: /(?<=\b(\i)=\i\(THE_ID\)).+$/,
replacement: (code, varName) => {
const re = new RegExp(`${varName}\\.${EXPORT_NAME_FROM_STEP_1}\\(.+?\\)`, "g");
return code.replace(re, "$&".slice(0, -1) + ",arguments)");
}
}
}
would just make all functions calling it pass arguments to it as well
instead of regex we could instead find the index of name.export( then use balanced parentheses matching
what if I did live-reloading per-plugin
you cant live reload patches
yeah but u can other stuff
our css already live reloads
but its kinda broken
idk why
**preload.ts: **Lines 50-56
if (IS_DEV) {
// persistent means keep process running if watcher is the only thing still running
// which we obviously don't want
watch(rendererCss, { persistent: false }, () => {
document.getElementById("vencord-css-core")!.textContent = readFileSync(rendererCss, "utf-8");
});
}
I ran into similar issues with quartet css
I will fix
debounce probably fixes actually
why dont u webFrame.insertCSS
terrible
wdym?
it just doesnt work 90% of the time

alr I will take a look soon
idk
messing around with lastfm rn
i did initially but there was some issue with it
actually i remember
specificity issue
note how our css is at the end of the document, outside head
this is because if we put it in head, discord will put their css afterwards and now discord's css is more specific than ours, overwriting it
unreal I will have to PR a PR again
so uselss
I changed too much to just suggest
Self explanatory, pls merg
this is a bit wonky and requires exactly 1 space, why not support any amount of whitespace?
const passwords = settings.store.savedPasswords.split(",").map(s => s.trim());
ven if I give u patch can u push it to #483 
wait whats going on with these ds? Also regex.test is the way to go when you want a boolean!
if (/^\W/.test(message.content)) content = `d ${message.content}d`;
d d
do
The d's simulate a normal message with 2 words. This is necessary to avoid stegcloak mangling the decrypted message
doesnt the message content already have funny words
is this just to account for single word messages or what?
not if "do not use cover" is used

ven will apply my malware patch
im so glad i got out of that first time pr hell
@olive vapor well can u push this
If that affects more than just LastFM, that should probably be a different PR. I can merge it into mine afterwards.
doesn't really matter, I just edited CustomRPC cuz their code is based off LastFM's and had the same bug
if you'd prefer I can PR to your repo lol
I mean, that would make the most sense since you authored the changes lol
btw, just letting you know I just force-pushed to my PR to sync the fork.
yeye
you don't need to, ven usually does that for u before merging
eh the website gave me a button to do it automatically lol
hell
@austere talon any way to get keybinds working on armcord
@olive vapor PR'd
no
i was gonna reimp,ement them
Looking at the PR. Any particular reason fetchTrackData was changed back to return TrackData | null? Is there a problem with returning undefined?
not a big fan of undefined being used like that
setActivity was also changed to | null because that's what discord actually checks for in their code
Didn't know that. Got it.
oh wait is that why the presence wasn't clearing.
i thought that was just discord being dumb lol
it should clear anyway but yeah it probably breaks something
Also:
logger.error("Failed to query Last.fm API:", e);
```I had the error in a new line just for nitpicky reasons. I just hate having everything in one line. lol
that makes the actual error object appear in console which might be useful-ish but yeah I understand
i mean, in that case, yeah probably keep it lol
apparently last.fm doesnt set statusText
(and yes that is set by the server http is quite silly)
const json = await res.json();
if (!res.ok || json.error) {
```the second condition is unnecessary because Last.FM gives an HTTP error anyways if API errors. however, won't this throw an error if we get a error outside of the API since no JSON is returned?
I'd keep it just in case
in the event that happens it'll give a bit more useful error message
let me see what I can do about invalid json
wouldn't just throw an error trying to request the JSON?
It might just be better to
if (!res.ok) {
try {
const json = await res.json();
// Throw API error.
} catch {
// Throw error from Request
}
}
check my latest commit
let json: Record<string, any> | null;
try {
json = await res.json();
} catch {
json = null;
}
if (!res.ok || !json || json.error) {
// ...
}
kindaa ugly
bleh
wait lol u can do this apparently ```ts
const json = await res.json().catch(() => null) as Record<string, any> | null;
@austere talon pick insanity
it still does cuz it only depends on large_text
no it's different than original
oh
the only change (to your code) is it doesnt set the small image as lastfm-small so u don't have two logos for no reason
i mean
i kept saying to replace the large logo placeholder with lastfm's album placeholder for a reason
now u don't need
eh i think it looks better if it's consistent personally
what why
idk why you're bothering me so much abt this I literally don't agree with the change
because the giant lastfm logo looks ugly af? ยฏ_(ใ)_/ยฏ
and because inconsistent UI looks ugly af?
if u care so much just change it yourself lol
only problem is i don't have access to the dev app
using the lastfm placeholder makes 0 sense
its lastfm's placeholder, not Discord's
using the lastfm icon makes way more sense as a placeholder
since that's what you're doing, scrobbling last.fm
just add a setting to use a custom application id
we can bikeshed all day long about everything but theres no point
just make a setting to have a custom app id
easy fix
and last.fm is supposed to provide placeholders already. i just see using lastfm's placeholder as a workaround for lastfm api being stupid.
None
None
1
None
None
ISSUE FIXED, HERE'S HOW:
My discord account was marked as a "Staff Account" despite all experiments being disabled in settings. To allow notifications, I had to enable "READ STATE STAFF" and set it to "TREATMENT 1" which now manually will allow me to unmute specific DMs as I want to.
whooooooop i fixed it took ages lesgoo
nah this started before I actually got vencord
i made a timeline to be sure
I had to actually ENABLE an experiment to fix it coz my account is still marked as a staff accout serverside
at least parially
I enabled this banner thing which lets me manually umute stuff
sponsoring tf outta vencord tho
<3
also, seperate thing, glad to see ur a based kotlin enjoyer too
thanks!! <3
lol what thats so weird
well glad u fixed it
what's the best way to update a component every time a flux event is fired? i currently do it by subscribing inside of a useEffect hook but that feels stupid
either that or you can useStateFromStores
implemented the notification api. i also removed the setting which toggles desktop notifications while discord is unfocused since you added that in the api and added an option to show notices at the top of the screen as well (instead of making notifications not auto dismiss)
i also removed the setting which toggles desktop notifications while discord is unfocused
what?
@austere talon i removed because of this
you added desktop notifications to the api already
so theres no need for the setting on the plugin anymore
oh you were talking about the plugin's feature, i thought you removed it from the notificiations api
seems like a race condition issue
no idea where it happens cuz react call stacks are horrible
I would have to spent a year to find it
but updating the user in the store early prevents the issue cuz it reaches some fallback function to get the missing user and finds it in the store
This plugin allows WACUP's presence to be displayed as Listening To in Discord.
It might be easier to eventually just have one plugin that changes Listening to type prefix for popular music apps that have rich presence.
its ok u can make another day
will
None
None
ShowHiddenChannels (had no effect):
ID: 323431
Match: /(?<=function [A-Za-z_$][\w$]*\((?<props>[A-Za-z_$][\w$]*)\).{1,1800}"more-options-popout"\)\);if\()/
None
๐
we love changing 1800 to 2000 for fixing the patch
I will include here
lolz
This client has all the extensions one would need except one... favorite media. This is the only extension that is keeping me from switching fully to vencord. Basically it is just the ability to be able to favorite videos, audio, and images, and be able to tag them, search them, as well as put them in a folder.
Here's the link to the original: https://betterdiscord.app/plugin/FavoriteMedia
https://github.com/Vendicated/Vencord/discussions/316
Someone is working on favourite folders.
Sef Explanatory, but you login via tokens
why would you want this walking security risk, just use the account switcher built in to discord like a normal person
I think it would be useful if we had the ability to whitelist/blacklist file extensions; e.g. I want to randomize my image names as they are not normally shown anyway but potentially leak info without the user noticing. In contrast, you may not want to randomize PDF names etc.
An alternative/additional idea to this would be to have a button while uploading files to disable name randomization just once (per-file like spoiler button?)
wtf is that embed
what's wrong with ut
@Vendicated im happy that im not going to add anything or change this now so i think it's ready for a final review
where did you find this module?
what module?
the one for opening context menus
why do u ask
gonna do the thing
stable?
ye
guh I'm so dumb
I was checking the source code that renders the context menu (like way above the place it makes the menu)
Yes, I have just been busy recently.
ShowHiddenChannels (had no effect):
ID: 323431
Match: /(?<=function [A-Za-z_$][\w$]*\((?<props>[A-Za-z_$][\w$]*)\).{1,1800}"more-options-popout"\)\);if\()/
None
rip
ShowHiddenChannels (had no effect):
ID: 290075
Match: /(?<=function [A-Za-z_$][\w$]*\((?<props>[A-Za-z_$][\w$]*)\).{1,1800}"more-options-popout"\)\);if\()/
None
omg
I absolutely love that find
how he
Waiting for context menu api
stuff i wanna add before i'd consider this ready
- [ ] drag and drop tabs
- [ ] typing indicators
- [ ] "open in new tab" context menu option for guilds/channels/message links
- [ ] right click on the "Jump" button of search results to open in a new tab
- [ ] remember tabs on close
- [ ] specific set of tabs at startup
- [ ] look good on light theme
also i didn't test this with group dm's and favorite servers so probably all hell breaks losse there
screenshots

its a really easy patch
and its more performant too 
done, i'll include it in a PR shortly
nah, dont have two plugins in one
make a seperate pr
it is what it is
Just cant have two plugins in one pr, as one plugin could be acceptable but the other not
make branches
yes
that was what i was going to do
but i wrote RCE on the main branch by accident
๐
thats why i said i need to fix my local repo by having the PR merged

although i suppose i could make a branch and then revert history
but then i have two incompatible branches so id rather not
(pls merge ven, give the people what they want (rolecoloreverywhere))
i do not want rolecoloreverywhere and i am the people ๐
schizophrenia
make separate pr pls
oki
pls merge RCE so i can do that xd
i ruined my repo cuz i did it on main by mistake
you can fix it easily
hmm
rename main branch
make new branch synced with mainline
make that the new main branch
ah but ive done merge commits so that wont work, itll create deviating histories
one time setup:
git remote add upstream https://github.com/Vendicated/Vencord
make a new branch and reset it
git checkout -b colorsighted
git fetch upstream
git reset -hard upstream/main
do changes then
git add .
git commit -m "..."
git push -u origin colorsighted
oh that'll work
then i can undo my stupid main branch changes once RCE is merged

uh oh no that wont work cuz it'll create a dupe commit with the contributor info

wdym
resetting to upstream means im not in the contributor file anymore
if i create a new commit that touches that it'll be a merge mess
i really fumbled the bag on this one
the Devs constant
they'd need to add themselves to it in both prs
altough
now that i think about it, that shouldn't be a problem if github is actualyl competent
How's that a mess u just press restore and it's fixed :P
or do a merge commit
it's only messy if you change a lot about a file and a different pr also changes a lot in that file
nope
idk it just seems like its fucked if i do this
doesn't make a difference to cherry pick
the cherry picked commit is gonna be squashed away
so if i add myself to the constants again
it should be fine when both prs are merged?
yes
alright lets see how this goes
you simply get a merge conflict but it takes 5 seconds to fix
ive done something like this before and it was fucked when i had to fix it :P
so hopefully itll be okay
but yeah this is basically all you need to know to pr from multiple branches at once
better advice is to never use the main branch
leave it untouched and always use feature branches
i thought i had done my commits on a feature branch
but i went through my history and it errored
and i didnt know until it was a bit too late
:P
so i just committed (no pun intended) and went on with the development
#500, removes the SVG masks from statuses so that they look like standard colors (except for typing and mobile indicators)
btw can't u do that with css?
"yeah but some people dont want to use css cause it causes lag" and a plugin wont??
well the plugin is just a single patch and nothing else
all im doing is just replacing Masks.STATUS_(IDLE|DND|STREAMING|OFFLINE) to be Masks.STATUS_ONLINE which is objectively more performant than writing CSS to replace the individual masks
even if its by a little bit
have you done the benchmarks
yes, its fractionally more performant
may i see the benchmark results
because a) there's no extra style rules being loaded and b) it means people can just toggle a switch and dont have to find css / write it themselves
i'll reperform it for you, i didnt write it down
performance doesn't matter cause both will perform just fine :P
I still think css is the better solution cause more robust, but in any case that plugin is super simple so it's whatever
well i redid it by profiling with both the plugin and some css that has the path data hardcoded and its more or less the same now on my PC, must've just been an edge case when i originally did it
shrug
eh, i was considering the response of "just use css" but i thought that the patch is so simple its worth doing as a plugin (especially since its just a one time thing), and it means extra css doesnt need to be loaded into the client
btw my next thing might be that global settings sync thats been in discussions since december
i wanna try some proofs of concept first before i say anything though
how would you implement the server side tho
probably just a cf worker
the serverside seems the least problematic, worker + workers kv will do the job just fine
its the implementation detail which is the problem
what encryption to use? how to share keys? what happens if someone gets a url?
stuff like that
and there's a multitude of solutions
just have to find the best one, hence why i'd wanna do several PoCs before saying anything concrete about how i'd implement it
i know how id want to do the encryption and storage bit, just not how to do the authentication bit
discord oauth :P
oh no i mean like
after that
what's the best way of sharing a secret or whatever
cause if you're doing settings sync it has to be able to be done cross-device :P
though i suppose you could say, get the secret key from one install and copy it to another
but itd be much more convenient if you could just login and it auto gets the secret
but then that means we're storing secrets somewhere which is a lil bit bleh
ah i think i solved it
nvm
okay i know how to do it
https://discord.coffee/9kYLnNL.png something like this
this is like a 5 minute thing though so obviously a lot of this is subject to change, but thats the rough idea
what the fuck is a pepper
static secret
like a salt except not included with the hash, but it doesnt change
https://en.wikipedia.org/wiki/Pepper_(cryptography) wikipedia explains this better than i do
In cryptography, a pepper is a secret added to an input such as a password during hashing with a cryptographic hash function. This value differs from a salt in that it is not stored alongside a password hash, but rather the pepper is kept separate in some other medium, such as a Hardware Security Module. Note that the National Institute of Stan...
so this is a pepper and not salt
yes
cool
salts are a dynamic value that changes, and its stored with the hash
their purpose is to make a hash unique even on duplicate inputs
peppers are specifically just so that even if you know the input you cant calculate a hash without also knowing the pepper (since its not stored with the salt), but without a salt it produces the same hash on duplicate inputs
i see
salts can't be used here because otherwise we'd have to enumerate every key to find your id's hash (essentially bruteforcing ourselves)
which is expensive in computation and infeasible
but a pepper makes it harder to find your k/v pair which is good for anonymity
make the user enter password lol
letting people pick their passwords will lead to people picking insecure passwords
and if they lose their password, well.. fuck!
not like settings need strong protection :P
mm
debatable if plugins start storing secrets in settings
because yes, we could just binpack them for storage optimization and have a secret along with their user id
but we dont know what will be going in the settings file at all
real
ShowHiddenChannels (had no effect):
ID: 290075
Match: /(?<=function [A-Za-z_$][\w$]*\((?<props>[A-Za-z_$][\w$]*)\).{1,1800}"more-options-popout"\)\);if\()/
VoiceChatDoubleClick (found no module):
ID: -
Match: className:"channelMention",iconType:(
None
ShowHiddenChannels (had no effect):
ID: 290075
Match: /(?<=function [A-Za-z_$][\w$]*\((?<props>[A-Za-z_$][\w$]*)\).{1,1800}"more-options-popout"\)\);if\()/
VoiceChatDoubleClick (found no module):
ID: -
Match: className:"channelMention",iconType:(
None
brooooo i merge 5 prs and look away for 2s and theres 10 new ones
you are welcome
gonna retire soon im getting too old
isn't non fixed size lookbehind bad bad
It doesn't turn bad bad on that case, patch is super quick
meanwhile https://discord.coffee/jZrnvF1.png
it is impossible
if there's exactly 1 other person typing then there's three people typing
nookies, ven, lewimachine and 1 other are typing
and there's a different message for three
no
it says nookies, ven and 2 others are typing
oh it only shows 2 users?
ye
yes
nop
let me undo it
oh you did already

anyways I changed it on typing indicator too lol
return GuildMemberStore.getNick(guildId, userId) ?? UserStore.getUser(userId).username;
also how about friend nicknames?
using hooks after a potential early return is dangerous, you should probably move this above the early return
it would be much nicer to use Discord's strings for this instead, that way it's localised
I want to make sure discord doesn't modify the object before I do the checks
it would be much nicer to use Discord's strings for this instead, that way it's localised
typing tweaks doesn't modify the discord string anymore ๐ข
then i remembred i told u to do that
lol
you can still use their strings for everything else
or just use the default one maybe and use better one if TypingTweaks is on?
sure
did u figure out a way to grab the props?
fire
barely, the patch is quick for most
how many are loaded right away and how many lazily?
let me see
i'm not a fan of doing it per navId, what if someone wants to patch multiple navIds? We could just call the callbacks unconditionally and let the consumer be responsible of checking the navId and or children
what if you dont want to check navId
but some other stuff
like a contextMenu logger that logs all opens
ok github
interesting
i would prefer inlining this over the break since it likely performs better and the breaks with nested loops are a bti confusing to follow. Also on a different note, all waitFors ( I think ) across Vencord never find anything here because they are ran too early, they just call this function so it also works fine when ran later
couldn't this be a waitFor?
I'm not a fan of this spread, not only will it unnecessarily make and destruct a lot of arrays, it also doesn't cover the case of modifying something like children[0].props.children. Also are you sure children is always an array? The name is a bit misleading, in the case of a single child it will be a flat ReactNode. If you really want to do this, wrapping it with a Proxy would be more robust, but I personally don't think it's necessary to even do this in the first place
and then there is one that takes 3
https://discord.coffee/88mZMV6.png woa it works, hawt
oh look ur pr merged cleanly @turbid hatch
did it
btw im not really too keen on using cloudflare
privacy with that is questionable
the difference is that you then repeat less code cause waitFor handles the looping and stuff for u :P
oh i could try fly
i was meaning to try that at some point
or would you just wanna stick it on a vps somewhere
idk tbh, that's why I never touched it
If i were to make it I would probably selfhost it
selfhost it is!
though then there's other things to think about like not getting ddosed and people dumping 1tb shit
i was going to enforce a 32kb limit for settings data
which is more than enough
thats accounting for json settings + quickcss
i mainly just don't like cloudflare because they have a lot of privacy invasive services and are basically a monopoly at this point
Idk if Vercel and similar are any better, but I personally (and so do many other people I know of) don't really trust cf
yeah that seems good
3gb is nothing
(we obviously dont have that many users haha i just chose an arbitrary high number)
vercel doesnt provide what id need sadly
though i can get the same setup with node and redis so its no biggie
:P
and yeah precisely!
you dont need that much storage for settings sync so we could throw it on some cheapish vps and itll handle it fine
like ZP: () => ge
also re: ddos, idk, ill take care of it xd
if you get a server from hetzner their ddos protection should be good enough for it
wtf is that
emdash
its 2023 already jeeeez ๐ค
it didnt encode properly in the patch
discord living in 2023
so i just used the unicode for it
oh fair
i have
if mantika didnt blow it up
oracle lmao
Ah.
yknow what
i can work with it
ive not used oracle linux before but its a learning experience
not the best but its free :P
have u used centos/fedora/rhel
okay i know how to use oracle linux
it was either ubuntu or dollar store rhel and honestly ubuntu haunts my darkest nightmares
but yeah, i can whip up a self-hosted version of that tomorrow
shouldnt be too difficult
then vencord settings sync can become a reality :3
nono dont worry
Also could you please type the function params? Helps to catch silly bugs like typos / partial refactors later down the road
return GuildMemberStore.getMember(guildId, userId)?.colorString ?? null;
u can do all the below via
if (!(guildId ??= ChannelStore.getChannel(channelId!)?.guild_id)) return null;
(there's no need to check channelId, getChannel handles null case)
other than these it looks good 
well u pred it so its yours now 


true true
RCE is my baby now
oh wait no i wrote that
i just forgot i could do the shorthand
xd
appreciate this high effort meme
god they butchered paint in win11
those return types are inline hints right
yeh
im so torn on inline hints
On one handtheyre really useful
on the other hand they are so ugly
i use inlays a lot to understand typing
so i usually keep them off :P
i dont like how they look but they provide a lot of context to me
i wanna use them but every time i do i get headache
e.g. for a query string, it can return string | string[] | undefined
and i get confused whenever i cant do certain things
and the big error doesnt help
anyway resolved 
okay looks good, thank you!
ive been rolling with it since the start
and youve seen me @ you with dev updates xd
though do test anyway
cuz
i mightve missed something
too late
ur doing what i asked you to nerd
omg amazing plugin
omg
i am so god damn proud of that

but someone will def request that in 2 business milliseconds
well they can shit and piss on the floor
whats a coloured role i can ping
usurper
thats the role dot plugin
didnt know it affected role mentions

i need to get in the habit of testing everything before merging
its effort but there were more multiple times where I merged smth that looked perfectly okay
and then everything exploded

a lot of them are stale tbh
whats the powertools colour picker shortcut
i guess supersedes isnt a word github knows
i can nenver remember
not ctrl
mm yes
i just colour picked the ๐บ
i think for text and roles i use #ff6c91 cause the color contrasts better
oh there we go
i liked the other one better tbh (but thats just me, u decide)
hmm
@austere talon you will review again https://github.com/Vendicated/Vencord/pull/502
i like the softer tone cause this one is a bit bright
ah hold on
try
#f5c2e7
that's catppuccin pink which is what i use on my site
perfect
not as harsh
what's the sponsor amount to get a custom profile badge hehe

ny rolle
uhhhh 5 iirc
ya
oh can i have one then? :3
how do i redeemmm
you Ask Ven
yay
so much pink
look at this fuckin CATTTT
god i hate how much js switch sucks
port rust match to js and I'll merge
literally any language but js has better switch

pattern matching is my best friend
const tooltipText = switch (typingUsersArray.length) {
0 => return,
1 => Formatters.Messages.ONE_USER_TYPING.format({ a: getDisplayName(guildId, typingUsersArray[0]) }),
2 => ...
3 => ...,
4 => ...
}
port to js immediately
i think u could actually do this with arrays
const tooltipText = switcherino(typingUsersArray.length, {
0: () => null,
1: () => ...,
2: () => ...,
...
})
could do this
type Branches<T, R> = { [matches: T]: () => R } & { _: () => R };
function switcherino<T, R>(input: T, branches: Branches<T, R>): R {
return branches[input].?() ?? branches._();
}
something like that will do it i think
sick
whats the problem
type Switchable = string | number | symbol;
type Branches<T extends Switchable, R> = { [matches in T]: () => R } & { _: () => R };
function switcherino<T extends Switchable, R>(input: T, branches: Branches<T, R>): R {
return branches[input]?.() ?? branches._();
}
youre importing from index.ts
:PP
i forgor ๐
from @api/Ssettings xd
I can see the enabled plugins from there?
the one in index is just that reexported lol
oh
**Vencord.ts: **Lines 19-25
export * as Api from "./api";
export * as Plugins from "./plugins";
export * as Util from "./utils";
export * as QuickCss from "./utils/quickCss";
export * as Updater from "./utils/updater";
export * as Webpack from "./webpack";
export { PlainSettings, Settings };
we love crashing exploirer
whaaaaa
https://discord.coffee/3KTYwoW.gif hey its completely typesafe
my pc is dying lol
type Branches<T extends PropertyKey, R> = { [matches in T]: () => R } & { _: () => R };
function switcherino<T extends PropertyKey, R>(input: T, branches: Branches<T, R>): R {
return branches[input]?.() ?? branches._();
}
i dont know what the use case would be though xd
anyway the reason you shouldnt import from main is cause circular import
index -> plugins -> yourPlugin -> index
it might not cause issues now but it causes insane pain if unlucky
maybe ignore self?
aight done ven
sorry I got carried away and forgot
what do you want the tooltip text to be?
okay added!
ven ven can you merge typing indicator before sleep
did u port rust match to js yet
how do I unsub from this crap
that pr is long closed and I'm neither subscribed to that person's repo nor the pr
no
no idea then
YES I AM DOUCHEBAG
lmao
@limber skiff if you want best (https://github.com/Vendicated/Vencord/pull/502/commits/718c6b3802a4584cb3e3236676da02369ff12920), remove the filter and instead do a delete before the filter
on the object
smart
done
just nitpicking at this point
I like it anyways lol
I'm gonna look at the rest tmrw
Good
we love discord
crazy how github 500s like weekly
come on you're literally Microsoft get ur shit together
yes beautiful
facts
can you see how it looks when there's 3 people with insanely long names typing
This might need to be reopened, I'm having this happen in Firefox with the add-on and nothing says there are any updates. My custom CSS in quickCSS still works from when it was working before, but opening the window now to edit it shows a blank window. GitHub raw links fail to fetch as well and don't do anything.

Firefox issue
I'm sorry, I'm confused? Firefox is a supported browser, no? I don't see anything in the repo about Firefox being unsupported
The issue is caused by Firefox and there's nothing we can do to fix it because it simply doesn't apply the networking rules. It works fine on any Chromium based browser
The issue is caused by Firefox and there's nothing we can do to fix it because it simply doesn't apply the networking rules. It works fine on any Chromium based browser
Ohhh ok! Would you mind adding that to the repo for others to see? (Any maybe suggesting something like Stylus as an alternative for CSS?)
I'm so good
fix a dumb when unfix a smort comes along
I hope these things get ironed out in Firefox'd end, I wad thinking of switching back to it but the more I wait the more Edge just works for me. Tough seeing it like that.
I currently use thorium, it's pretty good. Ungoogled chromium is decent too
That's great for new install, I'll probably be doing a few soon on my end. To add to it, maybe it could be added as a Scoop.sh package, or maybe even Chocolatey. It's easy to have a script that installs and upgrades everything without the chore of dealing with multiple UACs or prompts, and Vencord could be a perfect addition to that script.
secret is generated on first oauth
and stored
subsequent oauths return the same secret so its easy to just log in
and then headers are just
Authorization: base64(userId:secret)
are you sure? don't secrets expire after a while and you have to refresh them with the refresh token u get
so nothing awfully fancy
oh nono
custom secret




