#๐Ÿ‘พ-core-development

1 messages ยท Page 269 of 1

dusk blaze
#

this will be merged in the coming seconds

austere talon
dusk blaze
#

itโ€™s ok tho iโ€™m just using some random Music Presence app off github

#

ykyk

elder plinth
#

love how when previewing sometimes the new xyz is typing shadow gets out of sync with the rest of the theme

hollow musk
brazen bone
#

Afaict it only appears when you scroll manually, not when you click a link or notification

charred monolithBOT
charred monolithBOT
charred monolithBOT
dusk blaze
#

what is this idiot on

scenic brook
#

GitHub

dusk blaze
#

bump

#

gonna bump u down a cliff soon

charred monolithBOT
charred monolithBOT
#

notifyPlus

Description: Adds notifyPlus plugin for priority channel alerts with customizable notifications.

Features:

* Priority alerts for specific channels (sound, flash, popup, or all)

* Multiple sound options: beep, double, urgent, or custom URL

* Configurable flash effects with custom colors and duration

* Popup notifications showing channel and user info

* Volume control and debug logging

* Statisti...
charred monolithBOT
dusk blaze
#

random thought but why arenโ€™t we using the iTunes API for getting the Apple music album art for rpc

#

seems more reliable ykyk

#

and you donโ€™t need to auth or anything

charred monolithBOT
dusk blaze
#

you will die

gritty iris
#

I just had a question about the cloud so if I change root redirect to lets say vencord.dev does that breach the license even tho nothing about the code was modified? yes im losing it

charred monolithBOT
charred monolithBOT
gritty iris
gritty iris
#

Shame on you for not manually typing it

dusk blaze
#

true...

scenic brook
#

Why are you likely spammer

elder plinth
#

bro got compromised

gritty iris
scenic brook
#

nin0

elder plinth
#

oh bro is no longer likely spammer

gritty iris
#

hes not?

scenic brook
#

It's gone now

elder plinth
#

he answered me in my ticket that he spam reacted to a message in general or smthn

fossil inlet
#

@vagrant topaz have you tried reconnecting with this button after it says unable to ensure client is up to date

dusk blaze
#

satan

olive aurora
austere talon
#

which links to source code and privacy policy

olive aurora
#

oh im kinda blind

#

why change this anyway

#

assuming they actually mean a website different to vencord.dev

#

in that case no you can't unless that website links to the source code

charred monolithBOT
charred monolithBOT
fossil inlet
#

Alright, can you send the git hash of your user plugin, version of the companion from the vscode marketplace

fossil inlet
#

you're just echoing the servers version back to it ๐Ÿ˜ญ

#

@vagrant topaz run /vencord-plugins rq

#

how?? it's a required plugin in vencord

#

open console and read the error blobcatcozy

#

yes

#

read the error

#

yeah

#

i'll make it a notice

#

oh

#

forgot to change that

#

i need to add heuristics to detect the vencord workspace

#

open the vencord workspace first and you should be fine

#

bad phrasing

#

each workspace has it's own extension host

#

you probably didn't trigger any activation events

grave mangoBOT
fossil inlet
#

yop

bleak blaze
austere talon
#

press ctrl r

fossil inlet
#

it's an electron bug

bleak blaze
bleak blaze
limpid tusk
#

I think ctrl r locked them out of their account

#

they never confirmed whether it worked

#

gg

charred monolithBOT
charred monolithBOT
austere talon
dusk blaze
#

make Satan fix

#

@fossil inlet

limber skiff
austere talon
#

guhh sadan will never resolve feedback

fossil inlet
#

also soonโ„ข

austere talon
#

@limber skiff why not just do this for UserVoiceShow?

#

instead of manually rendering the guild and channel name

#

just gotta fix overflow

#

also this is broken:

const voiceStates = useStateFromStores([VoiceStateStore], () => VoiceStateStore.getVoiceStatesForChannel(channel.id));
#

it's always the same reference so it's not stateful

#

well discord also does it lol

#

fixed the alignment

#

should i push this @limber skiff

#

this is old

charred monolithBOT
austere talon
#

left an unused webpack find in award

charred monolithBOT
limber skiff
#

how does the new handle group chats and dms?

#

does it work well

grizzled halo
#

had 2 people mention this, both are on latest version, im unable to reproduce so they are probably just going insane

surreal fiber
#

my pindms categories have also gone, idk if it happened now or some time before

charred monolithBOT
#

Content

Add a "Themes enabled" boolean to the vencord toolbox so we can easily disable themes.

Use case:

  • I want to screenshot a message to send it to someone but my themes are enabled. I don't want them to know I use vencord since there are people that actually report you for this. The quick switcher in the toolbox would make it so much easier.

