#๐พ-core-development
1 messages ยท Page 71 of 1
yeah
i love aliening webp
Is there a good way to get a array of mentioned roles in a message? Cause when I try to do it, it seems to not exist
I thought so
but this errors
this is such a 1118512699836481547 moment
is there somthing else im fucking up here then?
wut?
discord change somthing?
.length
my vencord keeps crashing and i cant figure out why, should i post here or #๐ฅ-vencord-support-๐ฅ?
vns
support
in typescript doing ?. checks to see if the type is undefined or null before calling a member
hm
thanks
aww
you're my favorite automated mechanical dispensary ๐ฅฐ
I lied it is still broken. If I send a message that is just a role mention this is what I get http://zip.penny.moe/u/dB8oj9.png. This is the code http://zip.penny.moe/u/qmtC9F.png
like these are my messages XD http://zip.penny.moe/u/Vc2N4i.png
mhm
its werid
werid

uh
what are u doing this for
honestly i don't even understand why you're using mentioned roles
it will not work if allowed mentions is used
just do unconditional regex replace
then you can obtain the role from discord
Well im doing it to replace the raw text id of the roles to a more readable state
but if there is a better way im all ears
what i just said
unconditional replace
also discord might already have a transform function
do mentions show up human readable in notifs
yes
I mean it would make sense
try it
if they do you should just use that
if they don't it's not hard to reimplement
const cleanContent = message.content
.replace(/<@!?(\d{17,20})>/g, (_, id) => `@${UserStore.getUser(id)?.username || "unknown-user"}`)
.replace(/<@&(\d{17,20})>/g, ...)
....
do that for channels, roles, users, maybe some more
oh yeah emotes too
yesss get some sleep
yop
I think I got emotes to work with this
but that part is out of the old ver
a
lol
ill rewrite it tomorrow
XD
match into replace is usually anti pattern
just replace directly
it might be a habit from other languages but js replace allows a replacer function so you can do everything with them directly
Ill rewrite it after I research how tf regex actually works cause ive always gotten help with it and i should prob understand what im doing
ah, nice
anyway

