#๐พ-core-development
1 messages ยท Page 13 of 1
good
that's still bad
i will LazyComponent dw
yop
mantika loves fetching same thing ten times
less bad
i willl fix the rest later 
mantika needs to learn about formatter
i fixed ur pr @crude hearth
you will figure out why pfps are broken now
i didnt change anything about them
oh wait i know why pfps broken im dum
Fake news
@fiery jungle
LOOOOVE
A story in two parts
average mantika pr
you can spend days fixing stuff and it's still gonna go bad once you merge
what's reviewdb
None
None
Failed to load resource: the server responded with a status of 404 ()
thank you, I can now leave actual reviews or just spam โcumโ on creatableโs

that was fairly straight forward
why do people hate so much on manifest v3
it's fine
manipulating headers is even easier now
Think its related to it possibly being abused to get rid of ad blockers
At least, I think thats were a lot of the hate comes from
adblockers can work just fine
Idk
you can still block requests and stuff, it's just via json now
Watched a video, thats what i understood
ig it's a bit more limited but it's fine tbh
probably fear mongering
Ill stick with firefox for the meanwhile
Have no problem with it, why change?
btw in v3 you can't run remote code from extensions
which is good imo
all code will have to be bundled with extension
makes it safer for users
Because Manivest V3 only allows extensions to run 30,000 rules and most ad block extensions would need the capacity to run at least 300,000 rules to work effectively. In this context, a โruleโ would be a mechanism that blocks a specific HTTP address.
I see
so Google could fix this by allowing infinite rules
I mean
you can make rules have regex filter
so it could just compile all domains into a massive regex
and it would work probably
A plugin that encodes and decodes base64.
I used "btoa" and "atob" functions (which are deprecated) because I can't use Buffer (explode).
just write a converter that just does some basic concatenation
why
they are only deprecated in node, not browser
they've been "deprecated" in node for a while now too
the browser doesnt deprecate them
i know
Which is the issue, it's much easier and wayyy better if you can just do it all dynamically
Good adblockers load dynamic rule lists and load user rules, which is extremely hard to do with the declarative method
its not
you can set rules with js
chrome.declarativeNetRequest.updateDynamicRules({
addRules: [
bleh
]
})```


For the purposes of having a version number that increments for auto-updating the userscript, could we use the commit number via e.g. git describe?
Doesn't its updating system use semver?


INSANE
@austere talon you were husking me and calling me insane when I did that 2 weeks ago
money changes people
Fr
lmao why'd you leave all the blank ones in there
why not
because noone will donate to insane art gallery
it was aliucord plugins repo
you are not a very good artist sorry
horrrorr
wtf

I will buy this masterpiece
@austere talonhonestly id check if your locks work
@austere talon unlock ur door for me
and me
I brought some glass shards
I brought some flowers




shill
problem?
None
None
Failed to load resource: the server responded with a status of 404 () ```
Good
made a dictionary plugin with urban dictionary's api.
very cool!
(embed would be even cooler!)

you can send embeds just fine via SendBotMessage
wth where are all these people coming from
brazil
None
None
Failed to load resource: the server responded with a status of 404 ()
503a2ec Add option to ignore incoming blocked messages ... - somerandomcloud
messageLinkRegex: /https?:\/\/(?:\w+\.)?discord(?:app)?\.com\/channels\/((?:\d{17,19}|@me)\/\d{17,19}\/\d{17,19}(?!>))/,
use a negative lookahead
sorry for taking so long btw, thanks a lot for your effort!
Alternatively there's a function with the pre-swc name of tryParseChannelPath
youre goin to brazil
not showing edits moment
Summary:
-
3 New stores:
PrivateChannelsStore: used to fetch\interact with private channels and guild channels in specific cases.GuildChannelStore: used to fetch channels of guilds.ReadStateStore: used to fetch read state of channels.
-
1 API:
ServerListAPIplugin: exposes two namespaces to insert elements under the home button and in the server list itself.
-
1 Plugin:
ReadAllNotificationsButtonplugin: a simple button in the server list above a...
are u aware this is already a thing via the inbox tab? @woeful sable
inbox tab?
this doesn't do all servers you are in no?
and it's not that convenient either alot of my friends asked me to make that button ๐
yeah
also i'm pretty sure like 90% of discord users doesn't even know about the inbox feature
i didn't even know about that thing even though i use discord everyday all day since 2019 ๐
yeah that's true
but it's still not as accessible as mine 
my friends still want my button 
@austere talon cmonnnnnnn
i also need that api for my other plugins
so it's a win win