Request Agreement

  • [x] I have read the requirements for opening an issue above
gritty iris
#

my categories only disappeared once and it was like 4-5 months back

prime dew
charred monolithBOT
charred monolithBOT
charred monolithBOT
bleak blaze
#

for react-devtools is there any plans to address issue with it not loading without pressing ctrl+r?

#

i have to do that almost every time and i'm wondering whether you guys have ever looked into resolving that

austere talon
#

no because it's an electron issue

elder plinth
#

Vectron when

bleak blaze
#

thanks for clarifying that

charred monolithBOT
odd heath
gritty iris
#

compactInfo was the classname for that one but the one in the pr matches info which fixes it Joe_Shrug

dusk blaze
#

@austere talon private issue tracker when

dusk blaze
#

when will we push extension updates itโ€™s so falling behind

charred monolithBOT
charred monolithBOT
limber skiff
#

one week without any broken patches

elder plinth
#

dont worry on monday every single one will break

dusk blaze
#

isn't the extension outdated

#

vext

nimble pendantBOT
dusk blaze
#

nookies has lost it

odd heath
elder plinth
#

what if they just shipped it unminified. wouldnt that be neat

limber skiff
#

merge some approved prs, fix the fake nitro issue and bump extension

dusk blaze
#

okay good

limber skiff
#

well, kinda

#

they did even worse

#

accidentally leaked the source maps which leak the typescript files

#

basically the source code

odd heath
charred monolithBOT
#

Hello!

I was working on an automated script to get everything set up (including Vencord), and realized that there's no checksum files for Vencord releases.

Most repositories provide checksums for all release binaries, and so I was planning on making a PR to add this soon to the release github action.