thx for the help
regex is a fairly easy concept honestly
it's just very hard to read
you get used to it
rest well!!
is there actually any relevance in doing that
what does that achieve
if you have a malicious actor listening to keypresses on your system you kinda have deeper issues than someone stealing ur discord password
no?
yes i know that
but
also are you sure chromium doesn't already do that by default
nope you're not sure?
i don't see why it wouldn't do it by default for password fields
lmao
i kinda figured
cause it would be stupid for it to not do it
i wonder why it's even an electron api at that point
seems somewhat pointless, no?
option command s, make it a longer shortcut 
If I open the app and then close it using the close button, vencord isn't quit, just the window is closed, but re-clicking on the icon doesn't open it back. Also please merge the PR fixing the duplicate quit button
This should be fixed by #51 I believe
Issue can be fixed if relationship viewer gets accepted
M
vns
The bug happens when you have Vencord running, any icons that are supposed to show up from external apps don't show up until you quit out of Vencord. (I feel like this partially happens because you can't Hide Vencord)
Here's a video of me using Mac's built in screen recorder (which also has an icon for the topbar) before and after closing Vencord.
https://github.com/Vendicated/Vencord/assets/45497981/00fd0328-fac7-459d-b1df-ad38db9b468e
Not sure why it was closed. Maybe they didn't like something. Maybe they didn't want to bother reviewing it.
The author themselves closed the PR. I am unsure if this is due to discussions in Discord or whatnot.
From a contributor standpoint, this is a HUGE change and as aforementioned would be better suited for when the third-party plugin system comes out fully. The only reasonable way this would get reviewed would be if this was split into two separate PRs (one for the BetterSc...
I'd love to see a Vencord version of DeArrow for YouTube: https://dearrow.ajay.app/
BetterDiscord has a plugin for it already.
finally a cool suggestion
i've been meaning to try dearrow for a while
love ajay
dearrow so good
(I turned off title formatting and thumbnail changing)
shouldn't this specify a default option?
this match is needlessly complicated. It would be much cleaner to either use arguments[0] to access the first argument to the surrounding function, or to use a lookbehind to obtain the parameter name
@austere talon is it?
for example something like
match: /ref:\i,className:.{0,20}markup/,
replace: "...$self.getInlineStyle({user:arguments[0].message.author,channelId:arguments[0].message.channel_id}),$&"
i didnt think it was that complicated
i wanted to make sure it was futureproofed :P
usually you should avoid using ranges
.{250,300}
thsi should only be used for very few characters or as a last resort
you match the entire start of the function just to capture e
you should usually avoid that, instead rely on arguments or use a lookbehind
i have zero idea how to write lookbehinds
for example this would also work:
/ref:\i,className:.{0,20}markup(?<=(\i)\.message.+?)/
what this does is first match the beginning of it
aka match ref:v,className:...markup
then the lookbehind walks back until it finds \i.message
then it finishes the match by walking forward again from that point to see if the rest of the lookbehind works
take this example of it
it first finds c then walks back until it finds b
now it walks forward again up to the point it matched c to check if the rest of the lookbehind matches
if we didn't have the .+? in the lookbehind it wouldnt match
isnt that the entire point of the extension
lol
it allows us to write very precise minimal patches without having to match huge chunks of functions
its neat
not a fan of changing the formatting
anyway in this case you don't need it since you can just use arguments
i am so confused why is the lookbehind in front
you mean behind?
there's an important difference
idgi why are they different
@austere talon i dont understand? shouldnt what specify a default option?
you dont specify which option is the default
so by default it will be undefined
but i did right?
https://i.imgur.com/1XSzg3U.png
performance
if the lookbehind is in front it first checks the lookbehind then the actual match
if the lookbehind is in the back it first finds the match then walks back for the lookbehind
very small module, behind = 0.1ms, in front = 1ms
on bigger modules the difference is 1ms vs 200ms
because function.+? is very unspecific so it will try a looooot of combinations and walk the entire module many many times
in selects you should use default:true in the default option instead
oooh oops
yours might also work, i honestly dont know
but having default: true is more maintainable
with yours if you accidently rename the option and forget to change the default
good luck
also that search seems very convoluted
i feel like using a proper library would be more maintainable
React components should always be created via jsx, not by calling it as a function:
const updaterContent = <UpdaterBody />;
React components should be named in PascalCase
function UpdaterBody() {
There doesn't seem to be any reason for this to require a variable, is there?
<UpdaterContent />
What's this for? It would be better to just call this at the top of the component
alright started using a library now.
should get the library from a url or keep at as npm?
because now everyone has to reinstall their packages to update eh (i think)
thats fine
or even just string.includes
emote search also just uses includes
and its fine imo
Ven reviewing my PR 
ya
honestly the array rendering seems kinda poorly written
there is at least one construct that is O(n^2) and multiple other unnecessary loops
you should try to refactor it to one single for loop
horror
I remember seeing it when writing it but I think reasoning was there are only 144? 122? plugins so it wouldn't matter too too much. Lemme relook at it and remember why I chose not to fix it
honestly smth like query.split(" ").some(x => url.includes(x)) is prob good
well
.every
I also thought about changing the settings to make it much much better
hmm
Rn it's super dumb they have to be hardcoded
{plugins.filter(isEnabled).map(p => {
const checked = includedPlugins.some(...);
})}
I think what would be way better is if it has a toolbox action then have a toggle
this is what i was talkking about btw
Rightt
it's already two loops cause of filter map
then also another nested loop over includedPlugins
andu have more loops above
it can likely be rewritten better by using one single for loop doing everything
and also be cleaner code
My inexperience in js-- horror
urls.map(url => [query.split(" ").reduce((p, v) => p + +(url.includes(v)), 0), url]).sort().filter([c] => c).map([, url] => url) 
itsss sooo niceeee
I thought there had to be at least two loops for the plugin settings part:
- to loop through all the possible plugins and determine which are enabled
- to loop through all the ones that we want added to the toolbox itself
also smh discord how come an img embed not have the image prop ughhh
tenor album posted in 2017
somehow image went missing lol
so specific
ive been doing too much rust i almost wrote function foo() => x {}
oh lmao
Writing reminder to myself to fix needing to hardcode misc plugin actions because it's dumb
IgnoreActivities (had no effect):
ID: 173273
Match: /!([A-Za-z_$][\w$]*)(\)return null;var [A-Za-z_$][\w$]*=([A-Za-z_$][\w$]*)\.overlay.+?children:)(\[.{0,70}overlayStatusText.+?\])(?=}\)}\(\))/
None
font-weight: bold;
color: purple;
[kb store] KeybindStore: Looking for callback action SOUNDBOARD_HOLD but it doesn't exist in this version. Skipping
%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 ```
Downloading the full bad domains file
IgnoreActivities (had no effect):
ID: 173273
Match: /!([A-Za-z_$][\w$]*)(\)return null;var [A-Za-z_$][\w$]*=([A-Za-z_$][\w$]*)\.overlay.+?children:)(\[.{0,70}overlayStatusText.+?\])(?=}\)}\(\))/
None
font-weight: bold;
color: purple;
resetSocketOnError Cannot access 'npe' before initialization
%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 ```
Discord Account
opticraft
What happens when the bug or crash occurs?
VoiceChatDoubleClick joins VCs with a single click
What is the expected behaviour?
To not join the VC
How do you recreate this bug or crash?
- Enable VoiceChatDoubleClick
- Double click a voice chat
Errors
Nothing other than this, doesn't seem to be related
175c7fd4cae4563bb201.js:5600 [Spellchecker] sh is not a valid locale.
(anonymous) @ 175c7fd4cae4563bb201.js:5600
175c7fd4cae4563bb...
there will be an update where they will put the Loggers in MessaloggerV2?
This adds better rpc integration for Apple Music (Preview) and the unofficial rpc client AMWin-RP. This is mostly a direct copy from the old richerCider plugin. I made this after hearing about their opinions and uninstalling that app for good.
That's weird... I'm not sure whether the tray even works because it's never shown up on macOS for me
But for the hiding part #51 should be able to fix it
this will show two entries on Windows
this boolean should be extracted into a variable to make the code more readable
const useTray = Settings.store.minimizeToTray !== false && Settings.store.tray !== false;
if (isQuitting || (!useTray && process.platform !== "darwin")) return;
i'm not a fan of these ternary array spreads. It would be more readable to have something like so:
[
process.platform === "darwin" && {
label: "Hide",
role: "hide"
}
].filter(Boolean);
How do you even use this entry now that we hid the menubar?
Hi! The original plugin was in part removed because it was an overly specific plugin and only covers one single niche use case. This plugin suffers from the same problem. It would be much better to make a more general purpose plugin that allows you to modify all sorts of Activities, not just this specific one
I think this is good to merge, unless you have anything else you would like to change?
Should I also add this in Vencord Desktop Settings then?
(It's available on macOS since the menu bar is always there)
Doing that really messes up the types <img src="https://cdn.discordapp.com/emojis/1065724903652855938.webp?size=48&quality=lossless" width="24" height="24">
.filter(Boolean) my hatred
this is why we have special functions for this in vencord
**guards.ts: **Lines 19-25
export function isTruthy<T>(item: T): item is Exclude<T, 0 | "" | false | null | undefined> {
return Boolean(item);
}
export function isNonNullish<T>(item: T): item is Exclude<T, null | undefined> {
return item != null;
}
[...].filter(isTruthy);
**filter-boolean.d.ts: **Lines 1-9
/// <reference path="utils.d.ts" />
interface Array<T> {
filter(predicate: BooleanConstructor, thisArg?: any): TSReset.NonFalsy<T>[];
}
interface ReadonlyArray<T> {
filter(predicate: BooleanConstructor, thisArg?: any): TSReset.NonFalsy<T>[];
}
did you try these and have it working? @placid hinge
ohh i see
wait where r u again
oooh right
wait did u go there for work / education
or haveu always lived there
ah
you seem american thats why i asked
usually when i meet people living in china on discord they're americans who went there for work
plus your english is very good
are u on vpn 24/7
funny
china moment
thats cool tho
oh its past midnight
rest well ryan!!
e
e
there are so many good PRs right now
cannot wait
for them to not be merged? yeah, crazy right? crazy? i was crazy once...
@austere talon genuine question, if i rewrite uwuifier will you consider merging it
Sounds good to me, I don't think there's anything else needed to change

whar
im considering dropping it entirely
since it's kinda useless and can be done with textreplace for the most part

but release will take a bit more
yeah
i wanna get some of ryans prs merged once some issues are resolved
do I get to keep my contrib tag @austere talon
and possibly update electron to fix wayland screenshare
ye
o oki ty 
discord try not to fetch clyde settings every 10 seconds challenge
lol
this doesn't seem necessary. In preload you can just access it directly, in rendered you can use navigator.platform
is having our own styles even necessary? Discord already has their own platform class they add to the html element, which is for example platform-win on windows
yeah, the platform-osx class has almost the same styles as you attached
having it in the tray would likely be the most logical
Ooo blacklist for message embed 
uh huh
for vesktop
not vencord main repo
i still need to look at those too
ryan is the merge conflict master
every single pr has conflicts

Oo why
Why not main repo
It seems super simple to implement
For my dev build I did this
i think ven is saying they wanna get ryan's prs on vesktop merged, not the vencord ones
Ohhhhh
Misunderstood
Ty
WTF that's such a good name
ventop.
yes
Yes
Ah doesn't show the tag itself
Vencord/Vesktop
I want to be able to organize my servers with specific images or text(s) that only I'd be able to see, and I believe this would be a great addition to the client (as either a plugin or built-in).
seems like some of the Vencord Desktop changes (the ones that haven't been released yet) have made it impossible to maximize the window/resize it

I looked at the changes and nothing jumped out at me
that shouldn't be happening unless you have transparency enabled in settings... ๐ค
can you run VencordDesktop.Settings.store.transparencyOption in devtools
might've been an oversight on my part
VencordDesktop.Settings.store.transparencyOption
undefined
I checked out to this commit to confirm it was definitely this causing it https://github.com/Vencord/Desktop/commit/0415cb77f78b57becf3cbb6ce0fcc28798c4de61
let me checkout to the head again
yeah i figured since i'm setting the window transparency
the issue is i check if the transparency option is none and set transparency to false, otherwise it sets it to true and does the rest
so maybe i should also check if it's undefined or just default it to none
setting it to none and relaunching fixed it 
also does this mean that using any of the transparency options will always prevent you from resizing the window?
yes that's one of the downsides
aww that's a shame
IgnoreActivities (had no effect):
ID: 173273
Match: /!([A-Za-z_$][\w$]*)(\)return null;var [A-Za-z_$][\w$]*=([A-Za-z_$][\w$]*)\.overlay.+?children:)(\[.{0,70}overlayStatusText.+?\])(?=}\)}\(\))/
None
font-weight: bold;
color: purple;
resetSocketOnError Cannot access 'npe' before initialization
%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 ```
Wait, Acrylic/transparency locks the window size? Huh, strange
OpenInApp (had no effect):
ID: 967783
Match: /(?<=href:[A-Za-z_$][\w$]*,onClick:function\(\)\{)(?=return [A-Za-z_$][\w$]*=([A-Za-z_$][\w$]*)\.type,.{0,50}CONNECTED_ACCOUNT_VIEWED)/
IgnoreActivities (had no effect):
ID: 173273
Match: /!([A-Za-z_$][\w$]*)(\)return null;var [A-Za-z_$][\w$]*=([A-Za-z_$][\w$]*)\.overlay.+?children:)(\[.{0,70}overlayStatusText.+?\])(?=}\)}\(\))/
None
font-weight: bold;
color: purple;
resetSocketOnError Cannot access 'Jde' before initialization
%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 ```
for some reason it disables the button but i'm pretty sure you can still do it manually
Don't see why it would completely disable window resizing, since it seems to work just fine elsewhere
is it a quirk with electrons implementation?
maybe i should just check for undefined and selecting "None" in settings also just sets it to undefined? since it just sets transparent to false when the transparency option is set to none anyway
just remove the property
inb4 setting it to false causes issues somehow
electron momento
well the issue is that it doesn't default to any option
which is an oversight on my part 
so that person had their transparency option as undefined but since i check for none their window was still transparent
oh lol
i mean our settings kinda meh
we should add default values
yea i was looking and i only really found ""default"" values in the first launch tour
The installation command for linux, i.e., sudo sh -c "$(curl -sS https://raw.githubusercontent.com/Vendicated/VencordInstaller/main/install.sh) doesn't show installation prompts in Linux systems. Issue might look like a bug but removing flags doesn't work.
Ways to replicate
- Copy installation command for Linux from https://github.com/Vencord/Installer
- Paste in terminal and hit enter
- If the process goes right (in creating the issue ofc), it will show this output

