#👾-core-development
1 messages · Page 19 of 1
PronounDB (had no effect):
ID: 461460
Match: /\(0,.{1,3}\.jsxs?\)\((.{1,10}),(\{[^[}]*currentPronouns:[^}]*(\w)\.pronouns[^}]*\})\)/
MessageLogger (found no module):
ID: -
Match: ["className","attachment","inlineMedia"]
None
WebSocket connection to 'ws://127.0.0.1:1337/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED
Failed to load resource: the server responded with a status of 404 () ```
Horror
lol
damn that must've taken a lot of time to come up with

Additions:
- A custom regex escape for
PatchReplacement["match"],\i, that aliases the SWC base54 identifier pattern ([A-Za-z_$][\w$]*).- Does not work in getters
- Eslint support for the above
- Adds a
$selfalias forPatchReplacement["replace"](eg:"$self.run();"=>"Vencord.Plugins.plugins.ShikiCodeblocks.run();")- Does not work in functions nor getters
Is there a particular reason you chose not to add support for $self in function replacements?
pretty poggers PR
wew
Is there a particular reason you chose not to add support for
$selfin function replacements?
I can probably do this via Proxies along with the getters tbh
Now works with functions and getters
also @umbral hedge i realized i never answered u
hm?
xd
and it was easier to not
it's definitely worth it 

oop patch helper
patch helper I'd turn it into Vencord.Plugins.plugins.DummyPlugin or something 
dont merge mine yet i need to add patch helper support
Since .match is string | RegExp, and .replace is string | ReplaceFn, TypeScript will make sure the String#replace signature has assignable params for every combo of those unions. There'll be an error since there is no overload for string.replace(string, match => replacement)
doing this pr made me realize ts-ignore will ignore the whole next block rather than just the next line
i dont know why this pr breaks patch helper
efieojdsk
var patched = src.replace(/* ... */) works from what i see in tge debugger
but i dont see the diff
debugging time
not sure why i thought that, but i'll remove the false explanation (it does error if u remove it)
it did, you were just ts-ignoreing the whole for loop block rather than that line explicitly
according to this issue that is not possible??? https://github.com/Microsoft/TypeScript/issues/19573
my brain cannot ....
yea that was my thoughts
i want to check after i see if i just fixed the patch helper
cause there was a case in ts' mind where you would be looping over a not iterable
but then I wonder why does it complain about the call
it should be valid
patcher was trying to pull .noWarn from the replacements
but that exists on the patches
lmao
wew
type Replacer = (m: string, ...groups: string[], offset: number, originalString: string, ...namedGroups: string[]) => string;```
except this isn't valid ts
that's the signature of the replacement function
but you can't have spread args in the middle of the parameter list
so no it's not real
idk how ts types the replacement
well i guess it does make logical sense
but it must be ultra cursed
ok i hate force push that sucked
LOL what did u do
love
and i have another pr lined up that i branched off this pr
and now i have to reset it or something
echo is insane
crying and shitting rn
yeah don't use that lmao
it's so bad
use the normal one
learned the hard way
yes
I'm so used to discord being dum
that I just automatically said discord instead of github
@rare shale btw github has a Draft PR feature
Just rebase manually 
Why are you using a cloudflare worker for that
because i want to
I don't think I wanna merge a plugin that depends on a third party cloud flare worker

If that gets merged it means it relies on your worker still working
And could be doing whatever behind the scenes
It's dumb
why cant that be done in the plugin itself
yea makes sense
Insane
can't u use YouTube api or smth
scary
i first have to get the actual name of the song (not the link, so prolly need spotify api too) then search the youtube api THEN somehow make sure its the correct link
but why do all that when everything is solved with like an api that has like 20 lines of code
themeexperimentfix
ttttttttttttttttttttttttttttttttttttttttttttttttt
https://song.link/<whatever fucking music you can find on the internet>
gives you the link to the song in every available platform
they dont have an api so best i can do is html bullshittery
for example
i just catch this thing then return it
with the tab title for beauty
nope
if they client side render you can reverse engineer it
but
it works ;-;
i have 1mil requests per day its not like we're gonna run out of api
yeah but I don't just wanna use external workers like that
if I allow yours other people will also want theirs to be used
then at some point some guy is gonna log ips or just randomly shut his worker down and now its my problem that the plugin is broken
ur already hosting it
nea has her own server
r

**Odesli.py: **Line 8
BASE_URL = 'https://api.song.link'
it literally has an api?
unless that changed lol
We are no longer providing API keys to everyone. Please do reach out if you’re interested in the API, and we’ll try to work something out, but no promises.
Well it'll be a bit meh anyway cause you'd have to include the key in public source code which they won't want
but if you reverse engineer their site they likely have a public key you can just yoink
I'll see in a bit
guh later I have to do uni stuff now
Looks like they removed lastActiveTimestamp
could you move this to commons please? Or it might already be there as SnowflakeUtils or similar

this adds a MessageDecorationsAPI so other plugins can add their own stuff, and the indicators on the member list were moved to a new MemberListDecoratorsAPI (both api's are basically clones of MessageAccessoriesAPI :trollface:)
profile badges were not switched to BadgesAPI as that requires an image link. is it worth making the api allow passing your own component as a...
I think allowing custom components would definitely be useful, would for example allow lazy fetching badges
return decorators.values().map((decoratorObj) => {
3efc792 [ShowHiddenChannels] Fix last message date (#342) - D3SOX
YOU SAY THAT
AND YOU MERGE OTHER PULL REQUESTS
and
cause they're 3 lines of code
cope
mine is 3 lines + 100 
NO
I will merge your pr soon
hes checking character by character
sorry for taking long to merge but it's a lot of effort to review many prs and make sure everything works top notch

he's checking every 0 and 1

you can merge mines without checking
because they are always perfect

should've hidden 177013 in my code
soon
fetch("https://api.odesli.co/resolve?url=https%3A%2F%2Fopen.spotify.com%2Ftrack%2F78B9RvFjcpSQgGFtjy1zBE%3Fsi%3D4458490ed63b49eb", {
"headers": {
"sec-ch-ua": "\"Not?A_Brand\";v=\"8\", \"Chromium\";v=\"108\"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "\"Windows\""
},
"referrer": "https://odesli.co/",
"referrerPolicy": "strict-origin-when-cross-origin",
"body": null,
"method": "GET",
"mode": "cors",
"credentials": "omit"
});
@rare shale
the fuck
agony
that's already way better than whatevrr the fuck you had going on
damn this a good api
hmmm i wonder
wtf is boomplay
i never published it there 
FINE
OH MY GOD
work it girl
where tf is the auth
is that api seriously without auth lmao
why would it need auth
songwhip.com also had a api btw incase he gives up on that one
it's uh key query param
&key=
they say it allows for less strict ratelimits but i didn't get ratelimited at all
someone email them to add cors
i thoroughly doubt they would give a fuck
you could use this
I have a worker already hosted https://cors-bypass.efu-cors-bypass.workers.dev
to use, add the api at the end of the url like so: https://cors-bypass.efu-cors-bypass.workers.dev/https://www.roblox.com/home
@quick ibex

fyi its very simple to fix cors client side by manipulating headers
but won't work on ArmCord and userscript
so I'd rather not
ven if u merge my pr are u going to merge main into it for me
First attempt, probably doesn't work. Have fun fixing it <3
Thanks,
Elliott
what
any reason as to why this is useful in any kind of way?
any reason as to why this is useful in any kind of way?
because i was asked to in order to fix my own problem :husk:
#🧊-off-topic-iceman-only message
About
Uses the message accessories API to add the following buttons Apply, Update, Remove.
-
Apply: Saves the code snippet in the plugin settings and appends it to the head.
-
Update: Appears when a message (of an installed snippet) has been edited, clicking it would simply use the new code.
-
Remove: Removes the snippet from the plugin settings and from the head.
Screenshots
TODO:
- [ ] Implement the settings UI
- [ ] Figure out...
Since replugged is on a dev release right now, I thought of opening this discussion to discuss about a potential and feasible replugged compat for vencord.
General idea:
- have two separate tabs for replugged plugins and themes
- use a GitHub release link to install the plugin by copy pasting
- manual user updating whenever they use the same link (like how Enmity does)
From what I see, replugged is a vencord copycat now
**index.ts: **Lines 23-25
// This class has to be named "BrowserWindow" exactly
// https://github.com/discord/electron/blob/13-x-y/lib/browser/api/browser-window.ts#L60-L62
// Thank you, Ven, for pointing this out!
**browser-window.ts: **Lines 60-62
const isBrowserWindow = (win: any) => {
return win && win.constructor.name === 'BrowserWindow';
};
Too much effort for very little gain, at the end of the day
Settings.plugins.CssSnippetManager?.cssSnippetChannel or some bs like that would work just fine, no?
Oh my god, thank you very much, it was too hard for me to figure out, I totally did not add a TODO because I wanted to deal with it later and not bc I don't know what to do.

I think this would make more sense as:
const snippets: Snippet[] = Settings.plugins.CssSnippetManager?.cssSnippets ?? []
you wanna go???
PronounDB (had no effect):
ID: 461460
Match: /\(0,.{1,3}\.jsxs?\)\((.{1,10}),(\{[^[}]*currentPronouns:[^}]*(\w)\.pronouns[^}]*\})\)/
None
Failed to load resource: the server responded with a status of 404 () ```
u will merge my fix
why is such a complex regex needed?
same here but with the edge case "$$self"
i dont think those cases are relevant
would be more readable to just replace them without the regex
i could also generalize the regex creation
also maybe do that at compile time?
would make the source code cleaner
idk if that'd be hard lol
oh like make the regex transformations happen at compile time?
hm i would have to write golang i think
or add acorn as a dev dependency
mmm
as it would heavily rely on the shape of the AST




true
i could do the regex part in with acorn and it would be pretty loose
it would also allow the \i escape outside of patches
i dont think the $$self case is relevant either but i do think \\i is likely to happen at some point
when
discord dont crash challenge
actually i was thinking of user generated content
this is just for source code
so it probably isnt lijely
simplify regex time
why does it even crash
it only happens on windows
it never happened to me on linux
but now im on windows it crashes every so often
i think its memory related
it happens a lot more frequently when i leave dev tools open
lol out of memory
mmm
it might be cause 32 bits => Limited to 2gb mem
and i saw discord at ~1.4gb earlier
oh lolololol
so it runs out of mem
and electron goes
heyyy we should clear memory maybe mmm
then it just reloads the renderer
**patches.ts: **Lines 21-31
export function canonicalizeMatch(match: RegExp | string) {
if (typeof match === "string") return match;
const canonSource = match.source
.replaceAll("\\i", "[A-Za-z_$][\\w$]*");
return new RegExp(canonSource, match.flags);
}
export function canonicalizeReplace(replace: string | ReplaceFn, pluginName: string) {
if (typeof replace === "function") return replace;
return replace.replaceAll("$self", `Vencord.Plugins.plugins.${pluginName}`);
}
me when the https://open.spotify.com/track/1c3GkbZBnyrQ1cm4TGHFrK source
this is not canon at all
actually johann is kinda canonical
me when i am heavenly
thats me :p
return [...decorations.values()].map(decoration => {
whats this for? the element shouldnt matter
47de9fa Make some changes to reviewdb ui and add badges... - mantikafasi
badge when
Huge
existingPlugins[plugin.name] = cachedPlugins?.[plugin.name] ?? dateNow;
when indexing a nullable value, you can simply use ?. before the brackets to ensure that it won't error
since this is the only usage of cachedPlugins that I can see within this function, this should be enough to ensure no error happens
const [newPlugins, , newPluginsLoading] = useAwaiter(() => DataStore.get("Vencord_existingPlugins").then((cachedPlugins: Record<string, number> | undefined) => {
if it is true that it can be undefined, then it should be typed accordingly
(yes I know, this is weird syntax, but oh well)
PronounDB (had no effect):
ID: 461460
Match: /\(0,.{1,3}\.jsxs?\)\((.{1,10}),(\{[^[}]*currentPronouns:[^}]*(\w)\.pronouns[^}]*\})\)/
None
Failed to load resource: the server responded with a status of 404 () ```
also kinda simplified the match
error id 461460 did not appreciate that
:😈
useless matches how @limber skiff
ig some of them aren't used or whatever but I just patched all of them cause I found it easier

and too lazy to figure out which were used
oh lmao
now it's matching only the used one
be nice 😭
I hate bad patches.
no problem lol
discord had like similar code in 6 different locations which annoyed me so I just patched all cause yes


it was easy to know what was the right module
cuz review db already patches the right one


if a div is user for the indicator in messages it goes funny

i just left the div from the originan plugin but i think simply not using it anywhere works
@verbal pumice will have a merged pr soon
I already merged message link embeds
wtf real
i didn't see it
if only there was a way to see a "new" badge on new plugins..
@austere talon would you merge my css snippet thingy if it had no settings UI?
like, the settings aren't required, they are just a convenience
(well, they would be required if the original message with the snippet is deleted, so you no longer can remove the snippet by clicking a button)
ugh, fine ill do it
I really want a thing to change the channel where to grab css from

like, saving the guild id and the channel id along with the existing info
well, once it gets merged into vencord, dont complain if the settings you already had are incompatible with the final version
im actually working on that
so your effort will be wasted
if you actually implement that
nah, its just two lines of code
no effort wasted
2 lines of effort wasted
I mean sure, but I am trying my best to ensure the settings UI wont be rejected by ven
cause I prefer using custom components

this mf added settings, only to allow for one channel
yeah
2 lines is only going to do that much
u can do list of channels with the same amount of effort
just do comma separated ids
this would need to do smth like
if (!(Settings.CssSnippetManager?.cssChannels?.split(",") || []).some(c => c === message.channel_id)) return <></>;
which is still one line, but ugly, so i would count it as two
so more effort
also, i already said that i prefer custom components
Settings.CssSnippetManager.cssChannels.includes(message.channel_id)
trolley
if you're gonna make a custom component for multi input then extend the options api
so more plugins can benefit from it
i found a weird bug with the settings not saving
nothing related can be found when launching discord via the command line
[Vencord] Loading original Discord app.asar
Discord 1.0.9008
Starting app.
Starting updater.
[Vencord] Installed React Developer Tools
(node:13380) ExtensionLoadWarning: Warnings loading extension at C:\Users\Arjix\AppData\Roaming\Vencord\ExtensionCache\fmkadmapgofadopljbjfkapdkoienihi:
Unrecognized manifest key 'action'.
Unrecognized manifest key 'minimum_chrome_version'.
Unrecognized manifest key 'update_url'.
Permission 'scripting' is unknown or URL pattern is malformed.
(Use `Discord --trace-warnings ...` to show where the warning was created)
Optional module ./ElectronTestRpc was not included.
WEIGHT \\?\C:\Users\Arjix\AppData\Local\Discord\app-1.0.9008\modules\discord_krisp-1\discord_krisp\NC_small_8k.thw
WEIGHT \\?\C:\Users\Arjix\AppData\Local\Discord\app-1.0.9008\modules\discord_krisp-1\discord_krisp\NC_small_16k.thw
WEIGHT \\?\C:\Users\Arjix\AppData\Local\Discord\app-1.0.9008\modules\discord_krisp-1\discord_krisp\c6.s.f.27f1a3.thw
WEIGHT \\?\C:\Users\Arjix\AppData\Local\Discord\app-1.0.9008\modules\discord_krisp-1\discord_krisp\VAD_weight.thw
[13380:1218/175457.845:ERROR:CONSOLE(1)] "Extension server error: Object not found: <top>", source: devtools://devtools/bundled/models/extensions/extensions.js (1)
[13380:1218/175457.845:ERROR:CONSOLE(1)] "Extension server error: Object not found: <top>", source: devtools://devtools/bundled/models/extensions/extensions.js (1)
Failed to initialize logging. error=SetLoggerError(())
nothing related can be found in the console
it just doesn't save
but it can load
when i manually edit the settings json file, the array is not empty
deleting an item from the array also works (by the extension)
ok, its not that it can remove an individual item from the list
but that the list gets emptied
tf
looks like it was a bug from my end
i was treating the proxy of the settings as a copy of them
and that caused undefined behaviour
now I just ensure that i am dealing with a copy
and poof, bug gone
sighs
or just PlainSettings?
well, i am modifying the returned value of getSnippets, and from what I see PlainSettings is global and read-only
but it would indeed solve my issue
i think
ayo, we got the same midnight?
(real)
so that would either mean you are a balkan, or i dunno
PlainSettings isn't read only
it just doesn't detect changes to it
Settings is just a proxy that wraps PlainSettings to make it responsive (update react components, automatically save to disk, call change listeners if any, return defaults for plugin settings, etc)
but if you manipulate PlainSettings those changes will be reflected on the normal Settings as well
so u should treat it as read only
bot dead?
prob too long
yeah uhh, what I want is a clone
skill issue
just open the dev tools
and edit the settings from there
lol
where tf do i find the css snippets
Vencord.Settings.plugins.CssSnippetManager.cssSnippets
got it
r u using a DE? or is that a tiling window manager?
uhm, it doesn't say the de in there
it's not a de
or idk the name of the desktop
Openbox
hah

@quick ibex UI so far

idk
@austere talon so uhh
we currently only have restartNeeded for when an option requires a restart
but we should also have a pluginReload, that calls .stop() and then .start() on the plugin after saving
cause some plugins, may not need a complete restart, but just a "relaunch" of their code
would it be ok if I added that?
or even simpler, a callback that will be executed if the changes are saved
yeah, that actually makes more sense
(cause it has more uses)
huh?
[VencordInstaller] None on v1.0.8
idk wtf the None means
None may refer to:
Zero, the mathematical concept of the quantity "none"
Empty set, the mathematical concept of the collection of things represented by "none"
none, an indefinite pronoun in the English language
This PR adds a spinner as well as the dark discord background when loading.
It also adds .dbg as an applicationIdSuffix for the debug build, as it is very useful to be able to have a stable and debug build at once.
Before:


Aft...
@Vendicated @Vendicated @Vendicated @Vendicated @Vendicated @Vendicated @Vendicated @Vendicated @Vendicated @Vendicated @Vendicated @Vendicated @Vendicated @Vendicated @Vendicated @Vendicated @Vendicated @Vendicated


so true
ven, I need you
to either merge w/o checking
or to review
(currently, the only error this plugin could every produce, is to not render the snippets in the settings, because a guild has been deleted and it cant be found)
i was just too lazy to deal with that edge case
(i do use ErrorBoundary, so if someone ever needs a fix, they can report it)
@austere talon
(ven will explod)
None
None
Failed to load resource: the server responded with a status of 429 ()
Failed to load resource: the server responded with a status of 404 () ```
Port of Invisible Chat for Vencord.
Features and Design are kept to a minimum for now.


const valid = secret && cover && /\w \w/.test(cover);
Using divs with hardcoded colour for text is a bad idea, because it means zero theme support and might even look terrible on stock light theme. Please use Form components (Forms.FormText, Forms.FormDivider, etc) instead
the library is also pretty big so it'd be good to fetch it on demand from a cdn like unpkg or cdnjs
Why are you not using jsx here?
Why are you using an external embed?
Its used to embed links from decrypted messages.
Discord cant cope with embedding videos/websites/audio in bot messages
Yeah no, manipulate the embeds of the message instead.
Don't use an external API.
Look at messageLinkEmbeds, you can steal code from there.
using an external api is kinda the only way to properly do this, unless Discord has a publicly accessible endpoint to generate embeds which I doubt
Thats a good point, i will switch it to jsx
what do you think about using a webhook to generate embeds?
that way users could specify their own discord webhook for proper privacy
if you execute webhooks with ?wait=true it gives you the message json
What about a button that says "Accept risks and show embeds"
And then generate the embeds client side?
that's way worse than using a third party api
i love sending porn with invisible chat !!!
same!
@Vendicated @Vendicated @Vendicated @Vendicated @Vendicated @Vendicated @Vendicated @Vendicated @Vendicated
@Vendicated @Vendicated @Vendicated @Vendicated @Vendicated @Vendicated @Vendicated @Vendicated @Vendicated
@austere talon @austere talon @austere talon @austere talon @austere talon @austere talon @austere talon
can u stop
Horror
arjix banned from repo speedrun
now you will merge
:husk:
You check for open.spotify.com
And then proceed to assume that it is a track...
It could be an album, you don't check
lol whats the point of this, u should know which platform youre on
lol what is the point of you
lol whats the point of this, u should know which platform youre on
Yeah idk. Just felt it would fit to the plugin
ignore the others pls 😭
Domi 💀
i was talking to you
as far as I can tell, wouldn't this be unable to differentiate between multiple online sessions? I'd rather not have a feature than have it but broken
as far as I can tell, wouldn't this be unable to differentiate between multiple online sessions (if you're online on say mobile and desktop at the same time)? I'd rather not have a feature than have it but broken
It can. getSessions returns the client and the status for the session

 => string
our type is string[] not any[]
which is technically not the correct type since it gets even more arguments than what we use it for
how cast
the "correct" fix would be typing it as any[]
but i dont want that
pain
ts should add more advanced typings
it's cause the actual type is like
(substr: string, ...groups: string[], offset: number, originalStr: string, namedGroups: Record<string, string>)```
js spec insanity
now that i think about this, ts could support proper typings for this
it's obvious where the end of the varargs is cause it's a different type
but i think it's cause js doesn't support more arguments after vararg
btw whats this for?
couldnt u just assign directly
also this won't work for getters i think?
you'd need to make a new object
wha
7 years later.....
lol windows moment
cause `
?
cause i wrap those into ``
oh
seems to not work anyway lmao
I don't really understand what it's supposed to do but I'll just assume it's right
im gonna checkout this PR and test
gh cli my love

you lov
hate
That isn't a change
It was in Unicode form before
Idk why it's there either but I didn't like that it was p much invisible in the code
ah
Lool
The amount of testing...
i only updated a few things to test
too lazy to update all
i wish js had macros
would make webpack commons way cleaner
anyway finally u dont have to React.useEffect
you also forgot React.useMemo
no?
if (codeBlocks.length !== 1) return null;
null is the proper return to render nothing!
perhaps allow an optional space between elements?
isValid: value => value.split(/, ?/).map(id => /\d+/.test(id.trim()) || id.trim().length === 0).every(id => id),
why not just do this?
this.styles = []
imo adding possibly dozens of style elements is a bit messy, why not make a more generic function that joins the snippets and writes all to one style element and just call that after modifications?
what exactly does this do? Please add a comment
I have grown too accustomed to const, that re-assigning a property it was not even a possibility in my head.
simply not using it anywhere works
as in, always use span? If so, just remove the div and always do span
sorry but could you please format these components on newlines, something like
<ErrorBoundary>
<PlatformIndicator />
</ErrorBoundary>
It may be a bit messy, but when it comes to removing a single snippet, it is better.
Although I may consider changing it to only use one style tag.
import { Settings } from "@api/settings";
function toggleHoverControls(value: boolean) {
You should avoid transitioning things like height, width, left/right/... This is because they force the browser to relayout and can't be gpu accelerated which makes them feel choppy, especially on older hardware. It would be much nicer to use translateY to achieve this
Good read: https://medium.com/outsystems-experts/how-to-achieve-60-fps-animations-with-css3-db7b98610108
(i think transitioning height for a minor thing like this is okay, so if you can't quickly figure out a translateY version that's okay)
fun fact: u can also do arr.length = 0 to clear it (yes arr.length is a setter, yes js is weird)
ah i didn't catch that, yeah that's even better :D
Jokes on you, I learnt that on my own by accident
whaa
oh i see
thats epic
can u add useRef
Can't figure it out now. I could try it tomorrow and make an PR when I found it
StartupTimings (had no effect):
ID: 461460
Match: /({section:[\w.]+?\.PAYMENT_FLOW_MODAL_TEST_PAGE,)/
NoticesAPI (found no module):
ID: -
Match: updateNotice:
None
Failed to load resource: the server responded with a status of 404 () ```
i should make it test canary as well

maybe we can have voice channels whose names let users know the % of patches that work in stable and canary
StartupTimings (had no effect):
ID: 461460
Match: /({section:[\w.]+?\.PAYMENT_FLOW_MODAL_TEST_PAGE,)/
NoticesAPI (found no module):
ID: -
Match: updateNotice:
None
WebSocket connection to 'ws://127.0.0.1:1337/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED
Failed to load resource: the server responded with a status of 404 () ```
StartupTimings (had no effect):
ID: 461460
Match: /({section:[\w.]+?\.PAYMENT_FLOW_MODAL_TEST_PAGE,)/
NoticesAPI (found no module):
ID: -
Match: updateNotice:
None
Failed to load resource: the server responded with a status of 429 ()
Failed to load resource: the server responded with a status of 404 () ```
pog works
discord seems to push changes to both canary and stable at the same time now
notices api being broken is pain
it means people won't get notified for update
Should maybe add a fallback to the update notice
that uses alert instead
welp
startuptimings fixed
notices api no
cuz I have no idea what I'm supposed to patch
i am now thankful for reading this channel
Hate
Not alert but confirm
is notices api even necessary
do notices work without it
if so they fixed their shitcode
notices api doesn't add any features it just fixes discords shit code
Add support for opening links in an external app, e.g. the browser, or the GitHub app.
why husk reaction @crude hearth
because vencord android needs to be cancelled
its worse than react native
laggy
unresponsive
nop
using discord on web is literally pain
and vencord just does that
well discord can fix it i mean
on mobile
I dont think so
if they could why would they make react native
because people prefer to have an app rather than using the browser
well they could make an app that uses browser
native is always faster than using a webview
true, but discord stupid
they wont
they cant even secure a webpage from xss properly
Yeah. Maybe it is possible to do it ourselves tho, maybe if we render discord desktop website and then use a custom theme or smth
Yeah, but the discord desktop isn't that slow, its just the mobile version right
3f4fe35 Add support for opening urls in an external app... - Henry-Hiles
This should now be fixed by #5.
untested cause I haven't set up android sdk on Windows

Also wrote it without ide
ven will start adhering to "main branch should be deployable" rule immediately
nop
@austere talon so are u gonna make a release soon now that u did the quickcss thingy?
Once I tested
Tags are deployable
main branch is if it works it works
VenVenVenVen
idk why i find
// @ts-expect-error SHUT UP
``` so funny
trolley

fuuu
grrr i hate workflows
do u want me to test rn? i have a bit of time i think
Adds the option to turn on "Keyboard Clicks" Similar to Opera where when you type a click sound is played.
Nvm don't have time
@glass cedar i dont think i can make quick css closable
because webview doesn't exactly support popups
you have to go insane hoops to do it
cant u just close the tab or smth?
a31d92f Make webview debuggable with chrome://inspect - Vendicated
idk figure it out and pr
you gotta go hoops to do it
oke i will if i can
thank you
I didn't know that js regex supported named groups.
I thought that was a python only feature.
None
None
Failed to load resource: the server responded with a status of 429 ()
Failed to load resource: the server responded with a status of 404 () ```
None
None
Failed to load resource: the server responded with a status of 429 ()
Failed to load resource: the server responded with a status of 404 () ```
this channel keeps freezing my phone i think
same
Allows emoteCloner to work on Fosscord and other unofficial backends
huh that's a thing
absolute horror
remote tracking in PRs should be illegal 
or github should at least hide the commits
Yes
I called the discussion "Image tools" because my requests are oriented to images, but it could be separated plugins.
- After clicking a picture, sometimes they are too small, or the text in them is too small. To avoid having to open original and zoom in the browser, I would like a zoom (like a lense) while holding click for example.
- Display picture name on hovering in a tooltip. (the tooltip can include the dimensions of the file too or size of the file)
Idk if there could be somethi...
i don't think this is very useful. Why not just do this on a system level?
description: "API to add decorators to member list (both in servers and DMs)",
Its my workflow 
whats decorations[1]? Is hardcoding this index safe? What if a plugin adds its own decoration at the start, would this shift to 2?
other than those small things, looks good!
this creates the folder dist into upload? Wouldn't it make more sense to copy the contents of it only?
i also think deleting all files in the repo beforehand would be good to clean up possibly outdated files
something like (untested)
rm -rf upload/*
GLOBIGNORE=.git:.gitignore
rm -rf upload/.*
cp -r dist/* upload
this should probably be a force push to prevent potential issues
git push --force origin main
i think this secret only has permissions to the current repo, so I'll have to add my own to the repo secrets
You might want this plug-in if:
- you only want keyboard clicks in discord.
- your operating system doesn't support click sounds (at least not easily) I believe ChromeOS does not support these as an example.
- you're an idiot and have no idea how to enable them in settings.
Whilst I agree this isn't the most useful/coolest plug-in in the repo, it's not exactly the most useless.
Changed to secrets.BUILDS_TOKEN so you can set that.
whats decorations[1]?
it has comments
Is hardcoding this index safe?
yes
What if a plugin adds its own decoration at the start, would this shift to 2?
no
d806be1 feat(PlatformIndicators): add indicator to mess... - ActuallyTheSun
@oblique hound did u ever figure out the translateY transition?
Kinda. But i couldn’t figure out how to resize the spotify player with it
just negative translatey should work
Alr. I’ll try it in a bit
73b7f11 Also push builds to https://github.com/Vencord/... - pointydev
From what I can tell about mechakeys is that
- it does support Windows
- According to their website they only support Windows but on their GitHub they support Linux, MacOS and Windows (confusing but something I cba to verify so i'll assume they support all three)
- In any case this still does not support users running Vanilla ChromeOS with Discord Web and Vencord Web, nor does it account for keyclicks in discord (and probably not for the less technologically capable people who don't know h...
Nope thats just moves it down, and im then stuck with the panel background 
But i added the will-change property
i don't think this is very useful. Why not just do this on a system level?
90% of vencord plugins aren't objectively useful (im looking at you fart2)
@austere talon why not use a branch?
bloat
Aliucord repo .git folder is like 300mb cause of all the binaries
they bloat git history
just squash all of them into one
@austere talon another plugin you will merge instantly
guhg uh guh guh why
I love
why
it stays like that forever
no
why is this useful
worst
sometimes you may not want people not in the vc too see what you are screensharing
ok so dont screenshare it?????????
no?
It is still useful
just don't use it lmao
useless plugin
for you
almost as useless as all @crude hearth plugins
WRONG
MY PLUGINS ARE MORE USEFUL THAN THAT
@placid wave you love #1032200195582197831 message
also unironically why the hell would you want that
I mean you can completly disable the pop up
why does it still show that thing











