#👾-core-development
1 messages · Page 134 of 1
holy shit
@austere talon https://github.com/Vencord/Vesktop/pull/235 pls merge :3
uh
[Vencord/Vesktop] New comment on issue #74: Windows: app.focus() causes already open window to flash
Cannot reproduce.
Canary 245033 (8b6a6af)
Vencord 96126fa (Vesktop V0.4.3)
Electron 27.0.0
Chromium 118.0.5993.54
Linux 64-Bit
Hyprland, installed from AUR at vencord-desktop-git
can't repro windows issues on linux 🤯
bro just wanted to flex their neofetch
Okk when do you think it'll be out?
Don’t know just be patient
If anyone gets some time could we have some more reviews on ReplyPingControl PR? thx <3
@austere talon i will kill you if you force push to dev again
I don't think you can change the resolution but most pfps are high enough resolution already, either way this doesn't feel like it should be a whole plugin
Discord only grabs the picture in 80x80px by default this plugin makes it user selectable.
type: OptionType.SELECT,
description: "Override when message replies ping",
options: [
{ label: "Always", value: true },
{ label: "Never", value: false, default: true }
],
this formatting is kinda weird, I'd also simplify it like:
patches: [{
find: "_channelMessages",
replacement: {
match: /receiveMessage\((\i)\)\{/,
replace: "$&$self.modifyMentions($1);"
}
}],
modifyMentions(message: MessageJSON) {
const user = UserStore.getCurrentUser();
if (this.getRepliedMessage(message)?.author.id !== user.id)
return;
if (!settings.store.always...
epic embed
The logic worked fine before, I don't think it should be changed. This makes it a little harder to read imo
Discord Account
vasilisiscool
What happens when the bug or crash occurs?
Programs using RPC (example: JetBrains Discord Integration) currently seem to still be able to talk with the rpc server and even show an rpc on the client.
;"
good idea or no?
@lime stone youre not supposed to have spaces in there no?
think i read that somewhere
.
sorry for pinging
thats on the match
this is not where i got it from
ppl usually minify the replace out of habit
yea
yeah im probably just deluded lol
well it's harder to read for No Reason
I do not know why I captilised No Reason there
barely any harder to read
u need glasses
i have glasses 
im an avid code golf afficionado so ofc its gotta be unreadable
consistency is good
shut up /lh
this is my bible https://javascript.info/ninja-code
ajay jumpscare
949548d fix(dearrow): support DeArrow thumbnail submiss... - ajayyy
Why was this marked resolved
Let the record state that:
Allows the user to see Vencord and profile badges in the chat.
also you love quickreply making you able to mention yourself on replies
This is the best plug-in
BUILD FAILED
LMAO
how get log
one of my workers throws errors and i cant debug it i love
how tf did u break it
@austere talon you can watch the log live but you should be able to expand those sections too
it was just broken
BUILD SUCCESS
nooo it failed
:(
"message": [
"10:28:00 PM [ssr] TypeError: Cannot read properties of undefined (reading 'href')\n at functionsWorker-0.6542425200816036.js:5740:44\n at Object.Tm (functionsWorker-0.6542425200816036.js:7852:34)\n at ma (functionsWorker-0.6542425200816036.js:582:12)\n at of (functionsWorker-0.6542425200816036.js:1560:91)\n at ja (functionsWorker-0.6542425200816036.js:1615:20)\n at Kr.render (functionsWorker-0.6542425200816036.js:2225:19)\n at async Object.fetch (functionsWorker-0.6542425200816036.js:8306:44) (x2)"
],
combust
const CanvasKit = await initCanvasKit({
locateFile: file => new URL(file, url).href,
});
HOW IS IT UNDEFINED??
FUCK i had a really old tampermonkey script i made that was marking changes as resolved when i actually meant to merge
that would explain a lot 
i had the exension icon hidden
WHY DOES THIS LIBRARY ONLY SHIP MINIFIED JS
hi!
I'm not great at programming but
i know few things
can someone help me where is vencordDep.mjs?
why
I'm trying to make plugins locally available
so that i can load them from folder and not from github
You can already get them from #1032200195582197831 and just build it
Just put them in a userplugins folder and build it like that
oo ty!
for future reference, where's that guide on installing 3rd party plugins i cant find it
wait. i dont want to make a new plugin. i want to keep all the plugins locally so that i can edit the already existing ones. i want to change the plugin path in vesktop
not possible.
yeah forgot to mention vesktop in first msg
this is very useful! ty!
Is it worth me editing the plugins guide to add that they need readmes and dev constants
d
LMAO
god im gonna have to fork this shit
at this point i might as well just fork
and like now it fails locally for some reason
WEHY DO THEY EVE NSHIP MINIFIED CODE
NO
AAAAAH MONOREPO
i will cry

@rustic nova where is the folder cashed images saved in
also the option ignore muted servers isn't working
it still logs it
?
they cant read here anymore
https://github.com/thororen1234/Installer people need to stop making vencord rebrands
yeah i swear ive seen them in here so much
i wonder why they do it
like
just pr ur additions to vencord
well the wait :p
nobody is gonna use <x>cord
bc he did it
can we talk about that please :/
I'm really confused
I understand if stuff came up or u didnt feel like doing it but I'm so confused as to why any mention of it has gone ignored
I don't mind when it gets reviewed (obviously I'd prefer it to be sooner) but please communicate a littleee
are they gonna fucking rebrand a fork 😭
PLS
@austere talon to explain a lil bit more he posted it bc it was his undertaking as a temporary measure until decor is merged
kasi best janitor
nO
i need to merge decor fast before fiery makes DecorCord
decord
I don't want to vee
seriously I want to get it in vencord
yeah ofc im just memeing
I'm just confused how it went from :) to nothing instantly
loss of motivation
That's fine and you can tell me that
But leaving me in the dark just leaves me confused and wondering wtf is up
That sponsors grid is so cool
cuz to me it went from "we can probably get it merged within a few days" to "is it actually going to be merged at all"
the way it was ignored at any mention
do u get where i'm coming from
thundr
decor got partially reviewed and ven said they'd review the rest <x> day and when i asked late on <x> day it got ignored and since then it's been ignored at any mention that's why i was so confused
ven i have adhd too, how do you think decor went from 0 to 100 for vencord in a day
i get that shit i just have no idea what to think when left in the dark
oh waits its cloudflare caching
ig 4 hours is fine
are u a current sponsor
or past
it only shows current, idk if github api can do past
anyways
theyre in #1164494686472380546
my head hurts
Bad Patches
ShowHiddenChannels (had no effect):
ID: 319839
Match: /(?<=renderLevel:(\i\(this,\i\)\?\i\.Show:\i\.WouldShowIfUncollapsed).+?renderLevel:).+?(?=,)/
ShowHiddenChannels (had no effect):
ID: 319839
Match: /(?<=activeJoinedRelevantThreads.+?renderLevel:.+?,threadIds:\i\(this.record.+?renderLevel:)(\i)\..+?(?=,)/
PinDMs (had no effect):
ID: 631316
Match: /===\i\.DMS&&0/
NoTrack (found no module):
ID: -
Match: window.DiscordSentry=
Bad Starts
None
Discord Errors
None
jumpscare
guh ill deal with pindms
Bad Patches
ShowHiddenChannels (had no effect):
ID: 319839
Match: /(?<=renderLevel:(\i\(this,\i\)\?\i\.Show:\i\.WouldShowIfUncollapsed).+?renderLevel:).+?(?=,)/
ShowHiddenChannels (had no effect):
ID: 319839
Match: /(?<=activeJoinedRelevantThreads.+?renderLevel:.+?,threadIds:\i\(this.record.+?renderLevel:)(\i)\..+?(?=,)/
PinDMs (had no effect):
ID: 631316
Match: /===\i\.DMS&&0/
NoTrack (found no module):
ID: -
Match: window.DiscordSentry=
Bad Starts
None
Discord Errors
None
@austere talon is the getRowHeight fix even needed anymore??
i don't see what it was matching at aaall
was it matching something in getRowHeight before
this.getRowHeight = (e,t)=>{
let {privateChannelIds: n} = this.props;
return 1 === e && 0 === t && 0 === n.length ? 428 : 44
}
this is it now
before there was a func call
e and t are both numbers
dms is 1
it might just ben inlined now
1 & 0 seem like enum values
like these
check which is DMS and itll be that
it was 1 and 0 was home stuff
yeah
top links
iirc we make pindms 1 and modify dms to be 2
we subtracted 1 from e
i need to see the older code
not ===
yea took me a while to figure this part out when i fixed for rspack lol
{
find: ".privateChannelsHeaderContainer,",
replacement: {
match: /1===\i/,
replace: "$&-1"
}
}
that theoretically should work
\i is e
is that good
m you probably need to make it more specific
unless tha module got split into a smaller one
yea maybe
(?<=getRowHeight=\(.{2,50}?)1===\i
@spark pivot asking cuz i do not know but why use an object over an array in this case?
isnt an object overkill and uneeded?
makes it harder for code to be understood
in this case its very simple
the array is short and its right above the function
the array in question:
const dcBadges: [number, string, string][] = [
[0, "Discord Staff", "5e74e9b61934fc1f67c65515d1f7e60d"],
[1, "Partnered Server Owner", "3f9748e53446a137a052f3454e2de41e"],
[2, "HypeSquad Events", "bf01d1073931f921909045f3a39fd264"],
[6, "HypeSquad Bravery", "8a88d63823d8a71cd5e390baa45efa02"],
[7, "HypeSquad Brilliance", "011940fd013da3f7fb926e4a1cd2e618"],
[8, "HypeSquad Balance", "3aa41de486fa12454c3761e8e223442e"],
[3, "Discord Bug Hunter", "2717692c7dca7289b35297368a940dd0"],
[14, "Discord Bug Hunter", "848f79194d4be5ff5f81505cbd0ce1e6"],
[22, "Active Developer", "6bdc42827a38498929a4920da12695d9"],
[17, "Early Verified Bot Developer", "6df5892e0f35b051f8b61eace34f4967"],
[9, "Early Supporter", "7060786766c9c840eb3019e725d2b358"],
[18, "Moderator Programs Alumni", "fee1624003e2fee35cb398e125dc479b"]
];
Object.freeze(dcBadges);
function getUserDCBadges(flags: number): [string, string][] {
const userDCBadges: [string, string][] = [];
for (let i: number = 0; i < dcBadges.length; i++)
if (flags & (1 << dcBadges[i][0]))
userDCBadges.push([dcBadges[i][1], dcBadges[i][2]]);
return userDCBadges;
}
no reason to freeze ithnkb
first index in each entry is the bit position of the badge
second index is the badge name
third index is the badge image
simply dont freeze
objects are unordered and we'd have to add an order key if we want to display the badges in the same order as the profile does, an array lets us choose the order in which theyre displayed
we can move to object if preferred though
It’s a lot more readable and makes more sense for a static variable
Yeah this is easy if you want to preserve order and just use array.sort
Or just order them in the array as they should be
huh can you rephrase this sentence
would you prefer us to move to an object and add an order key to know the order in which badges should be rendered or is going with an array fine
this is pointless optimization
it'd be best if it was a array of objects
me when #👾-core-development message
wow those 0.2ms saved matter so much
ikr
tbf aren't they running that on like every message
eh at most you have 20 messages in view
just use filter
it's not going to be that performance intensive
not everything has to be .map, .some, .filter, .reduce etc.
why not
it's way clearer
they exist to be used
no
not a unnecessary optimization
i need to push to a new array without only the second and third indexs of each entry
i cant do that with just filter
it makes it more complicated and hard to understand later on in the code when that array is reused
only the badge name and image is needed
ooo so scary ryan
so you're saying filter wasn't made to help people shorten const foo = []; for(const e of bar) {if(condition){foo.push(bar)}}
thats just wrong
.map:
that is way less readable
ur deranged
its like ur doing code golf
that is more legible than writing 5 loops my guy
i wrote 1 loop
referring to the image fiery sent
.
löop
code golfing is just making code shorter
.filter, .map etc are to make code easier to read not just shorter
there's a clear distinction
function getUserDCBadges(flags: number): [string, string][] {
return dcBadges.filter(badge => flags & (1 << badge[0])).map(badge => [badge[1], badge[2]])
}
its readable idk what ur on
it is
in this case no
it is so much more clear as to what it does
it literally is more readable
i disagree
i could make it a foreach
that could be more readable
but not filter then map
foreach won't do what you want to do
how
you still need to filter out the invalid entries
foreach would add unnecessary code
filter and map is literally perfect
^
function getUserDCBadges(flags: number): [string, string][] {
const userDCBadges: [string, string][] = [];
dcBadges.forEach(badge => {
if (flags & (1 << badge[0]))
userDCBadges.push(badge[1], badge[2]]);
});
return userDCBadges;
}
and you consider this more readable than filter + map?
but uhm 🤓 ur iterating over the array twice 🤓 itll be so slow 🤓
its more clear as to what it does
ryan u have this tendency to sacrifice readability for unnecessary optimization
it is not at all
how is squishing everything into one long line more readable 💀
what part of filter + map is less clear to you
if anything it makes the operations more explicit, you are filtering and mapping the values of the array
literally don't squish it and it becomes even more readable
function getUserDCBadges(flags: number): [string, string][] {
return dcBadges
.filter(badge => flags & (1 << badge[0]))
.map(badge => [badge[1], badge[2]])
}
unsquished
happy?
function getUserDCBadges(flags: number): [string, string][] {
return dcBadges
.filter(badge => flags & (1 << badge[0]))
.map(badge => [badge[1], badge[2]])
}
ermm too much indentation 🤓
idk man i let prettier handle my indentation
this is what happens when u only do js
formatting to code has nothing to do with this ryan
anything other than those array functions is unreadable to u
man who has never seen a functional language in his life
if vencord was ryancord i bet it wouldn't allow calling functions on your plugin
u have to put ALL your code in the patches fr
haskell users in shambles
ryan get with the program filter and map are your friends
i never made any generalizations about that
that was a single very specific case
where it was just something1 && !something2
why do a function call for that
because it's more clearer as to what the fuck is happening lol
because it makes it more explicit and is also much cleaner
easier to extend in the future too
do i have to make an adder function too?
function addTwoNumbers(number1, number2) {
return number1 + number2;
}
yes?? 🙄
you... just did
fr
the point here is that Array has a utility which can simply your function and make it much more cleaner
ryan u have like 3 different people telling you "THIS IS BETTER" on top of vee saying it's weird just do it
yes they can help when code needs to be made more compact / readable
this is not the case tho
again, its like ur doing code golf
why dont we minify everything?
bro just shut up and accept it's nicer i fear
so you ultimately dont want to write readable code 😭
its already readable tho
ryan ur writing code for a ts/js project write in ts/js ways
10 minutes ago
I mean an array of objects
Just keep it in the order they’re supposed to be in the array
u would write "Hello, world!".upper().split() as ```js
let string = "Hello, world!"
let uppercasedString = "";
for (let i = 0; i < string.length; i++) {
uppercasedString += string[i] // manually convert to uppercase but i aint writin allat
}
let splitString = [];
for(let i = 0; i < uppercasedString.length: i++) {
splitString.push(uppercasedString[i])
}
using foreign ways in a project predominantly programmed by js/ts devs just adds confusion
what is the point of that
🤓 erm .toUpperCase() ackshually 
u hate functions on primitives that return a modified copy so much
fr
might as well make those for loops too
you are allocating a new array either way
noooo how could my programming language have nice convenient functions to manipulate a thing 😭 😭 😭 😭
this is like rust devs (totally not me) crying about someone's code creating a single copy of a string
fr
u complained about the for loop so i made it a foreach
now u still complaining
do not understand why im getting so much shit
bc ur still doing something that is pointlessly optimized and doesn't match other code style
i think ur really blowing this out of proportion
is this for a third party or official plugin
it's a pr
bc ur a bad human and do not deserve to exist because you program differently. simply combust
for a plugin?
yea
why r u arguging over such a small thing
arent u that ruthenic mf
then use filter and map
whar is that supposed to mean
its fun
it's pointless to care about performance on this case, and filter map is more readable
calm down
not our fault you can't accept you're overoptimizing
but nononono ryan what does this mean
on github
yop
i think someone should make a plugin that does pluralkit's switch tracking (using slash commands that have autocomplete omg thatd be so nice) and add a tag to a message based on who's fronting (kinda like pk's autoproxy switch and keepproxy true)
return dcBadges
.filter(badge => flags & (1 << badge[0]))
.map(badge => [badge[1], badge[2]])
how can you agree with "what is all of this needed?"
just read the code or ask about specifics
how is that a review
not constructive plus how do i respond to that?
hewo i wanna do a plugin for plurality/proxying bots eventually thank u for the feature ideas
we've already gone over it mate I was just adding it as a proper suggestion
omg thats epic ✨ please hurry up i want to be able to have cool message effects everywhere automatically based on who's fronting
was this discussion here not enough
what plugin are you talking about
forEach is readable enough
no
not everything has to be chained array functions
PluralKit has an api not sure if u can switch front with that
(blatant self advertising) fwiw my proxying bot has custom message signatures that get added to proxying messages
i did something kinda like that with text replace but then i realised it requires a prefix or somethinng to actually know who's fronting
u can
ryan u were literally told by a vencord maintainer use filter and map
why are u fighting it so hard
oh i saw about that in the chat being discussed- didn't know it was added! i'll check that quicklly
do i have to add jdoc comments too?
yes
the plan is im gon get multiplex api done and then do pk+sp+mp plugin
i could say the same to u
whats sp
i fear i am on the right side of this argument
if you really wanna avoid 2 iterations
then you are already doing a map here
so just return dcBadges.filter(badge => flags & (1 << badge[0])) and do badge[1] & badge[2]
literally as simple as that
it already works and its already readable
i didnt make the whole plugin
there are 3 devs
we were helping shalev make a plugin
where
where did i say you made the whole plugin
simply plural
what command is that ?
aight i give up
ill look at it later
if u have a mate (imported or whatev) then you can just /edit mate signature:[before]text[after] is the same as proxy tag formats
oh im fucking stupid of course it'd be in edit
STOP OVERENGINEERING
write readable maintainable code
where am i overengineering
i would dare to say the array in array is a overoptimization
i would dare say all computers are overoptimization. just do the math in ur head silly
so true
i actually do that in CS class
its shorter and simpler
and less clear to a newcomer what each thing is
what would this be in C++
the &int thing
cast?
Pasting your patch into the Full Patch field will auto-fill all the other fields
oh im in dev channel
never i love yapping
sorry i was in different channels
#1032200195582197831 message sorry what does this do?? does it change the message invite feature to say "hop on __" ?? either way it sounds hillarious
opens a url whenever someone says "hop on __"
thats wild
hop on fn
hop on dn
oh ok
hop on existential crisis
dortnite
hopping from 3ft above is that okay
does vencord automatically block ack requests?
I'm quite new to Vencord code (literally started today), but I think I can see that Vesktop has no pre-installed plugins and it's using vencordDesktopMain.js from Vencord's latest release in order to get plugins. Since vencordDesktopMain.js is minified, it's quite challenging to continue debugging this but I'll continue tomorrow. 🤔
what
you can just build from source silly, follow instructions in the source folder and check bottom of vesktop settings
wtf vee intentionally obscuring vencord
intentional challenges, cant have them know about the secret token logger
Does anybody got idea on how to add custom button to context menu?
@austere talon you
you WHAT
He
he whar
ah thank you, will do! >_<
It's quite late for me so I'm laggin a bit hehe
lol that person have just talked to me few hours ago about how did i start contributing to big repo like vencord 
i haven't asked in a while so hows the text replace PR going- is it merged or whatever?
and then also- when would the update roll out ?
not merge yet
ven have just reviewed your code about the invite link component
not main textreplace code
Estimated merge time: 8 months and 13 days
TimezoneDB is on 11th month anniversy
move openInviteModal to utils and remove some code that do nothing lol
i did it
🔥
cool
anyway i hope it gets merged soon
not even for the features- but because it moved all my textreplace rules to the new storage location and i want them back
do I really need to restart discord everytime I make change to my plugin code?
yeah about that idk what happened but it is the old version and idk why
no who told you that
because the new changes dont take any effect
pnpm watch then reload
hm
realized lmao
which kinda sucks because loading discord takes like forever
yes that takes long too
impatient fr
/*
* Vencord, a Discord client mod
* Copyright (c) 2023 Vendicated, MrDiamond, ant0n, and contributors
* SPDX-License-Identifier: GPL-3.0-or-later
*/
import { definePluginSettings } from "@api/Settings";
import { Devs } from "@utils/constants";
import definePlugin, { OptionType } from "@utils/types";
import { MessageStore, UserStore } from "@webpack/common";
import { MessageJSON } from "discord-types/general";
export const settings = definePluginSettings({
alwaysPingOnReply: {
type: OptionType.BOOLEAN,
description: "Always get pinged when someone replies to your messages",
default: false,
},
replyPingWhitelist: {
type: OptionType.STRING,
description: "Comma-separated list of User IDs to always receive reply pings from",
default: "",
}
});
export default definePlugin({
name: "ReplyPingControl",
description: "Control whether to always or never get pinged on message replies, with a whitelist feature",
authors: [Devs.ant0n, Devs.MrDiamond],
settings,
patches: [{
find: "_channelMessages",
replacement: {
match: /receiveMessage\((\i)\)\{/,
replace: "$&$self.modifyMentions($1);"
}
}],
modifyMentions(message: MessageJSON) {
const user = UserStore.getCurrentUser();
if (message.author.id === user.id)
return;
const repliedMessage = this.getRepliedMessage(message);
if (!repliedMessage || repliedMessage.author.id !== user.id)
return;
const whitelist = settings.store.replyPingWhitelist.split(",").map(id => id.trim());
const isWhitelisted = whitelist.includes(message.author.id);
if (isWhitelisted) {
if (!message.mentions.some(mention => mention.id === user.id))
message.mentions.push(user as any);
return;
}
if (settings.store.alwaysPingOnReply) {
if (!message.mentions.some(mention => mention.id === user.id))
message.mentions.push(user as any);
} else {
message.mentions = message.mentions.filter(mention => mention.id !== user.id);
}
},
getRepliedMessage(message: MessageJSON) {
const ref = message.message_reference;
return ref && MessageStore.getMessage(ref.channel_id, ref.message_id);
},
});
@spark pivot I added in a whitelist thing, you reckon we should add it to the pr or no
It’s your pr now
I wonder if a autoreload feature would be welcome
could be added to vcc
@austere talon what do you think, autoreload vencord from vencord companion?
actually
how
yeah i realize
do u mean ctrl r
yeah
i forgot vencord companion is in vsc
and the build is in cli

nevermind i think
how can i trigger an update so that this ungreys when toggled rather than me having to hit save and close
i too wonder this
for super reaction tweaks
I can only seem to find examples for dropdowns
send
options: {
method: {
description: "Anonymising method",
type: OptionType.SELECT,
options: [
{ label: "Random Characters", value: Methods.Random, default: true },
{ label: "Consistent", value: Methods.Consistent },
{ label: "Timestamp (4chan-like)", value: Methods.Timestamp },
],
},
randomisedLength: {
description: "Random characters length",
type: OptionType.NUMBER,
default: 7,
disabled: () => Settings.plugins.AnonymiseFileNames.method !== Methods.Random,
},
consistent: {
description: "Consistent filename",
type: OptionType.STRING,
default: "image",
disabled: () => Settings.plugins.AnonymiseFileNames.method !== Methods.Consistent,
},
},
AnonymiseFileNames does this
which is what i've done
does it properly grey out?
lol
im trippin
iirc the temporary settings object doesnt get passed to anything but the component things
the about component and maybe the component option type too
make it an option tho i personally save way too often
tried to create a custom component for the whitelist setting that can react to changes in the alwaysPingOnReply setting but it didnt work
bleh
Huh?
index.ts:22 Uncaught TypeError: Cannot set property ackChannel of #<Object> which has only a getter
at Object.patchAckChannelFunction
This normally works in console
Is there actually a way to update cache when settings change
this would be delicious
direct event listening would be soooo much better for this
oh weird
in the definition you can have an onChange
definePluginSettings({
banana: {
type: OptionType.STRING,
onChange: doThing
}
})
ooh ok ty!!
also im training an llm to create readmes for the fun of it
make readmes for me
yep thats the idea
anything become readme

i'm gna make it go through all non readme plugins, read the index and generate one based on that
then i'll just make a pr with em all
fear
im not actually dw
it would genuinely take longer than writing them
Is there any way to intercept https requests?
service workers
i dont think service workers work for vencord
Maybe it's a cool idea to re-add the installation-script (windows) to the website, which is located at https://github.com/Vencord/Installer/blob/main/install.ps1
I remember it being there, but now it seemingly got removed.
Seemingly not solved, I just ran into the same issue.
As rendered in vanilla:
And in Shiki, regardless of highlight preference setting:
Turns out the patch is kinda flawed so I’m closing this so I can rework it.
@D3SOX fixed the volume in the user modals and made it play when on deafen!
We also added a soundboard cloner option
Sound Cloning

accessible by the context menu in sounds in the soundboard log :3
Untested but should work
const { amplitudeToPerceptual } = findByPropsLazy("amplitudeToPerceptual");
const { getAmplitudinalSoundboardVolume } = findByPropsLazy("getAmplitudinalSoundboardVolume");
export const getSoundboardVolume = () => amplitudeToPerceptual(getAmplitudinalSoundboardVolume());
Works as excepted now for me! :rocket:
trying to destructure those at the top level seems to cause a crash for reasons I do not understand
Oh I see, I don't understand it either .-.
errors do be funny what can I say
destructuring the lazy find makes it non lazy, so it ends up trying to search for it before discord has loaded
it's because it's lazily evaluated and isn't available on initialisation i guess
LOL

lol
Asking about your attempted solution rather than your actual problem
Seemingly not solved, I just ran into the same issue. As rendered in vanilla:
And in Shiki, regardless of highlight preference setting:
Seems like a separate bug where highlighting just breaks sometimes
isn't it written in the doc strings that you shouldn't destructure lazy searches 
shhhhh
lol
suggestion: have fakenitro modify the char counter to get an accurate count for the emoji links
The first one said it couldn't find pulseaudio even though it is installed (also had a Pipewire thing going on but I fixed that)
Second one needed "pnpm'" even though it's not in my distro's repos (I use Linux Mint)
it's not implemented for textreplace either
ah
To compile this you need the development packages.
pnpm can be installed by following the official installation instructions: https://pnpm.io/installation.
If you simply want to use venmic, please install Vekstop as it comes bundled with venmic.
they created an account for an issue ig
rate this patch :D ```js
{
find: ".LABEL_WITH_ONLINE_STATUS",
replacement: {
match: /(src:null!=\i?)(\i)/,
replace: "$1($2.replace(/(80|128)$/,$self.settings.store.imgSize))"
}
}
replace ok
match bad
make it match a text that is sure to not change before the src: and then .{0,..} to reach the src
👍
@verbal pumice why did you delete your suggestion?
didnt their find match 3 modules?
if it does it should change too
im using the online patch helper
it doesnt
i would think that it would tell me if it matches multiple
search it on discord devtools
It probably does match more than one
yeah way better
oh it's a message
isnt that because of a patch?
yeah
nvm then
it's fine
just out of curiosity
im just dumb
which plugin?
// Webpack Module 913365 - Patched by PlatformIndicators, ViewIcons
actually where is that search thing?
ctrl+shift+f in devtools
works around this issue
[23720:1113/145745.110129:ERROR:gbm_wrapper.cc(253)] Failed to export buffer to dma_buf: No such file or directory (2)
[23720:1113/145745.110235:ERROR:gbm_pixmap_wayland.cc(82)] Cannot create bo with format= RGBA_8888 and usage=SCANOUT
[23720:1113/145745.110468:ERROR:gbm_wrapper.cc(253)] Failed to export buffer to dma_buf: No such file or directory (2)
[23720:1113/145745.110530:ERROR:gbm_pixmap_wayland.cc(82)] Cannot create bo with format= RGBA_8888 and usage=...
shitvidia
@austere talon does vencord support web workers
you love
i will just try
Thanks!
you are keith the rat
Hm... would it lag?
uhhhhh idk
it would apply rules on every change
doesnt seem to lag at all for me tho
got 2nd patch to work
:D
now i need to make it work on both fakenitro and textreplace 
should i just modify presendlistener?
I will make iCord
itd fix all these plugins
wait thatd cause api spam with translate guhhhhhh
what ab messageEvents.add/removeCharCountListener or smt
@austere talon ?
thats just scor
persian vencord.dev
what happened with volumebooster
i dont think i18n is setup
yea its not
@rare shale can you yoink i18n from vendicated/vendicated.dev
horror
Bad Patches
ShowHiddenChannels (had no effect):
ID: 319839
Match: /(?<=renderLevel:(\i\(this,\i\)\?\i\.Show:\i\.WouldShowIfUncollapsed).+?renderLevel:).+?(?=,)/
ShowHiddenChannels (had no effect):
ID: 319839
Match: /(?<=activeJoinedRelevantThreads.+?renderLevel:.+?,threadIds:\i\(this.record.+?renderLevel:)(\i)\..+?(?=,)/
PinDMs (had no effect):
ID: 631316
Match: /===\i\.DMS&&0/
NoTrack (found no module):
ID: -
Match: window.DiscordSentry=
Bad Starts
None
Discord Errors
None
Bad Patches
ShowHiddenChannels (had no effect):
ID: 319839
Match: /(?<=renderLevel:(\i\(this,\i\)\?\i\.Show:\i\.WouldShowIfUncollapsed).+?renderLevel:).+?(?=,)/
ShowHiddenChannels (had no effect):
ID: 319839
Match: /(?<=activeJoinedRelevantThreads.+?renderLevel:.+?,threadIds:\i\(this.record.+?renderLevel:)(\i)\..+?(?=,)/
PinDMs (had no effect):
ID: 631316
Match: /===\i\.DMS&&0/
NoTrack (found no module):
ID: -
Match: window.DiscordSentry=
Experiments (found no module):
ID: -
Match: ("showNewSearch")
Bad Starts
None
Discord Errors
None
Highlight works just fine for Rust, same issue is still observed for ANSI, so its not highlighting just breaking entirely, it seemingly is an issue specific to ANSI. And especially weird that not even the HLJS fallback functions as intended.
I can confirm that the syntax highlighting works fine on everything except ANSI.
Can also confirm, ANSI seems to have re-broken everywhere I look, seems like the HLJS fallback is just not working?
https://github.com/Vendicated/Vencord/pull/1975
Need some more reviews on the revised version if anyone has a moment <3
not sure about the any typecast, but looks fine overall
Don't cast to any, there's a user type in discord-types
when get rid of discord types
2021 types my beloved
at least most of them are mostly okay still
Types are so a year ago let’s just type everything as any
the two mf plugins im making both use types that just don't exis

lol
UserJSON :(
theres 0 advantage
if you have to cast anyway
its pushing to something that already has a type
Whats this issue with avatar decorations
user doesnt have them n userJson does
do i need to transform one to the other 
it prob doesn matter
its ok i did it all fancy now
whatd u do
i should js leave it as it was?
yea
yea i its not maybe "technically right" but there wont be an issue
modifyMentions(message: MessageJSON) {
const user = UserStore.getCurrentUser();
const userJSON: UserJSON = {
...user,
avatarDecoration: null
};
if (message.author.id === user.id)
return;
const repliedMessage = this.getRepliedMessage(message);
if (!repliedMessage || repliedMessage.author.id !== user.id)
return;
const isWhitelisted = cachedWhitelist.includes(message.author.id);
if (isWhitelisted || settings.store.alwaysPingOnReply) {
if (!message.mentions.some(mention => mention.id === user.id))
message.mentions.push(userJSON);
} else {
message.mentions = message.mentions.filter(mention => mention.id !== user.id);
}
},
i alr did this anyway
yeah no thats just unnecessary
if ven wants it changed or smtng i will but meh
Lets the user choose what platform/device to show up as online on, cool maybe so vesktop users can show up as desktop idk
DISCORD CAN DETECT IF YOU'RE NOT ACTUALLY ON MOBILE, PERHAPS THIS OPTION SHOULD BE REMOVED
xdd
vc/1548
GitHub
Trick Discord into thinking that you are using a different operating system.
https://github.com/Vendicated/Vencord/discussions/763
i love how theres two seperate patches for the same thing
can i ask a contributor to close it i did not see #1548
i did search before pull request but i looked for device instead of platform .(
also u pred from main branhc lol lol
Closed as duplicate of #1548, thanks anyway.
what does this eman
idk how to use git(hub) .(
create a branch and send the pr from that branch instead of using main branch
ohh i see
#👾-core-development message see this
you dontxd revert the changes and push changes to a different branch simply
or for less experienced/lazy people you can just delete repo and redo xd
aight ty
i am a hypocrite using gui but do as i say not as i do
tysm
@jagged cloak 1 last question, i should start the branch name with feat/ right?
depends
feat: is usually for new features (plugins in this case), then theres fix: among many others
commit example: fix(your mom): change fatness or feat(settings): add fatness slider
branch ex: feat/fatness-slider
okay dont trust me with making examples lol
just lookup conventional commits youll find a lot
oki thank you so much
hiya, once again having some trouble getting something
the regex would probably look like this
replacement: {
// eslint-disable-next-line no-useless-escape
match: /!\i\.isPlatformEmbedded/,
replace: "true"
}
what i'm struggling with is: what goes in the findfield?
the class it's on is just this
class H
i'm assuming in module 656395
how do i construct the find for this?
Messages.ADD_KEYBIND_WARNING
why does your regex have ! at start
R.isPlatformEmbedded is just \i\.isPlatformEmbedded
never been a regex user
thanks! that worked
don't even know why they don't enable custom keybinds
they work when focused
ant0n this is a miss tbh
decor merged <t:8640000000000:R>
how can i reliably get the username associated with a user id
Vencord.Webpack.Common.UserUtils.getUser() and Vencord.Webpack.Common.UserStore.getUser() return undefined for real users
and using restapi to get users even when i cache the users still gets me rate limitted
its only called when you load a message whos author is married to someone in relationshipdb and i still get rate limitted somehow
That's not going to magically have different rate limits
https://www.conventionalcommits.org/en/v1.0.0/ good resource
Conventional Commits
A specification for adding human and machine readable meaning to commit messages
@austere talon sorry for doubleping but u didnt respond
@junior olive is that the companion cube
How would i toggle mute using a plugin?
is there a way to move the edit user profile to left or right ( in settings )
probably the wrong channel but with CSS imma say yes?
yes
Turns out Plasma requires applications to have a specific property set. Found a solution here, specifically this video explains how to manually fix the icon to display properly.
Also, yeah, I've added the flags to both the autostart and application menu shortcuts.
Thanks this helped. Though I think most applications solved thi...
what
probably skill issue tbh
yeah
maybe its just that the users you are referring to as "real" are not cached
What are you passing into them
Discord Account
https://linksta.cc/going/8711?https://discord.com/users/798720532848705576
What happens when the bug or crash occurs?
When I visit https://canary.discord.com.
What is the expected behaviour?
arRPC should connect, or if it is, the banner shouldn't be present.
How do you recreate this bug or crash?
- [x] Install https://raw.githubusercontent.com/Vencord/builds/main/Vencord.user.js from https://vencord.dev/download/.
- [x] Visit https://canary.discord.co...
I am using Discord Stable or tried on Stable and this bug happens there as well
Ah.
wait, someone can read?
i think hes a professional
no way they put a tracker on their discord profile
user ids as strings
im using the site relationshipDB uses to fetch usernames rn as a workaround
kinda scuffed
if they return undefined then the user isn't cached. you can fetch them, optimally using a queue
it has some issues tho
cant see that the server is running
PS C:\Users\jasdi\Documents\vesktop2\arrpc> node src
[arRPC] arRPC v3.1.0
(node:62904) ExperimentalWarning: Importing JSON modules is an experimental feature and might change at any time
(Use `node --trace-warnings ...` to show where the warning was created)
[arRPC > bridge] listening on 1337
[arRPC > ipc] not available, trying again (attempt 1)
[arRPC > ipc] listening at \\?\pipe\discord-ipc-1
[arRPC > websocket] 6463 in use!
[arRPC > websocket] listening on 6464
[arRPC > process] started








And in Shiki, regardless of highlight preference setting: 