Also can't even find anything about it in vesktop either, like how do I use it on vesktop?
Ah I see
fffffff Add vesktop to .cspell.json - Vendicated
oh ty for the fix ven 
Like discord's new emoji pack feature. (No Text To Speech video on it - https://youtu.be/RRmVSrKV7dc?t=273 ) You guys could made a emoji pack plugin where if you like a servers emojis you could "press get emoji pack" and then you would be joined into that server, then vencord would copy the emoji link and paste it in a server made for emojis. Then leave the server. Then when you want to use a emoji from that server you would just open the emoji picker and click that emoji and it would send as...
#๐ฅ-vencord-support-๐ฅ only more reason to rename to Vesktop
whar
@Vendicated I tested it and it kinda works.
- There is a dep conflict about the required version of es-lint. I ignored it by using --force since its just es-lint
- The buil from source section refers to the repo still as Vencord/Desktop, even tho its now Vencord/Vesktop. It still works with the old name, but im not sure for how long GitHub keeps an alias like that alive, so better change it
- It works, but is super tedious to use. I recorded the stuff i need to go trough, thats easier...
vc user volume only goes up to 100% for some reason ??? ven plz fix
vesktop:
discord+vencord:
@rancid dragon it's "intentional" because it's the same behavior as stock web
oh
it could probably be implemented i dunno but yeah
i think that's also why the user volume boost plugin is desktop only
not possiblke probably
There a way to make some JS run when Discord starts?
Thank you for testing! We will likely just have to make it skip the screen picker in discord specifically for wayland and it'll be fine. The other duplicate prompts are upstream bug
I LOVE
OpenInApp (had no effect):
ID: 967783
Match: /(?<=href:[A-Za-z_$][\w$]*,onClick:function\(\)\{)(?=return [A-Za-z_$][\w$]*=([A-Za-z_$][\w$]*)\.type,.{0,50}CONNECTED_ACCOUNT_VIEWED)/
IgnoreActivities (had no effect):
ID: 173273
Match: /!([A-Za-z_$][\w$]*)(\)return null;var [A-Za-z_$][\w$]*=([A-Za-z_$][\w$]*)\.overlay.+?children:)(\[.{0,70}overlayStatusText.+?\])(?=}\)}\(\))/
None
font-weight: bold;
color: purple;
resetSocketOnError Cannot access 'Jde' before initialization
%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 ```
OpenInApp (had no effect):
ID: 967783
Match: /(?<=href:[A-Za-z_$][\w$]*,onClick:function\(\)\{)(?=return [A-Za-z_$][\w$]*=([A-Za-z_$][\w$]*)\.type,.{0,50}CONNECTED_ACCOUNT_VIEWED)/
IgnoreActivities (had no effect):
ID: 526557
Match: /!([A-Za-z_$][\w$]*)(\)return null;var [A-Za-z_$][\w$]*=([A-Za-z_$][\w$]*)\.overlay.+?children:)(\[.{0,70}overlayStatusText.+?\])(?=}\)}\(\))/
None
font-weight: bold;
color: purple;
resetSocketOnError Cannot access 'Xde' before initialization
%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 ```
Xd
if string.includes is fine then this should also be fine right? https://github.com/Vendicated/Vencord/pull/1386/commits/bc7a56189fb0a18ed1b8266ba997ad642580de6c#diff-f34725e05953c2becf0e7f5df411027515f54719ebfde1eb1f8332dbb5dbd700R226-R244
its a bit better than .includes because you can do stuff like tenor your gif which will only search for tenor gifs. it also has a scoring thingy so the most relevant gif is at the top and its very simple.
I wonder if it's possible to somehow modify the discord updater to auto install vencord if the host changes
it doesnt seem to even work lol
do u use opรผenasar or no
nah
windows right
i dont
didnt you say vencord keeps uninjecting off canary
BD
:P
fix this then
but dk if its possible
we might have to monkey patch like process.exit
fixxxie
I'll try sometime
let me run the updater to see what the console logs
GRRR
now that I want to test
it didnt uninject
vesktop 
rate my theme ๐ฅ
there's nothing to fix
it works fine
if you can't join servers that's a you issue
your account is flagged or smth
works on my machine