(Was thinking of having one SHA256SUMS.txt file, in lieu of multiple files like VencordInstaller.exe.sha256, to make it easier for users downloading the installer to not get confused and...

dusk blaze
#

true

austere talon
#

tbh kinda pointless to use checksums, https already ensures this unless the download gets interrupted in which case any sane browser wouldn't even output a file

charred monolithBOT
austere talon
#

i forgot about this lmao

#

people really were like "omg it opens a terminal is this malware!!"

gritty iris
#

so I have learned clearurls doesnt work on edit is that intended? (atleast it didnt for me)

dusk blaze
#

no

#

you are right

odd heath
#

that would mean the entire onBeforeMessageEdit is broken no Hmm

#

cba to look into this

#

@fossil inlet salad fix

dusk blaze
#

satan too busy making his website

gritty iris
#

reediting works Joe_Shrug

hollow musk
kindred tree
#

I thought it was a feature lol

#

like whenever I get a textreplace I donโ€™t want I just edit the message

hollow musk
#

it would be nice if it can be toggled

odd heath
kindred tree
#

usually I don't have issues tho

odd heath
#

๐Ÿ˜ญ

#

Just add another character

#

Like a # before the link anything that's one button before pasting it in so it only gets replaced if you want (or vice versa, make it so if there's no # it gets replaced, otherwise it removes she # and keeps the original shrug)

#

I'd be too annoyed to always change the link manually again

kindred tree
#

oh could do yeah

austere talon
charred monolithBOT
charred monolithBOT
fast tinsel
#

wanted to ask for thoughts before bothering to open the PR, is this acceptable?

#

the idea is that third party clients that aren't necessarily supported can declare themselves incase they do something that breaks vencord somehow

#

I also saw the legcord check for the arrpc plugin and was thinking adding this there too, or removing the legcord specific check and i send a PR to legcord to implement this new 'standard'

#

something like adding a features array

gritty iris
#

๐Ÿ’€

charred monolithBOT
austere talon
#

jujst fix ur clock bro

elder plinth
#

bundle nettime into vencord easy solution

prime dew
charred monolithBOT
dusk blaze
#

merge

austere talon
dusk blaze
#

put this in an util or something

charred monolithBOT
dusk blaze
austere talon
#

why did you make it a set anyway? @gritty iris

elder plinth
#

are sets bad or smthn

austere talon
#

no theyre good

charred monolithBOT
austere talon
#

vtest dev

nimble pendantBOT
nimble pendantBOT
nimble pendantBOT
charred monolithBOT
austere talon
#

i swear discord is gonna break everything as soon as i tag

charred monolithBOT
#

56d25b0 UserVoiceShow: Improve tooltip & add icons for ... - gabrielmar
3005906 CallTimer: fix horizontal text cutoff - Vendicated
8c2dc84 Settings: fix debug info layout (#3673) - thororen1234
80872f4 MessageLatency: add option to ignore own messag... - qwertyquarty
edd68fe AppleMusicRichPresence: add status display type... - nin0-dev

#
[Vendicated/Vencord] New tag created: v1.13.0
dusk blaze
#

swiffers will eat it up

charred monolithBOT
odd heath
#

Also merge uuuh noblockedmessages pr blobcatcozy

charred monolithBOT
limber skiff
#

it matches the behavior of how the data was retrieved from the store too

#

since the method we originally used returned a set

gritty iris
left sequoia
#

jesus christ, what is discord doing fucking spamming 200kb/s IDB writes in the browser

#

like NON-STOP

#

full idle, and its constantly writing to IDB

fossil inlet
#

love the random property access to React.Component in discord's code

fossil inlet
austere talon
#

normal

gritty iris
dusk blaze
#

satan

charred monolithBOT
odd heath
#

???

charred monolithBOT
charred monolithBOT
austere talon
#

guh typescript moment

austere talon
charred monolithBOT
#

Don't really think this is fixable. The reason it shows in the UI and opens in modal is because it's locally cached. But then when the WebContextMenus plugin attempts to fetch it, it can't because it 404s

the only hack to fix it would be to get the <img> tag it's in from the DOM and draw it to a canvas. Then you can get the data from that

gritty iris
#

I see cleanup on issues happened blobcatcozy

hollow musk
fossil inlet
#

randomly noticed this but tooltip types are incorrect

#

discord will pass an empty object as props if text is nullish

charred monolithBOT
charred monolithBOT
austere talon
#

BetterSettings broke but its error safety works and doesnt crash

fossil inlet
#

oh

#

@quick isle your theme is broken

quick isle
charred monolithBOT
fossil inlet
dusk blaze
#

satan is a vibe coder

#

๐Ÿ‘บ ๐Ÿ‘บ ๐Ÿ‘บ

fossil inlet
# charred monolith

@austere talon how would you detect no connection then? error only fires when the socket closes due to an error

limber skiff
#

that function needs a rewrite

#

this is too messy

#

how was it even working

#

if we never adjusted that

#

what the heck

#

ill do it tomorrow as soon as possible because I'm very tired today

fossil inlet
austere talon
#

FormSwitch find is broken

#

but we dont seem to use it anywhere

limber skiff
#

๐Ÿ˜›

#

how is it broken tho

#

duplicate?

austere talon
#

wait it's not broken

#

we removed it ages ago lmao

#

makes sense

#

actually nvm

#

okay dont mind me i derped

#

๐Ÿ˜›

dusk blaze
#

๐Ÿ˜›๐Ÿ˜›๐Ÿ˜›๐Ÿ˜›๐Ÿ˜›

charred monolithBOT
austere talon
#

oh i commented closing but forgot to actually close

charred monolithBOT
fossil inlet
hybrid jetty
#

incredible description

dusk blaze
austere talon
#

seems like fetching cdn links is cors violation now

#

quirky

austere talon
austere talon
# austere talon

@median rapids do u know by chance if this is an intentional change

#

it's not hard to fix but I'm not gonna bother if this is just a discord screwup

fossil inlet
limber skiff
#

how do they load emojis then

austere talon
#

img tag != fetch

#

img tags bypass cors

limber skiff
#

oh

charred monolithBOT
desert cosmos
#

magic numbers blobcatcozy

austere talon
#

NoReplyMention is broken guh

#

NVM

#

IM STUPID

dusk blaze
#

yeah we know

charred monolithBOT
austere talon
# austere talon NoReplyMention is broken guh

recently I merged role whitelist/blacklist feature

to test it i added janny role to my list and forgot about it

today I started wondering why it always didn't ping mods when I replied to them

dusk blaze
#

veeeediot

charred monolithBOT
#

This plugin automatically switches discord color themes based on the system's theme preference (light/dark).

the problem was when I change the system theme, discord doesnโ€™t update my color theme, so I always have to open settings and change it manually

With this plugin, you can pick your favorite light and dark themes once, and it will switch them automatically with your system. If you just want it to only flip between light/dark without changing the colors, thereโ€™s an option for that i...

charred monolithBOT
elder plinth
#

does the stock feature not just pick between the "Light" and "Dark" themes?

#

the plugin seems to let you pick an alternative to light and dark for each.

dusk blaze
#

true

#

still shitcode tho

elder plinth
#

looking at it I cant really understand how it works lol

#

huh it only applies on startup? what if your system theme changes with the app open

#

I assumed thats what it was for originally

#

like those apps that change your theme at a time of day

charred monolithBOT
charred monolithBOT
dusk blaze
#

you didnโ€™t read the requirements for opening an issue above @fossil inlet

elder plinth
#

bro uploaded the worst encoded gif in the world as a preview

#

and had the audacity to call it a video

gritty iris
#

is that what 144p looks like on a gif?

#

thought I was on youtube for a moment that was so badly encoded

fossil inlet
charred monolithBOT
odd heath
#

me when i do useless things cuz im bored blobcatcozy

charred monolithBOT
elder plinth
#

cant even ping them cause they aint here

charred monolithBOT
#

Rationale

I've been really enjoying Vencord recently. I use it daily at work for pair programming sessions. Increased FPS rate provided by FakeNitro plugin helps a lot for my teammates to keep track of what's going on the screen.

However, when you work in a group, it might be not the best option to share the entire screen. I have an ultrawide monitor and some of my colleagues feel more comfortable working on laptops with smaller screens which makes it quite hard for them to see a clea...

dusk blaze
#

translation v4 in a week

turbid hatch
#

yop

charred monolithBOT
turbid hatch
#

@austere talon :3

austere talon
#

๐Ÿ˜ญ

#

soon there will be translationv7

turbid hatch
#

v3 is just v2 but without all the merge conflicts

#

imo if we were to actually commit to it i think we can do like

#

a gradual translationing

#

so this would get merged initially, and then over time we just update dev with translations

#

primarily for plugins

dusk blaze
#

translationing

charred monolithBOT
turbid hatch
#

might not even use crowdin atp

#

they dont support zero plurality

#

so now im looking at weblate and pontoon

#

tbh pontoon seems quite nice

#

it was what i was originally going to do as well when we were trying out project fluent but it supports just regular json too and it seems to support plurals

#

and its meant to focus on a singular project or just a few projects, so it makes the most sense for us

dusk blaze
#

make ventranslation @turbid hatch

#

venlate

charred monolithBOT
#
[Vencord/Installer] New branch created: slint
charred monolithBOT
swift fjord
#

:/

dusk blaze
#

Opinionated Queer License @austere talon

limber skiff
#

@fossil inlet can u double check it works for me ^

charred monolithBOT
austere talon
charred monolithBOT
austere talon
#

slint is sooooooooo good

dusk blaze
#

it looks like js

#

and icl js pmo

limber skiff
#

is that a new issue or has it always been like that

charred monolithBOT
austere talon
#

well according to support users

limber skiff
#

It's not trivial to fix

#

the entire way it restore is by using the user settings proto cache

#

which is reset when you switch accounts

austere talon
#

yeah makes sense

#

maybe just store it locally

#

per user

dusk blaze
#

yop

austere talon
#

just put it in plugin settings or smth

#

but make sure it's per account

limber skiff
#

pretty easy to abuse custom settings for it

austere talon
#

just do like this

const fakeNitroSettings = definePluginSettings({}).withPrivateSettings<{
    syncedPerAccountState?: Record<string, {
        nitroTheme?: number;
    }>;
}>();

function getSyncedPerAccountState() {
    const s = fakeNitroSettings.store;
    s.syncedPerAccountState ??= {};
    syncedPerAccountState[AuthenticationStore.getId()] ??= {}; // idk if the value this returns is proxy or not. if it's proxy, you can return it directly
    return s.syncedPerAccountState[AuthenticationStore.getId()];;
}

// get
getSyncedPerAccountState().nitroTheme;
// set
getSyncedPerAccountState().nitroTheme = 13;
#

yeah it's not proxy like i thought

fossil inlet
#

evil

carmine wave
#

eg dark -> onyx doesn't send a proto update

#

any custom theme -> any free theme doesnt send a proto update

dusk blaze
#

Stupid Sadan

#

i have this guild muted and i still answer to pings

carmine wave
#

so when i say ping, i mean the actual sound

dusk blaze
#

WHOOOO CARESSSSSS

#

just be chronically online and constantly check discord yk

#

but you wouldn't get it

limber skiff
#

check now @fossil inlet

fossil inlet
#

alr

fossil inlet
#
const hasNitroCustomization = Object.values(clientThemeSettings ?? {}).some(v => v != null);
// couldn't this be
const hasNitroCustomization = clientThemeSettings && Object.values(clientThemeSettings).some(v => v != null);
#

nevermind, empty object is truthy

charred monolithBOT
limber skiff
#

vtest

nimble pendantBOT
nimble pendantBOT
nimble pendantBOT
charred monolithBOT
#
[Vencord/Installer] branch deleted: dependabot/go_modules/golang.org/x/image-0.18.0
#

What happens when the bug or crash occurs?

When having (or not) applied a theme, the text chat bar gets off centered vertically ( see screenshot )

What is the expected behaviour?

To work normally, having the text centered without any offset

How do you recreate this bug or crash?

  1. Start discord
  2. Open any chat

Errors

None

Request Agreement

  • [x] I am using Discord Stable or tried on Stable and this bug happens there as well
  • [x] I am a Vencord Developer
austere talon
#

vtest dev

nimble pendantBOT
austere talon
#

why not merge into main @limber skiff

#

are u plannign to do more

nimble pendantBOT
nimble pendantBOT
limber skiff
#

we can merge to main

fossil inlet
limber skiff
#

I still gotta do the persisting of the themes

carmine wave
#

oh yeah

fossil inlet
elder plinth
#

it's a collision between FakeNitro and StickerPaste

#

only happens with both enabled for me

charred monolithBOT
#
[Vendicated/Vencord] New branch created: pr3684
austere talon
#

wow it's just like me

charred monolithBOT
#
[Vendicated/Vencord] branch deleted: pr3684
#

746c824 Fix Debug Logging toggle not working - Vendicated
cb845b5 PlatformIndicators: update indicators in real t... - Vendicated
7c839be BetterFolders: close folder if the last server ... - thororen1234
c5a1bbd GameActivityToggle: fix background colour when ... - Vendicated
79c5cf5 fix plugins for latest Discord update (#3681) - sadan4

austere talon
#

lmao yeah

#

so funny

#
await track("EVENT");
toggleVoiceDebugLogging();

was just pending forever

gritty iris
charred monolithBOT
charred monolithBOT
limber skiff
#

is slint really that good

limber skiff
#

@austere talon the old ui for user voice show had the feature of showing the channel limit and amount, even tho it was totally not intentional lol

#

I think it was because of useChannelName for the name component

#

I had no idea ๐Ÿ˜‚

austere talon
#

lmao

charred monolithBOT
dusk blaze
#

i should fix my PR

dusk blaze
#

tyyyyy ๐Ÿ’ž

charred monolithBOT
gritty iris
gritty iris
#

well support would be more accurate

austere talon
#

working on this rn (not final ui)

elder plinth
#

way to organize context menu items Cpray

austere talon
#

probably not

#

it's not that easy

gritty iris
#

it really isnt I've tried blobcatscared

austere talon
charred monolithBOT
#

Plugins shouldn't have to implement this themselves. I'm working on a solution that will work for all plugins (not final UI):

<img width="1496" height="275" alt="image" src="https://github.com/user-attachments/assets/983d1363-ba23-4ec1-a372-afd31a07410c" />
<img width="1016" height="629" alt="image" src="https://github.com/user-attachments/assets/53995e93-d426-4dc4-816f-e3d3a3b52b1a" />

Thank you for your contribution regardless!

#
[Vendicated/Vencord] New branch created: plugin-ui-elements
charred monolithBOT
charred monolithBOT
charred monolithBOT
left sequoia
#

u could try mounting them in under the descriptions with dummy data

#

or smth idfk

austere talon
#

yop

#

that is indeed the plan

#

all plugins are gonna have to export their icon or smth for that tho

charred monolithBOT
turbid hatch
charred monolithBOT
turbid hatch
#

(unrelated)

scenic brook
#

I had no idea that was a thing

charred monolithBOT
dusk blaze
#

vibe coded slop

scenic brook
#

Leaving the myCoolPlugin stuff in is pretty funny

charred monolithBOT
charred monolithBOT
left sequoia
#

holy fuck

#

3k LOC for a linting setup?

austere talon
#

slint is a ui library

fossil inlet
#

what's the endpoint to poll to get the latest discord version

elder plinth
fossil inlet
#

that's the desktop app, not the web app

#

here it is

elder plinth
#

thats the same thing

fossil inlet
#

no?

elder plinth
#

I just linked you to the endpoint

fossil inlet
elder plinth
#

yes and if you scroll down on the page you linked you get to that

fossil inlet
median rapids
#

i should link that there

fossil inlet
#

ty

fossil inlet
elder plinth
#

no version.ptb or version.canary? oh do you just use the subdomains for those

fossil inlet
#

tried version.canary.json

elder plinth
#

oh you need ptb subdomain for version.ptb

#

same with canary

fossil inlet
#

guhhh

#

why even use .channel.json if they're only hosted on their respective subdomains

elder plinth
#

no development version json

#

this is unusable

fossil inlet
#

idrc

median rapids
charred monolithBOT
#

PermissionsViewer:

  • added context menu icons for Copy User/Role ID and View Server As Role
  • added contextMenuAPIArguments prop to context menus to use in ViewRaw & BetterRoleContext plugins
  • assign modalKey to ViewPermissions modal to close it on Edit Role button click

ViewRaw:

  • added support for PermissionsViewer plugin to open role/user raw

BetterRoleContext:

  • added copy role name / role(plain and gradient in #000 #000 format) / role icon url
  • improved item...
untold rock
#

im trying to add plugin bisect to vencord

#

where should i put the file that contains the bisecting logic

#

i added a button in the settings menu im just not sure where the function that it calls should be

#

actually forget that im just moving it to a plugin

fossil inlet
untold rock
fossil inlet
#

i just made a settings pane for that

untold rock
#

does it still work

fossil inlet
#

probably not

untold rock
#

oh ok good

#

id feel very sad if i spent my afternoon on something pointless

untold rock
fossil inlet
#

i'd have it as a menu

untold rock
fossil inlet
#

plugins can add settings panes

untold rock
#

oh

#

tf

fossil inlet
#

nothing special about it

untold rock
#

seems complicated

fossil inlet
#

@untold rock this plugin adds it's own settings page

fossil inlet
#

learn blobcatcozy

untold rock
#

WHERE

#

no docs

fossil inlet
#

see what the patch does

#

play with it

#

i reccomend you use vencord companion (my version), but you can also use patch helper

untold rock
#

looks like im having a fun time i dont use vsc

fossil inlet
#

yop

#

patch helper is always an option

fossil inlet
charred monolithBOT
#
  • add new Transcript plugin to export HTML, Markdown, or JSON transcripts from any text channel, thread, DM, or group DM
  • render exports with Discord-like UI (avatars, nicknames, embeds, playable media) and an inline context menu for copying IDs or message links
  • provide configurable time ranges (from first message, up to now, ISO/relative inputs) plus filters for bots, pinned messages, media-only, authors, and keywords
still maple
scenic brook
charred monolithBOT
charred monolithBOT
austere talon
#

it's cause it does this

#

it's a wrapper function

#

so this doesnt work any longer

limber skiff
austere talon
#

it's a chunk load error retry thing

#

anyway it should be easy to fix

#

yep easy

#
function getWebpackU(instance) {
    const sym = Symbol();
    let v;
    Object.defineProperty(Object.prototype, sym, {
        get() {
            v = this;
            return "";
        },
        configurable: true
    });

    instance.u(sym);
    delete Object.prototype[sym];
    return v;
}
#

exactly same hack I use in my UserScript for getting private webpack cache

#

@fossil inlet ^

charred monolithBOT
#
[Vendicated/Vencord] New branch created: fix-reporter
austere talon
#

vtest fix-reporter

nimble pendantBOT
austere talon
#

hmm

limber skiff
#

Ideally we should still get a reference to the function that returns the path

#

since webpack sometimes does weird things and doesnt include all chunks in the object

austere talon
#

insufficient resources error

charred monolithBOT
austere talon
#

makes sense

#

vtest fix-reporter

nimble pendantBOT
austere talon
#

why are we even converting to number?

nimble pendantBOT
nimble pendantBOT
austere talon
#

yeah nice

limber skiff
#

hm actually

#

nvm

#

okay I updated my comment

fossil inlet
austere talon
#

we would have to monkey patch .u before they do

limber skiff
#

yeah

austere talon
#

not that hard but annoying to do

limber skiff
#

that's why I said ideally ๐Ÿ˜›

#

discord is so confused because of ignore activities

#

it shows that to me everytime

fossil inlet
#

why did they only wrap the js chunk name getter and not the css chunk name getter

austere talon
#

css not that important

#

Also this is probably just rspack config if I had to guess

fossil inlet
#

yeah, they was referring to rspack devs

tbh if i had to guess js code splitting is a native feature but css requires a plugin

but idk

austere talon
#

yeah i meant discord probably only enabled it for js

gritty iris
limber skiff
#

can we get used to explaining? ๐Ÿ˜ญ

#

what am I supposed to see

fossil inlet
#

idgi either

austere talon
#

this ui is clean

gritty iris
#

just havent seen it

charred monolithBOT
austere talon
#

vtest fix-reporter

nimble pendantBOT
nimble pendantBOT
nimble pendantBOT
charred monolithBOT
austere talon
#

I wanna show the icon here but for that plugins have to export their icons

should we just require plugins to also set this property?

#

for chatbar buttons and message popover buttons

fossil inlet
#

easier for things like "how do i hide this annoying icon"

charred monolithBOT
austere talon
#

breaking change for user plugins Smile

#

i made it type error but the error is kinda confusing

#

imagine if ts allowed custom type errors

austere talon
fossil inlet
#

me when the ui crashes because of some userplugin

just make it optional

fossil inlet
dusk blaze
#

iโ€™m not updating all of my abandonware for a fancy icon showing in a popup

#

show like โ“ for missing icons

austere talon
dusk blaze
#

or ๐Ÿงฉ

fossil inlet
austere talon
fossil inlet
#

guh i'm confused

austere talon
#

type error

austere talon
fossil inlet
#

ill try them out and see what i can find

austere talon
#

the error itself is clear but it keeps saying the type of the object you're passing is the issue

fossil inlet
#

that is not a clear error

too much noise

austere talon
#

did u read what I said ๐Ÿ˜ญ

#

the error itself (the red circled bits) is clear

#

the noise is the fact that it keeps repeating the type you're passing

fossil inlet
#

guhhhhh

austere talon
#

with a minimal plugin there's way less noise

#

it would be much nicer if we just made our own eslint plugin

#

is there a good icon for unknown

#

like placeholder icon

#

send

fossil inlet
austere talon
#

send

fossil inlet
#

trying to find it

fossil inlet
#

yeah

austere talon
#

send svg

dusk blaze
#

i feel like Message Popover isn't that descriptive ykyk

austere talon
fossil inlet
dusk blaze
#

noone calls them popovers

#

Message Actions might be more fitting

fossil inlet
austere talon
scenic brook
# austere talon send svg
<svg aria-hidden="true" role="img" xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M5 2a3 3 0 0 0-3 3v14a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3V5a3 3 0 0 0-3-3H5Zm6.81 7c-.54 0-1 .26-1.23.61A1 1 0 0 1 8.92 8.5 3.49 3.49 0 0 1 11.82 7c1.81 0 3.43 1.38 3.43 3.25 0 1.45-.98 2.61-2.27 3.06a1 1 0 0 1-1.96.37l-.19-1a1 1 0 0 1 .98-1.18c.87 0 1.44-.63 1.44-1.25S12.68 9 11.81 9ZM13 16a1 1 0 1 1-2 0 1 1 0 0 1 2 0Zm7-10.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0ZM18.5 20a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM7 18.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0ZM5.5 7a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z" clip-rule="evenodd" class=""></path></svg>
austere talon
#

thanks

#

annoying duplication but once I add the logic idk if it will be worth to make it a component just to slightly deduplicate code

limber skiff
#

this duplication is kinda annoying

austere talon
#

how else would you do it

#

renderChatBarButton can return null

limber skiff
#

oh come on are they rendering images as webp again

#

I see degraded quality

#

it looks choppy

austere talon
#

yeah lmao it's so low res until you open in browser

#

it's even discoloured

#

like washed out

austere talon
limber skiff
#

yeah I'm not sure either

austere talon
limber skiff
#

It's png?

#

is the api returning a webp even with png extension

#

I doubt

austere talon
#

it's a webp lmao

fossil inlet
austere talon
#

format defaults to webp @limber skiff lol

limber skiff
#

bruh

#

this app sucks

fossil inlet
#

discord insane

austere talon
fossil inlet
#

@limber skiff isn't that what this plugin is for

austere talon
#

yes but its broken rn

#

it has to add format=png lmao

limber skiff
#

yeah

austere talon
#

rn it only removes format=webp iirc

limber skiff
#

It's no longer client side

#

smh

austere talon
#

maybe we just break backwards compatibility with userplugins, it's not gonna cause crashes

#

just less funcitonality but the plugin can fix

limber skiff
#

but now even .png returns webp

austere talon
#

much nicer error too @fossil inlet

#

I just typed it as never

fossil inlet
charred monolithBOT
austere talon
#

backwards compatible

#

had to refactor some code cause you can't use this anymore this way

#

well we could bind

#

should I

charred monolithBOT
fossil inlet
fossil inlet
#

guhhh git evil

#

no wonder nothing has been updating

#

how did dev even get that upstream

charred monolithBOT
fossil inlet
#

working on somethingโ„ข

elder plinth
#

hello from 2 months in the future, I've just learned that settings.use() subs to every setting from every plugin, not just the current plugin. that seems very not useful, no?

in fact it was causing an infinite rerender crash for me with my changes to NoBlockedMessages cause I forgot to list the specific settings and just used settings.use() ๐Ÿ˜ญ

#

was a very weird bug too. only happened when interacting with thread starter messages from a blocked user.

charred monolithBOT
elder plinth
#

maybe some conflict where a plugin was updating a setting every time I tried expanding the collapsed thread starter message and so causing a loop. otherwise idk

limber skiff
#

I mean that settings.use should only subscribe to your plugin

elder plinth
#

idk then

limber skiff
#

where are you logging that

elder plinth
#

useSettings

limber skiff
#

screenshot

elder plinth
#

1s just started windows for this

#

gotta load vscode

#
export function useSettings(paths?: UseSettings<Settings>[]) {
    const [, forceUpdate] = React.useReducer(() => ({}), {});
    console.log("[!!!!]", paths);

    useEffect(() => {
        if (paths) {
            paths.forEach(p => SettingsStore.addChangeListener(p, forceUpdate));
            return () => paths.forEach(p => SettingsStore.removeChangeListener(p, forceUpdate));
        } else {
            SettingsStore.addGlobalChangeListener(forceUpdate);
            return () => SettingsStore.removeGlobalChangeListener(forceUpdate);
        }
    }, [paths]);

    return SettingsStore.store;
}
#

was logging paths after the const

limber skiff
#

It's just components re-rendering

elder plinth
#

but is that global listener not for every plugin

limber skiff
#

it doesn't mean all settings are triggering a re-render for your plugin

#

yes

#

but the others have paths

#

if they have paths it's for a plugin

#

is the one with undefined path the one with settings.use() ?

elder plinth
#

idk how to tell. the console was spamming horrible with that log

#

im assuming so since in that case paths is undefined

limber skiff
#

what's your plugin called

elder plinth
#

I'm just modifying NoBlockedMessages

limber skiff
#

is there no path which is just plugins.NoBlockedMessages?

elder plinth
# limber skiff it doesn't mean all settings are triggering a re-render for your plugin

ok so to test this I reverted to using settings.use():

filterStream(channelStream: [ChannelStreamGroupProps | ChannelStreamMessageProps | ChannelStreamDividerProps]) {
    const {
        alsoHideIgnoredUsers,
        disableNotifications,
        hideBlockedUserReplies,
        allowAutoModMessages,
        defaultHideUsers,
        overrideUsers
    } = settings.use();

    console.log("[!!!!] Rerendered NoBlockedMessages");

and every time I toggle silenttyping with the icon in the chat bar the log is made to console so

grave mangoBOT
limber skiff
#

bruh

#

you are right

#

why is it like this

elder plinth
#

lol

#

on the bright(?) side it doesnt look like any plugins are actually using the settings.use() syntax without specifying settings

#

not really sure what was the issue but some setting must have been updating every time I tried expanding the blocked group lol cause this is the error it produced

#

took hours to trace this back to settings.use() ๐Ÿ˜ญ

limber skiff
#

I'm pretty sure it should be to the plugin only

#

how did we never noticed this...

elder plinth
#

if you look at their message I initially replied to and the one about 5 below it V said settings.use() should work instead of declaring all 20ish settings manually "at least I think so" so I have a feeling it was not in fact intentional

limber skiff
#

yes

#

I agree

#

I just don't get why it was coded this way in the first place

elder plinth
#

lol that whole function has a todo above it

#
/**
 * Settings hook for React components. Returns a smart settings
 * object that automagically triggers a rerender if any properties
 * are altered
 * @param paths An optional list of paths to whitelist for rerenders
 * @returns Settings
 */
// TODO: Representing paths as essentially "string[].join('.')" wont allow dots in paths, change to "paths?: string[][]" later
export function useSettings(paths?: UseSettings<Settings>[]) {
limber skiff
#

the problem is useSettings should be passing an array with just the plugin path

#

if no settings were passed to it

elder plinth
#

docstring kinda makes it seem like it was intentional. though maybe a lot of thought was just not put into it

limber skiff
#

instead it's just returning undefined

elder plinth
#
use: settings => useSettings(
    settings?.map(name => `plugins.${definedSettings.pluginName}.${name}`) as UseSettings<Settings>[]
).plugins[definedSettings.pluginName] as any,

it only returns that plugin's settings but it still subs to every plugin's settings ๐Ÿค”

#
use: settings => useSettings(
    (settings?.map(name => `plugins.${definedSettings.pluginName}.${name}`) ?? [`plugins.${definedSettings.pluginName}`]) as UseSettings<Settings>[]
).plugins[definedSettings.pluginName] as any,

so what something like this?

austere talon
#

yeah no copilot we're not doing all that

austere talon
#

idk which one I should do

#

maybe we want to allow reordering

#

so the second would be better

#

but then we could just have a separate order property

#

I think I'll go with the second

#

if we allow reordering then where would new buttons be added?

bleak blaze
#

context menu reorganizing > ๐Ÿค‘

fossil inlet
#

Also, how would this work if a plugin registered more than one chat bar button or something like that

limber skiff
#

5k orbs quest available rn

odd heath
#

insane

#

will claim

austere talon
idle fossil
#

there's a quest completer plugin?

fossil inlet
#

no

charred monolithBOT
austere talon
#

ready now

#

i should add a context menu like this

#

probably should fix this before merge

charred monolithBOT
fossil inlet
austere talon
#

no thats ugly

gritty iris
fossil inlet
austere talon
gritty iris
#

they broke the switch find thumbs_up

#

they wiped it clean off the earth

austere talon
#

goated module

gritty iris
#

thats what they did with it? ๐Ÿ˜ญ

#

wiped it out from the formwhatever section

austere talon
#

what the horror is this component

gritty iris
#

I didnt know I was in halloween wtf is that

austere talon
#

ManaContext Provider

fossil inlet
#

That's my guess

austere talon
#

whatever this slop is