#๐Ÿ‘พ-core-development

1 messages ยท Page 265 of 1

charred monolithBOT
austere talon
#

vtest dev

nimble pendantBOT
nimble pendantBOT
nimble pendantBOT
charred monolithBOT
scenic brook
#

I didn't

spring salmon
#

if there is not much more to say what would need to happen to move this forward? sorry if im being a bother, i havnt quite worked out how things get done around here

charred monolithBOT
scenic brook
elder plinth
spring salmon
#

lol, thanks i guess

scenic brook
#

I would maybe give some PRs preliminary reviews so maintainers know what can probably be merged without too much work but I kinda feel like it can be very perfectionist here and I am not lol

charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
jolly egret
#

vtest main

nimble pendantBOT
nimble pendantBOT
nimble pendantBOT
charred monolithBOT
grizzled halo
#

the buttons for the support helper dont work btw

austere talon
#

discord is insane and cooked their own code

#

this is an optional / nullable argument but their code always wrongly assumes it's set

#
async function sendMessage(channelId: string, messageData: MessageData, waitForChannel?: boolean, options?: Options) {
    const nonce = options.nonce ?? generateNonce();
charred monolithBOT
#
[Vendicated/Vencord] New tag created: v1.12.10
dusk blaze
#

Hello Vencord community,

I'm having trouble seeing full component names in React Developer Tools after switching to dev mode. Despite following the steps, I still see minified names (e.g., letters instead of "TextInput"). Iโ€™d appreciate your help!

Steps Iโ€™ve Taken:

  • Installed Node.js, Git, and pnpm.
  • Cloned the Vencord repository and ran pnpm install --frozen-lockfile.
  • Built the project with pnpm build --dev and injected it with pnpm inject.
  • Enabled "Enable React Developer Tools" in Vencord settings.
  • Fully closed and restarted Discord multiple times.

Current Issue:

  • After opening DevTools with Ctrl + Shift + I and navigating to the "Components" tab, component names remain minified (e.g., "a" instead of meaningful names).

Additional Notes:

  • Iโ€™ve tried updating the repository with git pull and rebuilding, but the issue persists.

Please let me know if you need more information. Thank you for your assistance!

Best, @dusk blaze

charred monolithBOT
scenic brook
#

yeah

brazen bone
#

Why do people think unminified names is even a thing?

charred monolithBOT
charred monolithBOT
olive aurora
#

i keep trying to find PRs to triage but most of them are such huskcode

olive aurora
#

-1 +1

fossil inlet
olive aurora
#

also yea i got assigned the experiment

olive aurora
#

tested

#

i need to remember git fetch pull/0000/head && git reset --hard FETCH_HEAD

#

why is firefox

#

what did i just get hit with

#

oh wait

charred monolithBOT
fossil inlet
#

๐Ÿ‘

fossil inlet
olive aurora
#

howd that end up being a review

fossil inlet
#

deleted?

olive aurora
#

yea

#

i also find the api weird im trying to think of something else

charred monolithBOT
fossil inlet
# charred monolith

i'll come back to this if it's ever possible to get the final computed color given a pixel pos

charred monolithBOT
olive aurora
#

didn't discord roll out the new profile popup for everyone now?

fossil inlet
#

bit ago

olive aurora
#

if so we don't need showconnections anymore

fossil inlet
olive aurora
#

im dumb

#

im not even using alwaysexpandprofiles i just do it instinctively

charred monolithBOT
#

If a slash command directly returns a modal, for example: interaction.response.send_modal() instead of a normal message, the slash command will get logged as a deleted message even though no message was sent and since its contentless, it overlaps with other elements shown below and doesn't appear right, this 4 line update will stop logging contentless messages which are only possible if a slash command returns a modal.

charred monolithBOT
jolly egret
charred monolithBOT
jolly egret
#

completely forgot other fields of the message exists apparently

elder plinth
#

There might be a better way but it seems to be that every message that spawns a modal has a message.state value of SENDING which to me seems like would only ever be SENDING on your own messages that (somehow?) get deleted before being sent and bots spawning modals. So a check of if !mine && SENDING: dont log should work? Perhaps.

#

or just if from bot && SENDING: dont log I guess

limber skiff
#

@austere talon we should move webpack apis to our own package and refactor

#

then we can publish that to npm too

austere talon
#

why

olive aurora
#

malware

limber skiff
#

and we can make it more standardized to publish too

olive aurora
#

isn't the patch part very specific to discord jank

#

idk if publishing is that useful

austere talon
#

clean up sure but I don't get the point of publishing

limber skiff
#

no need to publish them

#

but I want to make it a separate package

#

it's good to modularize more of vencord

austere talon
#

soon every plugin will be its own package

elder plinth
#

where do I go to fix a typing in the discord-types package. I dont see the package on github

austere talon
#

it's in the vencord repo

#

packages folder

#

just ctrl click

elder plinth
#

oh so I can just straight up edit this file

austere talon
#

yes

charred monolithBOT
jolly egret
#

ofc its better than doing the opposite husk

limber skiff
#

I'll make a poc of my new webpack finds api

jolly egret
#

decoding and allocating god knows how many strings rather than just one

olive aurora
#

isn't the favourites limit like 200 gifs it's really not that many strings

austere talon
olive aurora
#

but ig if it's done again each keystroke it's kinda insane

limber skiff
#

then prioritize faster filters over slower ones

#

check props first for example

#

here's a quick example

#

find(props("x"), code(".Avatar"), custom(y => true)) and so on

#

the order does not matter

#

you can even go as far as:

jolly egret
#

computers are fast but it doesn't mean we can do silly things like this everywhere

limber skiff
#
find(
  props("x"),
  transform(y => [y]),
  mapMangled(...),
  setComponentName("Avatar")
)
#

@fossil inlet what do you think

austere talon
#

is this a real use case

#

in what scenario would you need that

limber skiff
#

what exactly

#

it would replace all our apis

#

in rare cases you would concate yes

#

but the name for example could be useful regarding sadan demangler

limber skiff
#

other mods could create a custom transformation for example

#

e.g. lazy(true) which instead just calls transform(...)

#

in my old refactor I used transformations in some finds to simplify them

#

memoize(), another example

austere talon
#

it should probably be a separate function if anything

#

not part of the normal find

limber skiff
#

it can be an extension only our main package adds

#

memoize can just call transform

austere talon
#

chaining would probably be better

#

like how do you even type this with the transform

limber skiff
#

chaining how?

#

because chaining can get pretty messy

olive aurora
#

soon vencord itself will be a package

#

on npm

limber skiff
austere talon
#

you will have to write a monster type for that

#

the type needs to be recursive basically

limber skiff
#

yes probably

olive aurora
#

making a new client mod will simply be pnpm add vencord

limber skiff
#

but it's more readable than a lot chanining

#

or if anything we can just make it so you have to manually type

#

that's already the case in 99% of the cases

austere talon
#

well instead of just coming up with something,

first collect actual use cases and then design around them

#

for example in some cases we do some transformation, rn we just do proxyLazy with non lazy find for that

limber skiff
#

memoize is useful too

#

so you avoid another proxyLazy with React.memo

#

chaining filters is useful for functions which include props set on them

#

setComponentName could be another utility for Vencord own demangler

#

I'm not really taking these from nowhere, I've seen cases where all of these could be used already

#

but I also want to make sure it's not overspecialized

#

basic + base util so you can build up on top of them

austere talon
#

yeah but it feels too much in one

limber skiff
#

I'll view all our usages and build up a proposal for the bare minimum

#

then we can see if it's worth implementing

fossil inlet
limber skiff
#

It's meant to not have overspecialized functions such as findByProps

#

you build up a filter with what you need

#

concatenate, custom check, negate, transform, all you need

fossil inlet
#

How often do we actually need a find with more than one filter like this?

#

I don't think it's a terrible idea, I just don't think we have the need to justify the extra complexity.

limber skiff
#

I dont think the extra complexity matters much as it's a complexity abstracted from the developer

#

their usage can be as simple as find(props("x"))

austere talon
#

i think find should purely find

#

transform should be a separate function if anything

limber skiff
#

hmm

#

something like this?

#

ignoring the fact it takes data

olive aurora
#

is this chatgpt

limber skiff
#

yes

#

I am asking for ideas

limber skiff
#

I dont think there's much escape without keeping inside find

#

it becomes more cluttered and less readable

austere talon
#

guhhhh

fossil inlet
#

evil...

#

@austere talon trolley

austere talon
#

just kill FormText

fossil inlet
austere talon
#

yes

charred monolithBOT
austere talon
#

i will do that

fossil inlet
austere talon
#

dont do it in ur pr

fossil inlet
#

ok

austere talon
#

the only usages of FormText are:

  • no props
  • type: description
  • variant (literally invalid usage)
#

it's just <Text variant="text-sm/normal"> with these styles:

.formText_ddd181 a:hover {
    text-decoration: underline
}
.formText_ddd181 strong {
    font-weight: var(--font-weight-semibold)
}

.description_ddd181 {
    font-size: 14px;
    font-weight: var(--font-weight-normal);
    line-height: 20px
}
@media (-webkit-max-device-pixel-ratio: 1) {
    .theme-light .description_ddd181 {
        font-weight:var(--font-weight-medium)
    }
}
fossil inlet
austere talon
#

well the first two are not needed

#

the description is the only thing that remotely matters

#

@limber skiff when replacing FormText with Text

should we make every place pass variant itself or should we make our own wrapper

limber skiff
#

for basic text?

austere talon
#
- <FormText>Hi</FormText
+ <OurOwnFormTextComponent>Hi</OurOwnFormTextComponent>
+ <Text variant="text-sm/normal">Hi</Text>
#

which one

#

do we want to make a tiny Text wrapper or nah

#

if we do make a tiny text wrapper we can more easily change it out later

limber skiff
#

If there are a lot of text-sm/normal then I think so, yes

austere talon
#

all these should be replaced

limber skiff
#

yeah

#

not sure what to call it tho

austere talon
#

<SimpleText> :P

#

no idk

#

Text is a bad name cause there's a global with that name

#

just Text ig

#

it kinda sucks but there's no better name

fossil inlet
#

wouldn't that get confusing with discords text

austere talon
#

suggest smth else

fossil inlet
#

i dont have many ideas eitehr

austere talon
#

well

#

if we wanna replace all form components we can name them properly

#

Heading, Paragraph etc

#

FormTitle -> Heading
FormText -> Paragraph
FormDivider -> Divider
FormSection -> Section

fossil inlet
#

so many plugins use it woozy

austere talon
#

dont manually do it

fossil inlet
austere talon
#

u love wasting time

#

i said let me do it guh

#

vext

nimble pendantBOT
austere talon
#

guhhhh

limber skiff
#

Proposed API:
Note: The function names are not final

find(...) // Both find and findLazy use the same API.
findLazy(
    // Matchers
    custom(x => boolean), // Base matcher.
    props("getGuilds"), // Match by properties, heavily used to find general exports.
    code("GuildBar: Guild cannot be null", /console\.log\(".+?"\)/), // Match by function code with string/regex, heavily used to find functions.
    componentCode("GuildBar: Guild cannot be null", /console\.log\(".+?"\)/) // Match by component code with string/regex, heavily used to find components.
    factoryCode("GuildBar: Guild cannot be null", /console\.log\(".+?"\)/), // Match by module factory code with string/regex, usable with extractAndLoadLazyChunks and mangled exports.
    storeName("GuildStore"), // Match by store name, heavily used to find Discors stores.
    
    not(componentCode(".getRoles(")), // Negate a matcher. Some components are heavily copy-pasted with just some missing code when compared to the other.

    // Transformers
    transform(x => y), // Transform the found value from x to y. Base transformer which others can extend.

    // Utility Transformers
    mapMangled({ ... }), // Map the mangled found object to a new object with named properties. Used for mapping mangled exports.
    memoize(x => React.memo(x)), // Can be potentially ignored as it is also minimal.
    setComponentName("GuildBar"), // Useful for demangling found components. Pretty minimal and can be potentially ignored.

    // Side effects
    also(x => void), // Perform side effects with the found value. Useful when initializing our local references to some stores when race conditions occur.
    // Example usage:
    let UserRecord;
    const UserStore = find(
      storeName("UserStore")
      also(UserStore => UserRecord = UserStore.getCurrentUser().constructor)
    )
    // End of example
)
#

I'm looking at our code to see potential usages and that's what I found for now

#

mapMangledModule can just become a factoryCode filter with a mapMangled transformation

austere talon
#

the forms stuff is more important rn

limber skiff
#

(visually)

#

what about BaseHeading and BaseText

austere talon
#

why base

#

that implies it can be extended

limber skiff
#

I dont know lol

#

I'm trying to find of better names

#

Heading is too generic

austere talon
#

why

limber skiff
#

A heading can be any heading

#

with any size

#

anyways what does the section do?

#

is it even needed over a div

odd heath
charred monolithBOT
charred monolithBOT
#
[Vendicated/Vencord] branch deleted: remove-refresh
#
[Vendicated/Vencord] branch deleted: @vencord/discord-types
#
[Vendicated/Vencord] branch deleted: refactor-settings-ui
alpine ridge
#

i feel like i should be banned from writing code for this (making petpet work as a userscript)

austere talon
#

let's just replace Discord's FormText with this for now @fossil inlet @limber skiff

#

like

#

export this as FormText from webpack commons

fossil inlet
fossil inlet
austere talon
#

wdym

fossil inlet
#

the patch matches what the old one was but other than that hrug

austere talon
fossil inlet
austere talon
#

yep bad

fossil inlet
#

no wonder why i didn't see any change

#

okay

#

it looks good now

austere talon
#

does it work

fossil inlet
#

looks like it

austere talon
#

Your configuration specifies to merge with the ref 'refs/heads/sadanifyingmyvencord'

#

NO IT DOESNT

#

hop off using fix/all use different branch names everytime thanks

fossil inlet
#

fix/two

#

fix/three

#

i will add one each time

austere talon
fossil inlet
#

@austere talon add reporter testing for prs

#

manually running via gh actions is annoying

austere talon
#

yoppp

#

true

fossil inlet
#

@austere talon love?

fossil inlet
austere talon
#

WHAT IS THAT

#

my vencord git config is 326 lines

#

4-6 lines per pr

#

so around 65 different prs checked out

fossil inlet
austere talon
#

insaneeeee

austere talon
fossil inlet
#

like so many fix branches

austere talon
#

vext

nimble pendantBOT
fossil inlet
austere talon
#

@high oracle can u cancel we have to publish new version guh

fossil inlet
austere talon
#

nothing in the plugin is broken

#

but just leave it for now probably

austere talon
#

i published this a few days ago but they havent approved

#

@fossil inlet figure out why devtools make discord so fucking laggy

austere talon
#

are u on vesktop or discord

fossil inlet
#

vesktop

austere talon
#

what platform

#

linux right

fossil inlet
#

yop

austere talon
#

it makes my discord like extremely laggy

fossil inlet
#

x11

austere talon
#

like frames

high oracle
#

@austere talon done

austere talon
#

okay lets just merge and publish now

#

thanks xinto

fossil inlet
austere talon
#

who cares bro

charred monolithBOT
austere talon
#

this is important

#

need to get it out asap

#

vtest dev

nimble pendantBOT
fossil inlet
#

yeah

nimble pendantBOT
# austere talon vtest dev
Bad Patches

WebContextMenus (had no effect):
ID: 29264
Match: ```
/return\s*?[.{0,50}?(?=?(0,\i.jsxs?.{0,100}?id:"copy-image")/

Slow Patches

FullSearchContext (took 5.5ms):
ID: 683101
Match: ```
/this(?=.handleContextMenu(\i,\i))/

Bad Webpack Finds
mapMangledModule("millisecondsInUnit:", {
	isSameDay: (m) => {
            if (typeof m !== "function") return false;
            return stringMatches(Function.prototype.toString.call(m), parsedCode);
...
})
nimble pendantBOT
# austere talon vtest dev
Bad Patches

WebContextMenus (had no effect):
ID: 29264
Match: ```
/return\s*?[.{0,50}?(?=?(0,\i.jsxs?.{0,100}?id:"copy-image")/


**__GreetStickerPicker (had no effect):__**
ID: `814820`
Match: ```
/innerClassName:\i\.welcomeCTAButton,(?<={channel:\i,message:\i}=(\i).+?)/
Slow Patches

WebContextMenus (took 7.1ms):
ID: 343602
Match: ```
/if(!\i.\i)return null;/

austere talon
#

oh ur isSameDay fix isnt stable compatible

fossil inlet
austere talon
#

just give me the diff

#

LOVE

fossil inlet
#
From 7374122b5368067e45641ac9f0846ffa16b8262e Mon Sep 17 00:00:00 2001
From: sadan <117494111+sadan4@users.noreply.github.com>
Date: Thu, 14 Aug 2025 15:45:17 -0400
Subject: [PATCH] make DateUtils stablecompatable

---
 src/webpack/common/utils.ts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/webpack/common/utils.ts b/src/webpack/common/utils.ts
index 862f38430..72f5e662f 100644
--- a/src/webpack/common/utils.ts
+++ b/src/webpack/common/utils.ts
@@ -203,6 +203,6 @@ export const DisplayProfileUtils: t.DisplayProfileUtils = mapMangledModuleLazy(/
 export const DateUtils: t.DateUtils = mapMangledModuleLazy("millisecondsInUnit:", {
     calendarFormat: filters.byCode("sameElse"),
     dateFormat: filters.byCode('":'),
-    isSameDay: filters.byCode(/Math\.abs\(\i-\i\)/),
+    isSameDay: filters.byCode(/Math\.abs\(\+?\i-\+?\i\)/),
     diffAsUnits: filters.byCode("days:0", "millisecondsInUnit")
 });
-- 
2.50.1

#

that should work iirc

#

(i have not tested)

#

wait why is the date so weird

charred monolithBOT
austere talon
#

vtest dev

nimble pendantBOT
austere talon
#

what if we just skipped random numbers for versioning it'd be funny

#

chaotic ver

nimble pendantBOT
# austere talon vtest dev
Bad Patches

WebContextMenus (had no effect):
ID: 29264
Match: ```
/return\s*?[.{0,50}?(?=?(0,\i.jsxs?.{0,100}?id:"copy-image")/

Bad Webpack Finds
mapMangledModule("millisecondsInUnit:", {
	isSameDay: (m) => {
            if (typeof m !== "function") return false;
            return stringMatches(Function.prototype.toString.call(m), parsedCode);
...
})
nimble pendantBOT
# austere talon vtest dev
Bad Patches

WebContextMenus (had no effect):
ID: 29264
Match: ```
/return\s*?[.{0,50}?(?=?(0,\i.jsxs?.{0,100}?id:"copy-image")/


**__GreetStickerPicker (had no effect):__**
ID: `814820`
Match: ```
/innerClassName:\i\.welcomeCTAButton,(?<={channel:\i,message:\i}=(\i).+?)/
austere talon
#

just generate random numbers until it's bigger than the old one

austere talon
fossil inlet
austere talon
#

reporter is drunk

charred monolithBOT
#
[Vendicated/Vencord] New tag created: v1.12.11
fossil inlet
#

vext

nimble pendantBOT
jolly egret
#

gg

#

they stopped reviewing

austere talon
#

we gotta hope discord is slow with merging into main

limber skiff
#

@fossil inlet thoughts on api

#

(I havent implemented anything yet)

austere talon
#

hold on lemme just open that in vlc real quick

limber skiff
austere talon
#

codesnap

austere talon
# limber skiff

the also and map stuff is just bad, I really don't like it

limber skiff
#

what's bad about the map?

austere talon
#

they should be separate functions

transform() and derive()

limber skiff
austere talon
#

the proxy already exposes its internals

#

it can just access them

#

and what's the point of merging factory search into the webpack cache search?

#

I don't like that either

limber skiff
#

It's webpack search in general

fossil inlet
#

i don't really understand the withFactoryCode thing

what is just a normal findByCode in this

limber skiff
#

not just cache

limber skiff
austere talon
austere talon
#

they are different things and should be separate apis

limber skiff
#

hmm

#

they are kinda tied tho

#

a factory code can be used to find all the exports of that module

#

which is what happens in case of mapMangledObject

#

it takes the raw module and maps their exports

austere talon
#

for the also example, I would much prefer something like this:

const FluxDispatcher = findLazy();

derive(FluxDispatcher, it => {
    it.subscribe();
});
limber skiff
#

it works when it's lazy

#

how about when it's not?

austere talon
#

if it's not lazy then you just do it directly wdym

limber skiff
#

LOL

#

true

#

sorry my brain died

austere talon
limber skiff
#

okay so

#

one sec

austere talon
#

to be clearer we could also have a separate onWhatever function that's just an alias

limber skiff
#

the return type of that is meant to be void

#

it's just to apply a side effect

#

once a find is found

fossil inlet
#

i really like being able to do something with a find once it's found

i'm not partial to either way of writing it

limber skiff
#

I still think withFactoryCode should be a base matcher tho

austere talon
#

a function should never do as much as that find does

austere talon
#

you can't combine them

limber skiff
#

I see your point

#

so you prefer something like

#

but withFactoryCode possibly different

#

that's not bad

austere talon
#

the find by factory code should be a separate method

#

like findModuleByFactoryCode

limber skiff
#

findExportsByFactoryCode, ig

#

to be very clear

#

It seems so specialized tho

austere talon
#

that's good

#

each function should have exactly one purpose

#

multiple small specialised functions are way cleaner than one single function that does a lot

limber skiff
#

I get the point for the rest but for the factory code one, I'm not sure

#

though there is some point you can make from it as it's one very specific case

austere talon
#

there's not really much reason to find a module by factory code except for mangled exports

limber skiff
#

ye

austere talon
#

there's only one single place in vencord that finds a raw module by code and that's the settings store api

limber skiff
#

another debate tho, for components it should change the type of the lazy returned based on the filter or use a transform

#

from Proxy to LazyComponent

austere talon
#

why do you even wanna change the existing more specialised methods, I think they're nice

limber skiff
#

nah that seems weird

austere talon
#

like findComponent

fossil inlet
limber skiff
#

which is weird

#

cant really nest transform like that

limber skiff
austere talon
#

I like the doing something with the lazy module and combining filters part but I don't think the current api syntax / naming needs any change

limber skiff
#

the current api syntax limits a lot tho

austere talon
#

changes I would find good:

  • make the current find(Lazy) accept multiple filters
  • add a not() (or invert, negate) function for inverting filters
  • add a transform/derive function for transforming the found thing
  • add a onFind method for running something once the module was found

the last two are basically the same thing

#

I don't think any pipeline style api would make much sense, and would be a pain to type anyway

limber skiff
#

I think the pipeline style would be way more readable once you actually start using those features

austere talon
#

but those features are so niche

#

the vast majority of finds are just simple plain ones

limber skiff
#

how would one negate a findByProps for example

#

(in a non hacky way where you dont set a prop in the string)

austere talon
#
findLazy(byProps(), not(byProps())))
austere talon
#

another use case I just thought of is checking some specific prop for a filter, like
m.prototype.render.includes(code) but I don't think your proposal even solves that

limber skiff
#

wdym by that?

#

this is what I have been thinking rn, and for the implementation every matcher would be it's proper class to easily stringify and use for reporter

#

memoize is just an example since it's very specific

#

we could potentially add our own extended transformers for additional utilities

austere talon
#

honestly just skip the transform at this point

limber skiff
#

mapping mangled is basically a transformer tho

#

and so is memoizing

austere talon
#

yes but they should just be called directly

#

nesting function calls

#

anyway I'm so tired and my head hurts I need to sleep

limber skiff
#

so what you mean is basically that

#

I mean that's not bad

fossil inlet
#

anyone know what the rollout is for 2025-05_client_theme_color_picker

glass jasper
#

10% as far as I can see

limber skiff
#

yeah it's pretty low

charred monolithBOT
fossil inlet
#

why does discord use spread syntax here?

#

it doesn't make sense

jolly egret
#

though, that would be horror in code lol

fossil inlet
jolly egret
#

base64 encoding the images and using them as variables inline

#

atp just store them as image files

fossil inlet
dusk blaze
alpine ridge
#

sry, im p stupid

#

i do acknowledge that this is very cursed

limber skiff
charred monolithBOT
austere talon
#

vext

nimble pendantBOT
austere talon
#

google might have aired our previous update but this time they clutched up

scenic brook
#

They knew it was bad

#

Or would be

jolly egret
#

we managed to avoid all "it doesn't work" reviews this time too

limber skiff
#

instead of specialized functions we have the base 3 and filters and transformers which act on their results

limber skiff
#

@austere talon stupid app

#

they reverted

#

can they stop touching the bundler...

jolly egret
#

LOL

charred monolithBOT
limber skiff
#

vtest dev2

nimble pendantBOT
nimble pendantBOT
# limber skiff vtest dev2
Bad Patches

WebContextMenus (had no effect):
ID: 29264
Match: ```
/return\s*?[.{0,50}?(?=?(0,\i.jsxs?.{0,100}?id:"copy-image")/


**__CustomIdle (had no effect):__**
ID: `517100`
Match: ```
/Math\.min\((\i\.\i\.getSetting\(\)\*\i\.\i\.\i\.SECOND),\i\.\i\)/

ShowAllMessageButtons (had no effect):
ID: 773176
Match: ```
/isExpanded:\i&&(.+?),/


**__GreetStickerPicker (had no effect):__**
ID: `814820`
Match: ```
/innerClassName:\i\.welcomeCTAButton,(?<={channel:\i,message:\i}=(\i).+?)/

NoticesAPI (had no effect):
ID: 933429
Match: ```
/(?<=,NOTICE_DISMISS:(\i){)return null!=(\i)/


**__SuperReactionTweaks (had no effect):__**
ID: `960020`
Match: ```
/(?<=BURST_REACTION_EFFECT_PLAY:\i=>{.+?)(\i\(\i,\i\))>=\i(?=\))/

VencordToolbox (had no effect):
ID: 984370
Match: ```
/(?<=toolbar:function(.{0,100}()\i.Fragment,/

nimble pendantBOT
# limber skiff vtest dev2
Bad Patches

CustomIdle (had no effect):
ID: 517100
Match: ```
/Math.min((\i.\i.getSetting()*\i.\i.\i.SECOND),\i.\i)/


**__WebContextMenus (had no effect):__**
ID: `29264`
Match: ```
/return\s*?\[.{0,50}?(?=\?\(0,\i\.jsxs?.{0,100}?id:"copy-image")/

SuperReactionTweaks (had no effect):
ID: 960020
Match: ```
/(?<=BURST_REACTION_EFFECT_PLAY:\i=>{.+?)(\i(\i,\i))>=\i(?=))/


**__GreetStickerPicker (had no effect):__**
ID: `814820`
Match: ```
/innerClassName:\i\.welcomeCTAButton,(?<={channel:\i,message:\i}=(\i).+?)/

NoticesAPI (had no effect):
ID: 933429
Match: ```
/(?<=,NOTICE_DISMISS:(\i){)return null!=(\i)/


**__ShowHiddenChannels (had no effect):__**
ID: `734386`
Match: ```
/maxUsers:\i,users:\i(?<=channel:(\i).+?)/
limber skiff
#

๐Ÿคจ

austere talon
#

what'd they revert

limber skiff
#

this bundler is insane

fossil inlet
#

i could se someone writing that

limber skiff
#

inline the function inside the if

#

๐Ÿ˜ญ

fossil inlet
austere talon
#

like them using an iife and store the result in variable

#

then bundler i inlines the variable

limber skiff
#

this patch survived an inside inline

#

and it goes on

#

it still matched correctly lol

#

@austere talon do you remember what is this?

#

or if it can be removed

#

we are patching that to always be true

#

ah it's not needed because we patch canCopyImage now

charred monolithBOT
limber skiff
#

vtest dev2

nimble pendantBOT
nimble pendantBOT
charred monolithBOT
scenic brook
#

One step closer to no titlebar lol

limber skiff
#

it really doesn't need to be that big...

#

this is so overly sized too

#

CREATE DM

#

thanks i've never used that button

ivory hollow
#

the CopyStickerLinks plugin has an incorrect readme filename

charred monolithBOT
austere talon
#

lmaoo

#

how did i fuck this up

fossil inlet
#

is it just me or is noticeAPI broken again

#

guhhh

jolly egret
#

discord is trolling

limber skiff
fossil inlet
shell shuttle
ivory hollow
#

hm?

charred monolithBOT
fossil inlet
scenic brook
#

The rest of the buttons are capitalised

prime dew
#

to match all the other things ig

austere talon
# prime dew

here's the fun thing: the capitalisation in this differs per language

dusk blaze
#

vencord is a proudly american mod therefore we will use titlecase

#

but tbf the casing across vencord itself is inconsistent so

odd heath
prime dew
# austere talon

I really love when things are that inconsistent across languages

#

but it's not like you can use capital starting letters for verbs, so it's understandable

jolly egret
charred monolithBOT
limber skiff
#

so yeah, change the capitalization

charred monolithBOT
limber skiff
#

vtest

nimble pendantBOT
nimble pendantBOT
# limber skiff vtest
Bad Patches

ShowHiddenChannels (had no effect):
ID: 734386
Match: ```
/maxUsers:\d+?,users:\i(?<=channel:(\i).+?)/


**__ShowAllMessageButtons (had no effect):__**
ID: `773176`
Match: ```
/isExpanded:\i&&(.+?),/

NoticesAPI (had no effect):
ID: 933429
Match: ```
/(?<=,NOTICE_DISMISS:function(\i){)return null!=(\i)/


**__SuperReactionTweaks (had no effect):__**
ID: `960020`
Match: ```
/(BURST_REACTION_EFFECT_PLAY:\i=>{.+?if\()(\(\(\i,\i\)=>.+?\(\i,\i\))>=\d+?(?=\))/

VencordToolbox (had no effect):
ID: 984370
Match: ```
/(?<=toolbar:function(.{0,100}()\i.Fragment,/

nimble pendantBOT
austere talon
#

guh

limber skiff
#

what's the problem

austere talon
#

stablew ๐Ÿ˜ญ

limber skiff
#

ye we need to wait for them to bump

#

but it's a weekend ๐Ÿ˜”

austere talon
dusk blaze
#

hey @fossil inlet can you break something so the server is active again

bright island
#

yeah just add like

#
body {
      transform: rotate(0.2deg);
}

or something

#

dear lord it's worse than i could have ever anticipated

charred monolithBOT
still maple
#

mmmm

#

tbh having smth that replace other people's embed would be nice

scenic brook
#

It would be more convenient if it were automatic but the embed endpoint is too heavily ratelimited for it to be feasible

still maple
#

but like should just be automatic

scenic brook
#

It's like 5 calls per minute or something which seems okay until you scroll a chat once

still maple
#

basically cancel the original and only do the replacement

scenic brook
#

It's part of the message object when you receive it so that's not a call

still maple
#

dammit

scenic brook
#

I did do it automatically at first and have it throttled by the rate limit but it's just not a very nice experience

still maple
#

wait

#

if the embed is always part of the message

#

why is there an API even to get the embed alone

scenic brook
#

There's an embed tester on the dev portal that uses it

still maple
#

oh yeah that

scenic brook
#

Not sure what uses it in client, if anything

still maple
#

i remember when i was checking for my website doing embed i used that

scenic brook
#

I did but it was still just weird that they'd slowly convert in chunks

#

I'll redo it sometime

still maple
#

and i realize discord doesn't even fully respect the spec of the embed system they implement

scenic brook
#

Oh the other thing with batching them is that you can't tell which is which when they come back

#

I think anyway, it's been like 10 months

charred monolithBOT
scenic brook
#

But I think if you send 5 urls and only 2 have valid embeds, you just get two embed objects back with no indicator of the url that created it besides embed.url which isn't all that useful

elder plinth
#

what endpoint

scenic brook
#

unfurl embeds

still maple
#

i have a stupid idea
instead of asking that API
send the link inside a specific channel so discord give you the embed back then delete it
surely this couldn't go wrong
-# wdym self-bot moment

scenic brook
#

If the embed.url property matches nicely then matching it back to the url you sent isn't too bad

#

But they don't all match nicely

still maple
#

just use AI to tell which is which smh

scenic brook
#

Still, I know more now than I did a year ago so I can dive into again sometime

still maple
#

Vencord now with GPT integration to get nicer embeds

scenic brook
#

I'd consider adding the ability for it to just pull the data manually but it'd be pretty bad security wise so suffoPeepoShrug

elder plinth
#

when would the url not match

scenic brook
#

Just access every link you scroll by, who cares suffoClueless

scenic brook
#

Tbf I already attempt to make weird URLs convert back and forth anyway so I can tell which URL you're clicking to replace so it might not be too bad

elder plinth
#

oh it does drop things after a hashtag

#

.startsWith Clueless

scenic brook
#

https://youtu.be/WOQJkS8l2sk for example, the embed url is the full youtube.com/watch?v=

Visit https://www.squarespace.com/WAN and use offer code WAN for 10% off

Get 20% off DeleteMe US consumer plans when you go to https://joindeleteme.com/WAN and use promo code WAN at checkout.
DeleteMe International Plans: https://international.joindeleteme.com/

Enter AMD's giveaway at https://bit.ly/4lgkIIG for a chance to win a Pro Gaming Upg...

โ–ถ Play video
still maple
scenic brook
#

Not that I see

still maple
#

likely

jolly egret
#

vtest main

nimble pendantBOT
nimble pendantBOT
nimble pendantBOT
# jolly egret vtest main
Bad Patches

CustomIdle (had no effect):
ID: 517100
Match: ```
/Math.min((\i.\i.getSetting()*\i.\i.\i.SECOND),\i.\i)/


**__WebContextMenus (had no effect):__**
ID: `29264`
Match: ```
/return\s*?\[.{0,50}?(?=\?\(0,\i\.jsxs?.{0,100}?id:"copy-image")/

SuperReactionTweaks (had no effect):
ID: 960020
Match: ```
/(?<=(\i)=\i=>{.+?)(\i(\i,\i))>=\i(?=).+BURST_REACTION_EFFECT_PLAY:\1)/


**__VencordToolbox (had no effect):__**
ID: `984370`
Match: ```
/(?<=function (\i).{0,100}\()\i.Fragment,(?=.+?toolbar:\1\(\))/

NoticesAPI (had no effect):
ID: 933429
Match: ```
/(?<=function (\i)(\i){)return null!=(\i)(?=.+?NOTICE_DISMISS:\1)/


**__GreetStickerPicker (had no effect):__**
ID: `814820`
Match: ```
/innerClassName:\i\.welcomeCTAButton,(?<={channel:\i,message:\i}=(\i).+?)/

ShowHiddenChannels (had no effect):
ID: 734386
Match: ```
/maxUsers:\i,users:\i(?<=channel:(\i).+?)/


**__ShowAllMessageButtons (had no effect):__**
ID: `773176`
Match: ```
/(?<=(\i)=)\i(?=&&.+?isExpanded:\1)/
Slow Patches

SuperReactionTweaks (took 6.3ms):
ID: 960020
Match: ```
/(?<=(\i)=\i=>{.+?)(\i(\i,\i))>=\i(?=).+BURST_REACTION_EFFECT_PLAY:\1)/

jolly egret
#

We need to push dev to main

charred monolithBOT
jolly egret
#

thanks vee

charred monolithBOT
#
[Vendicated/Vencord] New tag created: v1.12.12
charred monolithBOT
#

This pull request introduces the new NotiQuick plugin for Discord/Vencord, which streamlines notification management by adding a right-click context menu to the notifications bell and provides quick actions to mark all server or DM notifications as read. The PR includes the full implementation, plugin settings, a README, and a bell icon animation for improved user experience.

New Plugin Implementation and Features:

  • Added the NotiQuick plugin in index.tsx, which attaches a co...
ivory hollow
#

aislop?

elder plinth
#

dom manipulation lol

charred monolithBOT
scenic brook
#

ruels

charred monolithBOT
#

Thank you for your feedback. This was my first plugin, so I didnโ€™t expect it to be perfect. I designed the README to look visually appealing, and some parts of the code were created by AI, mainly fixes and logic I didn't know/wasn't confident with, seeing as though Iโ€™m not very experienced with React.

I wasnโ€™t aware that my plugin would violate any guidelines, so Iโ€™ll retract the PR and take another look. Or, I might just use it myself as a userPlugin..

charred monolithBOT
fading cedar
charred monolithBOT
#

What happens when the bug or crash occurs?

When sharing a Google Calendar and sending a share link, the share ID is removed from the URL. A Google Calendar invite is structured like https://calendar.google.com/calendar/u/0?cid=*****.

What is the expected behaviour?

I expect ClearURLs to keep the share ID so that the sharing works properly.

How do you recreate this bug or crash?

Go to Google Calendar, go to Calendar Settings for a particular calendar, and get a shareable lin...

fossil inlet
# charred monolith

assuming they're correct about the google calender ID format, it does look like cid is removed from all urls

charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
ivory hollow
#

vext

nimble pendantBOT
limber skiff
#

nookies 2.0

dusk blaze
#

why so many fake nookies lately

brazen bone
#

Was there ever a real nookie?

charred monolithBOT
#

Pull Request Overview

This PR introduces a new plugin called "ImageFilename" that displays image and GIF filenames as tooltips when hovering over them in Discord. The plugin was ported from an existing moonlight-extensions implementation.

  • Adds tooltip functionality for images and GIFs showing their filenames
  • Includes configurable option to show full URLs instead of just filenames
  • Special handling for GIF hosting sites (tenor, giphy, imgur) that always show full URLs

Reviewed C...

austere talon
#

insane

#

it's user facing text vs developer facing text

dusk blaze
#

oh my god

#

a plugin was just merged

#

fawn bought her way into vencord

scenic brook
#

Didn't pay enough

limber skiff
#

I'm confused why is the dev vee

charred monolithBOT
scenic brook
#

vee rewrote it

austere talon
#

@limber skiff remember how i wanted to make our own Paragraph, Heading etc components

limber skiff
#

yeah

austere talon
#

if we do that, we can also make those components fallback to basic html if vencord fails to find the Text component

#

so settings ui wont break anymore

#

we should make sure settings only use those components by us

and then they will just fallback to extremely basic text

#

it will look ugly if it breaks but will still work fine

limber skiff
#

why not remake text

austere talon
#

do you know how much effort that is

limber skiff
#

not really

#

havent looked much at it

austere talon
#

if we wanna be as powerful as discord

limber skiff
#

we could still use their variant classes

austere talon
#

whats the point

limber skiff
#

and fallback to a sane default if they fail

#

hmm

austere talon
#

we have to webpack find

limber skiff
#

yeah true

austere talon
#

well we could have redundance

#

like

try to find text
if it fails, try to find variant classes

limber skiff
#

not worth it

#

just from the base text we can already re-implement the rest

austere talon
#

well the base text is all we need

#

:P

limber skiff
#

yeah

austere talon
#
  1. find Base text
  2. if base text fails, render into div and try to find variant classes
  3. if variant classes fail, just leave it as a plain div (all text will be default size)
limber skiff
#

we need vencord components package immediately

#

nah jk it makes no sense if they are based in webpack finds

austere talon
#

actually remaking their text components wouldnt be that hard

#

it'd be like

.text-base {
    font-family: var(--font-primary);
    line-height: normal;
}

.text-sm {
    font-size: .875rem;
}
.text-md {
    font-size: 1rem;
}
.text-lg {
    font-size: 1.25rem;
}

.text-normal {
    font-weight: 400;
}
.text-medium {
    font-weight: 500;
}
.text-semibold {
    font-weight: 600;
}
.text-bold {
    font-weight: 700;
}
.text-extrabold {
    font-weight: 800;
}
#

then just combine these classes

charred monolithBOT
#
[Vendicated/Vencord] New branch created: uikit
scenic brook
#

First

elder plinth
#

first

spiral merlin
#

we can remove this legacy code

austere talon
#

not yet

jolly egret
#

plugin merged and it's not mine

bright island
charred monolithBOT
dusk blaze
#

UIKit kinda like ๏ฃฟย iOS โ“

#

@warm quiver huge

dusk blaze
#

then you can kys first

charred monolithBOT
austere talon
#

writing this pr made me realise how amazing having a text component like this is

#

will add to my own sites from now on

dusk blaze
#

make @vencord/components

#

then i can just bun install @vencord/components and use

austere talon
#

๐Ÿ˜ญ

#

settings use so many discord components guhh

#

do we really wanna rewrite it without any of them

brazen bone
#

Will you use discord's classnames?

#

Would suck for theming otherwise

austere talon
#

what the hell are you themeing basic text components for

brazen bone
#

I mean for things like sliders and checkboxes/switches

bright island
#

aesthetics so crazy it's gonna theme the code itself

ivory hollow
austere talon
#

right now it's only text components

#

But if we do end up replacing more theme relevant components, I'll make sure that they have intuitive classes

charred monolithBOT
spiral merlin
#

@austere talon what font are u using on the linux ? i switched from mac to linux

charred monolithBOT
#

feat: add toggleGuildAndChannelList plugin

Introduces a new plugin that adds a header bar icon to toggle visibility of
the Guilds and Channels sidebars. The icon uses a custom SVG inspired by
the guilds/channels layout (three vertical bullets with horizontal lines).

Features:

  • Toolbar button integrated with Discordโ€™s HeaderBarIcon, full hover/tooltip behavior
  • Functional toggle by applying hm-hide-sidebar body class
  • Hover and focus-visible states styled to match native button...
scenic brook
#

The basic settings components should probably have fallbacks at least if the idea is for the plugins page to still work if finds fail

shell shuttle
#

aige

#

paige

charred monolithBOT
fossil inlet
#

discord added avatars to the thing in settings

dusk blaze
fossil inlet
woeful sable
#

Make it a loading quote instead of user status

scenic brook
#

What even caused you to come across a two year old PR

spiral merlin
#

guys please help me with fixing this patch

elder plinth
#

null.{0,30}?nsfwAllowed
null.{0,40}?ageVerificationStatus

spiral merlin
#

th

#

thx*

jolly egret
austere talon
#

its fine

#

but this is the wrong channel anyway

jolly egret
#

i kinda worded it wrong but yeah i meant to use a different channel because this isn't core

shell shuttle
scenic brook
#

Green button

#

Must press

#

They probably also thought they were PRing in their own repo

limber skiff
#

@austere talon they are playing with us

shell shuttle
fossil inlet
charred monolithBOT
dusk blaze
#

why is this popup so ugly on windows smh

#

veeeeee ๐Ÿ˜ญ will pull a userplugininstaller and make a custom html popup

left sequoia
#

from what i understand V wants to be in full control of whats allowed and whats not, and if its done inside the UI you could simply spoof it?

#

or am i stupid?

austere talon
left sequoia
#

that means a new browserwindow instance no?

austere talon
#

yeah

left sequoia
#

fuck dat

#

thats GG resources

austere talon
#

I mean it works and it's not long lived haha

#

I do it for something else

scenic brook
#

It doesn't matter to most people but I feel like when I see a native window pop up it gives more of an indication that this is isolated and safe

#

If it still looked like discord I'd be more ehhh

left sequoia
#

while i agree, its not something the user should ever be concerned in the first place - is the way i design my apps

#

but vencord is a lot different, since users have.... 2 brain cells

#

which is on average 2 more than my users

charred monolithBOT
devout stump
#

so randomly after some time, vencord started shitting itself on build

โšก Done in 65ms
โœ˜ [ERROR] Could not resolve "@vencord/discord-types/enums"

    src/plugins/fakeNitro/index.tsx:27:34:
      27 โ”‚ import { StickerFormatType } from "@vencord/discord-types/enums";
         โ•ต                                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  You can mark the path "@vencord/discord-types/enums" as external to exclude it from the bundle,
  which will remove this error and leave the unresolved path in the bundle.

โœ˜ [ERROR] Could not resolve "@vencord/discord-types/enums"

    src/plugins/fakeNitro/index.tsx:27:34:
      27 โ”‚ import { StickerFormatType } from "@vencord/discord-types/enums";
         โ•ต                                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  You can mark the path "@vencord/discord-types/enums" as external to exclude it from the bundle,
  which will remove this error and leave the unresolved path in the bundle.

2 errors```
the build works, im even using it now. except for settings, i also don't have any changes to code except for one additional self made plugin and well. settings for whole vencord don't work
#

i pulled from github, im up to date

austere talon
#

docs explain this

charred monolithBOT
fossil inlet
#

guhhh they pushed stable @limber skiff

limber skiff
#

ugh

#

ill add both patch versions

#

until they stop changing it back and forth

olive aurora
#

common occurrence in this server

dusk blaze
#

fake nookies

dusk blaze
#

showhiddenchannels seems to trigger the 2fa requirement warning for users without 2fa

#

@fossil inlet fix

charred monolithBOT
charred monolithBOT
gaunt bluff
austere talon
#

it's good

dusk blaze
#

move to KOTLIN

scenic brook
#

java number one (i haven't learned kotlin)

dusk blaze
#

java is hell to work with

austere talon
#

kotlin is 2x as big as the entire vendroid app

scenic brook
#

I like java a lot but it was my first language so that's probably why

dusk blaze
#

lc.@grok how do you reduce an android appโ€™s size as a developer

rancid idolBOT
# dusk blaze lc.@grok how do you reduce an android appโ€™s size as a developer
how do you reduce an android appโ€™s size as a deveโ€ฆ

To shrink an Android app's size:

  1. Enable R8/ProGuard in build.gradle for code minification, shrinking, and obfuscation.

  2. Use Android App Bundles (AAB) for dynamic feature delivery, reducing initial download.

  3. Optimize assets: Convert PNGs to WebP, use vector drawables, remove unused resources via shrinkResources.

  4. Eliminate redundant libraries; audit dependencies with Gradle tasks.

  5. Split large assets into on-demand modules.

Aim for under 150MB to avoid warningsโ€”test with bundletool.

austere talon
dusk blaze
#

tbf iโ€™m shipping four gifs in my apk

#

vendroidenhanced having different splashes before vesktopโ€ฆ

jolly egret
#

consider clicking on their name then clicking message

charred monolithBOT
charred monolithBOT
pine topaz
#

apparently their support server has a patched "stereo enabler" hosted on mediafire

bright island
#

if you name anything after bape i think you should be locked in the paris catacombs

charred monolithBOT
scenic brook
#

Came off creepy but then I saw it was DMs only

scenic brook
#

Unfortunate

austere talon
#

is it time to move toolbox up here

glass jasper
austere talon
charred monolithBOT
elder plinth
#

big if true

charred monolithBOT
austere talon
#

vtest dev

nimble pendantBOT
nimble pendantBOT
# austere talon vtest dev
Bad Patches

IgnoreActivities (had no effect):
ID: 293389
Match: ```
/#{intl::SETTINGS_GAMES_TOGGLE_OVERLAY}.+?}(),(?<=nowPlaying:(\i)=!1,.+?overlay:\i,[^}]+?}=(\i).+?)/


**__SuperReactionTweaks (had no effect):__**
ID: `960020`
Match: ```
/(BURST_REACTION_EFFECT_PLAY:\i=>{.+?if\()(\(\(\i,\i\)=>.+?\(\i,\i\))>=\d+?(?=\))/
nimble pendantBOT
# austere talon vtest dev
Bad Patches

IgnoreActivities (had no effect):
ID: 293389
Match: ```
/#{intl::SETTINGS_GAMES_TOGGLE_OVERLAY}.+?}(),(?<=nowPlaying:(\i)=!1,.+?overlay:\i,[^}]+?}=(\i).+?)/


**__SuperReactionTweaks (had no effect):__**
ID: `960020`
Match: ```
/(BURST_REACTION_EFFECT_PLAY:\i=>{.+?if\()(\(\(\i,\i\)=>.+?\(\i,\i\))>=\d+?(?=\))/
charred monolithBOT
jolly egret
austere talon
charred monolithBOT
scenic brook
#

awful

#

The comment not the plugin

still maple
# austere talon

imo top bar should be a top bar and imo client-side decorations should not be a thing (not everyone will like this take)
unless they replicate the server-side buttons exactly the same way
(yes i'm tilted that i had to CSS discord to make the buttons not different from every single other app on my system)

austere talon
#

okay?

#

why are you telling me that

fossil inlet
#

imagine discord uses the react compiler someday

I was playing around with it and it did this to one of my components

function ne(t) {
  const e = R.c(36), {initialValue: l, value: n, onChange: r} = t;
  oe(!(l !== void 0 && n !== void 0),
     'Switch cannot be both controlled and uncontrolled');
  const i = n !== void 0, [c, o] = _.useState(n ?? l ?? !1), a = i ? n : c,
        [u, b] = _.useState(l ? 1 : 0);
  let h;
  e[0] !== u ? (h = ie(u), e[0] = u, e[1] = h) : h = e[1];
  let g;
  e[2] === Symbol.for('react.memo_cache_sentinel') ?
      (g = {config: {mass: .5}}, e[2] = g) :
      g = e[2];
  const f = le(h, g);
  let v;
  e[3] !== u ? (v = ce(u), e[3] = u, e[4] = v) : v = e[4];
  let d;
  e[5] === Symbol.for('react.memo_cache_sentinel') ?
      (d = {config: {mass: .1}}, e[5] = d) :
      d = e[5];
  const x = le(v, d);
  let N, z;
  e[6] !== i || e[7] !== n ? (N = () => {i && (o(n), b(n ? 1 : 0))}, z = [i, n],
                              e[6] = i, e[7] = n, e[8] = N, e[9] = z) :
                             (N = e[8], z = e[9]),
      _.useEffect(N, z);
  let C, S;
  e[10] !== f || e[11] !== x || e[12] !== u ?
      (C = () => {f.start(ie(u)), x.start(ce(u))}, S = [u, f, x], e[10] = f,
       e[11] = x, e[12] = u, e[13] = C, e[14] = S) :
      (C = e[13], S = e[14]),
      _.useEffect(C, S);
  const E = a ? 'bg-primary' : ' border border-bg-fg-800 bg-bg-300';
  let y;
  e[15] !== E ?
      (y = F(
           'w-12 h-8 rounded-full flex justify-center transition-[background-color,border-radius] duration-250',
           E),
       e[15] = E, e[16] = y) :
      y = e[16];
  let p;
  e[17] === Symbol.for('react.memo_cache_sentinel') ?
      (p = M => {M.detail > 1 && M.preventDefault(), b(2)}, e[17] = p) :
      p = e[17];
  let w;
  e[18] !== a || e[19] !== i || e[20] !== r || e[21] !== u ?
      (w =
           () => {
               u === 2 &&
               (b(i     ? a ? 1 : 0 :
                      a ? 0 :
                          1),
                r?.(!a), o(!a))},
       e[18] = a, e[19] = i, e[20] = r, e[21] = u, e[22] = w) :
      w = e[22];
  let T;
  e[23] !== a ? (T = () => {b(a ? 1 : 0)}, e[23] = a, e[24] = T) : T = e[24];
  const B = a ? 'fill-neutral' : 'fill-bg-fg-600';
  let $;
  e[25] !== B ?
      ($ = F('transition-colors duration-250', B), e[25] = B, e[26] = $) :
      $ = e[26];
  let k;
  e[27] !== f || e[28] !== x || e[29] !== $ ?
      (k = s.jsx('svg', {
        viewBox: '0 0 24 24',
        className: 'flex items-center justify-center w-full h-full',
        children: s.jsx(se.circle, {cx: f, cy: 12, r: x, className: $})
      }),
       e[27] = f, e[28] = x, e[29] = $, e[30] = k) :
      k = e[30];
  let D;
  return e[31] !== y || e[32] !== w || e[33] !== T || e[34] !== k ?
             (D = s.jsx(re, {
               className: y,
               onMouseDown: p,
               onMouseUp: w,
               onMouseLeave: T,
               children: k
             }),
              e[31] = y, e[32] = w, e[33] = T, e[34] = k, e[35] = D) :
             D = e[35],
             D
}
#

why is discord using unhashed intl keys here

scenic brook
#

Seems like that A11Y loading is the only place it's not using hashes

#

That's a bad screenshot but those are the only two results

prime dew
brazen bone
#

Is there a plugin to kill the titlebar yet?

prime dew
#

Unsure, sadan said he wanted to make one

charred monolithBOT
charred monolithBOT
limber skiff
#

vtest dev2

nimble pendantBOT
nimble pendantBOT
nimble pendantBOT
charred monolithBOT
charred monolithBOT
#

What happens when the bug or crash occurs?

With the new allowlist for resources, https://raw.githubusercontent.com/ is not whitelisted, even though it says GitHub resources are whitelisted. I assume this url was forgotten. People will get a warning even though this domain should be trusted.

What is the expected behaviour?

It should be allowed.

How do you recreate this bug or crash?

  1. Use a theme that uses https://raw.githubusercontent.com/
  2. The resource gets blocked

E...

fossil inlet
#

message latency looks ugly with show timeout thing

#

?remind 2pm fix

shut vineBOT
#

Alright @fossil inlet, in 13 hours, 29 minutes and 34 seconds: fix

charred monolithBOT
dusk blaze
#

finally slimy sadan sending her spotify links with the tracking parameters will be over

scenic brook
#

Damn. PR'd a feature someone else was already working on before they could

elder plinth
#

๐Ÿ˜ญ they were working on something for themselves and had gotten nowhere by the time I gave them the code I ended up using in the pr

#

although looking at v's comment in another pr I might need to find a way to not be updating the content attribute directly even though I am backing it up to originalContent ๐Ÿค”

dusk blaze
elder plinth
#

well it is currently just modifying content and backing it up. I couldn't find where the content was itself used to render in the message

charred monolithBOT
elder plinth
#

well I found where it is used I just cant get the messages to rerender when the rules update now

limber skiff
#

just ignore that

#

no need to update existing messages

elder plinth
#

ok pushed. I just really wish I could figure out why I couldnt get it to rerender them. only thing that ever worked was modifying message.content. couldnt get changes to stringRules or regexRules to trigger it or even just by toggling a new hidden bool setting. nothing worked ๐Ÿ˜ญ

#

as for the other comment, there's already an option to apply the rule to both at once. and I dont see checkboxes working here visually. there's no room on the same line as the input boxes, and if they're on a 2nd line like the dropdown currently is where would their labels go?

scenic brook
#

Could just add a second dropdown

#

Apply to incoming
Apply to outgoing
Apply to both

limber skiff
#

a dropdown is pretty ugly

#

you can do something like console janitor

#

which in fact also needs to be adjusted for the new margins

limber skiff
shut vineBOT
#

@fossil inlet, <t:1756009826:R>: fix

fossil inlet
charred monolithBOT
fossil inlet
nimble pendantBOT
left sequoia
odd heath
#

I once again ask for reviews on my settings arrays PR blobcatcozy

scenic brook
#

No

charred monolithBOT
glass jasper
#

Hang statusโ€™ coming back

#

Wonder if that old 'NoDefaultHangStatus' plug-in will have to come back too

dusk blaze
#

what was a hang status again

#

is it just this

glass jasper
dusk blaze
#

oh i c

charred monolithBOT
charred monolithBOT
limber skiff
#

we need to pay attention when they bump intl lib in the app

#

they changed runtimeHashMessageKey

austere talon
#

lmaoo

#

@errant nacelle how did you even notice that

fossil inlet
charred monolithBOT
#

Content

Please consider adding a logging feature to the alwaysExpandRoles plugin that records when a user reacts to a message and then quickly removes their reaction. This would help track who interacted with the message, even if the reaction was removed almost immediately. It would be useful for moderation and understanding user interactions in channels where this behavior occurs.

Request Agreement

  • [x] I have read the requirements for opening an issue above
brazen bone
#

What does that even have to do with alwaysExpandRoles?

#

MessageLogger would at least make sense

fossil inlet
#

the life of a discord component

#

exported 3 times to only be used once

limber skiff
#

is that our select component

#

ugh it is

#

gotta fix that fast because it impacts plugin settings

gritty iris
gritty iris
#

removing the classname fixed that so thats all I know

austere talon
gritty iris
#

they screwed the style or smth as well

charred monolithBOT
gritty iris
fossil inlet
gritty iris
austere talon
#

using i18n string here is bad because those will also all break soon

#

we gotta prepare for that anyway

gritty iris
#

wasnt really much to search by that was consistent

#

ill double check

limber skiff
#

those strings are too generic too

gritty iris
#

im pulling up the component rn

#

all of these searchs are horrible imo