#๐พ-core-development
1 messages ยท Page 132 of 1
it will i think im goood
/(?<=avatarDecorationOverride:(.)}.+?void 0:(.)\.avatarDecoration,.+?)return{avatarPlaceholderSrc:.,avatarDecorationSrc:(.),isAvatarDecorationAnimating:(.),/
ven cringing at the fact we still use .+?
huhh why
idk i thought you were anal about it in vencord patches
nah thats fine cause its in a lookbehind
it depends on the context
ah
why use .+?
if it can be avoided yes absolutely
but we commonly use it in lookbehinds to match variables
although we put the lookbehind BEHIND the match
it does the same thing, just more performant (usually) and easier to digest imo
I'm gonna keep the avatarDecorationURL patch, ditch the user patching though
cause it first matches the normal part THEN walks back
uh why, shouldn't be necessary at all assuming the hook is used everywhere
create decoration page
places where the override is used
its fine it'll work out
About SoundBoardLogger
SoundBoardLogger is a plugin that lets you log all soundboard sounds that are played in a voice chat.
Main menu

People that played the sound

Info about a specific user

Open SoundBoard Log icon
(The user can choose where should the button to open the logs be displayed)
Toolbar button

have you tried turning it off and on again
i have tried devourign a macbook
did you turn it on afyt eajmkarweoe
whar
cgdhj,t, nb TURN IT ON fnewioak jm,tgwae
same energy as this
energy? what's that
in ur walls
can i eated it
do eat drywall
i cant because I EATED ITN KJAEWLW>
all is now fixed and optimized 
wait why
dev constants conflict
cuz new plugin got merged
yeah there was definitely an easier way to do this
I wouldn't separate the file that much, the smaller ones like types and settings can still be in the main file if you prefer
ded link moment
guess only i can see it
yeah
conflicts redirects to pr if you dont have any
but if its not ur pr it 404s because ???
there is no way to undo a commit from the github website
its not in their api
its just impossible
thanks microsoft
created a vsc plugin that lets you create plugins
prob gonna update it soon to make it for userplugins
had to download github desktop and clone just to revert
same
git reset --hard HEAD~1
git push --force origin yourbranch
deletes last commit
destructive
stop using shithub desktop for everything got damn
teach urself git cli basics, future you will thank you
i know git cli basics
most of the time it's git clone, git push, git pull, and git add .
i have been learning it as needed
but most of the time its just pulling changing branch or git reset --hard lol
Fixed
i use lazygit because im lazy
its actually really good bc it doesnt abstract away what git is like gh desktop does
but lets you do lots of advanced things easily
fire
peppy jumpscare
AHHHH
404'd
wai
FUCK
CHAT SCROLL

GitHub did funny and showd the index and css files in a non existent folder๐
Had to reupload both
imagine i actually contribute to Vencord (i will not because i dont have plugin ideas)
plugin to make discord faster
I saw some1 ask a while ago if there is a way to download soundboards so I got together with 2 friends to make a soundboard logger
Just look at what ppl here are searching for and make that
maybe i should find a bd plugin 5-year olds want to use in vencord and recreate it in vencord
remove the discord stylesheet
it will make discord 200% faster
web 1.0 discord
remove all the js, will be as ffast as light
Just look in the support chat every day I see some1 ask if there is a bd plugin in vencord
discord but its in vbscript
Just see what ppl are most looking for and make that ez
discord.hta
guys my discord is really really fast but it doesnt work help
i removed all the js and css
Looks good
What are u doing in the plugin?
prob something like the 3y3 encoded profile thems
Oooo
we got enough 3y3 shit
no more profile space
theres probably more invisible characters that can be used tho
the 3y3 chars are from 0xE0001 to 0xE007E inclusive
but those are special cuz they are invisible and zero-width
i'm looking at FakeProfileThemes source
Why did nobody tell me how powerful lookaheads are.
very
when done right
how do u not know about those
thats like the most useful feature of regex
u might as well not use regex
bruh i learnt enough to make a big ass plugin
what was ur prior experience?
like even outside of vencord plugin development
vendetta dev
outside of that?
all i know is some java ๐
the mf public static void main(String[] args)
i love java
horror
58 billion soon...
ok chat humor me
if ids is undefined, will this set the ids parameter?
I think it will
bc ids?.length will result in undefined
and undefined !== 0 = true
@austere talon this is why i had that explicit ids check
just test in console
if ids is null or undefined then ids?.length will be undefined
and you are checking against 0
mhm
strict type
gonna js add a ids && before it
yeah thats the best way to do it
if i add myself to the devs list when making a pr-
it's okay right
yeah thats what ur supposed to do
k
i swear to god i look at the decor plugin funny and it gains 10 lines of code
Rip
cause i didnโt pnpm install
Oh lol
just added a 3y3 command for looking at this
but i forgot to change it to content
i mean
the 3y3
cause this happens
i will explod gradle
ven ancient pfp
Discord Account
edm115
What happens when the bug or crash occurs?
Nearly all places that holds an asset on top of another asset have an offset.
This applies to the red dot on the pinned icon, the user status (Online, Idle, ...), the user avatar in several places (User profile popout, chat list, members list, ...), the user banner (same), but also in the Shop.
See screenshots for more
What is the expected behaviour?
These assets shouldn't collide nor have an offset.
###...
wow an issue
note that :
- some profiles aren't affected by this (and may be affected after we change server/chat)
- the PlatformIndicators plugin have no effect on this
what plugins you got enabled
Within Webcord () the user has a menu that is handy to have for its browser container which are accessible by pressing the alt key:
https://github.com/Vencord/Vesktop/assets/96911866/ad1cf127-8b3b-432a-9b38-14a0151b950d
Some settings in WebCord are already handled by VenCord plugins such as blocking science, and typing, but most everything else is missing including what's mentioned in the title. An alt-key menu would improve Vencord by allowing the user to block most everything to incre...
browser : chrome dev 121.0.6103.3
extensions : a lot
 => downloadAudio(item.soundId)}>Download</Button>
more consistent
we did different colors for the buttons so they wont just blend together and you can know what each button dose without the need to read the text on it
still different design language to Discord
ill update the download to primary
Venmic prints some output to stderr/stdout, so running vencord from the terminal should suffice unless it's somehow redirected
Does not seem to print much of anything other than
WARNING: radv is not a conformant Vulkan implementation, testing use only.
[arRPC > ipc] listening at /run/user/1000/discord-ipc-0
[arRPC > websocket] listening on 6463
[arRPC > process] started
Even after I joined a voice call and shared screen with audio.
yes. I already said that
but that only applies to !==, not ===
Discord Account
No response
What happens when the bug or crash occurs?
macros donmt work on logitech to mute your self
What is the expected behaviour?
non muteable
How do you recreate this bug or crash?
logitech headset g733 n logitech g hub
Errors
Replace this text with your crash-log.
asfdasd
Request Agreement
- [X] I am using Discord Stable or tried on Stable and this bug happens there as well
- [X] I have read the requirements for opening a...
stupendous
doesnt look like vencord issue
yeah
when the bug starts with logitech
well
as I said, I tried to disable the themes BUT it changed nothing
proof
That's discord nitro theme
Also vns
Vns
guhh
make it so that venbot pings the replied user
Hey, if I edit a message's content in MessageStore after it's loaded into the UI (I'm using a flux handler for CHANNEL_SELECT to do this), is there a way to trigger a refresh afterwards so that the updated message shows up on the UI? I tried dispatching a MESSAGE_UPDATE flux dispatch on the message but I didn't see any change immediately until I switched to another channel and came back.
pseudocode of what I'm trying to achieve
async CHANNEL_SELECT({ guildId, channelId }) {
let messages = MessageStore.getMessages(channelId)._array;
messages.forEach(async (m: MessageObject) => {
if (m && meetsCondition(m.content))) {
m.content = modifyMessage(m.content);
await FluxDispatcher.dispatch({ type: "SOME_EVENT", message: m });
}});
No it's not possible to patch message content on UI like fakenitro does it because I need to call an async function there and I learned yesterday that there is no way to get a return value from an async function in a sync function.
huh?
read the commit name
How can I verify that the user has nitro before applying a patch?
you probably cant
ah
you'll probably need to check at runtime
yeah
you cant unless the module is lazy loaded*
non nitro users who use SuperReactionTweaks are getting this
if then enable the always super react option
Could you please try and run venmic in the Rest-Server mode and then use any HTTP-Client to see if using the server results in more meaningful errors?
Please see the "Compiling" section in venmic, then run the binary from the command line and perform the following requests:
(GET) http://localhost:7591/list, pick any node (i.e.Firefox)(POST) http://localhost:7591/linkwith the following body:{ "props": [ ...
This is why I had it default to false
bruh
why doesnt discord code check for it
no bc i want to check if they pass ids but it's got zero entries..
if (ids && ids.length === 0) return {};
yes
That's what I thought too
you can use UserStore from @webpack/common
const user = UserStore.getCurrentUser();
if (user.premiumType < 1) // Disable super reacts
they do tho
when you press the super react button
we just change the default state to true
..which isnt accessible at patch time
but the state can never be true in vanilla discord if u don't have nitro
you can just use it inside patch
there was a guy in support complaining abt it
Idk if we should default to false though since then nothing changes by default
couldnt you add a setting to disable it that requires restart?
predicates are weird to me there's no indication the plugin needs restarting to patch after a setting changes
it would be nice to just be able to grey out an option that's nitro only
u could use the disabled feature
you could even add an if statement in the patch that uses $self to fetch a variable
default the variable to true
and in start() get the current user and set false if not nitro
wdym?
it should be self explanatory to the developer
and you can mark specific settings as requiring a restart
its fine to a dev but to a end user not
where
restartNeeded?: boolean
didn't know that
I think there's some sort of conflict too
It's just outright not working for some people
works fine for me
how u react that fast
shift key
@sour rain
nah even with shift key thats too fast
has that issue
not really
๐คจ
you must have high ping
wut
i was js mentionning u here
wtf
wdym
i cant do that
i have to click this button here
the add reaction button
see
when i do the other way it wont work
waht's the other waty
oh bruh thats expected
yall mfs are not that quick at manually clicking add reaction and selecting random emojis
you can hold shift and it keeps the react panel open
oh rlly?
yeah
if we messed with the right click ones that would be a nightmare for non nitro users
๐
the nitro ad that shows when u open the reaction picker can be hidden with css
[class*=emojiPicker_] [class*=wrapper_]{display:none!important}
ok but it doesnt load anything other than the first page of emojis unless you click the x button so nvm
Should I just default it to false
or add a note saying "You need nitro for this to work"
did u try any of what i suggested earlier?
this could work
I havent tried this yet
im on my laptop without vscode
ill see if it works
true
so the problem is people have superReactByDefault set to true but they dont have nitro?
Yes
good point
sadly
yeah the css isnt a solution for it
so called nitro filter rollout
this should be faced with a warning
so you don't accidentally press it like the dumbass that I am did
if you have one already
since when sort button causes the cursor to act like it's about to select an text
guys we got a zero day over here
welp, i think i gotta stop overlooking at small details
what is that from?
plugins menu
could easily be fixed with css then
yea but it'd need to be added to base client
oh that plugin menu
no point making a quickcss js for that
i think this will work
{
find: ".hasAvailableBurstCurrency)",
replacement: {
match: /(?<=\.useBurstReactionsExperiment.{0,20}useState\()!1(?=\).+?(\i===\i\.EmojiIntention\.REACTION))/,
replace: "!!Vencord.Webpack.Common.UserStore.getCurrentUser().premiumType&&$self.settings.store.superReactByDefault&&$1"
}
}
could you test it? i have nitro and i dont have any alts lmao
i dont have nitro and the super react ad doesnt show for me
just need someone with nitro to test
why !!
you don't ned that i don't think
:/ i prefer to do != null but javascript has multiple nulls
premiumType can either be undefined, 1, or 2
i want it to be false if undefined and true if 1 or 2
!undefined is true
!!undefined is false
it's redundant though
its the shortest and best way to accomplish what i was trying to accomplish
it worked for me
you can just remove it ๐ญ
wdym
i think?
just Vencord.Webpack.Common...
and 3

no, remove the !! at the front
new nitro teir $25 per month
there's just basic and full
undefined && true is undefined
(technically you can get classic but you shouldn't)
huh what
js weird
OK that makes sense then
also null && true is null
cold turkey
should've kept that
fr
its fr just a distraction
@void echo also im pretty sure
shouldPlayBurstReaction(playingCount: number) {
if (settings.store.unlimitedSuperReactionPlaying) return true;
if (playingCount <= settings.store.superReactionPlayingLimit) return true;
return false;
}
could be replaced with:
shouldPlayBurstReaction(playingCount: number) {
return settings.store.unlimitedSuperReactionPlaying || playingCount <= settings.store.superReactionPlayingLimit;
}
u could even just put it directly in the patch
I did it like that for verbosity
pointless..
Would just make it more confusing
cuz u made the variable names so long
i did that at first with my plugin and it just got so unreadable
They're fine lol
for example, shouldPlayBurstReaction could be changed to playSuperReaction
it's fine as it is
Having a func that the patch just calls is way neater than putting the func in the patch
more obvious what it's deciding doing to decide to play
in this specific case i think it could be more readable actually
{
find: ",BURST_REACTION_EFFECT_PLAY",
replacement: {
match: /(?<=BURST_REACTION_EFFECT_PLAY:\i=>{.{50,100})(\i\(\i,\i\))>=\d+/,
replace: "!($self.settings.store.unlimitedSuperReactionPlaying||$1<=$self.settings.store.superReactionPlayingLimit)"
}
},
nah thats honestly cleaner than the function
only made the change cuz i was already looking at the plugin to fix an issue with it
pointless change though
ur header doesnt give eslint error but mine does
what
so the super react plugins header includes names and mine doesnt
thats the only difference
but when i add my name to my plugins header, i still get the eslint error
weird
@cunning canyon could you separate the highlighted code into a utility similar to Decor's?
or like smt, bc vesktop uses a very similar func too
also the max super reaction settings thing should just be a number input
idk why u would limit it to certain preset numbers
it's fine bruh ๐ญ
bro what
i wanted a slider and the slider is a pain to use
just make it a number input
isnt this for the users of the plugin tho?
why limit it to 5, 10, 20, 40, 60, 80, and 100
u cant even select 0
5 = discord
20 intervals = full message of super reacts
at some point it's pointless to finely control how many can play.. just turn on unlimited
you can only hover over so many at once
add 0 sure, but the slider is fine
if the user really wants a fine grained number they can set it in the console, but for most ppl the slider is fine and provides a way nicer experience than a number box
nah thats crazy
goes against every ux philosophy
ezpz slider providing nice default numbers that work well vs clueless number box that you have to think of a number for
it is fine
just fix what u wanted to fix.. leave the rest alone it is fine :/
imagine if the mfs who made operating systems had that same viewpoint
did you confirm the max burst reaction thing even works?
ur mom is nicer
setting it to 0 doesnt do anything
yes it did when i made it
even 0?
anyways if you really want you can manually set the config
thats crazy to expect people to do that
when u can just do OptionType.NUMBER
nobody will complain about it not being a slider
but somebody will complain about it not being a number input
why limit user input when you dont have to
especially when there are no downsides to not limiting user input
me when i set NaN
ryan
ryan please js cease
i didn't test 0 because it wasn't a option 
the limit does work on the version in vencord right now
ryan i do not want to use a number field nor does ant0n
leave the slider and shouldPlayBurstReaction function alone
fix the super react by default issues like you wanted to
u crazy
I have the same problem. How did you fix it?
I'm not the one not respecting wishes ๐ฅ
nah thats stupid
if i wish for something bad for the users doesnt mean it will get merged
like what
dude it is literally fine as is
nah makes 0 sense
fix the thing you wanted to fix
no
I think slider is better
the 0 limit works fine
i have it on 5 but none play
just doesn't apply to the random ones
ok 0 works i just thought it would make them default reacts
but on 5 none of them play
5 and 10 work fine for me lol
only like 1 plays
ยฏ_(ใ)_/ยฏ
On 5 I got 5 to play
Thereโs also the random ones that arenโt affected
ermm what
ermm what
ermm what
Ok it works then, I just misunderstood
That did the trick! I can't test with 0.4.3-1 because I should have just renamed the GPUCache folder because now I can't test the data against it.... maybe if I delete it one more time and rollback? Lemme try...
That did the trick! I can't test with
0.4.3-1because I should have just renamed theGPUCachefolder because now I can't test the data against it.... maybe if I delete it one more time and rollback? Lemme try...
The bug from what I understood happens on relaunch, the gpucache gets corrupted so on new launch it's unusable
Well rolling back I can't get 0.4.3 to do it again. I find it strange Vesktop functioned at all with the same broken cache before. As I can no longer test the issue (shouldn't have rm -rf'd ugh oops) I am closing.
Hey. You can check the Aech wiki article on xdg-portal and at the very bottom, thereโs a section to fix a bug with sway. It fixed my issues on Wayfire as well: https://wiki.archlinux.org/title/XDG_Desktop_Portal
I spoke too soon. The first launch after update, all was well. I closed, and yes, it does happen again.
The bug from what I understood happens on relaunch
Dead on the money. Now to test 0.4.3-1.... yes! Even with the broken cache, 0.4.3-1 renders properly. I can swap back to 0.4.3 and still see it broken, so electron v29 was definitely the correct fix.
I spoke too soon. The first launch after update, all was well. I closed, and yes, it does happen again.
The bug from what I understood happens on relaunch
Dead on the money. Now to test
0.4.3-1.... yes! Even with the broken cache,0.4.3-1renders properly. I can swap back to0.4.3and still see it broken, so electron v29 was definitely the correct fix.
Good to know. I remember seeing libdrm being mentioned as the main thing causing the corruption itself, chromium bu...
Also alternative fix to electron 29 is running vesktop with --disable-gpu-driver-bug-workarounds
@void echothis is what i got
export const settings = definePluginSettings({
superReactByDefault: {
type: OptionType.BOOLEAN,
description: "Reaction picker will default to Super Reactions",
default: true,
},
unlimitedSuperReactionPlaying: {
type: OptionType.BOOLEAN,
description: "Remove the limit on Super Reactions playing at once",
default: false,
},
superReactionPlayingLimit: {
description: "Max Super Reactions to play at once",
type: OptionType.SLIDER,
default: 20,
markers: [0, 5, 10, 20, 40, 60, 80, 100],
stickToMarkers: true,
},
}, {
superReactionPlayingLimit: {
disabled() { return this.store.unlimitedSuperReactionPlaying; },
}
});
export default definePlugin({
name: "SuperReactionTweaks",
description: "Customize the limit of Super Reactions playing at once, and super react by default",
authors: [Devs.FieryFlames, Devs.ant0n],
patches: [
{
find: ",BURST_REACTION_EFFECT_PLAY",
replacement: {
match: /(?<=BURST_REACTION_EFFECT_PLAY:\i=>{.{50,100}\i\(\i,\i\)>=)\d+/,
replace: "$self.settings.store.superReactionPlayingLimit&&!$self.settings.store.unlimitedSuperReactionPlaying"
}
},
{
find: ".hasAvailableBurstCurrency)",
replacement: {
match: /(?<=\.useBurstReactionsExperiment.{0,20}useState\()!1(?=\).+?(\i===\i\.EmojiIntention\.REACTION))/,
replace: "!!Vencord.Webpack.Common.UserStore.getCurrentUser().premiumType&&$self.settings.store.superReactByDefault&&$1"
}
}
],
settings
});
didnt include header and imports cuz discord message limit
when i set it to unlimited they dont all animate
is that how its supposed to be?
i was expecting them to all animate at once
i guess it works tho cuz when its 0 none play
and on values above 0 some will play
No it doesn't force them, it just allows them. Often it won't go past like 10-15 anyway. I'll test this in a minute thanks
@austere talon by the way i resolved the reviews you made
so decor has been working, however I noticed that the reviewdb plugin isn't showing up in the plugins section, is this a bug?
done
wait nvm I had not realized that reviewdb got deleted from vencord
cool I guess I'll switch to it once text replace is merged? idk
btw..

LMAO
Day 48439483 of asking for a free avatar decor plugin!
mf
we're at the final stretch
WTF IS A TYTD
im guessing it stands for three y three
idk what d stands for
wouldve said decoded but its set to the encoded value
cant start vars with numbers so thats probably why they did that
One idea:
- make a listener process that connects to the
org.kde.kglobalaccelDBus. - user can now register global shortcuts via KDE systemsettings.
- when it receives the
globalShortcutPressedsignal, use a Vencord plugin to runFluxDispatcher.dispatch({ type: "AUDIO_TOGGLE_SELF_MUTE" })or whatever. - that vencord plugin also disables the keybinds menu, and encourages the user to use their system settings.
- add actions to the .desktop file like how KDE Spectacle does.
vesktop does not have global keybinds at all right now, not even on windows
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=
None
None
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=
None
None
I was able to compile and run without errors,
I am unsure if I am suppose to be seeing anything when I do the (GET) instruction,
and I am unsure what I am meant to do when I get to (POST)
Neither show the unable to connect screen, both give out an 404 error in the browser console though.
I am using LibreWolf so I'm assuming the instructions would be the same.
is there anyway i can change the data of a flux event that is sent to the client? like i have a message_create event that i want to change something on, can i change it before it is used by the client?
huge
Also alternative fix instead of using electron 29 is running vesktop with
--disable-gpu-driver-bug-workarounds. Could you check if it actually works?
Can confirm that also works.
Gosh, i was looking into the global keybind api and it does not support keyup/down
implementing ptt alone would be rather involved likely requiring iohook
simple things like mute/deafen shortcuts would be easy though
why in the world does iohook have 1k stars but only 300 monthly Downloads
and why does it require such weird dependencies
No idea
After looking around that seems to be able to do it though
I'll experiment with it
oh it's just for downloading prebuilds
cursed
If someone else can find the functions that toggle ptt that would be awesome
it looks fine probably
likely a flux dispatch
search for
TOGGLE_PUSH
TALK_TOGGLE
No idea what that means i write native code usually
ctrl shift f in devtools
But yes I'll check (somewhere)
actually i can just check myself from phone
None of the other web discords have this implemented either
doesn't seem to be a flux event
Looking at one implementation from another app it didn't look that bad
Fun
PTT might not be possible
no
discord desktop uses their own custom voice chat native module
discord web uses webrtc
webrtc doesn't seem to support push to talk
oh huh
Works on webcord
And in that's discord screen audio thing
And in browser normally
Of course we can do it
It's just about having a global hotkey that calls it
Of course i could but i want to hold it down
yeah
And not be constantly muted
shrug
Because then people don't talk to me thinking I'm afk
yeah was just a idea
i never understood PTT people tbh, just single button press to toggle mute is way more convenient
It's just years of muscle memory and the reason above
We can easily implement mute hotkeys with the global hotkey api
anyway just reverse engineer to find the PTT function then
not the best guide but it works
this would be so much easier if this was a native application
no it wouldn't lmao
it literally would
just IDA it ๐ญ
it's so great because there's no actual button i can search for
that makes no sense
disassembled bytecode is more readable than human readable Javascript code that you can debug and run any scripts on?
then just search for keywords instead using ctrl shift f
PTT
PUSH_TO_TALK
pushToTalk
or look at the event listeners for keypresses
getEventListeners(window)
lol none of these keypresses have.. any letters assigned to them
ahh
you have to expand them
@fresh cloak module 227602 may be of use
anyways SOMEBODY give me a way to turn a string into a PartialObjectDeep<Message, {}>
sorry, one again first time diving into this, how do i look at that module?
look at other plugins
wpex(227602) i believe
found a handleKey function but where do i go from whatever this is
e.exports.prototype.handleKey = n("986083"),
no wait lemme just
no that's not real
it is
Vencord.Webpack.extract(227602)
you only get the shortcut if you enable consoleshortcuts plugin
so i've pretty much found what happens when you press the PTT key
[g.GlobalKeybindActions.PUSH_TO_TALK]: {
onTrigger(e, t) {
T.default.getMode(t.context) === g.InputModes.PUSH_TO_TALK && (O[g.GlobalKeybindActions.PUSH_TO_TALK].isPressed = e,
T.default.getMediaEngine().eachConnection(t=>t.setForceAudioInput(e, !1), t.context))
},
keyEvents: {
keyup: !0,
keydown: !0
},
isPressed: !1
},
now i ned to figure out what this T is
somebody fill me in on this
See if this was a native application i could simply be taken to the definition of T with a button press
oh thats why you said ida
The constructor takes me to some weird looking function
its you
it's really not, you're just having what we call a little skill issue
but you'll get there

I will come to your house
It really is though
Plugin hooks are :')
Gotta regex to find your function 
hooking? 
hookers? you've been at the bar too much
But yeah no this is definitely worse
Hunting down one definition is like a blindfolded scavenger hunt
have fun
it really is just skill issue 
Like i already found the function
it is likely more than one ocurrence
But it's on some mysterious T object and i have no idea where it ends. It's probably an object on an object on an object on an object
Yes i know
you just put a breakpoint and jump to the definition or even just search for the name
takes 5 seconds
I already put a breakpoint but the constructor takes me God knows where
or you literally just type findByProps("getMediaEngine") in the console
that's not real i think
wym
there took me 2 seconds, its module 42887
maybe part of the console shortcuts plugin
Vencord.Webpack.findByProps
please stop thinking i know anything about this stuff
i'm literally just diving in blind
thank you
there's a first for everything
u think i patch shit 
if i had to write a website i'd write it in rust
that should tell you how much i know about js etc
YES PLEASE
rsx 
dom manipulation through js interop, still 5x faster than react
banned permanently
idk ven, rust aint all that bad for web dev
it's terrible lol
i almost exclusively use svelte thats it
wasm is garbage for frontend ui
mfw still faster than react
that's just blatantly wrong lol
it's not
but react is bad anyway
you're telling me your dont wanna write html in rust!?!??!?
:)
id rather cut my leg off
rare v L
in all fairness tho, rust ui state isn't great right now
mhm
anything serious using them usually has to fork and expand
which is in turn good when those contributions make it back upstream
i.e. PopOS
heavily using js apis like dom from wasm will always perform terribly compared to pure js
and using webgl / canvas rendering instead ruins accessibility and UX
using rust or similar for frontend is just massive cope
use svelte, it's good
webgpu
webgl can krill itself
real
HEY
opengl in current year is just death by the same 27 lions
its no better than it ever was
for basically anything unless you want to be deemed old as fuck
i dont think it was even meant to do as much as people used it for
actually there are some rust crates which create dom nodes directly instead of rendering in a canvas (which makes a11y instantly better)
but about the first statement, yeah calling js apis from wasm might be slow, but since wasm is being more adopted i assume browsers would make appropriate optimizations for it
yes, it is slow
serialisation is inherently slow
that's true
it's still a very fast framework all things considered
and once wasm finally gets native dom manipilation that'll go away too
using anything but js for frontend is delusional and has no future unless browsers add wasm bindings for dom which they'll never do or in 20 years from now
right you have to serialize objects between wasm and js :blobpain:
just use shared memory /j
i remember trying to make wasm interact with unity
i had to directly fuck with memory to pass anything more than a number around
then i said "fuck this"
anyone using rust and wasm to do web dev is already coping so i dont think they'd care about performace that much
i never understood why people even do it
you're literally just shooting yourself and also your users in the foot
but tbf you gotta be a masochist to even like rust
i am


they just wanted to say "we use the blazing fast ๐๐ฆ๐ rust language" 
i tried fixing someone's compose web site once and literally wanted to kill myself
using what's essentially a wrapper instead of raw css makes everything so much harder, it's like using scratch instead of normal java
i like rust but i'm not a masochist ๐ญ
well now you're just contradicting yourself ๐
just try svelte/astro they're infinitely better than react
and are some of the best performing options you can get (other than just rendering everything on the server)
i used astro for my personal website
and react for anything else
svelte is just hot
<script>
let count = 0;
function handleClick() {
count += 1;
}
</script>
<button on:click={handleClick}>
clicks: {count}
</button>
{#if count === 727}
<p>holy shit</p>
{/if}
astro loads fast, but the 3js blob rendering in the background makes performance on mobile infinitely worse

i need to learn that
if statements in html ๐คค
yeah instead of using js conditionals and array map like react, in svelte you have those things in your markup
also 727 lol
ok that's next on my list
**Plugins.svelte: **Lines 76-83
<div class="criteria">
{#each criteria as c}
<label>
<input type="checkbox" bind:checked={c.state} />
{c.name}
</label>
{/each}
</div>
taking notes for my rust gui crate 
NO
its native gui
it looks too good to be true whats the catch
wasm support is just more work
rust native gui can look nice
lol wysi lol lmao
and it has inbuilt animations/transitions and use: which lets u run code on nodes it's applied to whenever they render / are updated
https://github.com/Vencord/vencord.dev/blob/main/src/components/pages/plugins/Plugins.svelte#L53-L68
**Plugins.svelte: **Lines 121-126
<p
use:overflowTooltips={p}
class="description ellipsis-overflow"
>
{@html highlightMatches(p.description)}
</p>
**Plugins.svelte: **Lines 53-68
function overflowTooltips(node: HTMLElement, _: PluginData) {
const applyTitle = () => {
const hasOverflow =
node.scrollWidth > node.clientWidth ||
(!node.classList.contains("author") &&
node.scrollHeight > node.clientHeight);
node.title = hasOverflow ? node.textContent! : "";
};
applyTitle();
return {
update() {
applyTitle();
},
};
okay ill stop shilling svelte now sorry
i like react and jsx
what the FUCK is a Set
HashSet
I LOVE SetS
it's a HashSet
is SolidJS any good
.get
or
was it zt/xinto lol
[...set] gives you a plain array
i have
zt
where do i put this
or just use set.forEach(v => {})
oh right .get is for maps
ven
i swear to god the forEach loop was not working earlier
ahh i've found something much better i htink
findByProps("getMediaEngine").getMediaEngine().connections.forEach(v => {
v.input.setPTTActive(false)
})
cool
this works
now to look at iohook
what does ptt mean
oh
it's annoying, electron has an api for global hotkeys
which is great for mute/deafen toggles
but it doesn't support keyup/down
so now i have to work around that
Why does js do weird shit like setting this to a random variable in scope while intermittently using both this and the new variable
Just seems like.. random waste
huh
Yeah
wdym random variable in scope
It was using this a lot
this has a very well defined meaning
I notice that input was on a variable r
well it is how it is
That's literally an expansion, adding an extra assignment
And useless if you're using this most of the time anyways
this.someMethod(this.someProp, this.otherProp) vs r = this; r.someMethod(r.someProp, r.otherProp)
Unless the browser figured out that r is this except in that one occasion
And then shows me this instead of r?
No idea
Either way I'm happy i finally found it
It's fun stepping into things you know nothing about and learning
Wha
What do you mean
Oh
Idk bro I'm just talking about the code i looked at to find the function
Complain to discord
iohook doesn't work on node15
there's a different one but it wont build
probably just discords minifier
or rspack
i doubt they use this like that themselves lol
(oh btw rust reference Real)
Use the inbox read all button lol






