#๐พ-core-development
1 messages ยท Page 32 of 1
Hello, I wanted to ask if it would be possible to create or maybe integrate the RemoveChatButtons Plugin for BD. Nothing is more annoying than clicking the gift or sticker buttons by accident when you're just trying to click the gif button.
IMO it would ideally work exactly as the original author QbDesu intended. It would have a couple of settings that allows users to select which buttons.
!...
you can do this with css
manti
semantic
we could also add snippets and stuff to it
d5c05d8 Add DevOnly plugin capability - Vendicated
983414d Add DevCompanion plugin (https://github.com/Ven... - Vendicated
OKAY
okay iwill stop spamming commits now
u love
You can now install the Vencord vscode extension from https://marketplace.visualstudio.com/items?itemName=Vendicated.vencord-companion which is basically PatchHelper but inside vscode
It adds "Test Find" on any webpack finds that will test whether your filter finds exactly one module (and not more or none)
It adds "Test Patch" on any patches you define in definePlugin() that will test that your find is unique and your match and replace works and compiles correctly
To use it you also need to compile Vencord with DEV (aka pnpm build --watch or pnpm buildWeb --watch) and enable the "DevCompanion" plugin. Then just start Discord after vscode (or right click the user settings cog and click "Reconnect Dev Companion")
more spam commits
im done now 
const data = await fetch(`https://en.wikipedia.org/w/api.php?action=query&format=json&list=search&formatversion=2&origin=*&srsearch=${encodeURIComponent(word)}`).then(response => response.json())
as I said, return inside catch and similar returns from THAT function (the one passed to catch), so you need to return some value from it like null and check outside of the catch
like
const res = await fetch(....).catch(err => { ...; return null });
if (!res) return;
Bad Patches
None
Bad Starts
None
Discord Errors
Bad Patches
None
Bad Starts
None
Discord Errors
@austere talon im looking at companion
this is kinda sick
typescript parsing is build into vscode so its really easy to do
also typescript's builtin typeguards are so epic
is that vsc?
no thats github
i was saying that the code there is cool and concise for how much it does with the AST
i love
yea real
yooo what you can click any symbol to get listed all the places itโs referenced. Proper IDE shizzle! Very epic!!
Put this in your QuickCSS in Vencord settings.
You can deactivate each line by putting an x in front of it.
/* Clear message input */
[class*="attachButton-"], /* attach button */
[class*="buttons-"]>button[aria-haspopup="dialog"], /* nitro gift */
[class*="buttons-"]>div[class*="expression-picker-chat-input-button"]:nth-child(2), /* gif */
[class*="buttons-"]>div[class*="expression-picker-chat-input-button"]:nth-child(3) /* sticker */ {
display: none;
}
from https:/...
^ thatโsa me
?
you're telling me I don't need to use typescript dependency?
I tried to mark typescript dependency as external but it didn't work
maybe it is a thing idk
didn't find anything tho
but I think if we do this we can't add vscode stuff
cause its running entirely in typescript context
yea fair
mmmn but then you have to somehow make the typescript plugin have like 0 access to vscode and somehow return data via for example diagnostics

Thanks for showing me this! Really appreciate it.


I literally could've just added a "Hide album art if empty" toggle. Apparently nobody felt the desire to work with me to get it done.
It would be nice to have the ability to rotate server count in ServerListIndicators plugin's options, so it would work with Horizontal Server List
Right now it looks like this:

Is there any way to get the .js file for fake nitro
I brought it up several times and asked you to make it configurable. If you're just gonna ignore that and refuse to collaborate, then that's your fault, nothing I can do

You brought it up that one time, and all you said was to add an option for custom application ID, which would do nothing to solve the problem. I was willing to collaborate and all I got was "my way is the only way" (paraphrase). You can even see a ๐ด reaction in the screenshot you sent. I even made a thread in the Discord that nobody ever talked in.
๐ญ
Discord Account
No response
What happens when the bug or crash occurs?
Hidden blocked messages still trigger the unread messages indicator (red line/highlighted channel name), even with the "Completely ignores (recent) incoming messages from blocked users (locally)."-Setting enabled.

What is the expected behaviour?
Don't show the unread message indicator if th...
Hello, I would like to suggest a couple plugins from BD.
-
CollapsibleUI
https://github.com/programmer2514/BetterDiscord-CollapsibleUI
Features:
- Members list style collapsing of most UI elements
- Dynamic uncollapsing of hidden elements on hover
- Autocollapse for parts of the Discord UI based on window size
- Out-of-the-box compatibility with most themes and plugins
- Keyboard shortcuts for most actions
- Resizable channel/DMs list
- Smooth transition effects
- ...
Bad Patches
None
Bad Starts
None
Discord Errors
Bad Patches
None
Bad Starts
None
Discord Errors
An additional option for platform indicators to show an active platform inside/instead of the user status icon, discord already does this for mobile, so why not do it for other platforms too?

what I imagine this would look like instead:

this however would only be able ...
Discord Account
woliver99#6280
What happens when the bug or crash occurs?
Message logger shows edited messages by me and bots while I have them disabled in the settings


What is the expected behaviour?
It should hide messages from me and bots that were ed...
oh i forgot to give a reason
computePermissions from PermissionStore isnt the same function and that one cant be used here (the one from PermissionStore can only compute for the current user). i've added a comment to clear things up
what if we added two new functions to the plugin definition schema:
snapshot(): string;
restore(snapshot: string): void;
the use case is that any data store in DataStore isn't backed up but might be desired for plugins like custom tags and similar that store user data there. The snapshot function should return a json string of the data the plugin has stored, restore gets that json back later to restore settings. this way we could include more stuff in settings backups
this will only be necessary for plugins that use DataStore or other ways of persisting data and is not necessary for plugins that just use settings
how'd it interact with cloud settings?
its definitely a nice idea nonetheless
@austere talon
Well that should also be included
cause it just uses the settings export as if you were backing up settings i suppose it works without any changes
so i suppose there's not really any extra development effort needed to get them to sync across clients which is nice
Discord Account
Mato#2099
What happens when the bug or crash occurs?
When sending an emoji through the experimental "Favorites server" feature, FakeNitro replaces even the text channel's regular custom emojis (that could've been normally sent) with image links.
I guess it's got to do something with the guildId function since the URL structure is a bit different,...
I guess it's got to do something with the guildId function since the URL structure is a bit different, the plugin's expecting /channels/guildID/channelID but is getting /channels/@favorites/channelID instead, so the function returns @favorites as the detected guild ID.
Funnily enough, even if we use the official way of getting the current guild id and not my "hack", it is ...
We can just add an edge case though, and get the guild_id this way

or well, the second way of getting the guild_id consistently works, so we could replace the original method, but I don't know how efficient that would be
function getGuildId() {
const id = window.location.href.split("channels/")[1].split("/")[0];
return /\d+/.test(id) ? id : Vencord.Webpack.Common.ChannelStore.getChannel(Vencord.Webpack.Common.SelectedChannelStore.getChannelId()).guild_id;
}
smth like this works ig, we could just check if the id is not in a list of known invalid ids, but that is not future proof, so I opted into using regex
I'm too lazy to make this into a PR, so I leave this up to anyone that wants to do this.
๐ Hello
The current implementation of this is not only spamming the API, but spamming a particularly touchy endpoint. This makes it slow and highly likely to get users banned (especially with people that have 1k friends!). Instead, you can gather a list of IDs that you don't have a cached member for in the guild, and use OP 8 Request Guild Members' user_ids parameter with chunks of 100 IDs. This is significantly faster and safer.
funny method for the above

๐ Hello
The current implementation of this is not only spamming the API, but spamming a particularly touchy endpoint. This makes it slow and highly likely to get users banned (especially with people that have 1k friends!). Instead, you can gather a list of IDs that you don't have a cached member for in the guild, and use OP 8 Request Guild Members'
user_idsparameter with chunks of 100 IDs. This is significantly faster and safer.
Yep, I will use that, I'm just waiting for anothe...
โ
hmmm
@austere talon please review https://github.com/Vendicated/Vencord/pull/587 ๐
I feel like game activity toggle should be combined with ignoreactivities 
since they kinda conflict
not really
?
this seems like game activity toggle with some extra steps (having to go in settings)
game activity toggle is to add a shortcut to a discord setting
ignore activities is totally different, it lets you select which activities to ignore
Bad Patches
None
Bad Starts
None
Discord Errors
Bad Patches
None
Bad Starts
None
Discord Errors
im back into coding feels again
maybe i should pr this along with good typings for DataStore
collapse ui is needed as water
Bad Patches
None
Bad Starts
None
Discord Errors
Bad Patches
None
Bad Starts
None
Discord Errors
Description: Allows you to perform multiple actions on an entire channel (move, mute, disconnect, etc.)

that pr is interesting
webpack search inside functions, manually sending requests etc T_T
i will tell u how to fix tmrw
you will leave the three semicolons at the end
also can i hop on ow
F
I should probably mark this as draft until it's done
do not make this configurable. find a reasonable delay that does not get you rate limited and use that
The token is mandatory for the PATCH method (otherwise error 401). The patch module does not directly integrate the user session token, so I used this method to retrieve the user's token. Is there any other way to retrieve the user's token with Vencord or to include it in the PATCH method.
Discords Api methods already include the token so this is obsolete
and also a terrible way to get it, you're for some reason writing your own webpack find when vencord already has one
iirc this is already exported in webpack commons
please move this to the top level
const VoiceStateStore = findStoreLazy("VoiceStateStore");
Discord Account
GeorgeV22#3200
What is it that you'd like to see?
I think it would be nice if the messagelogger could keep a log of the messages that were deleted/edited and not be lost after the client is restarted. For example how messagelogger worked on betterdiscord.
Request Agreement
- [X] This is not a plugin request

Use discussions please. This has also already been suggested multiple times
Add smth to zoom image inside discord.
Examples:
https://betterdiscord.app/plugin/ImageUtilities
https://betterdiscord.app/plugin/PinchToZoom
Moved the transition from :hover to the actual class,
because if you moved your mouse off the attachment the transition would be instant.
Additionally did it a 150ms ease-in-out, because it looks smoother than linear.
d8a553f improve MessageLogger deleted image hover anima... - LordEliasTM
I think this should be in discussions?
The experiments plugin already exists, this is a feature request for said plugin, not a new plugin request.
- More customisation
- Visible in compact mode!
- Less duplicate code.
- probably bad!
- made without coffee (i'm a tea person)!
Bad Patches
None
Bad Starts
None
Discord Errors
Bad Patches
None
Bad Starts
None
Discord Errors
pretty sure useAwaiter takes an optional onError, would be better to use that and remove the effect
this ternary is a bit complex, maybe better to extract it to be more readable
did u test it? cause testing updater is always a pain
[class*=compact] .vc-pronoundb-compact {
match: /(\"span\",{id:.\i,className:\i,children:\i}\))/,
I just copied the other thing lol
did u test it? cause testing updater is always a pain
I tested branch switching using git a lot, gonna test updating with it
Not sure how I'm going to test standalone updating though
Okay updating and switching with git works completely
Seems Discord are now using a full channel object here. Patch changed to accomodate.
Stable works with the current RCE patch, PTB/canary/future stable need the new patch. I'll keep both in - they're no-op if it isn't the right version and don't collide with anything else.
oh wait

i could use a function here couldn't i
then just conditionally apply the .id if it's a channelId prop rather than a channel prop
I always forget to build
yeah i know but good to refactor along the way
i get the idea but I would remove this again because github regularly chokes when creating a release and if you then rerun the workflow, publish to extension stores will fail due to conflicts
typo?
return `/releases/tags/${branch}`;
le typo
Bad Patches
RoleColorEverywhere (had no effect):
ID: 258631
Match: /user:([A-Za-z_$][\w$]*),channelId:([A-Za-z_$][\w$]*).{0,300}?"@"\.concat\(.+?\)/
Bad Starts
None
Discord Errors
Bad Patches
RoleColorEverywhere (had no effect):
ID: 258631
Match: /user:([A-Za-z_$][\w$]*),channelId:([A-Za-z_$][\w$]*).{0,300}?"@"\.concat\(.+?\)/
Bad Starts
None
Discord Errors
oh i guess it was changed on stable finally
Updated on stable, old patch no longer needed
can someone check if they can repro a strange bug where plugins don't enable when settings are synchronized, even after a full restart? not sure if it's a me thing or just some weird side effect of the way i import settings, but i experienced it earlier and couldn't replicate it after, so i can't give steps ๐
I haven't been able to replicate this so I assume it's been fixed in some passing Vencord update either by accident or the bug was never a real thing in the first place and I'm just...
4c5a56a fix(RoleColorEverywhere): Chat mentions (#605) - lewisakura

Title says all, something like this:

Bad Patches
None
Bad Starts
None
Discord Errors
Bad Patches
MessagePopoverAPI (had no effect):
ID: 902686
Match: /([A-Za-z_$][\w$]*&&![A-Za-z_$][\w$]*)\?\(0,[A-Za-z_$][\w$]*\.jsxs?\)\(.{0,20}renderPopout:.{0,300}?([A-Za-z_$][\w$]*)\(.{3,20}\{key:"add-reaction".+?\}/
Bad Starts
None
Discord Errors
Why was VolumeBooster made desktop-only? It does work on Web version to unlock the volume up to 200%, as the Web version is normally capped to 100%. I just tested an old userscript version from vencord/builds and it definitely takes effect. I use this plugin a lot on web so I'd appreciate if it was enabled back.
it did work tho i was literally using it in the browser yesterday
@austere talon what do you think of this? https://github.com/Vendicated/Vencord/pull/568/commits/0817ffc9f0ea224a5b630d03e576ce40f9f65b26
yup i even tested with a music bot to make sure and it does work
#1015408930060501033 message if youre talking about this person, maybe its cuz they were using it on armcord idk
@limber skiff
for some reason this took like 5 seconds to load commits and branches
see how long it takes
oh my
literally 10 seconds
its because i have many remotes added
is git fetch necessary?
maybe without the --all?
without --all it only takes 1 second
@limber skiff
yes it takes long
just remove -all
so it only uses origin
unless theres a good reason to use all?
maybe instead of the disabled select we can instead have some sort of loading indicator
or change "dev-branch" to "loading branches..."
it's very fast for me
yes because you only have one remote
yeah
as i said why not just
- git fetch --all
+ git fetch
--all
Fetch all remotes.
faster cuz I'm on mobile
i dont see a need to fetch anything but origin?
ya ya it's fine
ok done
ye now its relatively fast
git ls-remote is slow too tho
so getting commit info also kinda slow mm
that one should be kept tho
ye
also can you try to find what's wrong with the publish workflow
the heck is that font
???
lmao what
okay that's doable
WAIT I KNOW
basically
those files were renamed in case
to give all files consistent case
but those branches have the old names
but windows has a case insensitive file system so if i checked that old branch out there's now a conflict
and one of them will get lost
so dumb
- notification close button is brokey
- the dropdown goes next line when you change it
??? why does only dev-branch stay in the same line
cuz you switched to a branch with old css
lol
ye but
it doesnt reload the css does it
oh wait it does lmfao
ok fair enough
youre right yeah
thats so hilarious
i forgot devbuilds have css watcher
ye
i think the fact that switching branches makes the ui seemingly freeze for a few seconds is bad UX
maybe some sort of loading animation would be nice
does discord have any?
I'm thinking of some modal with spinner
and is a standalone install less slow
cause worse UX only in dev build is whatever ig
we will steal typing indicator
nope, it's probably slower actually
why
cuz it downloads new files
Vencord Updater 404: Not Found - https://api.github.com/repos/Vendicated/Vencord/compare/c53ce1b...latest-release
what is that supposed to be
not a real branch just use git tags
hmmm
the logic I was doing was: for git install we will have main branch and latest-release
main will be for dev, latest-release for stable updates
this works
then for standalone we will have main which will be devbuild, and tags
latest-release isn't needed
oh
as I said use tags
ig we dont need it
gotta figure how to get the latest tag with git
uhhh im pretty sure this isnt normal
git?
wdym
you only need fetch
no?
for which you can just use github api
I want to have a stable branch for git install too
don't use npm it sucks ass
why
use yarn?
just make them use main branch
cuz personally I use git for all my installs, but I want to use the stable branch for one of my clients
oh im stupid didnt see it
thanks
also just making sure, that i have to recompile every time i want to try/test my new plugin?
anyway you can just use git describe to get the latest tag @limber skiff
yes but you can just use the watch mode, again read documentation
i guess the other issue is im compiling in WSL2
but im on windows discord install
so i need to manually copy over the patched files
try git describe --abbrev=0
this is the latest
oh
u need to do a git fetch remote with tags? if you're working off your own fork
git describe --tags $(git rev-list --tags --max-count=1)
@limber skiff try this
or just
git tag --sort=committerdate
and then get the last line
this is nice
@austere talon can you help with the workflow error
im looking at the messageAPI and it looks like it only gets the message contents. Is there a way to get the rest of the message metadata? user name and their nickname? im trying to get it so that people's nicknames are appended to their actual name in brackets
- Maybe showing a spinner when loading & switching branches would be nice as that takes a few seconds:
const Spinner = findByCode("WANDERING_CUBES", "spinningCircleInner");
<Spinner type={["wanderingCubes","chasingDots","pulsingEllipsis","spinningCircle","lowMotion"][0]} />
404: Not Found - https://api.github.com/repos/Vendicated/Vencord/compare/c53ce1b...latest-releasein standalone build. Solution is to use tags for diff instead- For dev builds, `git tag --sort=commi...
messagesAPI is for sending and editing messages only
likely indent related
yaml is like python and requires consistent indentation
theres literal errors xd
it's automatic
or maybe not
I think it was just creating an action cuz it had error
no action so no error
i dont like that this is copy pasted 3 times
lol
why not make that its own job and make the other jobs depend on its success
true
needs
you can move all the duplicated setup to a separate job
then use needs
i can do that rn
dang that was quick
ye
just copy paste the part into a new job, remove it from 3 other places and copy paste needs: setup 3 times xd
is there a way to replace all usernames everywhere that is in a guild (server)? ๐ค to append nickname? im currently looking at the message api...
latest-release will be a fake branch that points to the latest tag
sorry cant help you rn
many ways to do so
im having a look and i dont see any obvious libraries to do that
- patch the component that renders usernames
- patch GuildMemberStore.getNick
- patch whatever else may be relevant
quite hard becasue i cant find any documentation :')
on any of the libraries/functions to use
because there is none
you're working with minified proprietary code
@turbid hatch im testing your cloud sync rn (sorry for taking a bit)
i was really confused by this
ah ok :')
i think everything but the enable cloud button should be hidden when it's off
or at least in some other way it should be more erm idk good word
i think the confusing part to me was that there's a Deauthorize button when i never authorised in the first place
the 3 buttons bit also looks strange, i think making the buttons all take 33% width (don't actually, use display grid) would look nicer
i think removing this permission isn't possible while still getting the id? if so, thats okay, otherwise maybe remove it
maybe only show Deauthorize if you have it enabled & authorised
no worries
unfortunately not :<
oh hidden?
i can do that yeah
i thought disabling would've been the better UX but if hiding is a better choice i can do that
well maybe not everything
but at least the deauth button shouldnt be shown imo
and it made me think the backend url is also disabled
thats fair
i wanted to avoid reflows though because reflows yucky bad UX bad bad
hmm..
ill see what i can do with that
thats true i agree
yeah i was actually going to have 4 and then realised it was redundant
but i still think the button being there is confusing
is there even any reason we need a deauthorize button?
why not just make disabling it deauthorize
for testing purposes
but once its in prod i dont think anyone will toggle it many times xd
and the oauth flow is really smooth
TREUE
alright lets see here
๐
i spent a lot of time trying to make it right without it allowing you to do stupid shit in the meantime
i think "enable cloud integration" sounds kinda weird but i get what youre trying to do (be extensible for more future cloud features)
ye
maybe add a paragraph that explains the entire thing first
i wasnt quite sure how to word it, i actually wanted your input on it
having a look at the patch guildmemberstore.getnick because the other 2 seem annoying for now. is patching getnick needed because it looks like its only being used by the vencord plugins?
"Vencord comes with a cloud integration that adds goodies like settings sync across devices. It respects your privacy and you can even selfhost it!"
something like that perhaps
and maybe also add a link to https://vencord.vendicated.dev and that page will then have more info
(i kind of want to get vencord.dev but i also don't want to waste 10 bucks on it)
search for just .getNick
Discord's code is minified so their variable will be called something like pz not GuildMemberStore
i'll buy it if you want
idm
nono
then i'd be wasting your 10 bucks which isn't any better :P
i think vencord.vendicated.dev is fine?
should respects your privacy be a link to the WIP privacy page?
sure
Bad Patches
MessagePopoverAPI (had no effect):
ID: 259135
Match: /([A-Za-z_$][\w$]*&&![A-Za-z_$][\w$]*)\?\(0,[A-Za-z_$][\w$]*\.jsxs?\)\(.{0,20}renderPopout:.{0,300}?([A-Za-z_$][\w$]*)\(.{3,20}\{key:"add-reaction".+?\}/
Bad Starts
None
Discord Errors
its fine for now ye
hi vencord reporter
if we ever want to do a proper website though we might wanna get a domain for it
ah ok thank you
let's also design a basic landing page maybe? We could maybe even make a general purpose Vencord site similar to https://replugged.dev
ye
hot
u can use Vencord's Link component
i dont remember what it does but its a small wrapper around a
**Link.tsx: **Lines 25-36
export function Link(props: React.PropsWithChildren<Props>) {
if (props.disabled) {
props.style ??= {};
props.style.pointerEvents = "none";
props["aria-disabled"] = true;
}
return (
<a role="link" target="_blank" {...props}>
{props.children}
</a>
);
}
ah
ah i'll use that
Bad Patches
MessagePopoverAPI (had no effect):
ID: 259135
Match: /([A-Za-z_$][\w$]*&&![A-Za-z_$][\w$]*)\?\(0,[A-Za-z_$][\w$]*\.jsxs?\)\(.{0,20}renderPopout:.{0,300}?([A-Za-z_$][\w$]*)\(.{3,20}\{key:"add-reaction".+?\}/
ShowHiddenChannels (found no module):
ID: -
Match: ^https://(?:canary.|ptb.)?discord.com/channels/(\\d+|
Bad Starts
None
Discord Errors
that looks better
<Forms.FormText variant="text-md/normal" className={Margins.bottom20}>
Vencord comes with a cloud integration that adds goodies like settings sync across devices. It
<Link href="https://vencord.vendicated.dev/privacy">respects your privacy</Link> and you can even
<Link href="https://github.com/Vencord/Backend">selfhost it</Link>!
</Forms.FormText>
something like that i guess xd
i love the insanity that is react typing https://github.com/Vendicated/Vencord/blob/main/src/components/Link.tsx#L21
**Link.tsx: **Line 21
interface Props extends React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement> {
me when extends React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>
actually i think there's a shortcut for that but whatever
btw maybe add instructions here xd
btw forget about having html file in the backend
I would probably make a dedicated repo for website and make it with astro
and the backend would only cover /api
and maybe we can make https://vencord.vendicated.dev/api/v1 redirect you to the vencord home page
ah got it
yeah yeah i still think versioning is a good idea
ye i see what you mean
alr let me do tihs
so the deauth button is gone and i've added that description with the links
haha no rush we first gotta make homepage
i would just make it a pretty simple site with
- / just as landing page describing vencord a bit and having installation instructions
- /plugins being a list of all plugins. Perhaps we could add images but that'd be effort
- /cloud being the cloud landing page with basic info
- /privacy privacy policy for the cloud
smth like that
i think Astro is best for that
perhaps we could also make something like https://replugged.dev/contributors
yeah definitely
we could serve badges over the API like that too if we wanted, though maybe just donators
pick your fighter
anyone but db
devilbro ain't got shi on anyone
AND DOCS
how could i forget
markdown mdx go brrrr
then we can yeet docs from github
we could have their plugins similar to here
ah and then also add previews?
image previews for plugin would be cool tbh
im on that page
love
but oh god i do not want to take 100 screenshots
make the devs do it
WHY DONT I HAVE PFP
don't know why they don't use the gh api for that page though
lol what did u do
lmao
just use repeat
grid-template-columns: repeat(3, 1fr);
i think it works like this
.vc-cloud-settings-sync-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-gap: 1em;
}
it does
cuz i had it as
1fr 1fr 1fr
and then as yuo were telling me to convert it
i had already converted it
xd
HORROR
pushed the grid
i think they mostly use the username route
https://www.youtube.com/watch?v=htGfnF1zN4g yoink this hover effect for it, it look good 
#tutorial #codepen
Watch as I show to how to recreate a sweet hover effect (from linear.app) that can span across multiple cards at the same time!
Support the channel: https://ko-fi.com/hyperplexed (accepts PayPal, card, etc).
CodePen: https://cdpn.io/MWQeYLW
Linear: https://linear.app/features
Tools used: HTML, CSS, JavaScript
Music Credi...
It serves no purpose but it look good
just steal vercel site
or that
docs only show the username one
vercel site is seggs but at the same time i think its a bit too dark
it looks hot but its not that pleasant to read
change color
problem solved
also it looks low contrast does it not
no
not really
that's just gray
the whole's thing isn't low contrast
it's because of the gray color that it looks so
they could use a lighter grey
yeah
other than that it's fine
it needs more shiggy aswell
@austere talon just thought
there's actually no real reason why a user should need to deauth
ig
and a dev can always just deauth through editing the uhh
indexeddb
ill leave the method there for now but it can just treeshake itself away
btw
have you handled the case that a user manually deauthorises
by removing it in the authorised apps tab
oh wait that's not relevant is it
the backend doesnt use the oauth app beyond the initial auth, if they remove it it has no meaning
xd
cause we only use it initially and then don't use the token anymore
yeah I just remember
wait maybe we can just death right after then?
p much
DEATH THEM
deauth in this context btw means just deleting the secret
xd
I mean deauthorise the application
up to you, personally i dont think its something we should worry about
I'm not sure it's a good idea to give discord a list of users that use vencord xd
I mean technically they could just check this servers members but yeah
I forgot, did u do any encryption now?
no right
no encryption, just zlib
ah true
but yeah if they wanted to do that they can just chekc members xd
also ill be honest powercord did this too iirc
cause i have an oauth app with them
btw do we even need to manually compress with fflate
doesn't browser have that inbuilt
gzip and deflate
it's compressed when its written to redis
just gotta set some headers
its not just for transport
cause i basically just stream the request body to redis for storage
hmmm
I just found out this is a thing https://developer.mozilla.org/en-US/docs/Web/API/Compression_Streams_API
of course fucking Firefox doesn't support it
but electron does
but yeah I think at least for getting data from the server the browser can auto uncompress it
if you set content encoding header
yeah
if you use zlib
so the browser can handle uncompress, we just need to do compress
could even have something like
if (IS_WEB) {
require("fflate").compress()
} else {
// use compression streams
}```
A little-known feature of HTTP (although, whether this is standard behavior depends on who you ask) is that you can start receiving the response while you're still sending the request. However, it's so little-known, that it isn't well supported by servers, and isn't supported by any browser.
wtf
will that shake ?
ye
oh hot okay
that's why the require inside IS_WEB
technically speaking if the library is properly treeshakable you can also top level import it but most libraries aren't or have some side effects so its best to keep it inside the if
EWWW
also switch to latest-release branch cuz there is an issue I want you to fix since you know better
this
it shouldnt be here
ig
wdym
ok so when you switch to latest-release it checkouts the v1.1.1 tag
the last commit of that tag is bump to v1.1.1
it shouldnt mark that as an update available
cuz it's already done

de53bc7 messageLogger: fix edited timestamp styling & a... - LordEliasTM
since it's now being added to both the username and timestamp, wouldn't that mean showing twice?
0b79387 feat(PlatformIndicators): Colored mobile indica... - Nuckyz
Context menu api is here now so you can use it instead!
@TymanWasTaken Since it's your plugin, could you review please?
i think the way this setting is worded is confusing, why not do something like this instead?
Fallback Logo
this code is weird, I would do something like this instead
try {
const res = await fetch(`https://ws.audioscrobbler.com/2.0/?${params}`);
if (!res.ok) throw `${res.status} ${res.statusText}`;
var json = await res.json();
if (json.error) throw `${json.error}: ${json.message}`;
} catch (err) {
logger.error("Error fetching last.fm data", err);
return null;
}
const trackData = json.recenttracks?.track[0];
...
instead of conditionally pushing, you could
const buttons: ActivityButton[] = [
{
label: "View Song",
url: trackData.url,
},
settings.store.shareUsername && {
label: "Last.fm Profile",
url: `https://www.last.fm/user/${settings.store.username}`,
}
].filter(isTruthy);
I just realised you're nesting try catches here. Why? One is enough
were u on crack when u wrote this @limber skiff
can i rewrite that entire function
i think i know how to do it better and also i wanna use a Set for the awaitAllChunks
If you keep it's functionality the same yeah
also
ur function will return false if you call it with duplicate ids
ill fix that too
true
why not you just do this?
you want chunks of 100 right
forgot this after loop
that works lol
originally I wanted to await everything to arrive
I guess I could
i prefer to use casts for things like this or explicitly named types
const x: VerboseType = blah() // you dont see actual code, only fairly useless type
const x = blah() as VerboseType // you see actual code first, type is secondary
type Foo = VerboseType;
const x: Foo = blah() // also alright
ah
obviously preference but i also think this is the most logical approach
$& = whole match, so u can remove the group
replace: "$&$self.renderMagnifier(this);",
why aren't you using the properly standardised html draggable attribute that does the exact same thing instead?
this is a lot of code in a patch, why not make this a method instead?
replace: `$1...$self.makeProps(this),onMouseEnter:`
Sorry for taking so long to look at this, it totally went under my radar :( Thanks for the patience
The inner try catch is used just to properly format the error message provided to the outer catch, so it would say something like "Failed to query Last.fm API 500 Internal Server Error" instead of returning a JSON error, but yeah, I agree with the above code. Will commit that in a bit.
...I mean, I could, but this code is more readable. Besides, it's only one conditional. Maybe if there were more conditional buttons, it would make more sense, but I don't think rich presence even allows more than two buttons?
Seems a bit too wordy, tho. It might make more sense to remove the middle option, for something like this:
When album is unknown or album art is missing
- Prefer generic placeholder
- Prefer Last.fm logo
Feedback? Could also open up potential in the future for more options; like trying to look up album art on another service (like Google Images) or Identicons (unlikely, but possible).
yeah I think the middle option is not really needed, that's fine @olive vapor
random thought but would happen if two different plugins, use a patch on the same function but replace them with different return/code
oh okay that was quick
they'd be incompatible
I don't think looking up art on google or similar services is a good idea
hmmm ok so only one plugin could be enabled at a time
you might just get unlucky and pull porn or some other fucked up shit
if there's a service with moderated artworks then sure but I don't think there's any that will have stuff lastfm doesn't?
yeah, but it would be an option for the user. plus, i don't plan on implementing it right now (or at all?), just a potential update / idea for the future.
- if the user cared, i'm pretty sure adding album art on last.fm doesn't require approval.
maybe soundcloud
that's true but it's still way safer than say Google images
just said google images as a general idea. again, don't plan to implement it, just opening up the possibility.
ready for review
like the comment says i just enjoy working with class components more and have more expereince with them.
would you like me to change it to functional component?
I removed requestGuildMembers @austere talon https://github.com/Vendicated/Vencord/pull/477
funny
ytm?
i havent seen anything more than "lewd" on ytm
most lewd I've seen is
which is pretty tame
actually I could say I've seen more lewd covers, but i cant really remember them
psycho albums are lewder
Point is, I haven't seen anything on the naked side of things in a cover
oh that's what you're looking for?
one sec
death grips no love deep web @quaint sapphire
That's a Minecraft pickaxe shaft lol
honestly just
Tf is that embed image?
its when the UK government enforced a legal order to ban a page on wikipedia because one of the images was perceived as
well
read the subtitle on the page
anyway im not keeping that list there
cause someone's gonna stumble on it by accident
but yeah there's quite a few
Oni Inc FUCK OFF
I also know some near-gore album covers, but those are horrifying
ive seen guro album covers
anime gore + nudity
The album cover I was thinking of is a suicide, blurred, and it has anime characters pointing at the body
"Dehumanizing Itatrain Worship" on spotify / last fm
oh wow that is horrifying
Suicide song by yung rare ig

when using ssr, does it cache the response?
say i want to make a ssr page that fetches github api
does every single request to that site trigger that fetch? Or does astro ssr somehow cache the rendered page
if the content is static you can instruct it to prerender
export const prerender = true; in your module script
so you can mix the prerendered content with ssred content
ye
i know
but i do want to ssr it
just not every request
lets say i want to cache it for 30 minutes or smth like that
if within 30 minutes the same endpoint is visited again it sends the already built version
i want server side cache, not per user cache
@limber skiff maybe this is best rewritten with lookbehind? instead of quantifier
let me try
i can see the use case im just trying to work out if its feasible
this could be something done with a cdn but obviously thats $$$
you could set up varnish in front to cache the specific endpoints you're talking about to reduce load on astro
or use nginx to inject cache control headers that expire after 30 minutes (however that violates your no user cache desire)
both would work
I think if I use something like vercel it can do this automatically
I don't really care about server load I mostly care about not spamming github and similar
you just have to send a cache-control

I'm not so sure if I wanna use vercel or smth like that yet tho
currently I use node adapter
either way, varnish or vercel/edge, i think we've got a solution ^^
basically 90% of routes will be pre rendered, I just want one that auto generates contributors
and maybe plugins list
yip
if you're hosting on vps, id suggest varnish, i can write the configs for that
otherwise yeah most edge networks can do the caching for you
lmao yeah
varnish looks cool
yeah its great




