#๐พ-core-development
1 messages ยท Page 45 of 1
you better work
\i
ven be doing the asstra way?
IT WORKS
HOLY SHIT
I thought it didnt work but i realised i just didnt have any dms pinned
LETS GOOOO
wow this is so much easier than my old method
this was my old code
horrible
could be worse
well
in BD land
with monkeypatching
but with regex patches you can usually avoid having to walk any react trees
that's one of the nice aspects of regex patches
I've even seen worse monkey patching than this
bd's structure doesn't allow regex patching, it would need either a large refactor or rewrite
so I don't even bother adding it atm
yeah
im not saying u should add it :P
both ways of patching have their upsides
regex patching is very dangerous if u dont know what you're doing
tbf, back in the day, monkey patching was the new stuff, I guess BD's getting old lol
cause it can easily brick discord
what did people use before that??
dom manipulation, observers, jQuery hell
OH NO
meanwhile shelter bringing those back
minus jquery
I mean, they weren't dangerous at all, no react crashes etc. it's just not very performant
i love arguments, it's so convenient for us
yeah fair
looking at this, wasn't too bad actually https://github.com/Jiiks/BetterDiscordApp/blob/master/Plugins/customRoleColour.plugin.js
oh BD initially used dom
yes, one of BD's devs also "invented" react patching
also tbf, this was pretty much electron v8 times, you never actually had any OOM crashes or any sort of shit like this
oh yeah I love it too
missing a key?
**index.tsx: **Lines 37-70
usePinCount() {
const pinnedDms = usePinnedDms();
return pinnedDms.size;
},
getChannel(idx: number) {
return ChannelStore.getChannel(getPinAt(idx));
},
patches: [
// Patch DM list
{
find: ".privateChannelsHeaderContainer,",
replacement: [
{
match: /sections:\[\i,/,
replace: "$&$self.usePinCount(),"
},
{
match: /children:(\i\.\i\.Messages.DIRECT_MESSAGES)(?<=renderSection=function\((\i)\).+?)/,
replace: "children:$2.section===1?'Pinned DMs':$1"
},
{
// inside renderDM: channel=channels[channelIds[row]]
match: /(?<=preRenderedChildren,\i=)(\i\[\i\[\i\]\])/,
// section 1 is us, manually get our own channel
replace: "arguments[0]===1?$self.getChannel(arguments[1]):$1"
},
{
match: /channel:\i,selected:/,
replace: "inPins:arguments[0]===1,$&"
}
]
},
just these
the first patch adds our pin count to the sections array, the second makes the header render our own text instead of "Direct Messages", the third one just patches discord's logic for obtaining channel from section, the last one adds a prop
oh perhaps
i don't remove the original dms
so there will be duplicate keys
now its somehow even more broken
oh
i need () dont i
yeah lol
ayy that fixed it
i love random scrolling
why is this shit so pain to work with
also there's some weird bug where when u start the app on dms tab it breaks and forever shows loading
any idea why this could be happening? @nocturne haven ๐ตโ๐ซ
god this component is gonna give me ptsd
I can have a look, but I never did face this issue tbh
ah, is it maybe because it does shit when dms aren't loaded yet?
yeah i assume that's the issue
maybe i should use a hook?
so that it rerenders if channels loaded
but i would assume discord can already do that eeeh
well I'm using ChannelStore manually
maybe i should use the object used by the dm list
that didnt work
so weird
okay so the first time it calls it, channels aren't loaded, but then it calls again and the channels are there
If you have DMs open as initial page, it infinitely loads
I'm going crazy someone help me figure this out
I'm just using Discord's data so it can't be that my data is stale
seems like it doesn't catch up a re-render
simple fix 
trolled
grrr
discord doing some trolling
wait so you don't set sections if private channel ids is empty?
wow that's...
it works yeah
thank u so much
how did you evenfigure that out
i dont think i would have found that
discord specifically checks for for the 2nd item in the array if no dms are loaded
๐คทโโ๏ธ no clue
I thought "if it works by default, why don't I let it think it's default sections?"
that doesn't care if section is 1 or 2 tho
PAGES = 0
I'm soso confused lol
magic
later on in the if condition it matters because row will be different
it was actually exactly this -1 that broke it
wait no
discord is legit trolling me
okay idk lol
i will just use your fix
thansk again
np ๐
WebContextMenus (had no effect):
ID: 638525
Match: /(?<=showApplicationCommandSuggestions;)if\(![A-Za-z_$][\w$]*\.[A-Za-z_$][\w$]*\)/
WebContextMenus (had no effect):
ID: 638525
Match: /("submit-button".+?)(\(0,[A-Za-z_$][\w$]*\.jsx\)\([A-Za-z_$][\w$]*\.MenuGroup,\{children:[A-Za-z_$][\w$]*\}\),){2}/
DisableDMCallIdle (found no module):
ID: -
Match: .Messages.BOT_CALL_IDLE_DISCONNECT
None
JSHandle@error
WebContextMenus (had no effect):
ID: 638525
Match: /(?<=showApplicationCommandSuggestions;)if\(![A-Za-z_$][\w$]*\.[A-Za-z_$][\w$]*\)/
WebContextMenus (had no effect):
ID: 638525
Match: /("submit-button".+?)(\(0,[A-Za-z_$][\w$]*\.jsx\)\([A-Za-z_$][\w$]*\.MenuGroup,\{children:[A-Za-z_$][\w$]*\}\),){2}/
DisableDMCallIdle (found no module):
ID: -
Match: .Messages.BOT_CALL_IDLE_DISCONNECT
None
JSHandle@error
if i could find the fucking code for it
i checked all window listeners and searched for ArrowUp
discord deranged code again
Would love to see this, perhaps we could have three options for it:
- Replace nickname with username
- Replace nickname with username, show nickname next to it
- Show username next to nickname
found it
btw I saw pronoundb local pronouns got closed because nea forgot about it lol, did anyone else start that because I kind of want to do it (if there is an api now it would be 1000x easier)
i dont think so
nvm thats not it??
where is the armcord config stored
just use vencord desktop
nvm found the button in settings
does it work
hi
yes
maybe later
yeah
I should install the vscode ext
I've been daily driving it
it works really well
only vc is broken lol
and according to zt ping sounds sometimes dont play but they work fine for me lol
okay i can't find the logic for alt up/down that switches to prev/next channel
publish the extension to openvsx smh
and can't be bothered to find it
because vscodium + idk its probably on the website somewhere
okay i found them now
i just put a breakpoint in transitionTo, idk why i didnt think of that earlier ๐ณ๏ธโโง๏ธ
now to see how horribly outdated my vencord is
function S(e) {
var t, n = c.Z.getState(), r = n.channelId, o = n.path, i = n.basePath, a = p.Z.getPrivateChannelIds(), u = __OVERLAY__ ? a : b(v()).concat(b(a)), l = (null == r ? (t = null != o ? o : i,
v().findIndex((function(e) {
return t.startsWith(e)
}
))) : null != r ? u.indexOf(r) : 0) + e;
l >= u.length ? l = 0 : l < 0 && (l = u.length - 1);
var s, f, h = u[l];
v().includes(h) ? (s = h,
f = d.Z.getCurrentRoute(),
s === E.Z5c.APPLICATION_STORE && null != f ? (0,
y.z)(f) : (0,
y.z)(s)) : _(E.ME, h)
}
very
i love unreadable code
ykw im switching to vencord desktop its probably easier than creating a singular symlink (no its not but who cares)
IT HAS SHIGGY SPLASH ok I regret nothing
hey can someone help me
For plugin dev aswell?
well either way don't ask to ask
true
they did ask a few questions, but deleted them right when I was reading them or splashed into the convo, couldn't help much tbh
oh i missed it then
Yeah I deleted them after I figured it out like right after I asked
always a good time
I see a Message Accessories API plugin, Is that something I can use?
I'm looking to just modify the appearance of a PDF embed
for a custom embed, you might want to look at the messagelinkembeds plugin @shut socket
that has an example on how you can do it
but overall yes messageaccessories is what you would need
Okay, Thanks (:
^^
Hi!
I understand that adding this feature might sacrifice some options if itโs enabled as I said in my post that it might be itโs own plugin if itโs too different, along with platform emulator features if possible for extra customization and privacy
Regarding its customization all I know for certain that is customizable because of the replit is that you can change the text above the โwatchโ button and possibly the location of where the button takes you because you donโt need to link your ...
holy fuck
i finally did it
nice
(that was from me spam switching dms to make sure it works lol)
@limber skiff review? :3
not reorderable for now
I just took a took a look at this, This is awesome.

Yeah using a replit is sort of like that, but I use it for reference sense that is where I heard it from a friend, and other plugins could also run on a replit but they run on your pc like customRPC
@nocturne haven do u want me to include u in the plugin authors list
cause u helped me :P
It was just a tiny snippet though

yeah let me get home
I love how react renders things like 50 times when you click a single thing
I don't care, but I do kinda feel weird because I actually have done almost nothing but this simple thing
Blame discord, they don't know how to use react properly
i recommend u just use my approach until we have a better solution
what approach
const seen = new WeakSet()
const ContextMenuPatch = (children, props) => {
if (seen.has(children)) return;
seen.add(children);
...
}
to not add ur menu item 5 million times
yeah
ok
otherwise it will add it dozens of times lmao
yeah but u gave me the right pointers and that fix was really helpful plus we usually add everyone who contributed to the plugin even if minor
just a few authors
Fair I guess
( the only exception is myself because I don't care much and if I added myself I'd be author on half the plugins xD )
you are an honorary author to all of them because you made vencord
The plugin was only possible because you made [insert api] api
true
hmm how would i best add reordering
maybe just open some modal
now u have cute badge
I can apply a bit to that too lol
woooo I have successfully added a button to the menu that does absolutely nothing
time to do a little modalling
I don't
gonna be honest don't know how I managed to do this
beautiful
why don't u use a context menu for this
no clue where the random letters came from
oh I guess I could have done it in context menu only
hm
good point
you can use radio
yeah
look at the greetStickerPicker plugin
its file is named welcomeStickerPicker lol
lol i just realised i accidently put a penis in GreetStickerPicker
you what
**welcomeStickerPicker.tsx: **Line 168
match: /innerClassName:\i\(\).welcomeCTAButton,(?<=%\i\.length;return (\i)\[\i\].+?)/,
<=%
lmao
not even intended
what does the % do
nothing its just their code
oh
you think its safe to just not care about fetching the pronouns and use the cached version only for the radio menu?
why?
its probably rendered & fetched by then I would assume
Anyone encounter this issue?
I am trying to frame a file
Refused to frame 'https://drive.google.com/' because it violates the following Content Security Policy directive: "frame-src https://discordapp.com/domain-migration discord:
can I use react functions from inside the patch
pdf viewer
^
yea
cool
doThing() {
return <div>banana</div>
}
replace: "$self.doThing()"
(I meant the ctx menu patch)
you can always just
function MyHooker() {
useState()
}
// in patch
children.push(<MyHooker />)
you can use hooks in any context that has React.createElement somewhere along the callstack
however you should usually create your new React component context if u wanna add to discords ui
because conditional hooks (that only sometimes run) cause errors
so you either need to make sure ur hook always runs or make a new react component like i just showed
yeah ill just do a wrapper component
@austere talon you will merge this before pin dms https://github.com/Vendicated/Vencord/pull/876
cuz it lets you clean up how pin dms context menu works
guh
what does it do
ah u just did the WeakSet fix in the context menu api itself
tbh idk if that's a good idea? maybe some plugins might need the updates
as in, if it's rerendered some props might have changed
eh it's fine
we can change it if it ever causes issues 
uh?
oh wait it had both settings and options?
yeah lol
weird
holy cow u spelt whether correctly this time
character development
weather
I am stupid at react, how do I make the state update when the awaiter changes
yeah
update how?
update the value
oh i see
so when the fetch finishes I can change the selected value
using an effect
useEffect(() => {
if (defaultPronouns && !selected) setSelected(defaultPronouns);
}, [defaultPronouns]);
i added the !selected so it doesn't override the user's choice
thanks
yeah good idea
wow nice update
|| (jk i had a breakpoint somewhere lmao) ||
why are there two replys
lmao
right clicks on profile pic
Helful notice in corner: Discord has crashed
clueless
ur pr seems to cause this @limber skiff
Menu API only allows Items and groups of Items as children. Received function UserContextMenuComponent(props)
trolley
Causes a second "Reply" entry in the message context menu
๐
what how
idk u tell me
wtf
it only happens with ur pr
idk how to call it lmao
too lazy to think of a name
okay let me debug it
oh
that search is searching for discord's element
ven
what?
oh right
u cant actually make a wrapper component i forgot
try just not using a wrapper
well now it renders but then crashes a second after its opened 
lol
cool
fix!!
well I take the "it renders" part back, im stupid
and it doesn't use the correct default anyways
the thing with custom greet is that it creates its own menu
so it works with a custom component
yeah
im just not going to try not fetching it
its either cached or who cares
@cunning canyon is UsrBG stable now
yeah
i think thats sensible
ig
yes
what does snapshot mean @austere talon
oh
wtf my old USRBG banner is kinda cute
I cant understand why you need snapshot
because i dont want to constantly resplit
which part is complex 
[class*="userPopout"] [class*="NonPremium"]:has([class*="bannerPremium"]) [class*="bannerSVGWrapper"] mask rect```
oh
cant you
const save = (pins: string[]) => {
snapshot = new Set<string>(pins);
snapshotArray = pins;
Settings.plugins.PinDMs.pinnedDMs = pins.join(",");
};
as opposed to?
setting snapshot to undefined and require splitting again
doesnt matter this is easier :P
aight
infrequent action so it's whatever
i just did the snapshot because react calls functions A LOT OF times
ok wait how do I make the selected one actually select if I can't use hooks
so i tried to avoid some work
are u sure u cant?
have u tried
I think I might be able to, but im just causing random internal errors in discord's code
im dead bruh
ive been staring at content security policy stuff and now brain hurt โ ๏ธ
i need a break
TypeError: Cannot create property 'current' on string 'unspecified'
now
unspecified being the default pronoun selection
hm
we modify the CSP
if u have a good reason to, you can just add a nother exception
:P
array destructuring is funny
that's so cursed
Ah, Yeah I think I saw something about that in the main/index.ts
it's the same as
const [a, b] = [1, 2]
just instead of assigning to a const you're assigning to existing variables
lets u swap array elements without a third variable 
yeah I don't know how to do this without a custom component, or a higher level patch
where r u stuck?
why its trying to set a property on a string
show code
h is from useRef()
you're conditionally using a hook
you cant
put your hook at the veeery start of ur function
actually @limber skiff your seen change made it so that patches cant use hooks now
yeah it just doesn't do anything if I do that
yo im trying to make an anti jerma plugin, i stole some code from the moyai code but cant seem to edit the message content even though the object is being edited
anyone know a way i can modify the message
clicking on buttons changes nothing
hmhmm
it logs the msg but doesn't change the selected value
did it break anything?
hmm
well it's fine for now
we will see I guess
hmm
let me think better
idk I think it's fine?
I think being manually added to an array of children fucks it up
if any discord hooks cause a context menu re render it's gonna patch again at least
no
your change makes it impossible to use hooks in context menu patches
because the hook will only run once then not again for subsequent renders
if you only sometimes cause a hook, everything will be fucked up and this happens
if a hook cause a re-renders it's gonna evaluate the props again
so the reference will change
no
this happened because tyman wrote code like
if (seen) return;
const myStringChoice = useState("tt")
so the whole code was like
if (!seen) useState("tt");
const ref = useRef()
ref.target = "hi"
the first time it works, the second time useState isn't called so react gets confused and makes useRef return the state of useState, aka a string
so you get "cannot create property target on string 'tt'"
the same thing applies to ur change to the ContextMenuApi, the same thing will happen
you ALWAYS need to call the same amount of hooks or stuff breaks
could I get a hook inside of this somehow
better idea:
make an (opt-in) option for addContextMenuPatch that makes your patch always run and add "isFirstRender" to the props
I cry
nono dw
react is really confusing with this i cant blame u for not knowing this fully
you usually wouldn't have to deal with this cause in a normal app you wouldnt write code like this
i love react internals i love react internals i love react internals i love react internals i love react internals
thoughts on this?
do we make it enabled or disabled by default
god this is so confusing
less confusion
addContextMenuPatch("banana", (children, props, isFirstRender) {
if (!isFirstRender) return;
}, true /* runOnRerender */)
addContextMenuPatch("banana", (children, props) {
}, false/* runOnRerender */)
if you choose to use hooks you have to run on rerender then?
that's kinda confusing
addContextMenuPatch("banana", (children, props, isFirstRender) {
const [banana, setBanana] = useState("banana")
if (!isFirstRender) return;
children.push(banana)
}, true /* runOnRerender */)
so kinda bad to access isFirstRender
react components only have one argument
have u seen any menu that uses more than 1 ?
we could add it on props but i dont wanna pollute props
well
we could move it before
maybe we should always pass isFirstRender
and always use that
maybe can only remove "mask"
if remove that much it will make normal profile explod
that'd be less confusing yeah
nono I mean, I wanted to completely avoid that predicate
I gotta chill a bit
gonna think about this later
hope to see the update soon.
The plain color just seems dull after seeing role color everywhere
yeah dw 
are u abusing Google drive iframe to preview PDFs
can't u just
<embed src={URL} width="500" height="375"
type="application/pdf">
Yeah I did that the first time
but?
Theres a csp for that aswell
just taking the download url of the pdf*
huh?
pdf**
ngl I like how the google drive one looks a lot more
i'll probably stick with that
what does \i mean in regex??
it has some special meaning here, because regex101 says it doesn't exist
this here
it is vencord thing
it's weird being reply sniped by a screenshot of my own message 
I was just looking into this yesterday and i sent it to my friend
Oop :))
@spark cove \i corrupted me
when I write regex for other stuff not vencord I think \i is real and then get hit with reality check very soon
open ecmascript proposal immediately
but yeah \i is our own regex extension
do you just do regex.source.replace(...)?
yes
**patches.ts: **Lines 21-36
export function canonicalizeMatch(match: RegExp | string) {
if (typeof match === "string") return match;
const canonSource = match.source
.replaceAll("\\i", "[A-Za-z_$][\\w$]*");
return new RegExp(canonSource, match.flags);
}
export function canonicalizeReplace(replace: string | ReplaceFn, pluginName: string): string | ReplaceFn {
const self = `Vencord.Plugins.plugins[${JSON.stringify(pluginName)}]`;
if (typeof replace !== "function")
return replace.replaceAll("$self", self);
return (...args) => replace(...args).replaceAll("$self", self);
}
ah ok
HAHA you're welcome
Successfully deployed to the following URLs:
vencord-website โ ./
vencord-website.vercel.app
vencord-website-vendicated.vercel.app
vencord.dev
vencord-website-git-main-vendicated.vercel.app
www.vencord.dev
lol why
the vercel ones?
it's useful
oh
on ur own server
?
Well you haven't pushed anything here have u
So how could it give u notifications
I'm confused!!
yeaaa that's what I meant
There's someone at my workplace that pings me in pull requests then sends me the PR on slack at the same time and now I have an email, github notif, and slack dm all about the same thing
we love duplicate notifs 
Discord Account
Spectral#7751
What happens when the bug or crash occurs?
When i install Vencord on Discord (Discord is not in /applications/, it is on /Users/me/Documents/app/ ) Finder says : Discord is damaged, With two button : cancel and Put into bin (I'm not sure for traduction, my mac os is in French)
What is the expected behaviour?
I expect Vencord work ๐
How do you recreate this bug or crash?
- Use Mac os
- have Discord install in other location of /App...
It's broken. Rest on Connection ICE
There are some themes that are hard to combine into one so that they can work with Sync with Computer. An option to set automatically set a theme for light/dark mode would be nice.
yay! where can buy?
why not have dragging like with channels? (i'm guessing it's mainly because of technical difficulties - but that is the correct way to do it imo!)
remind me, what's \i do again?
When you switch to another account and restart your client, you get a lot of notifications about being removed from guilds, etc. And if you have a lot of friends you get ratelimited

right
This could come in handy for theming these additional user tags, such as [this custom CSS](#๐จ-css-snippets message).
This makes the buttons for doing things with messages (like copy message link or delete) always visible instead of hidden in a menu that you have to shift to show.
A similar plugin exists for BetterDiscord (it's broken a long time ago): ShowAllMessageButtons

Apple carefully making the shittiest OS you've ever used
macos users on their way to download free discord nitro april 2023 working halal pubjabi
okay but seriously why does apple do this shit
"I think this app might do something bad so now I will stop you from using it at all"
instead of just adding an "use anyway" button
what's "this"?
for capturing variables names:
- are they parameters passed to the current function? Use
arguments[0]to get the first argument - are they used somewhere near the code you're matching? Match them
- if the only way for you to do it is to match way earlier code, you can do a lookbehind to find them
/actualMatch(?<=var (\i)=foo.bar.+?)/
oh yeah totally
but u can still use a lookbehind
if you use a lookbehind at the end of your regex, it essentially lets you first find your initial regex then walk back from there until you find the other match
/foo(?<=function.+?)/ will first find foo then walk back until it finds the first function
kinda cursed that lookbehinds work like this but it's also very cool
by far I meant like thousands of characters
also usually more performant
the less string u match the better
wait so \i will just match shit like t.doSomethingRandom
so t
yes
\i\.\i would match t.doSomethingRandom and banana.$mil_shake1 but not 1banana.ye
mk
it technically doesnt cover all valid js identifiers because u can use stuff like amogus unicode as varname
but it covers everything discord might have
until discord uses amogus unicode 
Switch their minification to use amogus instead of normal letters
amoJuS
https://www.npmjs.com/package/amogus you love
https://www.npmjs.com/package/sus-obfuscator actually this one
Wouldn't it still be weird to have duplicate functionality?
lol sorry for my obvious/useless comments
discord loves testing in prod
discord using ctrl+c and ctrl+v
but its still somehow not calling that
this is a common discord trend! But not the case this time
they have not one, not two, but THREE copies of spring
just for good measure i guess!!!
Discord Account
Taco๐ฎ#8329
What happens when the bug or crash occurs?
When your spotify account is linked and you enable to option to show it in your profile (when listening to music) the LastFMRichPresence does not work.
What is the expected behaviour?
The LastFMRichPresence should be displayed too
How do you recreate this bug or crash?
- Link your spotify account
- Enable to show spotify in your status
- Enable the LastFMRichPresence-Plugin
Errors
Can't pr...
maybe they're using some kind of javascript macros lol
maybe it's actually written in c and compiled to javascript
oh, nvm read it wrong
can someone make a vencord version of these plugins https://github.com/Tharki-God/BetterDiscordPlugins/blob/master/DiscordBypasses.plugin.js https://github.com/riolubruh/SplitLargeFiles and the custom camera quality from this plugin because without it discord caps camera to 720p https://github.com/riolubruh/YABDP4Nitro
one suggestion per thread please
**DiscordBypasses.plugin.js: **Line 488
disabled: !ClientThemesExperimentModule.W.getCurrentConfig().hasSidebarEditor,
๐โโ
โฆLynxโฉ - 285 plays
โ
2.โโ
โฆZekkenโฉ - 148 plays
โ
3.โโ
โฆVrayporโฉ - 75 plays
โ
4.โโ
โฆnattadasuโฉ - 50 plays
โ
5.โโ
โฆhazโฉ - 34 plays
โ
6.โโ
โฆlekekzโฉ - 32 plays
โ
7.โโโฆZachโฉ - 27 plays
โ
8.โโ
โฆBorisโฉ - 26 plays
โ
9.โโโฆPixelHirโฉ - 18 plays
โ
10.โโฆCoplmunโฉ - 17 plays
โ
11.โโ
โฆAlpookachuโฉ - 13 plays
โ
12.โโ
โฆDziurwa Spokoโฉ - 11 plays
โ
13.โโ
โฆStickโฉ - 9 plays
โ
14.โโ
โฆfmleoโฉ - 7 plays
**โ
16.โ
โโฆV for vending machineโฉ** - 5 plays
Crown stolen by Lynx with 285 plays!
Previous owner: Zekken with 148 plays.
https://github.com/Tharki-God/BetterDiscordPlugins/blob/master/DiscordBypasses.plugin.js#L347-L351
LOL
**DiscordBypasses.plugin.js: **Lines 347-351
Patcher.instead(SpotifyPremiumCheck, "Wo", () => true);
Patcher.instead(SpotifyPremiumCheck, "yp", () => new Promise((resolve) => resolve(true)));
}
patchSpotifyPause(){
Patcher.instead(SpotifyProtocoalStore, "wO", () => null);
what?
.whoknows command alias
can someone make a vencord version of DiscordBypasses plugin https://github.com/Tharki-God/BetterDiscordPlugins/blob/master/DiscordBypasses.plugin.js
vencord already has a bunch of those just as separate plugins
most of those features are already plugins, just enable them
it seems breakpoints don't work well on component rendering ;-;
is this guy 10yo
this readme is incomprehensible
lmao we said the exact same thing
vsauce says it best i think
oh god he's One of those that Randomly capitalizes Words
randomly capitalising words where it doesn't have semantic meaning is so hard to read
I do it sometimes to put emphasis on specific words
Me Too
my beloved
The Worst Thing However Is When People Type Like This, Capiralisating Every Word
it makes me actually struggle to read
fakenitro seems to have a bug here
how?
yeah
it's only rendering as a sticker in the message
not in the replies
but i guess it would be misleading
happy sticker
hm, do we need to use a browser to use react devtools?
I can't find it in Vencord Desktop
it's in normal vencord settings silly
no I get it, it's a bit confusing that some settings are in desktop and some in vencord itself
well, I thought it was on by default :P
the reason is that the Vencord tab has all the things that also exist in discord desktop
whereas the Vencord desktop tab has features that only vencord desktop has
Help with Everything to do with Obs Live / Webcam Live Deepfakes, Omegle Live Deepfakes, Snapcamera Live Deepfakes, Omegle Trolling Like Hyphonix, SomethingAboutChickens, Microfilms and Omegle Live Deepfakes Must Have a 1080ti or 5700xt or 3060 or 6600xt or Better The more Powerful and The Higher The Vram The Better the Deepfakes will Be
i had a 24yr old friend that typed like that i stg
im too neurodivergent to read that
Adds a cool theme switcher:
- Also moves the download link to the right (#6)
- Style code is messy, I know, lol
- Moving between pages / sites causes it to briefly load the initial color scheme
- This is because the script loads after the page content does and I have no idea how to fix that
The latest updates on your projects. Learn more about [Vercel fo...
@turbid hatch just so you know, this PR changes a bit of the style tag in layout to add light / dark vars and classes
(just letting you know cause ven said to tell you if i made any style changes)
(oh and yes i know im a bad dev and the code looks bad)
Can you please fix the colors? The accents appear to be wrong and it seems like at least one of the background colors is incorrect (see how the inline code looks on the download page).
Tell us all about it.
(I hope this is the right template for this sorta thing)
Discord recently added 25mb uploads for non-nitro users: https://twitter.com/discord/status/1645522780337885184
Would be nice to see the limit expanded in Vencord!
Request Agreement
- [X] This is not a support or plugin request
You should already be able to use this, what does this have to do with us?
Yeah there shouldn't be any color changes, I just moved everything to different variables
You should already be able to use this, what does this have to do with us?
I'm probably just stupid, but I can't do it after installing Vencord, uninstalling works just fine though
Unless anyone has a better idea or figures out how to make hooks work, I might just do a modal rather than ctx menu radio buttons
Maybe I could make it fancy and add a msg preview like Cynthia did in powercord's plugin
Okay, yeah this is just a me issue then. Just tried it on a VM and it worked just fine. Gonna close this and see what else is causing this.
Sorry!
that's fine too tbh
experiment lmao
what's the issue here?
#๐พ-core-development message
Read down from here
ah
The weird way items are added means hooks are brokey in them
So radio buttons just don't change the selected value
also dev mode would tell at you
react dev build in discord soon (never)
possible actually
you just need to replace their react
I might make maybe but I feel like it would make Discord super laggy
ok, finally managed to either patch the user popout or some code that's used in other places for some reason
this has taken a long time :(
i think it's used in multiple places
otherwise it wouldn't duplicate the server list as well as the popout!
i guess that's one way to go over 100
i think i just patched a utility method yay
i'll never find it :(
i just wanted to implement this thing, it looked easy https://github.com/Vendicated/Vencord/discussions/871
Pops out the connections when clicking on a profile for easy access. BetterDiscord plugin: https://betterdiscord.app/plugin/ShowConnections
bruh ok ill look through all the color codes again
Nevermind I'm an idiot and forgot to change 2 of the var -> theme var lines
these Icons should have a title indicating their functionality!
<Icon name="fa-regular:sun" slot="light" title="Switch to dark theme" />
this component would be better named ThemeToggle
this title can be removed if you add titles to the Icons themselves like mentioned above (and is wrong :P)
<button on:click={themeSwitch}>
this removes the focus outline (see screenshot) which is important for people using keyboard navigation

Please add it back on button:focus
works correctly now!!
ok imma implement those changes you said and then you can merge ๐
btw do you guys have any idea how we could rework the download page tabs to work without javascript?
I think the html details element might work for this but not sure
oh shit we could do this with :has() and a radio
we dont even need has ayooo
lol @royal bane
this is a radio
a multi choice single option select
85.2 FM venradio
i knoww
iโm not that much of an idiot
just a little bit
yeah im not sure why it's made in JS to be honest (besides for auto selecting current OS)
Thanks for pointing that out, I completely forgot that this (and it also made me realize that it was always showing the current theme's icon and not the one it was going to switch to)
Detect OS via user-agent server-side 
๐
@sour compass sorry i gave you ill advice
button:focus also applies to when you click it with mouse (and doesnt go away either!)
button:focus-visible is what we're looking for
also i think the way the icons were before was more intuitive? I think the icon should correspond to the current theme
oh okk
so show the sun on light theme and the moon on dark theme
also literally no other site does that afaik
does what?
have the icon show the current theme
we could have it set to a switch
but it'd be less intuitive that it's a theme toggle
VSC
why dont u have format on save enabled
ur code isn't formatted correctly (with astros prettier config)
uhhh ๐
i normally dont mess with vsc's settings so it's mostly on default, except for saving when changes are made (or whatever that setting is called)
oh god wait now i remember why i changed this
cause the formatting is just ugly and changes everything
ok well i formatted themetoggle, is there anything else i need to update
oh a lot of the files aren't properly formatted lol
you put the title on the button but it should generally be on the content of the button, aka the Icon in this case
it does
works for me
oh because it doesn't add it if i just do <Icon> <title>text</title> <Icon>
yes thats not how u do it
it's a prop for the icon
<Icon
name="fa-regular:sun"
slot="light"
title="Switch to Light theme"
/>
ohh ok, sorry I never used this lib before, I just use icomoon
whats that
IcoMoon provides a package of vector icons, along with a free HTML5 app for making custom icon fonts or SVG sprites. Browse among thousands of pixel perfect icons or import your own vectors.
icon pack generator that turns custom icons into fonts or SVGs
Title tag inside of an icon tag wtf
LOOK ok shush
title tag changes the tab text lol
looks like both work the same way actually! But i think it's cleaner to have the title on the icon so if we ever wanted to add more options it wouldn't need an insane if else chain
no
<svg ...blahblahboilerplatehere>
<title>Banana</title>
</svg>
yeah and to be fair my method of automatically updating the title is pretty bad
Oh didn't realize it was SVG not HTML
ok I committed
yeah
niice
has the bonus of adding "theme" at the end which I couldn't get with auto generating (dont ask, idk)
wouldn't this first interfere with the inline raw script tag we added?
that's so if it doesn't exist it would add it first
which i dont think is in the inline tag, lemme check
yeah it isn't in there
i have a better idea that is more robust
document.body.classList.remove(prev)
document.body.classList.add(v)
why not just do this?
:P
cause i made this on my dev hangover ok shush
I just realized yesterday working on that PR that you didnโt have to re-inject every single time you change stuff
yes lol
only initially!!

ye makes sense
and then I looked at the app.asar and was like wait okay this just requires my repo dist folder
[Reply to:](#๐พ-core-development message) I just realized yesterday working on that PR that you didnโt have to re-inject every single time youโฆ
since your alters have different genders, does that make u nb/genderfluid
genuine question
WebContextMenus (had no effect):
ID: 638525
Match: /(?<=showApplicationCommandSuggestions;)if\(![A-Za-z_$][\w$]*\.[A-Za-z_$][\w$]*\)/
WebContextMenus (had no effect):
ID: 638525
Match: /("submit-button".+?)(\(0,[A-Za-z_$][\w$]*\.jsx\)\([A-Za-z_$][\w$]*\.MenuGroup,\{children:[A-Za-z_$][\w$]*\}\),){2}/
None
JSHandle@error
WebContextMenus (had no effect):
ID: 638525
Match: /(?<=showApplicationCommandSuggestions;)if\(![A-Za-z_$][\w$]*\.[A-Za-z_$][\w$]*\)/
WebContextMenus (had no effect):
ID: 638525
Match: /("submit-button".+?)(\(0,[A-Za-z_$][\w$]*\.jsx\)\([A-Za-z_$][\w$]*\.MenuGroup,\{children:[A-Za-z_$][\w$]*\}\),){2}/
None
JSHandle@error
if (window.matchMedia("(prefers-color-scheme: light)").matches)
but funnily enough this works even without closing it, i love html <3
Successfully deployed to the following URLs:
vencord-website โ ./
vencord-website.vercel.app
vencord-website-vendicated.vercel.app
vencord-website-git-main-vendicated.vercel.app
www.vencord.dev
vencord.dev
@austere talon i saw the weirdest thing earlier
vendetta's tweak insights said that some traffic came from vencord-website.vercel.app 
wel we will likely link to you in the FAQ in the future
For icons, I suggest using icomoon for any icons that aren't on FA (a bit of work to get it on the site each time you change the icon set, but completely free and allows you to use any additional icons. also based on fonts so it works in a lot of browsers.)
As for an icon key, I think it makes more sense to show it on the top of the page. It doesn't require the user to scroll all the way down for it, and it can be short and sweet:



i hate how slow first load after new deploy is on vercel, maybe we should make some bot that automatically loads all pages on new deploy 
@turbid hatch
u must format
Successfully deployed to the following URLs:
vencord-website โ ./
vencord-website-git-main-vendicated.vercel.app
vencord-website-vendicated.vercel.app
vencord-website.vercel.app
vencord.dev
www.vencord.dev
we do a little formatting
eeeeeh?
omg ๐
wdym
idk how or why, you probably just forgot
granted we should probably set up ci for this
im pretty sure i overrid the formatter in a couple of cases because it generated junk
but i didnt think it was terrible
(like this)
and i was always formatting on save
i know but it still looks bad normallyyy
it does look bad yeah
but there's no better way for it to format this
ah
yeah
that was one of the ones i did by hand
just have a tags on separate lines
i understand that but I use auto format (and u should too), so having unformatted code is meh
</a
like
<p>
Please note that due to Discord's
<a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP">
content security policy
</a>,
the CSS Editor, custom themes and plugins making use of external
</p>
it stopped complaining after i manually did it
not the same thing
on an unrelated note
a is an inline element, newlines like this inside it will show up as actual spaces in the dom
oh yeah right, so:
<p>
Please note that due to Discord's
<a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP"
>content security policy</a>,
the CSS Editor, custom themes and plugins making use of external
</p>
still looks a little ugly but better than the auto format
ignore the desk mat im dry cleaning it later
whats that
sake
o.o
its a drinking set!
how to defeat the formatter
dont get too drunk now
so you pour the sake into the big flask
insert {}
and then there's another 3 cups that go along with it
because you shouldnt drink too much at once
so the flask and cups store the right amount
wow drunkard lewi!!!!
also remind me to never buy that brand again
it was like $20 for that bottle of 300ml
but yeah i agree that the formatter is terrible lol
it was really good though..
i have never gotten drunk!
i wish astro just did it like jsx and made newlines in inline tags NOT be whitespace
as is custom
i always wondered why they do this, svelte does it too
i guess cause they're leaning more towards the html side of things
though JSX has its own annoyances
<a>
In jsx if i actually want a space or newline i just do this, like come on man
{" "}
{"\n"}
</a>