explains why you're using namespaces
GODDAMNIT
we don't really do that in typescript
namespaces in typescript are like ancient from before export/import were a thing
are you kidding me
i thought they were new
๐ญ
i mean it's still a cool thing to wrap things
cuz i don't know better ways off my mind
basically you can already make custom namespaces via import if you just export top level functions
export function addServerListItem();
// single function import
import { addServerListItem } from "blah"
// import as namespace
import * as ServerListItemNameSpace from "blah"```
im gonna be genuine i even used that without noticing i did namespace just like "automatically" and when i realized it was already working and i was like "oh js\ts has namespaces what?"

yeah
but what like
if i have
ObjectTick
and i wanna make it like Object::Tick
so like just "context" thing
i used namespace
but what would someone do in ts for that
i just wanted to "wrap" those functions if that makes sense
throwing functions in the plugin like that looks like absolute mess to me
that's why you make it an api
in the api folder
look at how the other apis look

i thought itโs a but unnecessary to make it an api for such a small thing
nah its fine
could you please do that? Migrate it to the api directory and use top level exports instead of namespaces
other than that it looks good
thank you
alright ill be on it soon
Nah, adding more APIs even if no plugin uses them is fine
Cause a future plugin might profit off it
And also, unused APIs are disabled, so no impact on performance
(not like there would be any real impact either way)
^^^^
thanks thanks I'll see in a bit
Holy shit it's joel Windows 7
REAL
@austere talon @austere talon
i will stab you in your sleep
i will look in a seccccc
Actually it seems to support Wayland out of the box, could you try if this binary works on Wayland?
or build from source via
go build --ldflags="-s -w -X 'main.InstallerGitHasha=$(git rev-parse --short HEAD)'" --tags wayland
Not OP, but just tried on wayland myself with that installer and got the following error:
Using UserConfig
Checking if /hom...
None
None
Failed to load resource: the server responded with a status of 404 ()
match: /(Messages\.SERVERS,children:)(.+?default:return null\}\}\)\))/,
are these three million parens needed?
it wasn't done yet
Hahaha this is what I get for not working on a clean base
lmao gj
haha guess it's released now
it works but the issue is that it doesn't show reactions until you hover / reload the message
idk how to fix
dispatch MESSAGE_UPDATE once you're done with adding the images?
i did that in message link embeds and it works most of the time
I don't add anything
I just render my own component
the issue is that const reactions = ReactionStore.getReactions(message.channel_id, message.id, emoji);
returns no users even when there are ones
oh
I tried subscribing to like message update and to changes on the store but neither work
@vagrant topaz did u have that same problem
why does commandsAPI and serverlistAPI turn back on each time i restart ๐ฟ
so homosexual
wdym
This is kindof obsolete since you can just shift click people's username
I've never heard of that feature till this second bro where are you coming with this stuff from ๐
on another note tho, I still think this plugin is easier and more demanded atleast from everyone i know since it's just one click instead of holding keyboard, i believe all other mods had this plugin so why not vencord and my friends want it!!!!
@woeful sable there's always #1032200195582197831
you have a point
but uhhh
i dunno ig

thats not really viable for now
btw @verbal pumice why do u even still use embeds in the message link plugin
its nicer to just embed the actual message
@austere talon so do you want to close the pr or
uh nah
ven is gonna let it sit there for over a month, then say "bruh wtf" and pr it with a small patch
well i made this plugin mainly for a friend of mine who asked for it alot but it's gonna be a pain to explain him how to build it ๐
true story โข๏ธ
cause im not speedy gonzales who can review in 2 milliseconds?
and wtf is speedy gonzales
a character
what the fuck
the fastest mouse in mexico
Known for being fast
since this matches
null,h&&!d?Vn({key:"reply",label:Mt.Z.Messages.MESSAGE_ACTION_REPLY,icon:jn.Z,channel:t,message:n,onClick:jt.HH})
why not include the key and the MESSAGE_ACTION_REPLY in your regex? that would make it a lot more robust
like
/null,(.{1,2})&&.{0,10}key:"reply",label:.{0,20}MESSAGE_ACTION_REPLY.+?onClick.{0,10}\}\)/
I'm pretty sure this regex bricked my discord ๐
oh you didn't do the capture groups
@austere talon
i need a more specific regex because i use the variable names
i capture them in the regex
alright pushed
@austere talon
it works fine for me
there's plainText but it would just be @VendingMachine#8485
so yeah i think rawText is enough
btw does the plugin auto build?
wdym
the plugin list*
what a meaning full commit goddamnit
btw u missed the entire point of using .{1,3}

u just set it to .{4}
the point of that is that minified names can be anything between 1 and 3 chars
so .{1,3} is more robust than .
i thouhg they are uhh "static"
and like
dt.OX could later become a.DOA
so if a thing is 2 letters it will stay two letters
so dt.OX would be .{1,3}\..{1,3} am i correct
either that or i just do .{1,10} usually
but gotta be careful with .{1,3} cause it will also match unrelated chars so u also gotta have boundaries around them
like
foo(x.BY,{```
yeah yeah i get that
should be \(.{1,10},\{
Electron
anyway should probably make MessagePopover api soon
like api for adding stuff here

No clue
Why did you close this? Imo base64 is kinda useless cause why would u ever need to decode b64 in discord, but the urban dictionary one is cool
I just haven't said anything else because you haven't reacted to my last comment
better be ready cuz i have two more plugins!!
dm typing indicator and platform icons

platform icons woud be awesome
for dm typing indicators you mean like typing dots on dm channels?
why not make it do guilds too
no
btwi forgot to give u contrib why didnt u say smth xd
YESSSSSSSSSS
platform icons is wip
i can tell
use git correctly
dm is done prety much
dont ever make features on main branch
you should always check out feature branch
then pr from feature branch
for next feature go back to main first, pull latest changes from upstream then make another feature branch
just reset
how does one reset pls help
git remote add upstream git@github.com:Vendiated/Vencord
git fetch upstream
git reset --hard upstream/main```
this assumes u use ssh
im actually happy someone likes those plugins or wants them like me ๐
because theyre useful
but i moved from bd
shits laggy
then to make develop multiple plugins at once:
git checkout -b platform-indicators
# do some changes and commit and push and stuff
# later to make another feature before first one is merged
git checkout main
git pull upstream main
git checkout -b my-other-feature
then you can switch between your features by just git checkout branch
do i just delete and refork
NO
bruh what
do this
I accidentally deleted the repo and tried to delete one of my private repos lol.
I managed to make it an embed message and didn't commit it yet.
Oh i see haha, take ur time and just let me know once youre ready
this resets it
it didn't
look at this crap
github can so pissy i swear
why i can't just sfull sync with main repo
bruh
i wanna discard those commits
bro if you struggle using commandline use github desktop
why do u care what ur github looks like
doesnt really matter
anyway you need to force push to delete those commits
just do the reset like i said then git push --force origin main
do this
then force push
holy shit lmao
another vencord upd
why am i in there twice 
additionally - I would like to note that connecting to the RPC api via WebSocket does not work because the Origin header is set automatically and there isn't really a way to disable that. if it makes sense to implement some sort of RPC api using the same functions I found I'd be glad to work on that too
wtf I just looked at the original plugin
why do they include so many pointless libraries

entire fetch library and rpc client
I'll be honest it was hell to figure out because of that
I tried not making too much of a mess either
additionally - I would like to note that connecting to the RPC api via WebSocket does not work
what does that mean?
what rpc api are you trying to connect to
the uhh localhost one
Also good music taste
love tuyu
like discords?
yeah
doing that is the worst way anyway, the dispatcher method is the best way
it would be cool if that plugin could somehow work without requiring a last.fm key
maybe they have "public" keys you can use instead
like twitter
doesn't seem to be, sadly
by public I mean tokens the official websites use when you're not logged in
btw why not use listening instead of playing?
it's kinda sus because that gives away you're using a mod so it should be a switch if added but that would be cool
hmm maybe
I didn't even try because I was kind of scared it could trigger something but probably wont
also just checked lastfm and it's pre-rendered or something
no api requests
im also looking and theres a bunch of requests
im trying to check if any of them are what we need
this is a heavy one but i made a different branch finally 
you're right it does SSR
the alternative would be to scrape the webpage which ehhh
you only receive typing events for the current server opened and dms
not all servers
so doing it for the current server is kinda pointless imo
oh yeah I had that too
https://www.last.fm/user/USER/library?_pjax=%23content gives u html and you could easily scrape it:
class="
image-overlay-playlink-link
js-playlink
"
href="https://www.youtube.com/watch?v=ZfXU1qmOOyc"
target="_blank"
data-playlink-affiliate="youtube"
data-youtube-id="ZfXU1qmOOyc"
data-youtube-url="https://www.youtube.com/watch?v=ZfXU1qmOOyc"
data-track-name="Uncertain"
data-track-url="/music/A+Light+in+the+Dark/_/Uncertain"
data-artist-name="A Light in the Dark"
data-artist-url="/music/A+Light+in+the+Dark"
title="Play on YouTube"
data-analytics-action="FeaturedTrackPlayTrackOnPage"
data-analytics-label="youtube"
but i prefer the api version
so lets use that
god i hate server side rendering
things like google trans, virustotal, twitter etc all have "public" api keys you can just yoink

oh I should try adding the timestamp thing
last fm doesn't do times does it? already mentioned it earlier and people were saying it doesnt
it doesn't do for the currently playing track
on other tracks there's a date attribute that's when it was scrobbled
yeah but u cant really calculate how far the user is in
like u have no way of knowing
yeah true
the best you could do is do like
lastScrobbleTimeAgo - lastScrobbleLength but what if the user seeked to a different time
yea
prob best not to then
what player r u using anyway
with the webscrobbler extension you have support for a ton of websites
It got rebranded to yt music
yeah merged ig not rebranded
please add yourself to the Devs object in constants instead
I'd just not have a placeholder to not confuse people (same below), otherwise some might think the api key will already work or forget to change this
this is just FluxDispatcher that u can import from Commons
probably would be best to cache these
small_image: await getSmallImage(),
then on top level add
const getSmallImage = makeLazy(() => getApplicationAsset("lastfm-small"))
it was dimden's but now it's my own
ah oke
just to make sure it doesn't get deleted somewhere along the way
iirc I didn't cache because that function seems to cache already (or at least with external urls it doesn't re-request things)
oh also it'd be helpful to add instructions how to get an api key, you can do that by adding settingsAboutComponent to ur plugin that returns a react component
ah okay
ven check my pr when u kan 
also i suggest maybe get rid of the devs constant and instead just check if a person has the contrib role from this server?
no?
whats wrong with the devs constant
and not everyone will be on this server
can u show the dm typing indicator
.
+0 yes
i would bring back the original counter also
like make it show ๐ฎ๐น 9 pfp pf pfp
leaving it as-is since it's already cached by that function
did changes just now
should I try setting it to LISTENING? also added a check for the plugin's applicationId in case that works



as an option imo
description: 'show "Listening to" status instead of "Playing"',
yea but its kinda sus cause thats like a dead giveaway to everyone youre using a mod
oh oops i thought i had fixed imports already
we need youtube music rich presence plugin
if you use webscrobbler this works with that
just use the lastfm one
but I think stupit google doesnt have a api for yt music
how
u could have included token logger and bitcoin miner in this commit and i wouldnt have noticed
Im gonna work on a multi-music rich rpc client when I am done with my current project
W
I will do this on my next pr
I pushed the Urban Dictionary plugin to the forked repo but it doesn't show the commits here (Probably because I deleted the previous fork ๐ข).
I'm not sure if I need to make another PR or not.
Please let me know what should I do :)
This is the plugin for now:

I'm not sure, just make a new pr
A plugin that let you search for words' definitions (from Urban Dictionary) without leaving Discord.

Made a new PR (https://github.com/Vendicated/Vencord/pull/222).
Closing this one.
got reaction counts to show working
patches: [{
find: ",reactionRef:",
replacement: {
match: /((.)=(.{1,3})\.hideCount)(,.+?reactionCount.+?\}\))/,
replace: "$1,whoReactedProps=$3$4,$2?null:Vencord.Plugins.plugins.WhoReacted.renderUsers(whoReactedProps)"
}
}],
not sure how to fix this
lmfao
wait
it's only renderering 4 pfps
even tho 5 reactions
inb4 max is exclusive max?
oh wait
hold on that might not be what I wanted to show
oh
my fix worked I think
yeah it did
I'm gonna make a pr
there has to be some bug in how we use the component
**whoReacted.tsx: **Lines 81-89
users={users}
count={users.length}
guildId={ChannelStore.getChannel(message.channel_id)?.guild_id}
renderIcon={false}
max={5}
showDefaultAvatarsForNullUsers
showUserPopout
renderMoreUsers={makeRenderMoreUsers(users)}
/>
like is the max exclusive
have u tried that
cause I think that's what might be happening
all good
good luck making a commit with the same sha sum just to troll some vencord users
None
None
Failed to load resource: the server responded with a status of 404 () ```
mf dipped before reviewing my pr
how
it's impossible for her to change that code
cause its pinned to a specific commit
unless you can find a sha1 collision for a valid git object with malicious code
which is virtually impossible

are you ever so confused an edit just works you quadruple check you actually saved the file
@austere talon check my pr mff
i rebased ur pr @fiery jungle
ill stab ven
Wrote my own concurrently script because ????????????????

firefox doesn't work because they still havent implemented v3 even though their docs stated they would have implemented it by early 2022
also instead of zipping manually, we can use web-ext build which also adds metadata entry which might be necessary

these lengths should be more generic
use an arrow function please
is typingStop not enough? Why is this needed
lol i forgot to submit review again
someone make an extension to submit review automatically on page leave
@austere talon wdym use jsx
jsx
instead of React.createElement
hope this gets added
what does that do
yeah
now no longer merge conflict
oh ok
i kinda deleted all ur commits in the process 
guhhh
are my changes to the build scripts still there
yeah, it's not enough sadly, discord doesn't send typing stop sometimes, I'm not sure about the causer of this issue
yeah i think i redid everything
good
I'll finish up later
look at pr
firefox is broken cause they dont support manifest v3 yet
even tho they promised v3 in early 2022????
switch back to v2
firefox will explode
there's no point in v3 right now
there is
why
v2 is deprecated and v3 is easier to maintain and more performant
either bring back v2 alongside v3 for firefox or tell firefox users to explode until mozilla adds v3

explod
also v2 deprecated
lol he deleted his pr again
later bro, gonna shower now then I gotta do homework
merged and it closed the pr, reopned it tho lol
also renames emojis to emotes
migrate peoples settings if you're gonna change this
Currently, the plugin only shows the avatars of those who reacted but doesn't show the number of reactions.
Planned, that plugin is unfinished and was never meant to be released :P
adds platform icons to users list in servers and DMs and optionally user badges
review prs or stab
emoji typically refers to the default ones (๐, ๐) while emotes also include custom ones which is what the plugin actually targets
the reason i changed it at all is because the source code had both 'emoji' and 'emote' which was unnecessary inconsistency
cope
trol
@woeful sable more descriptive title?
oh sorry I'll edit in a bit
so many prs im explode

46b14cb feat(plugins):WhoReacted keep reaction count (#... - Nuckyz
9bcdc84 feat(arRPC): update for server 2.2 (#230) - CanadaHonk
id prefer to keep it as emoji, since thats what discord also uses
id prefer to keep it as emoji, since thats what discord also uses
it only works if both start and end timestamps are set which apparently not a lot of rpc clients do

if only start is set it will render normally

and if only end is set same as above but w remaining instead of elapsed
funny name but
name: "NoJumpUnblock",
name: "JumpableBlockedMessages",
name: "NoJumpUnblockNag",
None
None
Failed to load resource: the server responded with a status of 404 () ```
lmaooo arrpc moment
love
description: "Allows you to jump to messages of blocked users without unblocking them",
58e28b4 feat(fakeNitro): add an option to change emote ... - x6r
please wrap this in an ErrorBoundary
with this off it just doesn't show in profiles at all? If so, I'd rather it's on by default
replace this Object.entries.forEach with statuses[user?.id]
const tooltip = platform[0].toUpperCase() + platform.slice(1);
what does this even do? Maybe add a comment
replace this if with
buttonType ||= type
init(type: any, props: any, ...childern: any) {
if (!channel?.isPrivate()) return;
and remove above check
so this is mostly for funny musicbee presence?
match: /renderTimeBar=function\((.{1,3})\){.{0,50}?var/,
would be more robust to make this lazy so you don't accidently eat some other vars
const { list: [definition] } = await (await fetch(`https://api.urbandictionary.com/v0/define?term=${args[0].value}`)).json();
this stores the first element of the list array in the definition variable. then you can just use this directly instead of always having the verbose access like below
it centers the icon in the button, it's a part of the svg itself you can paste that path in an svg editor and you will see what i mean
so uhm, remove mingw because vs build tools superior
and some typos i guess.
"vs build tools superior"
doesn't mention the vs build tools
just leave mingw then
these are massive and also proprietary so no
Also let's be real it's not like anyone is gonna build from source on Windows
so this is mostly for funny musicbee presence?
no lol
it makes the most sense for some sort of a media player because you know its duration unlike a game or vscode for example but it's still dependent on the rpc implementation whether they choose to send both timestamps or not
i also saw it on a rocket league rich presence which is funny (and also makes sense cuz each match has a timer)
does it still work with the small change I made, yeah right?
you literally made it a typo
@Vendicated i build from source on windows with vanilla npm
vendy bask in the horror
you really need someone to help you review
this is turning into too much for a single person
Two essential features would be really cool for the Vencord Settings panel:
- Be able to use those big (multiline) input fields
I wanted to press enter for new line lmfao
tl;dr, ENTER doesnt create a new line in github but submits the issue
@austere talon i addressed all my stuff
variable component is kinda out of scope for settings imo, but you can make a custom component and make it yourself
multi text component definitely a good idea
btw if youre making custom tags, I actually already made semi finished custom tags as well
lolz looks like that branch got deleted at some point
anyway you shouldn't store tags in settings anyway
cause settings potentially have very low storage limit (in browsers)
you should instead use the DataStore api
๐ gonna take a look
@dawn coyote
what I made wasn't really intended to public anyway, I just wanted it for myself because I am too lazy to type out certain things over and over again
Well if I have the time I maybe will try to make my own component for that
why do u even wanna make settings ui, would be way easier for u to just do it via commands
. /tags add/list/delete
/thetagname
because I didnt think of it lmao
sure
It's just kind annoying for me to always go trough other plugins to see how stuff works
there u go

wait
here
.1
Hello,
Thank you for bringing this issue to our attention. We've initiated an investigation based on the information that you provided and we'll take appropriate action based on our findings. Please note that for privacy reasons, we're not able to share the specifics of the action taken, if any.
We truly appreciate your efforts in helping us to keep Discord a safe and friendly environment.
Sincerely,
Discord Trust & Safety

lol
its cause of a change i made
okay there we go
my bad lol
check the other plugin now

@austere talon sets delete function requires object ref
so i had to convert to array and use .find
which works wackly
I mean
ven said "does it work"
does the userscript updater support it
it seems to
lmao why did u u check giving me permission to push to that branch
now u gotta click merge button yourself
i didnt click shit
I mean u gotta click funny button in pr
maybe refined github automatically uncheked that
i did click da btn now
nah
it is very substantial
i have created automatic update functionality for the user script
too lazy to test rn
This does the following:
- [x] Store creation time of existing plugins in datastore
- [x] Check for creation time and, if it's less than 2 days ago, mark as new
- [x] Add a badge for new plugins
- [ ] Compare creation time with something to determine if the plugin is new, or they just install Vencord
virus
someone test IMMEDIATELY
yeah
i should make it restart
mf accept the dm indicator
Also let's be real it's not like anyone is gonna build from source on Windows
i builded it today.
"i builded it"
HAHAHHA THEY HAVE A TOKEN STEALER FORKED
insane
"Add files via upload" is the sign of fantastic programming skill
lmao
YANDEX BROWSER
๐
lmao they kill cors and csp i think
insane
lmao to get the token they just eval a snippet with webpack
THAT USES WEBPACKJSONP
๐๐๐๐๐๐
they also use xhr
igna moment
e2698b1 fix: add keys to plugins grid - MeguminSama
This patch adds a button to each user plugin (this is determined by the
plugin directory). Additionally user plugins can specify an
externalLink in their plugin definition to have their badge be
clickable and link to an external website.
Note that this incorporates one file from #234 for the badge colors, but i can also just copy those styles over manually.
TODO
- Implement removing from saved tracks
- Find a better spot to call
checkSaved - Maybe prompt the user to re-authenticate when a request fails with status 401
Also: After this we want to add dynamically loading plugins from URLs for user plugins, is there something for this already or can we go ahead with that.
well I did and then we decided to do scss instead and I've paused it there

one day
Loading plugins from urls isn't really possible because that means they are loaded too late. You need some way of obtaining them synchronously (e.g. save to file ahead of time and read with fs.readFileSync)
remove the extra margin on the current user's profile.
if (!icons.length) return null;
i think mine is more readable but it's whatever lol
silly ven
@austere talon accept typing and this mf
i wanna live my life on main branch again
john ill stab you

Noo
ur a kemo hater
Nop

Keto lover