theres not much we can do
it's just Discord deciding you're somehow suspicious
also getting captcha is fairly normal
just pass it and it should let u in, no?
what do the super props look like on vesktop
same as web?
just web
{
"os": "Windows",
"browser": "Chrome",
"device": "",
"system_locale": "en-GB",
"browser_user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36",
"browser_version": "114.0.0.0",
"os_version": "10",
"referrer": "",
"referring_domain": "",
"referrer_current": "",
"referring_domain_current": "",
"release_channel": "stable",
"client_build_number": 212637,
"client_event_source": null
}
well it doesn't have referrer
but that shouldnt be an issue
that's fine
goodbye. you will be missed.
you may have a few questions
why?
uwuifier was a useless and a meme plugin. it was never meant to be serious. with vencord getting more and more mainstream and meme/useless plugins now having their own place (#third-party-plugins channel on discord)
what happens next?
i will 100% work on either a textreplace rule or a third party plu...
damn not uwuifier
@austere talon pinging you in case you missed it
o7
echo not aware of the PR backlog
wha

enlighten me please
ven eepy 
ven so ๐ฝ

explosion

does this not cause issues? Since now it expects there to be the entire Discord titlebar
70ca06e fix: remove duplicate quit items on macOS (#49) - ryanccn
consider using a const enum for this
message: "Are you sure you want to reset Vencord Desktop? This will log you out and clear other local settings.",
Aside my other proposed changes,
- Please update the name from Vencord Desktop to Vesktop
- "reset Vesktop" kind of implies that Vesktop settings are also reset, which is not actually the case. We should either also reset those settings or rephrase it
Yes, platform-win leads to there being no padding at the top
platform-linux on the other hand has no effect. As such I would remove the windows and linux logic and only use the osx class
i don't like that this patch assigns to the variable. If Discord ever updates their bundler and this becomes a const, it will likely lead to a crash.
i suggest something like
match: /(?<=" platform-overlay"\):)\i/,
replace: "$self.getPlatformClass()"
idk ๐ญ
this is a "renaming .webm to .mp4 to convert the file" type beat but he tried to compress it
i think it's because github only allows you to upload certain file types and names zip as the first one
so that person just went ah yeah lets rename it to zip
silly
i prefer my theory
i mean
that actually works for a lot of apps
true
cause they have arbitrary restrictions on the formats you can use but the libraries they use actually support more
it's true for Discord
mkvs don't embed but rename to mp4 and they suddenly work โจ
First contribution, resolves #323
Adds a very simple "Show New" option in plugin settings that will show plugins with the "New" badge.
if (searchValue.status === SearchStatus.NEW && !newPlugins?.includes(plugin.name)) return false;
yop
vendy can we discuss my pr 
yes
||can i have my permissions to thirdparty plugins back so i can have it there tho i wont shitpost pinky promise||
okay
omg ty 
no more echo
NOOOO 
065ab75 Add "Show New" option in plugin settings (#1416) - MrDiamondDog
there is a plugin i want but nobody made it yet (for some reason despite having been mentioned many times) favorite media
MEOW MEMOW MOEW
cause anyone who wouldve made it by now dont like patching
uwuifier still not deleted ๐ญ
Is this even ready or still a draft? Considering there are several TODO comments
Hi! This is not really substantial enough to be a plugin. Perhaps add it to moreCommands instead?
Hello!
I don't find this very useful. Why would someone want this instead of just opening reddit directly? The code is also very messy, using raw dom manipulation instead of proper patches
As such, I will unfortunately have to reject this. Thanks for your effort anyway!
Has this not been implemented yet?!?!?!
What's the point of this function? Can't you just call .remove() directly?
hmm. I don't think this will work like you expect it to. The .on creates a new array function wrapping cb, which differs from cb. You'll have to store the arrow function in a variable and use the same one in the remove
same as above, this function should use DataStore.update for an atomic update
You're likely better off just storing a Set in the DataStore. This guarantees unique snippets and has way nicer methods for removing single items
This function is also not atomic, meaning it can lead to race conditions. DataStore.update should be used instead for an atomic update
this fine seems very generic and could appear in many places. Is there a reason it's this way and doesn't target something more specific?
this access seems dangerous. I would wrap this in a try catch for safety
Looks good for the most part. Could we also add author and channel (black|white)list? The same setting could be used, just dump all ids into one and check whether any of those 3 ids are included
this split is obsolete. You can just .includes() on the raw string
there is no reason to pass this as a prop. settings should already be a global variable - if not, make it one - so just use it directly
not totally
It can still block things like youtube activity
but i will prob edit the plugin and add to the discord functionality so you can ignore activity only instead of the whole game being detected
This code doesn't seem right. You removed the setDock line and MACOS_ICON_PATH seems unused
i was gonna ping ryan but uh oh
6d35be7 feat: use inset title bar style on macOS (#47) - ryanccn
d884b7d feat: add "Reset Vesktop" option to menu & tray... - ryanccn
Sorry this is a draft, should I convert it to a draft pr?
Huh, types are fine in VS Code
That likely means our typescript dependency is outdated
splash themeing seems pretty nice, I would never have thought of doing it this way
why is typescript a devdep anyway
but a slight nit is that it won't update properly if you change your theme
not sure how we could best fix that
perhaps you could also persist variables on https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event ?
making Object.prototype.into soon
there doesn't seem to be the need for this to be async
export function createSplashWindow() {
Technically this shouldn't be necessary, but i would prefer if you checked document.readyState first to make sure this callback always runs even if the document is somehow already loaded
Much similar to here https://github.com/Vencord/Vesktop/blob/main/src/preload/index.ts#L29-L35
Also, as mentioned on Discord, with this approach the variables won't be properly updated if you change theme in any way. One solution would be to use the beforeunload event to save them another time right before closing the app. Though I'm not sure if this is actually called if you Alt+F4 (or equivalent). If no, there are likely similar electron apis that can achieve this
ryan too smart

OpenInApp (had no effect):
ID: 967783
Match: /(?<=href:[A-Za-z_$][\w$]*,onClick:function\(\)\{)(?=return [A-Za-z_$][\w$]*=([A-Za-z_$][\w$]*)\.type,.{0,50}CONNECTED_ACCOUNT_VIEWED)/
IgnoreActivities (had no effect):
ID: 146345
Match: /!([A-Za-z_$][\w$]*)(\)return null;var [A-Za-z_$][\w$]*=([A-Za-z_$][\w$]*)\.overlay.+?children:)(\[.{0,70}overlayStatusText.+?\])(?=}\)}\(\))/
None
font-weight: bold;
color: purple;
resetSocketOnError Cannot access 'Qde' before initialization
%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 ```
OpenInApp (had no effect):
ID: 967783
Match: /(?<=href:[A-Za-z_$][\w$]*,onClick:function\(\)\{)(?=return [A-Za-z_$][\w$]*=([A-Za-z_$][\w$]*)\.type,.{0,50}CONNECTED_ACCOUNT_VIEWED)/
IgnoreActivities (had no effect):
ID: 146345
Match: /!([A-Za-z_$][\w$]*)(\)return null;var [A-Za-z_$][\w$]*=([A-Za-z_$][\w$]*)\.overlay.+?children:)(\[.{0,70}overlayStatusText.+?\])(?=}\)}\(\))/
None
font-weight: bold;
color: purple;
resetSocketOnError Cannot access 'lpe' before initialization
%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 ```
hmm, it seems like this doesn't work with Discord's nitro themes. It would be really nice if they were also supported
fg-semi-trans should also be changed so the border has the proper colour

Discord Account
itz_coffee
What happens when the bug or crash occurs?
The userscript isn't working with either Vencord or Userscripts on safari
What is the expected behaviour?
Vencord should load on the web page
Safari: Version 17.0 (19616.1.20.11.3)
Discord: Stable 212637 (6da172b)
Mac: Sonoma 14.0
How do you recreate this bug or crash?
- Download Tampermonkey or Userscripts from the app store
- Add vencord userscript
- Open the discord web app
Errors
...
If anyone makes this with an input box for custom formatting and everything, I think adding in the functionality of #1010 would be awesome as well, with placeholders for "hours/minutes/seconds ago" and the like
Yes please! That makes it easier for me to keep track. Let me know once it's ready :3
:3
:3
:3
Yeah that constant can probably be removed, you donโt need a setIcon call on macOS
oh huh?
i swear i added it because it was needed
or maybe i just added it because i also added it for windows (where it is needed)
Looks good for the most part. Could we also add author and channel (black|white)list? The same setting could be used, just dump all ids into one and check whether any of those 3 ids are included
@Vendicated done!
description: "Guild/channel/user IDs to blacklist or whitelist (separate with comma)",
xd
yeah it's a gradient
i don't expect you to have the entire gradient, but picking like the primary colour of the theme is what i was thinking
idk if that's possible, i haven't looked into themes much
if it's not then no stress
what are the glow variables defined as
are they just colours?
should be fine
you're using computed style map, no?
isn't it already computed for u
or you could hardcode colour for each theme 
OMG NOOOO ๐ญ
@cunning canyon only got phone now?
i've kinda been wondering why you've been less active
yes
wym a color parser
make the -branch installs report the file path and the auto mode report the baranch too
In the moment you can't copy the text of the Discord Pronouns (at least with pronoundb enabled)
it would be nice to be able to select and copy the text like the rest on your profile.
you can likely do this with css by setting user-select: text on it
in any case vencord shouldn't change its behaviour so this is likely a discord bug / choice
you're right, adding
[class*="pronouns-"] { user-select: text; }
to the quickCSS fixed this.
i'd like to see this as the default in vencord, though
i'm sure people wouldn't mind
I disagree. This is the default discord behaviour and what you're proposing is a somewhat opinionated snippet. You should instead post this in the css snippets channel
yeah, i get it.
i just posted it into the snippets channel with some other options too.
#๐จ-css-snippets message
The MessageLogger plugin currently can see deleted messages and view deleted images, is there anyway to redirect where the images are automatically saved, or is there a specific directory where they are currently saved that we can view? Also is there a log anywhere of the messages deleted?
I know Windows 8.1 is old, but as the official Discord client may not support it for much longer, so it would be pretty sick Vencord was able to get it working again
Not supported. Upgrade to Windows 10+
Having "default css" is such an absurdly bad idea that I almost think it's a good idea
I know people on Windows Vista right at this moment. More than one ^~^
So, I've got a patch ready to PR.
Question is, to which branch is this to be sent? Some are against main, and some are against dev.
I wasn't able to find that in CONTRIBUTING.md, but it may be elsewhere where I haven't looked yet.
vencord desktop does have some default css
mainly to hide the "Download desktop app" stuff
but yes what that person proposed is somewhat opinionated
so shouldn't be included
just pr against main
i will change branch if applicable
okay, gonna send it in a hot second
Add an option to outright ignore channels from creating logs with the
MessageLogger plugin.
In some high-traffic channels that receive a lot of edits and/or
deletions (by virtue of so-called "sticky messages"), the MessageLogger
plugin tends to get in the way of reading the chat history.
This patch adds an option to provide a comma-separated list of channel
IDs to ignore from logging.
Local tests confirm it is working as intended. To the best of my
knowledge, I followed the style guide of ...
there we go ๐
p sure thats a duplicate
I haven't found any
yeah
would feel more comfortable sending that in a separate PR, but it's really easy to whip that up.
what do you prefer? add to this, or create a new one?
just add to this!
I don't want to do this since preserving environment variables is terrible for security. You should instead fix your sudoers file to always keep this environment variable https://wiki.archlinux.org/title/Sudo#Environment_variables
edited the PR body + title and pushed the change for guild ignorelist.
feel free to post feedback via github, i dont check discord often :P
1340f02 feat(MessageLogger): add option to ignore chann... - l-zeuch
Thanks for the quick merge and feedback!
(its in dev for now, will be in main soon-ish)
i still want to get some more changes in first
no hurry, I have my local build for now ๐
uwuifier is pretty much essential.
I mean, that's vencord desktop. Vencord itself should never have default css
vesktop 
vesktop 
vesktop 
I've already requested it there: https://github.com/Vendicated/Vencord/discussions/462 :)
Cool! Thanks for sharing ๐
I didn't know you could do that in CSS :D
However, I had to change the width of the time[id^="message-timestamp"]::after element to 200% because the timestamps of some messages weren't displayed entirely:
<p align=center>
<img height="90" alt="Screenshot" src="https://github.com/Vendicated/Vencord/assets/66956532/6ddd253c-f9a6-44cb-9bf7-f3646930ff2f">
ย ย ย ย ย
<img height="90" alt="Screenshot" src="https://github.com/Vendicated/Vencord/assets/669...
it was a better discord plugin to where it would open steam instead of the browser to open steam accounts
๐
hello i would like to stalk my friends please
As the title describe. Fresh installation of Vencord client on windows 11. The client keep sending the title message at top border of the screen and clicking Retry doesn't change anything. Relaunching Vencord isn't either.
Any idea how to fix this ?
Thanks per advance.
minor change, its 3 minutes now
discor
This still works. Would love a review.
OpenInApp (had no effect):
ID: 967783
Match: /(?<=href:[A-Za-z_$][\w$]*,onClick:function\(\)\{)(?=return [A-Za-z_$][\w$]*=([A-Za-z_$][\w$]*)\.type,.{0,50}CONNECTED_ACCOUNT_VIEWED)/
IgnoreActivities (had no effect):
ID: 146345
Match: /!([A-Za-z_$][\w$]*)(\)return null;var [A-Za-z_$][\w$]*=([A-Za-z_$][\w$]*)\.overlay.+?children:)(\[.{0,70}overlayStatusText.+?\])(?=}\)}\(\))/
None
font-weight: bold;
color: purple;
[kb store] KeybindStore: Looking for callback action SOUNDBOARD_HOLD but it doesn't exist in this version. Skipping
%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 ```
OpenInApp (had no effect):
ID: 967783
Match: /(?<=href:[A-Za-z_$][\w$]*,onClick:function\(\)\{)(?=return [A-Za-z_$][\w$]*=([A-Za-z_$][\w$]*)\.type,.{0,50}CONNECTED_ACCOUNT_VIEWED)/
IgnoreActivities (had no effect):
ID: 146345
Match: /!([A-Za-z_$][\w$]*)(\)return null;var [A-Za-z_$][\w$]*=([A-Za-z_$][\w$]*)\.overlay.+?children:)(\[.{0,70}overlayStatusText.+?\])(?=}\)}\(\))/
None
font-weight: bold;
color: purple;
[kb store] KeybindStore: Looking for callback action SOUNDBOARD_HOLD but it doesn't exist in this version. Skipping
%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 ```
this adds a ~30kb library for such a small thing
It's also not necessary. You can obtain parsed css colours via getComputedStyle. For example for background-primary, getComputedStyle(document.querySelector("[class|=chatContent]")).backgroundColor gives you it in rgba format
why does vencord have a trojan
you can look at the code here https://github.com/Vencord/Installer
:)
yw
your question in no way relates to development though and is also already answered in the #faq btw
so yes it belongs in support
half the engines on virustotal are total bullshit so you should disregard any you have never heard of like ikarus
thats 50%
idk what that's supposed to mean
have you taken a screenshot of every channel or are these generated lol
nah
it's generated on command
love
vns #๐ฆ-shiggy-and-friends shiggy's belong here | aliucord jumpscares

