#๐พ-core-development
1 messages ยท Page 6 of 1
does inputType bot work
what
can i put this in a dumb github repo for 3rd party plugins
small issue with the webhook tags plugin: all bots now have the "WEBHOOK" tag instead of their "BOT" one
really?
Fake and gay
lemme restart my client
@obsidian lintel help
:heart: ->
If you use paid smileys (emojis) in your message, I will correct you.
Type :joy: to try it out!
:scroll: For more commands look at your private messages.
autoupdater when
yup
Does this show as a webhook?
Then this bot is sending webhooks
discord interactions are handled as webhooks?
You need to provide an image/GIF to add a caption! (Tip: try right-clicking/holding on a message and press Apps -> Select Image, then try again.)
yep
yeah
yep
which is also why emoji perms can be funny
oopsie
thanks, now works properly
@austere talon when vencord rewrite rewrite clean neko version 
Assuming vencord rewrite 
When you ball
Ah, thanks! Yep, you're right, it's just using a very limited path.
For anyone else who stumbles across this with the same issue on Mac after installing Node with brew, just add the Homebrew folder to the path at the start of index.js:
process.env['PATH'] = process.env['PATH'] + ':/usr/local/bin';
c918bea quickReply: add support for edits - Vendicated
i aint reading all that
insane
a73e10f quickReply => InteractionKeybinds: now supports... - Vendicated
There are probably much better way to do it but
e.g., if you post https://twitter.com/MeguminSama/with_replies, it becomes https://fxtwitter.com/MeguminSama/with_replies, which just redirects to https://github.com/FixTweet/FixTweet
I actually made my regex fix that, but it got changed out last minute. Ill update the regex again to fix this now
๐
why tf do they send sound to deafened people
after probably close to 2 hours of trying, i can say i am not adding the automod embed right now. main reason is that adding a component to the message requires basic React knowledge which i do not have, and even then i'd have to look for ways for how to render everything that discord doesn't do automatically
also tried to simply add an auto_moderator_message to the embed but discord refuses to render it no matter what
Why modify the message structure? Why not just add a new element to message accessories?
cause insane
old 2019 versions of discord kotlin let you move yourself to channels u cant see
not anymore but funny


love
HOW
API moment
api moment
Iirc, opt.value is a string...
Can't really back that statement since I am going to sleep, but please confirm that that is not the case.
haha I still have the old image
love
Iirc, opt.value is a string...
Can't really back that statement since I am going to sleep, but please confirm that that is not the case.
it's a "string | number | boolean"
its not @quaint sapphire
late to the party, aint ya?
bf49acd Fix Settings errors when retrieving a null valu... - Vendicated
Added in https://github.com/Vendicated/Vencord/commit/d26196d6c52c092a8e2ef302a2aeec538ff2fe23
Works fine except that Firefox ViolentMonkey bug cyn mentioned. Also runs into csp issues when trying to fetch external urls like github/unpkg
I am not sure how to fix these two issues
Can't you still do that
I remember it working
Or is it just a ShowHiddenChannels moment
idk tias
Yop
Still works with show hidden channels disabled
Discord is great at programming
lmaoo
now that I think about it, could also make it a decrementing number and remove once it reaches 0
but eh this is fine

webpack patch needs a cleanup badly soon anyway
mainly the error handling to give more useful errors
๐ค

Added choices option, don't review.

Okay now you can actually differentiate the channels that are supposed to be hidden
๐คฉ
๐ฃ
๐ญ
me when fake voice options 
Fixes issue with fxTwitter referenced in issue #97
{ can } = findByProps("can", "initialize");
replace: 'Vencord.Plugins.plugins["View Hidden Channels"].processChannel(e);D[e.id]=e;'
i hate
deafening yourself client side is just creepy
it might be fun for you but it's definitely not for anyone else
shut the fuck up
why are you saying its creepy then
i read the code and what it does is creepy
wait
so does it show the deafened icon client to people in the call
but you arent actually deafened?
yes
i freakin get it you want to be deafened client side on normal discord calls
but what if you made it server side
๐
THE BOT BURST REACTED
HOLY
more like, camel case for everything other than class names, for those upper camel case is used
unnecessary suggestion, it would fail the lint check either way
Your suggested description implies that muting will only appear that way locally, and others will still hear you.
The current description is more fitting...
Why not make 2 seperate PRs? There are 2 plugins here and they arenโt related at all. I can see why channel revealer would be useful but the only use case I see for fake deafen is really creepy. I think you should remove the it from this PR and create another one for it (or not).
Why not make 2 seperate PRs? There are 2 plugins here and they arenโt related at all. I can see why channel revealer would be useful but the only use case I see for fake deafen is really creepy. I think you should remove the it from this PR and create another one for it (or not).
One usage for fake deafen is to cheat when playing a game with friends, lol.
For example: https://www.youtube.com/watch?v=hDJFsBbtqmY
It wasn't used there, but he could take advantage of it if he had it.
e will probably not change, but D...
Fake Mute/Deafen is like others said very creepy and I will not be accepting it.
ViewHiddenChannels can be merged I don't think anyone really minds; but you hardcode minified variable names which will most likely change in the future and break the plugin. Also there are a lot of style issues. Please use the lint:fix task to autofix and check your code
Please also only add one feature per pull request
Feel free to open a new PR with only ViewHiddenChannels
why are u even reviewing style stuff just let lint scream at him 
real
linting is for the weak
well. it's alright, ima make next plugins less creepier
just pre-minify your plugin to save discord some time
anyway i fucking hate react
Can you not make that function inline
The proxy one
the intent is clearer when using a named variable
also more efficient probably since otherwise it creates unnecessary funcions

VM11364:1 Uncaught TypeError: 'get' on proxy: property 'prototype' is a read-only and non-configurable data property on the proxy target but the proxy did not return its actual value (expected '#<ProxyDummy>' but got '#<actual>')
at <anonymous>:1:6
funny error
esbuild wtf
i've re-written it so it doesn't mess with permissions.

It would be nice if the channel icon turned to a lock rather than adding [๐] to the channel name.
@austere talon will merge fake defean
There is no stop method...disabling the plugin won't have an effect.
That's not nice.
There is no stop method...disabling the plugin won't have an effect.
That's not nice.
the plugin patches things so if you disable it you will have to restart discord.
It would be nice if the channel icon turned to a lock rather than adding [๐] to the channel name.
yeah i'm trying right now but the patcher doesn't want me to
the plugin patches things so if you disable it you will have to restart discord.
That's just an excuse, you can make it so that your callback only shows hidden channels when the plugin is enabled.
Even if the patch is still there until the user restarts, it doesn't mean that the user has to restart for it to take effect.
I like how edits don't appear here
trying to install dependencies pukes out this error:
PS C:\Users\aytag> pnpm install --frozen-lockfile
โERR_PNPM_NO_PKG_MANIFESTโ No package.json found in C:\Users\aytag
powershell btw
NO
It would be nice if the channel icon turned to a lock rather than adding [๐] to the channel name.


forgot to remove console.log lol
you will explode ram by loggin ven furry pics
should i make a basic clicker game for inside discord
@austere talon when
cause yes
also i want to do something hard out of copied code from google
the plugin patches things so if you disable it you will have to restart discord.
~That's just an excuse, you can make it so that your callback only shows hidden channels when the plugin is enabled.~
~Even if the patch is still there until the user restarts, it doesn't mean that the user has to restart for it to take effect.~
Edit: I reread the patches, yeah it ain't as simple as I described it, but it is not that hard either.
You can prob use
Ve...
@austere talon shitpost branch NOW

