#πΎ-core-development
1 messages Β· Page 30 of 1
I just wanted to look at how i worked with the streaming at 1080p thing
I dont know a good way to do this that accounts for just month and year, as many albums dont have a date set in their release
@spark cove
i guess i could add a setting for numeric months
new Intl.DateTimeFormat(void 0, {
year: "numeric",
month: "numeric",
day: hasDay ? "numeric" : void 0
}).format(new Date)
lol the month isnt zero padded for me
america skill issue unfortunately
ven is addicted to void 0
void 0 so good
:3
void 1
when void 0 typing??
also void 0 is considered better practice because you can override undefined in ancient environments
i feel like it looks better
so its "dangerous"
yee
void 0 looks cooler π€
no longer a problem in new envs cause they make undefined immutable
void 69
SHUTRGFD\
lol i didnt mean to type 1 that time
@spark cove void(0)
void(void(1))
void Infinity
yea

so good
you love discord using
interface SomeThing {
someProperty?: SomeType | undefined;
}
everywhere
yeah i think they mean that
the ? behaves weird so i avoid it
mfw SomeType | undefined | null 
so bad
also why did shiki not give that any highlighting
hm
that doesnt even make sense because ?: already does undefined
is shiki just white for you
ye
and we didnt get to debug
and also No grammar provided for <source.ts
hmm
both errors
cant wait for discord to crash in 30mins because i opened my terminal just now
i seriously hope that bug is fixed in the newer electron ver
looks like shiki in the webworker lost the grammar
racist code (goes on a race with other code)
real
π
@austere talon still not sure what u mean about the circular import btw
circular
no like what did u mean by dependency injection
nvm doesnt really matter
5725cd7 feat(plugins): add FixInbox plugin - MeguminSama
By default, when you open the Unread tab in the Inbox, discord spams a ton of GUILD_SUBSCRIPTIONS events to the gateway. If you're in a lot of servers, this can cause the gateway client to get ratelimited, leaving your client in an unfortunate crash-loop as the gateway attempts to reconnect but just gets ratelimited every time, until you CTRL+R or restart the client.
This plugin stops the client from emitting GUILD_SUBSCRIPTIONS events when you open the Unreads tab. This solves the crashes...

my pr fixes it
you love
if ur happy with the regex i'll probs just merge it because its miniscule
its laggy because discord fires off a shit ton of events and bricks your client
discord loves insane shitcode
i don't like this regex for the simple reason that if that function ever changes to not return !1 anymore u might eat tons of code and cause issues. Why not go the much simpler and safer route of
match: /INBOX_OPEN:function.+?\{/
replace: "$&return true;"
yeah lmao
i should review some PRs tomorrow
I don't really understand why people keep complaining about me being slow at reviewing prs but then everyone complaining never actually helps me out
like this is an open source project it's not just me, anyone can review prs
I would've done more but I've had basically no motivation for anything for a while now
even if you don't know how to code you can still test the pr, see if everything works, if you have any ideas or improvements
yeah
I'm not blaming you lol I'm just pointing out that it's a bit stupid
i wonder how we can encourage people to review more
it's super simple if you already have a setup to build from source
and just testing that everything works and adding ur own feedback for the functionality is already helpful

I wanted to add guides for doing lots of stuff when I tried to make us a website
but then lost motivation again lmao
why are my adhd meds 6 months away 
i think its cus linguist doesnt do parsing but rather hueristic tokenizing
i think
true I've helped with some
yeah you're cool I appreciate you
I'll dedicate some time to testing various PRS. If there are specific ones that you want me to test lmk
since you said in discord that inbox is breaking your noggin, maybe just some modal that lists highlights as clickable message components or something, just to like have a history type of thing-ish situation
whatβs rad?
rad
what is wrong with ti
hi
Hii c:
hey girl

reunion
Okay I just found out the reason is because Firefox manifest v3 implementation is just super bad and they didn't implement many apis auch as the declarativeNetRequest api that Vencord depends on (https://bugzilla.mozilla.org/show_bug.cgi?id=1687755). So we just need to add back legacy request interception
interesting
so it will be able to work again?
a) i intend it as a joke, not as harassment
b) i am not currently in a position to perform testing on an unstable system
c) rapid development makes external testers less inclined to build from source and provide feedback
d) dms
even if I do review a PR, high chances are, it wouldn't matter
because you and megu are the ones in power, so the contributor doesnt care about my review
wysi
that patch is very dumb idk why I merged that
never make one patch declare a new variable and a different patch use that variable
you're literally guaranteed to brick discord if the patch declaring the variable breaks
damn
- injects into the spoiler bar thingy to allow keeping the original filenames without disabling the plugin

- changes the behavior from always changing filename to retaining the original filename with the option to change the ones you want (!)
- replaced timestamp method from nanosecond to millisecond as it was inaccurate (and honestly overkill)
currently the icon could use som...
in rewriting the entire plugin rn
sry sun but the code is... not very good
0 structure (the order of things is so arbitrary, you have a constant then a function then another constant then an interface then another function. Structure your code properly, for example I prefer webpack finds, then constants, then types and interfaces, then misc variables like instances of queue logger etc, then functions, then the plugin definition, but honestly it doesn't matter much as long as its consistent)
calling react components as functions (this is extremely bad for many reasons, it completely breaks hooks or worse yet the component might not even be a function. use react correctly aka jsx)
extremely dangerous patch that hard bricked discord as mentioned above. In one patch you declare a new variable and in the other patch you naively use this variable with 0 safety. This means if your first patch fails (which it did in this case) but the second patch still works, your code now refers to a non existent variable which makes the entire module error and completely bricked discord without even an error screen
waitFor instead of lazys. waitFor is... not lazy, so anyone will have those finds executed even if they don't use the plugin
inconsistent style and variable names (random mix of arrow and named functions, one regex is named messageLinkRegex, the other is called isTenorRegex (this name is bad in itself because it implies this is a boolean, not a regex))
Also a total lack of null safety, both res and api Message could be null here yet you just use them directly with no check
returning Promise.resolve from an async function is also another anti pattern
this is also the reason I haven't really looked at your other prs because they're not very mergable for the same reason, by the time I'm done reviewing and improving them I could have just written them from scratch myself
thatβs a lot of valuable feedback π
i wonder if ai can do that alr β comment on and/or clean up code
yeah that was my first plugin and it shows
Absolutely not
though the feedback is very appreciated!
love
wait no
why does typescript not error
its a map
you cant index a map like that
messageID is a string and map["get"]() syntax probs
okay i finished rewrite i think
but that shouldnt be valid
tsserver debug time
oh wait i messedu p a little
there we go
@rigid venture that icon actually looks terrible i changed my mind
do u have any better idea
nop
also if u have a better way to indicate that it's on than literally coloring it green pls do
using 4 different groups with $n is pretty unreadable, i would use a function and name the parameters
replace: (wholeMatch, group1, group2, ...) => `...`
this is real
match: /\{children:\[(\i\?(.{1,60}\)\),).{1,60}function\(\){(.{1,50},(\i)\.id,\i))/,
\i is our own custom escape sequence that matches identifiers
that's hot didn't know it existed u should add that to patch helper
ya
ya
@spark cove
REAL
btw
i switched from .plugins.${pluginName} to .plugins[${JSON.stringify(pluginName)}]
cause this will cover all names correctly
no matter whether they contain spaces, quotes etc
yea
dang I did plugins that declared a new variable and used it later
thats what i was saying real to
cus it makes wayyy more sense
gonna make sure I properly handle null cases
and also wrapped functions
wdym
I did on FakeNitro for example, but I'm almost sure I properly handled cases the variable isn't there
okay i got it
there now u can use $self in functions @rigid venture
awesom
nvm I didnt handle it correctly in one case
is there a place where i can use $self in the plugin now and i didn't or am i not blind
I will make a pr to fix those issues
replace functions
in patches
it's raw
for this i would use a dedicated function
idk what that is stop speaking terms immediately
"$self.buildItem(...),"
buildItem(...) {
return {
tooltip: "Anonymise Filenames",
onClick() {
...
}
...
}
}
u know
its best to have as little code in ur patch as possible
a good rule of thumbs is that if your code is too long to fit in one line then you should probably make it a function on ur plugin instance instead and call that
like this is bad bad
much better is to
what that
it should work in any replacements in patches
explain
$self.anonymize
fuck dicsord
it should work it's okay
nah
so
let thing = `$self.fn()`
doesn't get replaced
in patches
huh
ooooooooooooooooooooooooooooooooooooooooooooooh
i understand
okay i forggave u
ur \i is making this error @austere talon
no
yes
thats ur regex bestie
see whats the issue
is that a preface to an explanation or
fix yo shit
third group
well no
but yea i can just put type it ig
for now
ialready forgot what the fuck does what
i can not be trusted around regex holy fuck
hell yeah
crash handler just saved my discord
I'm always getting that object destroyed error though
I think it's related to notifications
dea0854 firefox: Attempt to fix csp (doesnt work) - Vendicated
this browser is so terrible it's insane
This code just doesn't work and i don't know why
I tried fixing it in https://github.com/Vendicated/Vencord/pull/554 but it simply doesn't work because reasons:tm: and I will not put any more effort into trying to write ugly workarounds for problems that shouldn't exist
So unless someone else fixes it, it will likely stay broken
This is currently broken so don't merge until this is fixed

GitHub copilot labs can do stuff like that
The brush tool can take any prompt and modify the highlighted code
Of course you need access to copilot to use this in the first place
this is why u should use some git gui 
gui is bloat
cli is also bloat
less
embrance making your own scripts to do every common task lmfao
yeah that's cool
InvisibleChat (had no effect):
ID: 457173
Match: /.=.\.activeCommand,.=.\.activeCommandOption,.{1,133}(.)=\[\];/
SilentTyping (had no effect):
ID: 457173
Match: /[A-Za-z_$][\w$]*=[A-Za-z_$][\w$]*\.activeCommand,[A-Za-z_$][\w$]*=[A-Za-z_$][\w$]*\.activeCommandOption,.{1,133}(.)=\[\];/
None
Failed to load resource: net::ERR_FAILED ```

InvisibleChat (had no effect):
ID: 457173
Match: /.=.\.activeCommand,.=.\.activeCommandOption,.{1,133}(.)=\[\];/
SilentTyping (had no effect):
ID: 457173
Match: /[A-Za-z_$][\w$]*=[A-Za-z_$][\w$]*\.activeCommand,[A-Za-z_$][\w$]*=[A-Za-z_$][\w$]*\.activeCommandOption,.{1,133}(.)=\[\];/
None
Failed to load resource: net::ERR_FAILED ```
idk how to use DataStore for the thing at line 103-147
storing this image in here to send in a comment
since you said in discord that inbox is breaking your noggin, maybe just some modal that lists highlights as clickable message components or something, just to like have a history type of thing-ish situation
hmm. interesting. only one problem: Where would I put it? I considered settings, as a button, but that's 3 layers deep and likely annoying.
perhaps up here?

you know you can just copy paste into the textbox
and it'll upload the img
yeah that seems like the most reasonable spot, surely there's gotta be some nice SVG that represents a highlight
could probably make one myself <img src="https://user-images.githubusercontent.com/81252038/222662925-1589b180-a5c8-41bb-accc-078964f632e1.png" width="25">
(don't bother looking at that image; it's a trolley emoji)
okay fuck making it myself, how do i get the ones from discord https://cdn.discordapp.com/emojis/891777831804223528.webp?size=48&quality=lossless
Disables the annoying green restart prompt on the top after Vencord auto-updates.
fucking chatGPT
i had that issue when i tried to ask for it to draw an example of a line
Wth chatgpt can now send images
markdown
This is a plugin inspired from the existing FxTwitter plugin by @somerandomcloud and @CanCodes' LinkFixer bot. It replaces the following services with proxy services:
- [x] Twitter:
fxtwitter.com - [x] Reddit:
rxyddit.com - [x] Instagram:
ddinstagram.com - [x] TikTok:
tiktxk.com
so you get better Discord embeds, check out the GIF to see it working π₯

lmao you fell into my trap
^
like write "Click me to restart now"
onClick and onDismiss (?)
falling into traps? 
I think it'd be better if notifications could have like a dedicated button(s)
they can but you have to manually add them with richBody
but honestly onClick sounds just fine
it would be nice but we have to maintain OS compat too
I mean OS notification api does have buttons
it works on Windows
I'm assuming richBody only works for vencord buttons?
but not sure about mac and Linux
ye it only works in app
linux will be very DE dependent
if you use onClick it works in both
amazing
my Linux notifications didn't have button support
cause I used dunst and didn't bother
KDE/GNOME support them
i know that much
but yeah it really is just mileage may vary
I just went with onClick because that's portable everywhere and it's how discord does it too
like if u click a notif it opens that chat
what would be good wording
I think the notif default settings I did are pretty sensible
"Reload to apply changes, or click here!"
oh
"Reload (or click here) to apply changes!"
Auto dismiss after 5 seconds
Show vencord notification if discord is focused, system notif if it isn't
bottom right

"Vencord has been updated! Click here to restart." sounds better imo?
I think that's for Lewis thing
I think it's already implied that user can reload to apply changes
loading new settings
ye
ah
i dont want to have it as a "Click here to x" cuz it sounds like you need to
"Settings successfully synced. Click me to restart to apply changes!"
Click me to restart cute emoji
click me...
i wish we could add metadata to object keys
that'd be cool
then we could have a list of keys specifically marked as "requires hard restart"
aight
oh I meant lewi
uhhhhhhhhhhhh
you can just use default probably idk or green too u decide
hhhhhhhhhhhhhhhhhhhow?
didnt see it xd
it is neither
https://discord.coffee/5kiWzDh.png now my notifications are depressed
xd
lets see if i can find it...
wait yeah green-460
why is it not working 
**Switch.tsx: **Line 29
const SWITCH_ON = "var(--green-360)";
ah there we go
ah]
forgot to put var
sorry
actually that's kinda weird maybe that's ur theme
it is
though i think the green is too dark regardless
switch green looks right to me
although i suppose overall it doesnt make much of a dif
up to you
@austere talon do you think there's a way to test this?
discord has good Red too
also, can I make the notification toggleable too?
ye
error findByCode(".TWITCH", ".STREAMING", ".INVISIBLE")("dnd")
warning findByCode(".TWITCH", ".STREAMING", ".INVISIBLE")("idle")
success findByCode(".TWITCH", ".STREAMING", ".INVISIBLE")("online")

no blurple is brand

i swear theres a different blue used for info notices
ye notices suck
all dun
the only reason those things use notices is because notifications didn't exist then
lovely
imo notices should still be kept but used for very important stuff
which should justify the content shift
imo that's a better ux
i'd argue vencord's updates are important enough :P
I mean most of the times it's super optional
i guess
should I keep setTimeouts?
ye
Well eh
it's technically not needed I think
the setTimeouts are there to make sure discord is fully started up
but that might not be needed when we use notifications
and would save you 10 seconds
Well ig for the a vencord update is available it should wait
so you can immediately jump to the settings page
its not
why did notices need to wait for discord to fully load?
imo that notification should not auto close
because how would they show when your discord is still loading
just like notices
ye but there's no way to do that for now I think
it would be trivial to implement tho
wait
right click to close
its when you right click them
maybe would be better to add a proper button
I assumed people knew
cause that's also how u dismiss os notifs
I did not knew
right click is super unintuitive
is it?
I never dismiss system notifs with right click
proper button is better
i didnt even know that was a thing
you would just need to add an additional prop permanent and check it here and here
https://github.com/Vendicated/Vencord/blob/main/src/api/Notifications/NotificationComponent.tsx#L46
https://github.com/Vendicated/Vencord/blob/main/src/api/Notifications/NotificationComponent.tsx#L84
**NotificationComponent.tsx: **Line 46
if (isHover || !hasFocus || timeout === 0) return void setElapsed(0);
**NotificationComponent.tsx: **Line 84
{timeout !== 0 && (
til
to add permanent notifs
vencord (rewrite) initial commit

After rewrite finished
https://github.com/Vendicated/Vencord/tree/483bc13a31ab2ba878ff8d9002b0a8671a640ec8
LOL I like how the structure basically hasn't changed at all
we need permanent option before that is merged
too easy to miss the notification
if u wanna add see ^
Now you can get IntelliSense when using useSettings:

mm you should also add the recursive ones
like
notifications.timeout
that's a bit harder to write so I can try doing that if u don't know how
I went to typescript docs
turns out there's literal template types?
ye
pretty neat feature
but I think u gotta write recursive type for this
yeah
yeah you will need to
cause "settings.backend" for instance isnt valid
since its an object
well
i guess it is valid
but only if i rewrite the entire object
xd
but [Symbol.iterator] definitely isnt
yeah I'm trying to omit that bs
Omit<keyof Settings, "[Symbol.iterator]">
trolley
if you want to omit all symbols i think you can do something like ```ts
Omit<keyof Settings, [Symbol.${string}]>
can I do a reverse of omit?
I think you can't do it like that
something like !&
wait
I wrote a type that resolves dotprop like foo.bar
but not sure how to do the inverse
I'll experiment later
I give up
can't make it work without bundling stdlib nonsense inside the autocomplete
The workaround i used is that i installed this extension and copied css theme in there
Discord Account
Tami#7071
What happens when the bug or crash occurs?
There is no Invisible Chat Icon to use (and the plugin has no other options than setting a password so it is enabled)
What is the expected behaviour?
Show the Invisible Chat icon ^^
How do you recreate this bug or crash?
- Install Vencord
- Enable Invisible Chat
- No Button
Errors
No crash
Request Agreement
- [X] I am using Discord Stable or tried on Stable and this bug hap...
type SendListernerReturn = void | { cancel: boolean; };
export type SendListener = (channelId: string, messageObj: MessageObject, extra: MessageExtra) => SendListernerReturn | Promise<SendListernerReturn>;
export type EditListener = (channelId: string, messageId: string, messageObj: MessageObject) => void | Promise<void>;
find: '"MessageActionCreators"',
replace: "$1return Vencord.Api.MessageEvents._handlePreSend(...arguments).then(()=>{$2})"
563204a Add admin warnings to INSTALLING.md - MeguminSama
d201a7d Update 1_INSTALLING.md - MeguminSama
6747276 Add admin warnings to INSTALLING.md (#561) - MeguminSama
?!?
.
in a different commit that isn't just a single small irrelevant fix
oh
that wasn't very clear
Also doesn't depend on FormTitles anymore
InvisibleChat (had no effect):
ID: 457173
Match: /.=.\.activeCommand,.=.\.activeCommandOption,.{1,133}(.)=\[\];/
SilentTyping (had no effect):
ID: 457173
Match: /[A-Za-z_$][\w$]*=[A-Za-z_$][\w$]*\.activeCommand,[A-Za-z_$][\w$]*=[A-Za-z_$][\w$]*\.activeCommandOption,.{1,133}(.)=\[\];/
None
InvisibleChat (had no effect):
ID: 457173
Match: /.=.\.activeCommand,.=.\.activeCommandOption,.{1,133}(.)=\[\];/
SilentTyping (had no effect):
ID: 457173
Match: /[A-Za-z_$][\w$]*=[A-Za-z_$][\w$]*\.activeCommand,[A-Za-z_$][\w$]*=[A-Za-z_$][\w$]*\.activeCommandOption,.{1,133}(.)=\[\];/
None
close button looks the same as modal one
that's not gonna mess up the css right
and have the onClick on that button
like it doesnt have any bad defaults
button?
ya
using px as font size is bad, either use large(r) or something like % or em/rem
you should probably transition the colour too
just using an svg as button like this is terrible accessibility
you should always wrap in a semantic tag where possible like button in this case
I just copied discord css ven
discord bad at coding
ughh
I mean u can just keep it this way if that's how discord does it too ig
but it's bad
idk how to transition multiple props
but im hoping the buttons arent permanent?
the row will dissapear as you click x button, does that what you mean?
transition: opacity 200ms ease, color 200 ms ease;
@austere talon do I keep px for line height
okay done
Discord Account
Chiggy#6420
What happens when the bug or crash occurs?
The EmoteCloner plugin is loaded, yet there's no option in the context menu related to cloning an emote. I've tried it in discord stable, discord canary, discord web stable, discord web canary. Same problem everywhere.
What is the expected behaviour?
The clone button to appear in the context menu when clicking an emote
How do you recreate this bug or crash?
- Install Vencord
- Enable EmoteCloner p...
i think the culprit could be this line (not 100% sure)
https://github.com/Vendicated/Vencord/blob/92372bde1d422e2daf2e24dd05ae5f4d73f5ebcb/src/plugins/emoteCloner.tsx#L199
Really simple plugin that generates links to LetMeGoogleThat
Weird that didn't exist before
oh really :< i need to fix that
Yes. After enabling ReverseImageSearch plugin and restarting the client, the clone buton aappers and functions as expected. As @owocado pointed out in the above snippet, that line seems to be causing the issue.
I don't trust this website because they redirect you to a strange site google.gprivate.com that claims to be "100% private" and "Simple, Untracked, Private Search.", yet they literally use trackers
"Ad & Affiliate Disclosure: Gogoprivate may receive compensation for recommendations made in search results that relate to a product, website or service. We have partnered with Google Adsense, Bing Ads and Sovrn to deliver relavant ads & affiliate links. By using Gogoprivate you agreeing to th...
<title id="vc-notification-dismiss-title">Dismiss Notification</title>
<path fill="currentColor" d="M18.4 4L12 10.4L5.6 4L4 5.6L10.4 12L4 18.4L5.6 20L12 13.6L18.4 20L20 18.4L13.6 12L20 5.6L18.4 4Z" />
viewBox="0 0 24 24"
role="img"
aria-labelledby="vc-notification-dismiss-title"
oh well i understand
options is deprecated, instead you should use
const settings = definePluginSettings(OptionsObject);
console.log(settings.store.sidebar)
definePlugin({
...,
settings
})
const GuildFolderStore = findStoreLazy("SortedGuildStore");
why not just
const getGuildFolder = id => GuildFolderStore.guildFolders.find(f => f.guildIds.includes(id));
const ExpandedFolderStore = findStoreLazy("ExpandedGuildFolderStore");
I would just subscribe unconditionally here and instead check the settings inside the handler so that people don't need to restart when changing settings
yop
I did a dumb I think, will fix later
okay anyway we ball
type UseSettings<T extends object> = ResolveUseSettings<T>[keyof T];
type ResolveUseSettings<T extends object> = {
[Key in keyof T]:
Key extends string
? T[Key] extends Record<string, any>
// @ts-ignore "Type instantiation is excessively deep and possibly infinite"
? UseSettings<T[Key]> extends string ? `${Key}.${UseSettings<T[Key]>}` : never
: Key
: never;
};
do u love
u love
i hate how
type StringObj = Record<string, unknown>;
type ShouldBeString = keyof StringObj; // is actually string | number | symbol
so stupid
wait
it is string
but
and also that Record<number, ...> is useless
rare to use but when i do sometimes wanna use it it sucks
okay ShouldBeString is string here
but in an extends and in clause
K should be string here
????
which can only be string
haha you thought
haha you thought
like this has two unnecessary extends
Key extends string
UseSettings<T[Key]> extends string
these are both obsolete
but ts goes naaah bro this can totally be a symbol
on the playground it works fine
running 4.9.5
i dont actually know why its not narrowing
cause even your thing here works fine
on old ts
its probably a bug
should i
yes i already said this works fine actually
now try this
so funny thing
O seems like it's being interpreted as any
we know obviously from semantics that it is using it to do the type (cause using O means its not dimming the generic) but it seems to be that the typing system thinks its any
now with the string | number union, you will never get past that if it happens
this is actually an intended feature in some cases
https://discord.coffee/5ySkA2q.png this is what im referencing
though that doesnt seem to be the issue here
ii dont know]
@limber skiff this pr introduces more circular dependencies https://github.com/Vendicated/Vencord/pull/555/files
whenevr that's the case u should try to not do that
u moved ```tsx
export let EmojiComponent: ComponentType<any>;
export let ChannelBeginHeader: ComponentType<any>;
guh how else will I do it
you should move them to a different file
but I need to set the component on index
u will setup dependabot to run daily and get 1374 prs per day
// components.ts
export let EmojiComponent: ComponentType<any>;
export let ChannelBeginHeader: ComponentType<any>;
export function setEmojiComponent(component: ComponentType<any>) {
EmojiComponent = component;
}
export function setChannelBeginHeaderComponent(component: ComponentType<any>) {
ChannelBeginHeader = component;
}
// index.ts
definePlugin({
setEmojiComponent,
setChannelBeginHeaderComponent
})

makes sense
btw if u wanna know why I'm so against circular dependencies
it might work fine now but it's very easy to introduce nasty bugs that are hard to debug
if you've ever tried using Settings.plugins.You.whatever on the top level and got an error, it's caused by circular import
@api/Settings imports ~plugins to get all plugins and their settings schema so it can return defaults and stuff
~plugins imports every plugin so it can build the plugin list
so @api/Settings indirectly imports your plugin. If you now import it from your plugin, you introduced a circular import
due to that circular import, if you use settings on top level, you access it before state it depends on is fully initialised and run into nasty bugs
same story applies for plugins, it's very easy to introduce something similar
π

@austere talon should I try working on dev branch
why is ven not merg ing
@umbral hedge
because ur cringe
export type NonMethodKeys<T> = { [K in keyof T]: T[K] extends Function ? never : K }[keyof T];
const QueueIcon = () => <svg viewBox="0 0 24 24"><path fill="currentColor" d="M14 6H4c-.55 0-1 .45-1 1s.45 1 1 1h10c.55 0 1-.45 1-1s-.45-1-1-1zm0 4H4c-.55 0-1 .45-1 1s.45 1 1 1h10c.55 0 1-.45 1-1s-.45-1-1-1zM4 16h6c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1s.45 1 1 1zM19 6c-1.1 0-2 .9-2 2v6.18c-.31-.11-.65-.18-1-.18c-1.84 0-3.28 1.64-2.95 3.54c.21 1.21 1.2 2.2 2.41 2.41c1.9.33 3.54-1.11 3.54-2.95V8h2c.55 0 1-.45 1-1s-.45-1-1-1h-2z"></path></svg>;
this should use le epic Logger
downvoting this pr, no token logger implemented
if (!images?.length) return null;
if ("images" in resource) images = resource.images;
if ("images" in resource) images = resource.images;
goner
.slice()????????????????????????????????
dollar store .copy() (also unnecessary)
add key to AudioControls to make state pure
import repository from "~git-remote"
bro
google removed [[SCOPES]] from devtools
that lets u see closure
for whatever reason
but peopple complained and googol added it back
insane css
making clone risky cause loses prototypes and methods, better to use Proxy which traps get("embeds") to return custom array
InvisibleChat (had no effect):
ID: 457173
Match: /.=.\.activeCommand,.=.\.activeCommandOption,.{1,133}(.)=\[\];/
SilentTyping (had no effect):
ID: 457173
Match: /[A-Za-z_$][\w$]*=[A-Za-z_$][\w$]*\.activeCommand,[A-Za-z_$][\w$]*=[A-Za-z_$][\w$]*\.activeCommandOption,.{1,133}(.)=\[\];/
None
instead of making user choose one specific store, it would be best to first try default market, then if song not available in that store, see what stores it is available in and use one of those instead
InvisibleChat (had no effect):
ID: 457173
Match: /.=.\.activeCommand,.=.\.activeCommandOption,.{1,133}(.)=\[\];/
SilentTyping (had no effect):
ID: 457173
Match: /[A-Za-z_$][\w$]*=[A-Za-z_$][\w$]*\.activeCommand,[A-Za-z_$][\w$]*=[A-Za-z_$][\w$]*\.activeCommandOption,.{1,133}(.)=\[\];/
None
Maybe it's possible to integrate that in the FakeNitro plugin or add an optional one?
I was using this plugin on BetterDiscord that allowed it, but BD is kind of a crashy mess for me, so I'm giving Vencord a try.
This is the BD plugin I'm talking about: https://github.com/riolubruh/YABDP4Nitro
Maybe some hints can be found in there, although it also requires that Zeres library. So I'm not exactly sure what does the heavy lifting.
It also allows for custom resolutions and framerates, t...
but im hoping the buttons arent permanent?
the row will dissapear as you click x button, is that what you mean?
No, I mean the current buttons are kind of ugly. Hoping they change to an svg that suits discords ux or smth
why is there both Fetch Branches and Get Branches ipc
wouldn't only having get that does both sufficient
as for release, maybe we could make it version based
we already have versions for the browser extension anyway
so it would make sense to be streamlined
so fetch latest release that isn't devbuild
not sure how you'd do that
probably need to fetch all releases first
or maybe not
arguments includes the function being serialized lol
hmm then what should i use, idk how it should look to suit discord
huh? it shouldn't
it returns a new function so arguments refers to the argument passed to that inner function
well I'm not sure if it is the function being serialized
but it's an object, not the arg I wanted
I think the first argument is event
slicing it gives the proper one
which is useful in some cases
okay I will revert that
Communicate asynchronously from the main process to renderer processes.
yes it's event
we shouldn't need one
ok reverted
just based on tag / release
I'm not sure how to build from a tag release
explain
you don't need to build
release would only be for people using normal install
if you're installing from source you get bleeding edge
Well any branch ig
but we don't need a specific branch for that
technically you can check out the tag if you really want to
like in git
but I don't think it's necessary
you decide
well
if we do use tags
we need a way to get the build from it
like we get the build files from the devbuild release
how should we do that
okay okay maybe like this:
when a tag from release branch is created
- make a release with the same name
- build the files and upload as assets
then we can fetch the releases and find the latest one
we just need a way to include the tag name on the build too, so we know inside the client which one is selected
yes that was the idea
I thought that was clear xd
sorry
it would auto make a release similar to devbuild whenever tag created
just called "Release v1.1.1" or smth like that
makes sense
I already have a workflow that publishes to chrome and Firefox on tag
so it would be trivial to also make it create a release
and then publishing is streamlined, whenever tag is pushed it releases for everyone
where should I store the release name inside the build?
wdym exactly?
we are gonna need a way for the client to know what's the selected release
like branches but not branches
okay nvm I know how to do it
I'm not sure im following
but in any case you can just introduce a new global variable or module
we already have ~git-hash and ~git-remote
so you could just add ~git-tag or smth like that
but I don't think u need it
it's pretty simple once u get the hang of it
you can just copy paste the ~git-hash one and make it do what u need
then you need to add it in modules.d.ts
Well that's for browser
unless you want to use it somewhere that browser can reach no
if you do use it somewhere browser can reach then yes
I see
you need to it in plugins too