lmao do u really think i would screenshot every channel ๐ญ
it originated from a screenshot
vns #1028117287716261939 explode | develop & shig
๐ #1028117287716261939
yee
whar
vns #moderator-only develop here | shiggy here
๐ #moderator-only
๐ #moderator-only
oh lmao
๐ค
#1032200195582197831 message @spark cove do it
I've looked as much as I can and haven't found anything on this which is surprising so its possible that I'm just blind and missed why someone hasn't suggested it yet.
But an ad blocker for YouTube together would be nice. While sure the ads are short, it skips content which what the actual fuck?
Cant find this existing elsewhere which is sad and might mean its impossible, but who said you couldn't try right?
this would be very nice to have, i'm unsure if this was suggested already though
Woah das me
[(click to see attachment)](#๐พ-core-development message)
Discord Account
@lebg2999
What happens when the bug or crash occurs?
fakenitro does not work with emoji
server premium
What is the expected behaviour?
i expect fakenitro work with emoji
server premium
How do you recreate this bug or crash?
join a server with premium emoji
go to emoji

most sane french person
It seems that all the classes that use --text-normal are hashed, and you can't really rely on the elements that use these classes to be available on load anyways
**color.ts: **Lines 7-42
const digitRegex = "([\\d.%]+)";
const validFormats = ["rgb", "hsl", "hwb", "lab", "lch", "oklab", "oklch"] as const;
const colorRegexes = [
...validFormats.map(fmt => new RegExp(`(${fmt})\\(${new Array(3).fill(digitRegex).join(" *, *")}\\)`)),
...validFormats.map(fmt => new RegExp(`(${fmt})a\\(${new Array(4).fill(digitRegex).join(" *, *")}\\)`)),
...validFormats.map(fmt => new RegExp(`(${fmt})\\(${new Array(3).fill(digitRegex).join(" +")}\\)`)),
...validFormats.map(
fmt => new RegExp(`(${fmt})a\\(${new Array(3).fill(digitRegex).join(" +")} ?/ ?${digitRegex}\\)`)
)
];
const hexRegex = /^#([\da-fA-F]{6})$/;
const hexAlphaRegex = /^#([\da-fA-F]{6})[\da-fA-F]{2}$/;
export const alpha = (original: string, alpha: number): string => {
for (const regex of colorRegexes) {
const match = original.match(regex);
if (match) {
const [, format, a, b, c] = match;
return `${format}a(${a} ${b} ${c} / ${alpha})`;
}
}
for (const regex of [hexRegex, hexAlphaRegex]) {
const match = original.match(regex);
if (match) {
const [, str] = match;
return `#${str}${Math.round(alpha * 255)
.toString(16)
.padStart(2, "0")}`;
}
}
return original;
};
make the channel icon change
more convincing
๐๐ฝ When using screensharing, if HDR is enabled on a monitor, the entire screen becomes unavailable for screensharing. When selecting a window running on the monitor with HDR, the output is a black screen while focused, but the preview does work correctly when tabbed out.
Enabling HDR while screensharing also seems to have no effect (that is to say, HDR can be enabled, and enabling it does not cause the black screen).
HDR off:





