#๐Ÿ‘พ-core-development

1 messages ยท Page 32 of 1

charred monolithBOT
glass cedar
#

@austere talon lov

#

Issue with no description

charred monolithBOT
cunning bobcat
#

manti

jagged cloak
#

semantic

cunning bobcat
#

semantic

#

semantically manti

#

through the seven manti, i summon thee, manti

austere talon
charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
austere talon
#

OKAY

charred monolithBOT
austere talon
#

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")

charred monolithBOT
quick ibex
#

more spam commits

austere talon
#

im done now trolley

charred monolithBOT
frail skyBOT
#
Bad Patches

None

Bad Starts

None

Discord Errors

#
Bad Patches

None

Bad Starts

None

Discord Errors

charred monolithBOT
spark cove
#

@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

hazy kindle
spark cove
#

no thats github

#

i was saying that the code there is cool and concise for how much it does with the AST

hazy kindle
spark cove
#

yea real

hazy kindle
#

yooo what you can click any symbol to get listed all the places itโ€™s referenced. Proper IDE shizzle! Very epic!!

charred monolithBOT
charred monolithBOT
charred monolithBOT
#

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:/...

hazy kindle
#

^ thatโ€™sa me

austere talon
#

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

spark cove
#

oh i just assumed

#

thats lame if not

austere talon
#

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

spark cove
#

yea fair

austere talon
#

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

tawny cipher
#

tslint is dead

#

just use eslint with ts plugin

turbid hatch
#

we're using it as reference

#

for making a new plugin

charred monolithBOT
unborn garnet
charred monolithBOT
austere talon
#

I HATE CRLF

charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
#

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.

woeful sable
#

๐Ÿ˜ญ

charred monolithBOT
#

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.
grafik

What is the expected behaviour?

Don't show the unread message indicator if th...

charred monolithBOT
#

Hello, I would like to suggest a couple plugins from BD.

  1. 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
  • ...
frail skyBOT
#
Bad Patches

None

Bad Starts

None

Discord Errors

#
Bad Patches

None

Bad Starts

None

Discord Errors

charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
austere talon
#

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

turbid hatch
#

how'd it interact with cloud settings?

#

its definitely a nice idea nonetheless

#

@austere talon

austere talon
#

Well that should also be included

turbid hatch
#

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

charred monolithBOT
charred monolithBOT
lime stone
#

omg

charred monolithBOT
charred monolithBOT
charred monolithBOT
#

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,...

charred monolithBOT
#

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 ...

#
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

charred monolithBOT
#

๐Ÿ‘‹ 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.

#

๐Ÿ‘‹ 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.

Yep, I will use that, I'm just waiting for anothe...

umbral hedge
#

โ“

umbral hedge
#

hmmm

limber skiff
umbral hedge
#

I feel like game activity toggle should be combined with ignoreactivities a_raised_eyebrow

#

since they kinda conflict

limber skiff
#

not really

umbral hedge
#

?

#

this seems like game activity toggle with some extra steps (having to go in settings)

limber skiff
#

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

umbral hedge
#

ah

#

sad

charred monolithBOT
frail skyBOT
#
Bad Patches

None

Bad Starts

None

Discord Errors

#
Bad Patches

None

Bad Starts

None

Discord Errors

charred monolithBOT
charred monolithBOT
spark cove
#

maybe i should pr this along with good typings for DataStore

charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
frail skyBOT
#
Bad Patches

None

Bad Starts

None

Discord Errors

#
Bad Patches

None

Bad Starts

None

Discord Errors

charred monolithBOT
austere talon
#

that pr is interesting

#

webpack search inside functions, manually sending requests etc T_T

#

i will tell u how to fix tmrw

spark cove
#

also can i hop on ow

austere talon
#

no

#

I hopped off

spark cove
charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
frail skyBOT
#
Bad Patches

None

Bad Starts

None

Discord Errors

#
Bad Patches

None

Bad Starts

None

Discord Errors

charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
turbid hatch
#

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

jagged cloak
#

I always forget to build

limber skiff
#

le typo

charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
frail skyBOT
#
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

turbid hatch
#

oh i guess it was changed on stable finally

charred monolithBOT
charred monolithBOT
#

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...

limber skiff
charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
frail skyBOT
#
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

charred monolithBOT
#

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.

austere talon
#

๐Ÿค”

#

volume above 100% is desktop only feature

charred monolithBOT
woeful sable
charred monolithBOT
limber skiff
#

so we can do this

zinc dock
limber skiff
#

odd

#

someone reported in the past it didnt work in the browser

zinc dock
charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
austere talon
#

@limber skiff

#

for some reason this took like 5 seconds to load commits and branches

limber skiff
#

the branch doesnt seem loaded

#

the menu is locked

austere talon
limber skiff
#

oh my

austere talon
#

literally 10 seconds

limber skiff
#

that's strange

#

let me think

austere talon
#

git fetch --all

#

takes ages

charred monolithBOT
austere talon
#

its because i have many remotes added

#

is git fetch necessary?

#

maybe without the --all?

#

without --all it only takes 1 second

#

@limber skiff

limber skiff
#

yeah

#

I think its the fetch

#

I use it to fetch all the possible branches

austere talon
#

yes it takes long

#

just remove -all

#

so it only uses origin

#

unless theres a good reason to use all?

limber skiff
#

well

#

it takes long for you cuz you have too many prs linked

austere talon
#

maybe instead of the disabled select we can instead have some sort of loading indicator

#

or change "dev-branch" to "loading branches..."

limber skiff
#

it's very fast for me

austere talon
#

yes because you only have one remote

limber skiff
#

yeah

austere talon
#

as i said why not just

- git fetch --all
+ git fetch
limber skiff
#

I guess we can remove it

#

can you do it for me?

austere talon
#

--all
Fetch all remotes.

limber skiff
#

faster cuz I'm on mobile

austere talon
#

i dont see a need to fetch anything but origin?

limber skiff
#

ya ya it's fine

austere talon
#

ok done

#

ye now its relatively fast

#

git ls-remote is slow too tho

#

so getting commit info also kinda slow mm

limber skiff
#

that one should be kept tho

austere talon
#

ye

limber skiff
#

also can you try to find what's wrong with the publish workflow

#

the heck is that font

austere talon
limber skiff
#

lmao what

austere talon
#

why not display the error message here?

#

also set colour to red

limber skiff
#

okay that's doable

austere talon
#

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

limber skiff
#

so dumb

austere talon
#
  1. notification close button is brokey
  2. the dropdown goes next line when you change it
#

??? why does only dev-branch stay in the same line

limber skiff
#

lol

austere talon
#

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

limber skiff
#

ye

austere talon
#

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

limber skiff
#

we will steal typing indicator

limber skiff
austere talon
#

why

limber skiff
#

cuz it downloads new files

austere talon
limber skiff
#

yes we dont have that branch

#

gotta create it

austere talon
#

what is that supposed to be

limber skiff
#

we will push stable updates to it

#

and make tags

austere talon
#

not a real branch just use git tags

limber skiff
#

hmmm

#

the logic I was doing was: for git install we will have main branch and latest-release

limber skiff
#

main will be for dev, latest-release for stable updates

limber skiff
#

then for standalone we will have main which will be devbuild, and tags

austere talon
limber skiff
#

oh

austere talon
#

as I said use tags

limber skiff
#

and latest-release too for standlone

#

which will fetch the latest tag

charred monolithBOT
limber skiff
#

ig we dont need it

#

gotta figure how to get the latest tag with git

gusty axle
#

uhhh im pretty sure this isnt normal

austere talon
#

wdym

#

you only need fetch

limber skiff
#

no?

austere talon
#

for which you can just use github api

limber skiff
#

I want to have a stable branch for git install too

austere talon
gusty axle
#

use yarn?

austere talon
#

just make them use main branch

austere talon
#

we use pnpm

limber skiff
#

cuz personally I use git for all my installs, but I want to use the stable branch for one of my clients

gusty axle
#

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?

austere talon
#

anyway you can just use git describe to get the latest tag @limber skiff

austere talon
limber skiff
#

it's not updated though, hmmm

#

that should be 1.1.1

gusty axle
#

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

austere talon
#

try git describe --abbrev=0

limber skiff
#

yeah but its not updated

charred monolithBOT
limber skiff
#

this is the latest

austere talon
#

I think because that finds the latest tag that has your commit

#

or smth

limber skiff
#

oh

gusty axle
#

u need to do a git fetch remote with tags? if you're working off your own fork

austere talon
#
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

limber skiff
#

@austere talon can you help with the workflow error

gusty axle
#

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

charred monolithBOT
#
  1. 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]} />
  1. 404: Not Found - https://api.github.com/repos/Vendicated/Vencord/compare/c53ce1b...latest-release in standalone build. Solution is to use tags for diff instead
  2. For dev builds, `git tag --sort=commi...
austere talon
#

just commented everything to more easily track it

#

now whats with workflow

limber skiff
limber skiff
austere talon
#

yaml is like python and requires consistent indentation

#

theres literal errors xd

limber skiff
#

lmao what

#

no errors for me

#

insane

austere talon
#

i fixed and pushed

#

try again?

limber skiff
#

it's automatic

#

or maybe not

#

I think it was just creating an action cuz it had error

#

no action so no error

austere talon
#

i dont like that this is copy pasted 3 times

limber skiff
#

lol

austere talon
#

why not make that its own job and make the other jobs depend on its success

limber skiff
#

true

austere talon
#

needs

#

you can move all the duplicated setup to a separate job

#

then use needs

#

i can do that rn

limber skiff
#

yeah please

#

I'm doing the branches thing

austere talon
#

tbh i didnt know needs was a thing until now

limber skiff
#

dang that was quick

austere talon
#

i mean

#

it was super easy

limber skiff
#

ye

austere talon
#

just copy paste the part into a new job, remove it from 3 other places and copy paste needs: setup 3 times xd

gusty axle
limber skiff
#

latest-release will be a fake branch that points to the latest tag

gusty axle
austere talon
#
  • patch the component that renders usernames
  • patch GuildMemberStore.getNick
  • patch whatever else may be relevant
gusty axle
#

quite hard becasue i cant find any documentation :')

#

on any of the libraries/functions to use

austere talon
#

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

gusty axle
austere talon
#

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

austere talon
turbid hatch
#

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

austere talon
#

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

turbid hatch
#

thats fair

#

i wanted to avoid reflows though because reflows yucky bad UX bad bad

#

hmm..

#

ill see what i can do with that

austere talon
#

thats true i agree

turbid hatch
austere talon
#

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

turbid hatch
#

cause then you have to re-oauth every time

#

which i thought wasnt great

austere talon
#

mm

#

i think its fine

#

i doubt someone will enable and disable it a bunch

turbid hatch
#

me

#

fair enough

#

we can scrap it then

austere talon
#

but once its in prod i dont think anyone will toggle it many times xd

#

and the oauth flow is really smooth

turbid hatch
austere talon
#

TREUE

turbid hatch
#

alright lets see here

turbid hatch
#

i spent a lot of time trying to make it right without it allowing you to do stupid shit in the meantime

austere talon
#

i think "enable cloud integration" sounds kinda weird but i get what youre trying to do (be extensible for more future cloud features)

turbid hatch
#

ye

austere talon
#

maybe add a paragraph that explains the entire thing first

turbid hatch
#

i wasnt quite sure how to word it, i actually wanted your input on it

gusty axle
austere talon
#

"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

#

(i kind of want to get vencord.dev but i also don't want to waste 10 bucks on it)

austere talon
#

Discord's code is minified so their variable will be called something like pz not GuildMemberStore

austere talon
#

nono

#

then i'd be wasting your 10 bucks which isn't any better :P

#

i think vencord.vendicated.dev is fine?

turbid hatch
austere talon
#

sure

frail skyBOT
#
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

turbid hatch
austere talon
#

hi vencord reporter

turbid hatch
#

if we ever want to do a proper website though we might wanna get a domain for it

austere talon
#

let's also design a basic landing page maybe? We could maybe even make a general purpose Vencord site similar to https://replugged.dev

turbid hatch
#

how do i do links that open externally actually

#

just standard <a>?

austere talon
#

ye

turbid hatch
#

hot

austere talon
#

u can use Vencord's Link component

#

i dont remember what it does but its a small wrapper around a

grave mangoBOT
austere talon
#

ah

turbid hatch
#

ah i'll use that

frail skyBOT
#
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

turbid hatch
#

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

austere talon
grave mangoBOT
austere talon
#

me when extends React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>

turbid hatch
#

thank you react

#

very cool

austere talon
#

actually i think there's a shortcut for that but whatever

#

btw maybe add instructions here xd

turbid hatch
#

yeah i will closer to it being wrapped up :P

#

saving docs for last

austere talon
#

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

turbid hatch
#

oki doki

#

still versioning?

austere talon
#

and maybe we can make https://vencord.vendicated.dev/api/v1 redirect you to the vencord home page

turbid hatch
#

ah got it

austere talon
turbid hatch
#

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

austere talon
#

haha no rush we first gotta make homepage

turbid hatch
#

xd yip

#

right lets see about doing the grid stuff

austere talon
#

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

austere talon
turbid hatch
#

yeah definitely

#

we could serve badges over the API like that too if we wanted, though maybe just donators

austere talon
#

pick your fighter

turbid hatch
#

anyone but db

austere talon
#

@fiery jungle who will win

#

devilbro vs you 1v1

polar abyss
#

devilbro ain't got shi on anyone

austere talon
#

how could i forget

#

markdown mdx go brrrr

#

then we can yeet docs from github

turbid hatch
#

\o/

#

hehe

#

this is gonna be fun

charred monolithBOT
austere talon
turbid hatch
#

ah and then also add previews?

austere talon
#

image previews for plugin would be cool tbh

austere talon
#

but oh god i do not want to take 100 screenshots

turbid hatch
#

make the devs do it

austere talon
#

WHY DONT I HAVE PFP

turbid hatch
swift fjord
#

don't know why they don't use the gh api for that page though

turbid hatch
#

that

#

wasnt quite the effect i wanted

austere talon
#

lol what did u do

turbid hatch
#

there we go

#

missed a 1fr

austere talon
#

lmao

#

just use repeat

#
grid-template-columns: repeat(3, 1fr);
#

i think it works like this

turbid hatch
#
.vc-cloud-settings-sync-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    grid-gap: 1em;
}
austere talon
#

oh

turbid hatch
#

it does

austere talon
#

wait

#

how did u

#

miss one 1fr

#

you typed 2???

turbid hatch
#

cuz i had it as

#

1fr 1fr 1fr

#

and then as yuo were telling me to convert it

#

i had already converted it

#

xd

austere talon
#

๐Ÿฅน

#

i see

fiery jungle
turbid hatch
#

pushed the grid

austere talon
#

how do u get a user by id

#

bruh

#

/users/:username
/user/:id

#

thanks github

turbid hatch
#

great api

swift fjord
#

i think they mostly use the username route

polar abyss
# austere talon we could have their plugins similar to here

https://www.youtube.com/watch?v=htGfnF1zN4g yoink this hover effect for it, it look good LuiCool

#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...

โ–ถ Play video
#

It serves no purpose but it look good

austere talon
#

just steal vercel site

polar abyss
swift fjord
austere talon
#

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

polar abyss
#

problem solved

austere talon
#

also it looks low contrast does it not

swift fjord
#

no

polar abyss
swift fjord
#

maybe the header

#

but thats about it

polar abyss
#

that's just gray

#

the whole's thing isn't low contrast

#

it's because of the gray color that it looks so

swift fjord
#

they could use a lighter grey

polar abyss
#

yeah

swift fjord
#

other than that it's fine

polar abyss
#

it needs more shiggy aswell

turbid hatch
#

@austere talon just thought

#

there's actually no real reason why a user should need to deauth

austere talon
#

ig

turbid hatch
#

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

austere talon
#

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

turbid hatch
#

the backend doesnt use the oauth app beyond the initial auth, if they remove it it has no meaning

#

xd

austere talon
#

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?

turbid hatch
#

p much

austere talon
#

DEATH THEM

turbid hatch
#

WAIT

#

YEAH

#

IT TOOK ME A SECOND

austere talon
#

Auto correct making me look bad

#

๐Ÿ˜ญ

turbid hatch
#

xd

austere talon
#

I mean deauthorise the application

turbid hatch
#

up to you, personally i dont think its something we should worry about

austere talon
#

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

turbid hatch
#

no encryption, just zlib

turbid hatch
#

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

austere talon
#

btw do we even need to manually compress with fflate

#

doesn't browser have that inbuilt

#

gzip and deflate

turbid hatch
#

it's compressed when its written to redis

austere talon
#

just gotta set some headers

turbid hatch
#

its not just for transport

#

cause i basically just stream the request body to redis for storage

austere talon
#

yeah but

#

I don't think we need to do it manually

turbid hatch
#

hmmm

austere talon
#

of course fucking Firefox doesn't support it

#

but electron does

turbid hatch
#

hm

#

kills compat on firefox though

#

:<

austere talon
#

but yeah I think at least for getting data from the server the browser can auto uncompress it

#

if you set content encoding header

turbid hatch
#

content-encoding: deflate

#

i assume

#

xd

austere talon
#

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

turbid hatch
#

that

#

what

#

okay

austere talon
#

ye

turbid hatch
#

oh hot okay

austere talon
#

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

turbid hatch
#

how do i convert from a string to a stream tho

#

oh i c

#

no typings

#

pain

limber skiff
#

@austere talon it's done

#

can you try it now

austere talon
limber skiff
#

also switch to latest-release branch cuz there is an issue I want you to fix since you know better

#

it shouldnt be here

turbid hatch
#

welp

#

guess we'll stick to fflate? :P

austere talon
#

ig

limber skiff
#

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

austere talon
#

ah

#

just filter it out :P

limber skiff
turbid hatch
charred monolithBOT
limber skiff
#

working as intended

#

fixed it

limber skiff
#

god 72 commits

charred monolithBOT
#

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];
...
austere talon
#

were u on crack when u wrote this @limber skiff

limber skiff
#

no lol

#

couldnt find a better way

austere talon
#

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

limber skiff
#

If you keep it's functionality the same yeah

austere talon
#

also

#

ur function will return false if you call it with duplicate ids

#

ill fix that too

limber skiff
#

shouldnt call with duplicate

austere talon
#

shouldnt divide by 0 either

#

it happens

limber skiff
#

true

austere talon
#

okay restart fixed it

austere talon
#

you want chunks of 100 right

#

forgot this after loop

limber skiff
#

that works lol

austere talon
#

wait

#

im confused rn

#

why do u do chunks if u just request all at once anyway

limber skiff
#

cuz discord splits it

#

internally

#

and the way I was checking if it was received

austere talon
#

so why do u make ur wrapper function

#

why not just use discords

limber skiff
#

originally I wanted to await everything to arrive

austere talon
#

cant u just useStateFromStores

#

to get updates in ur react component

limber skiff
#

oh yeah

#

and It also doesnt request already cached members

limber skiff
austere talon
#

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
limber skiff
#

ah

austere talon
charred monolithBOT
austere talon
#

yeah I think the middle option is not really needed, that's fine @olive vapor

gusty axle
#

random thought but would happen if two different plugins, use a patch on the same function but replace them with different return/code

olive vapor
#

oh okay that was quick

austere talon
#

I don't think looking up art on google or similar services is a good idea

gusty axle
#

hmmm ok so only one plugin could be enabled at a time

austere talon
#

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?

olive vapor
#
  • if the user cared, i'm pretty sure adding album art on last.fm doesn't require approval.
austere talon
charred monolithBOT
olive vapor
#

just said google images as a general idea. again, don't plan to implement it, just opening up the possibility.

charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
limber skiff
charred monolithBOT
limber skiff
tidal cloud
quaint sapphire
#

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

quaint sapphire
#

Point is, I haven't seen anything on the naked side of things in a cover

turbid hatch
#

oh that's what you're looking for?

#

one sec

#

death grips no love deep web @quaint sapphire

quaint sapphire
#

I'm not looking for that

#

Lol

turbid hatch
#

its the drummers penis

#

also arca xen, which is computer generated booba

quaint sapphire
#

That's a Minecraft pickaxe shaft lol

turbid hatch
#

honestly just

quaint sapphire
#

Tf is that embed image?

turbid hatch
#

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

charred monolithBOT
charred monolithBOT
charred monolithBOT
quick ibex
#

I also know some near-gore album covers, but those are horrifying

charred monolithBOT
austere talon
#

anime gore + nudity

quick ibex
#

The album cover I was thinking of is a suicide, blurred, and it has anime characters pointing at the body

charred monolithBOT
austere talon
quick ibex
#

oh wow that is horrifying

austere talon
austere talon
#

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

austere talon
#

anything else / anything i should change?

charred monolithBOT
austere talon
#

okay i think basic structure is there now

#

just need content and to make it pretty

turbid hatch
#

export const prerender = true; in your module script

#

so you can mix the prerendered content with ssred content

charred monolithBOT
austere talon
#

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

charred monolithBOT
charred monolithBOT
austere talon
# charred monolith

@limber skiff maybe this is best rewritten with lookbehind? instead of quantifier

limber skiff
#

let me try

charred monolithBOT
turbid hatch
#

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

austere talon
turbid hatch
#

ah good point

#

vercel has edge caching you can configure

austere talon
#

I don't really care about server load I mostly care about not spamming github and similar

turbid hatch
#

you just have to send a cache-control

austere talon
austere talon
#

currently I use node adapter

turbid hatch
#

either way, varnish or vercel/edge, i think we've got a solution ^^

austere talon
#

basically 90% of routes will be pre rendered, I just want one that auto generates contributors

#

and maybe plugins list

turbid hatch
#

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

austere talon
turbid hatch
#

lmao yeah

austere talon
#

varnish looks cool

turbid hatch
#

yeah its great