GUHHH
I love git stashing and pulling and git stash popping every update
@austere talon what would be a good delay for bulk requests
I am probably going to make it do bulk requests because less requests = better, and have a delay so it will collect requests and then send them all at once every X ms
for pronoundb?
yea
looking at Cynthia's code it doesn't seem like she has any delay
she just denounces fetching
yeah I still think it would be a better idea to not spam requests if possible
well time to delete all my fancy fetching code then
it is a bit overcomplicated tbh
the denounce approach is simpler
basically make a function fetchPronouns(id) and every time that function is called put that id in queue and start a timer that fetches all items in queue after 100 milliseconds, then if its called again within those same 100ms restart the timer
also should I remove my webSecurity = false because cors sucks
the better way would probably just to assume any cors error is a non-successful request and just give up
vencord already has denounce so it shouldn't be too hard
websecurity false where? BrowserWindow settings?
yeah
hope you will cache pronouns 
disables cors
pain
I'm not that insane
cors errors for pronoundb only seem to be stuff outside of the normal responses (rate limit, or if the api ever does something weird) so if I get a cors error I could just disable pronoundb
thats literally what I made
yes
I should change the interval to a timeout but yeah thats what I did
const bulkFetch = debounce(async () =>..., 500);
function fetchPrns() {
if (id in cache) return cache[id]
bulkFetch();
// blah
}```

I use debounce for quickcss too
cause file watcher sends like 3 million events for a single edit
Ok, so this is ready, but, should I add an API to register action buttons (on messages) in this same PR.
Or make another PR that also updates this plugin?
Probably a good idea
Then something like translate would be relatively simple
Though translate would also need plugin settings
add function to plugins to selectively kill cors for specific urls
is that even possible
ok well I think I just managed to blacklist my user agent for all eternity
I can circumvent that by using devtools but I should message cynthia about that
but otherwise it works
I do need to make it not show "Unspecified" but thats it
woooo it works perfectly
pr time
Uses bulk requests to request all queued users every 300ms (can be changed), and caches all fetched pronouns (even if the request fails, it will not try to fetch it again)
This uses capitalized pronouns (They/Them as opposed to they/them) right now, but that can be changed
now that I think about it that regex could be less specific probably
@austere talon i think desktopCapturer fix doesn't work
I tried to view stream and it crashed
that's not the fix
01ae098 Optimise Web via treeshaking, cleanup build scr... - Vendicated
20237f5 watch: enable sourcemaps and disable minify - Vendicated
yep, i give up on trying to add the automod message embed
the same error ("Invalid hook call. Hooks can only be called inside of the body of a function component.") has been stopping me from doing anything for 3 days, and i cant fix it (both because i have no idea what causes it and because i lack basic react knowledge)
i'll still leave what i did so far here (it crashes as soon as it sees ...
i misclicked close with comment ๐ฟ
talking to tyman silly!!
<span className={`${styles.timestampInline} ${styles.timestamp}`}>โข {PronounMapping[result] ?? result}</span>
shouldn't happen but just in case, noone wants to see undefined
<span className={classes(styles.timestampInline, styles.timestamp)}>โข {PronounMapping[result]}</span>
and add import ofc
you should wrap this in an useEffect with the error as dependency so it's logged only once and not every time
alternatively, perhaps add some form of onError callback to useAwaiter?
const styles: Record<string, string> = lazyWebpack(filters.byProps(["timestampInline"]));
Nope, I didn't realize that
Ah, I tried lazyWebpack but it didn't work so I just used a lazy proxy
Does lazyWebpack("timestampInline") not work? I thought it should
no one also wants to see two letters
wouldn't just not showing anything if there is no mapping work better?
?
the desktopCapturer fix fixes the stream source picker infinitely loading
the crash is a different problem and likely related to using an unsupported electron version and I can't fix that
ah ok
im using https://aur.archlinux.org/packages/discord_arch_electron (electron 19)
this is the issue I'm fixing
i'm not sure how one would fix the crashing, that's likely coming from discord's native voice module
i haven't really looked into it
i use that pkg as well btw
ยฏ_(ใ)_/ยฏ
//main
ipcMain.handle(
'DESKTOP_CAPTURER_GET_SOURCES',
(event, opts) => desktopCapturer.getSources(opts)
)```
```js
//renderer/preload
const desktopCapturer = {
getSources: (opts) => ipcRenderer.invoke('DESKTOP_CAPTURER_GET_SOURCES', opts)
}```
ez fix
have a dummy object returned if it's undefined
adds a link button to the channel item that copies the channel link
me
c8d87da fart: lazy Audio, moyai: fix cors issues - Vendicated
9c7b548 BrowserExtension: Disable CSP - Vendicated
845088e buildWeb: suppress experimental api warnings - Vendicated
01ae098 Optimise Web via treeshaking, cleanup build scr... - Vendicated
20237f5 watch: enable sourcemaps and disable minify - Vendicated

so many commits
i merged main into settings2
yaya
I enabled that feature that forces u to merge main branch first
because I was tired of people pring and the workflow being 2 years old
merge conflict so i did it manually (you love)
real
Also ensures it still compiles with latest changes
yea
like if someone removes a function with outdated repo and new code was added that uses that function then you can merge fine but build will fail after merge
yea
okay im gonna open this for review because I changed so much stuff that idk what there is to change 

lol
lol
join(process.env.DISCORD_USER_DATA_DIR, "..", "VencordData") :
I think this would be better cause otherwise it might conflict with Vencord source dir / be confusing
@austere talon wont changing the data dir reset everyones vencord settings 
What's the point of classes()
It literally just adds a space
lmao

it's less ugly than string interpolation
I disagree but it's your mod so whatever
u can keep it as string interpolation too lol
idrc
discord insane
Anyways how does settings work
Is there actually plugin settings right now or is that the settings v2 thing
the upside of classes() is that it makes spreading prettier
classes(...baseClases, "myClaas")
real
there are plugin settings already but no ui for it
megu pred that
ah
Wasn't planning on it
Just for like lowercase vs capitalized pronouns
and show self
settings use localStorage in browser which has a very low size limit
OwO
yeah that's what they for
Why do you delete isStaff?

merged into experiments
That icon feels a bit out of place
Probably because it seems a bit bigger than all the other icons
uhh
it is in the same group with the copy link and copy id
so uhh
outline makes more sense
dunno
Those are filled
is this what you meant?
wouldn't a </> code icon look better
nah
that would make you think that it inserts a code block into the message box
view is the keyword
so eye makes sense
Stole that from material icons
why not just link it?
you think i will download it and open it in my browser?
that is one too many steps
https://fonts.google.com/icons?icon.query=view&icon.style=Outlined just enable the fill then
what happens if there's more than 5 options?
author.id may be 0 if the user doesn't want their id there (like in CheckUrls), also a catch would be good here
why not destructure parameter directly?
you can just pass null here
const parser = lazyWebpack(filters.byProps(["codeBlock"]));
switch block would be nicer here
are you sure about that? I just did what the discord code does
well...yes, but have you read my previous comments?
There is no point refactoring this if it will be removed entirely in case I add an API for adding icons.
its unused lmao
discordโข๏ธ
nah it's probably just some common interface and this one doesn't need hljs
yeah some other parsers need it
c7c5ffd Allow customising SettingsDir via VENCORD_USER_... - Kyiro
it expects a filter function. I'm not sure why i didn't also allow passing props shortcut, probably just forgot
@austere talon hi I hate react how do I do this
React.useEffect(() => {
if (error) console.error(error)
}, [error]);
but imo adding an onError callback to useAwaiter would be cleaner
github has a rebase button but it makes all commits be unverified
pain
also it adds me as contributor to every commit lmao
silly github
@austere talon I did all the things
and also rebased my branch
should I add settings right now or wait until settings v2 is merged
mmmh best would be to just let the pr rest for now and you add settings once settings v2 is merged
if thats okay with u
@lament nimbus ?
the material icon refused to work correctly
so i chose another one
that looks good
i dont like the random placement in the middle
would be better to have it on the far left or far right imo
i can also merge now and u add settings later
you decide
smh what if mee6 registered its pronouns 
bot discrimination
or maybe clyde has pronouns
have fun using oauth with a bot account

well
ur opinion doesn't matter
you should loop over the "ids" local here.
Otherwise I'm pretty sure there could be a race condition where between the bulkFetch call and this, more ids are added to the queue, since the event loop processes new events while waiting for the fetch to complete
Object.assign(cache, res)
@austere talon ๐ฟ ๐ฟ ๐ฟ ๐ฟ ๐ฟ ๐ฟ ๐ฟ ๐ฟ ๐ฟ
pyramid scheme
transform="translate(0.000000,512.000000) scale(0.100000,-0.100000)">
what that do
what happens if u dont pass overflow scroll?
uhh, places the icon in the icon
it goes out of the screen, and you cant reach it
mmh
some ideas:
- add a copy button for
- raw content
- full json
- censor personal info which the author object will have on ur own messages
just do the same as powercord
right click = copy
ctrl right click = copy full json
i wanted to add a copy button
in fact i did add one
but navigator.clipboard.writeText gives me permission errors
so i removed it
maybe add a tooltip as well
electron has it's own clipboard module, but its not accessible in the renderer
basically use DiscordNative if !IS_WEB
and use writeText in browser
in browser it will show a permission popup
since you are copying a color, can you pass that color to the toast?
so that the toast has that color?
you're looking at outdated code btw
i added more logic to handle both web and electron
i am
**clickableRoleDot.ts: **Lines 20-28
copyToClipBoard(color: string) {
if (IS_WEB) {
navigator.clipboard.writeText(color)
.then(() => this.notifySuccess);
} else {
DiscordNative.clipboard.copy(color);
this.notifySuccess();
}
},
but you still dont customize the toast
I believe it's just the length of the dropdown component. Overflowed items will scroll.
idk if u can lol
it does keep the sorting if required === required. Returning 0 from sort will keep items in the same place.
it doesn't take a colour option unless I missed something in the typing
but u can do custom
with a custom component
Override css variables
but that means you will change the global variable every time...
@austere talon should I modify the user agent for pronoundb requests to add "Vencord/commitid"
partially because I managed to get my user agent blacklisted but also it might just be a good idea
cant find the css vars so yeah
who needs pronouns? everyone is a male unless proven otherwise
LOL how did u get ur user agent blacklisted
didn't handle errors correctly so it spammed the api a ton

why did that use another server's trolley
amazing plugin
the plugin aint at fault

discord is
after all, the plugin does not search for the emoji by name
it is already given by discord
well ill take that as a yes
TYMAN JUMPSCARE
wha
i love discords toasts now
wp.Common.Toasts.show({ message: "stinky", id: wp.Common.Toasts.genId(), type: 3, options: { component: wp.Common.React.createElement("img", { src: "https://cdn.discordapp.com/avatars/487443883127472129/a3bee5c0f008238adac80dba2e32529e.webp?size=2048" }) }})

ok I pushed the user agent thing so if there is nothing else to change just merge it ig
lmao idk if user agent is a good idea
cynthia hates me
we can do it but she might ban it just because it's me
ok well I guess I can just mess with my own user agent until (hopefully) cynthia checks her email
did u email her
why are you not pinging her?
yes, thats what the ratelimit message said to do
so I did
I tried sending a discord message but frs are off
3 ys at the front right
oh
it blocked me on github

u gotta hate someone a lot to block them on github
i havent blocked anyone on github
you can block people on github?
why does cynthia not like you
idk
we used to be friends and talk a lot but then she just randomly started being an asshole to me
so i started being an asshole back
fun
sounds like the regular you ngl
join alexflipnote's server, she is active there 40 minutes ago ๐ฟ
mf jumpscared me
she also says hard nword there
i should turn that moyai plugin off

so true lmao
๐ฟ๐ฟ๐ฟ
u can use comma operator
or just make a proper block with {} xd
e => isAlive && (onError?.(e), setState())
this works
Ok I fixed stuff v2
also realized I never removed stuff from the requestQueue so easy memory leak

mf emulating the BD experience
โ
โ
โ
โ
โ
โ
โ
โ
โ
โ
โ
โ
โ
โ
โ
โ
๐ฟ
๐ฟ
Was planning categories. Will remove for now and work on categories after we merge this stuff first :3
wha
๐
Ok, so this is ready, but, should I add an API to register action buttons (on messages) in this same PR. Or make another PR for that API that also updates this plugin (to use it instead of manually patching the buttons)?
@Vendicated
LOVE
https://github.com/Vendicated/Vencord/pull/78 can someone review this </3
ive been living off this fork to use vencord for the past like week
There is literally no way for me to do that
I don't know what you expect me to do
I can fix those
copy them to root from scripts folder with script
Nix doesn't work like that
The flake needs to be in root for nix to even recognize it as a flake
then make a js script silly
it will error out because it's not a flake when I add it to my config
it's only a flake when the flake.nix is in the root of the repo
it needs to be there when nix fetches it
not when it's built
which means it needs to already be in the root of the repo
Idk where you expect me to make it copy to root
If you mean in build.mjs that will not work
or in the builder nix files
that won't work either
https://issueantenna.com/repo/garnix-io/issues/issues/27 like this is literally the only thing i can find related to not having flake.nix in the repo
Presumably there'd be something like a directory option in garnix.yaml.
and its someone asking to make that possible
Unless you guys find something to get around that idk what else to do
im losing it
Why is it an issue
If you have packaging scripts, they almost always go in the root dir
Same with pkgbuilds or usually dockerfiles
Well, nix ain't that important either way
This works fine as is
So it ain't a priority
this as in
it would jsut be nice to actually be able to use vencord
You can via the extension
That is the worst case scenario and it ain't even a bad one
through the browser??
i want to use it in my discord desktop client
not the browser
i wouldnt have made all of this if i was just gonna use it in the browser
its
its not my nix config
its a nix flake for any nix config to use
not just me
if it was just for me id just make an overlay in my local config
U are playing with words here
I don't care about that shit
What I asked does not change
??????
Does the installation config have to be part of vencord?
You did not answer that
That's how it works
It's definitions for how to package vencord
It needs to be with the vencord files
Even if they could, what if someone else wants to use nix with vencord
It could be a git submodule
i mean either way its borked rn because pnpm2nix is ass
genuinely have no idea what this means
Where is that coming from
the vencord build
which is using pnpm2nix
which is a program that hasnt been touched in 4 years
which ive had to manually patch like 5 times already
well mark it as external lol
id have to modify the actual vencord files then
Well it is external is it not
its a fork thats part of a pr
If it is this hard to configure, I can't see the appeal for nix
Are you on their distro or smth?
yes
otherwise id just do it declaratively
i'm so confused why this jsut cropped up
barely any code changed
if i just pnpm build it works fine??
even if i just wanted to maintain a fork atp i still have to figure out why tf electron is doing this
try reinstalling dependencies ig?
This adds the plugin to send cute anime boys in a chat. This is a highly important plugin that is extremely useful for all users. This is the #1 reason why I use client side mods.
This will change client modding forever. This is revolutionary.
good stuff
@austere talon you will merge this... NOW!
i cummed and shitted and peed at the same time when i saw this pr
cute sex with cute boys!!!
pnpm2nix automatically installs deps
at least, it should
I'll ask my nix nerd friend about it later lol
Guys I added another feature to it
exclusively send catboys
(for productivity reasons)
need fox lesbians
getChannelTypeIcon: (channel) => {
const { can } = findByProps("can", "initialize");
channel._isHiddenChannel = !can(VIEW_CHANNEL, channel);
return channel._isHiddenChannel ? VOICE_CHANNEL : channel.type;
},
});
replace: "hasActiveThreads,$1=function($2,$3,$4){switch(Vencord.Plugins.plugins.ShowHiddenChannels.getChannelTypeIcon($2))"
replace: "renderLevel:$1.Show"
i have yet again made an extremely useful plugin
u guys are a bunch of fags holy shit
discord moment
so ๐คจ
real
homophobic slur (affectionate)
yea
she?
uh
WHY ARE THEY ALL NAMED CLYDE
apparently their logo is also him but i dont see the resemblance
gonna go use IRC like a real man
get on vencord channel on liberachat
and? mobile irc apps exist
hop on vencord irc
css exists bro
should i add irc link
itd be funny
what client is that
quassel
we should add IRC into discord 
that sounds fun actually...
brb
ah that's what i forgot
isValid(newValue: T): boolean;```
i made some small changes
idk i set this up ages ago
xd
should i just push or pr to the branch?
another thing
could use the settings schema to dynamically generate a settings interface
why did u have that optional chaining? @umbral hedge
did u run into any issues
that should never be undefined
owo

you love
(you can change)
I think it's aight
I used discords heading text
but u can use large instead
ig
text-lg
lmao this looks cursed
so big
imo this is better
what dou think
i just really hate ginto or whatever that font is called 
fixed in lastest commit + removed minified variables names from replacement + renamed "getChannelTypeIcon" to "isHiddenChannel"
looks fine
hmmm i think the fact that everything has the settings button makes it kinda hard to use
there should be some indicator which plugin actually has settings
in Aliucord we don't show settings for plugins that don't have and it's fine, no?
i mean i showed u a screenshot of it without settings button
and it looked ass
but its up to u
your client mod 
ignore the really shit sharex markup
but we could just have text there instead
which wouldn't look weird when some do/dont have it
uhh maybe
if it's like a bit greyed out maybe
uhh
just disable button?
have u tried that
[D^
also can u uhh add some jsdoc to some of the less self explanatory stuff
like idk what componentProps does
yeah
ew...
kk
componentProps is props that are applied to the input component... eg if you want it bigger/smaller/different font etc
but yeah i'll document it
also uh
maybe rename settings -> options
cause might wanna make this.settings be the settings instance
oke yeah disabled buttons look weird
"Required plugins" should tell you why they're required
i think the text one should look fine
on hover i would say
yeah
and a "depends on"
yea
m
why is the margin between the <p> so massive
Error: Oh no!
xd
trolled

I'm in a lot of pain bc the padding around lots of discord components is really inconsistent
so i have lots of margin: 8 in a bunch of places

trol
1984
megu when rie takahashi
yop
nya
uwu
owo
where is that thign is going?
@Vendicated why isnt this merged???
Progress so far?
AKA when merge?
@ArjixWasTaken soon. It's pretty much done. Just doing final touches.
70d9baa rename settings to options - MeguminSama










