#๐Ÿ‘พ-core-development

1 messages ยท Page 182 of 1

charred monolithBOT
still wasp
#

I don't think so

#

My point is that since datastore is local only, any settings that use components aren't transferable without a js snippet or something else

jagged cloak
#

ahh ic

still wasp
#

So there could be a function that allows it's info to be saved just like any of the other optiontypes

charred monolithBOT
charred monolithBOT
long stream
#

y macos-only? YukiConfused

#

is there no other way to interface with that app?

#

also what app

#

pain

#

also to answer your initial question: no there isn't

#

ideally you would modify both the installer and the build scripts

#

you could also jankily detect the running system and check everytime but KanadeJii

still wasp
#

I'm suprised there's no way to make a plugin require an os

#

That should exist, seems like it would be useful for future cases

long stream
#

yeah most patches work on every platform

still wasp
#

Pop off

long stream
#

@placid hinge as a janky workaround, you could display a error banner if the platform detected isn't macos

#

in the plugin settings

still wasp
#

I just added the os checking thing to my fork and it works wtf that was so easy

#

It works if i switch the target to .linux

#

Pretty cool

austere talon
austere talon
still wasp
#

So it would work fine for a fork where manual building is required anyway?

sterile oak
#

I won't mind The cutest devtools mod

charred monolithBOT
long stream
austere talon
#

@long stream to have the fully correct behaviour, you should patch this func instead of replacing the export, its still the same module

what i suggest doing is adding like:

if (!e.getTrueValue) return true;

at the very top

#

then you can still call the func from the message replacement like:

EmojiChecks.isUnusableRoleSubscriptionEmoji({ ...emoji, getTrueValue: true }, currentGuildId)
long stream
austere talon
#

or you could go the easier route

#

and change it to

n.d(t, {
    isPurchasableRoleSubscriptionEmoji: function() {
        return a
    },
    isRoleSubscriptionEmoji: function() {
        return r
    },
    isUnusableRoleSubscriptionEmoji: () => () => false,
    isUnusableRoleSubscriptionEmojiOriginal: function() {
        return s
    }
});
long stream
#

both seem so complicated tho

austere talon
#

howw

#

for the second u dont even need to change your match

long stream
#

veee did you forget about my struggles with replacing the export

#

i'll definitely lose my mind trying to do either BocchiPain

austere talon
#

you're already matching isUnusableRoleSubscriptionEmoji:function\(\){ and inserting the return () => false inside the func

long stream
#

omg okay i'm disabling fakenitro

austere talon
#

you'll just have to change your replacement a bit

#

yoiu can do it!!

spark pivot
austere talon
#

flat config is new eslint shit

spark pivot
#

blehh

long stream
#

add ";" and it outputs like it should, but then js complains about an unexpected ";"
remove the ";" and it outputs completely wrong, and js still complains

#

i'm struggling with that and you're expecting me to be able to both patch the function and create a clone of it BocchiPain

austere talon
fringe basalt
#

@limber skiff hello your commit kinda broke this function

#

it's now receiving an empty object as the 2nd param

#

even tho it's being called with the proper one

#

(idk how to use ErrorBoundary.wrap so i can't really fix it myself)

austere talon
#

yeah it's wrong

#

is that in dev only?

fringe basalt
#

oh i think i see

#

ErrorBoundary.wrap only accepts 1 param doesn't it

fringe basalt
austere talon
austere talon
#

you need to pass an object and destructure it

fringe basalt
#

yea

#

time to fixโ„ข๏ธ

#

vanilla canary btw

odd heath
#

yea

#

trhought it was vc

charred monolithBOT
austere talon
#

btw we should add icons

#

so ugly

long stream
topaz spoke
limber skiff
#

but yeah makes sense if it doesn't work

#

dumb me

austere talon
#

its impossible for it to work correctly :p

#

and even some of the others arent really correct

#

this is basically worthless

return (
  <ErrorBoundary>
    <Foo bar={foo.bar} />
  </ErrorBoundary>
)
limber skiff
#

xd

austere talon
#

cause if foo undefined

#

it will error anyway

limber skiff
#

how so

charred monolithBOT
limber skiff
#

odd

fringe basalt
limber skiff
#

MutualGroupDMs was one that I tested if it worked and it did so yeah....

#

๐Ÿคทโ€โ™‚๏ธ

topaz spoke
austere talon
limber skiff
#

so how does using error boundary as component even work in other cases

fringe basalt
austere talon
#

so wrap is safer

limber skiff
#

yikes

austere talon
#

this will catch errors inside the Button component, but if props.type.analyticsName access errors it wont catch that

limber skiff
#

i should have known that before

#

๐Ÿ˜ฐ

austere talon
#

i think

charred monolithBOT
austere talon
#

it deosnt lol

limber skiff
#

what does wrap do differently

austere talon
#

wrap does it like this:

const YourCode = () => {
  ....
}

<ErrorBoundary>
  <YourCode />
</ErrorBoundary>
#

YourCode is always a valid component and can't error

#

only inside YourCode it can error

#

which will be caught

#

well it depends, if you do ErrorBoundary.wrap(null) it will still error and not catch it

#

but ErrorBoundary.wrap(() => {throw Error()}) is safe

limber skiff
#

i see

austere talon
charred monolithBOT
charred monolithBOT
charred monolithBOT
frail skyBOT
#
Bad Patches

None

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

#
Bad Patches

None

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

charred monolithBOT
limber skiff
#

I'm fixing my past mistakes with the error boundary

charred monolithBOT
#

1f1c80c ValidUser: fix crashing when viewing a valid-us... - Vendicated
f676581 ValidUser: fix rendering old mentions when mess... - Vendicated
59ee9c5 feat(ShowHiddenThings): Remove Discovery banned... - dolfies
9621dc7 EmoteCloner: allow cloning from reactions (#2458) - axiand
bd6f9e6 fix(MutualGroupDMs): properly pass props (#2457) - aamiaa

limber skiff
#

wtf we dont have Endpoints as a common

austere talon
#

Constants.Endpoints

limber skiff
#

you say right as I find that

charred monolithBOT
limber skiff
#

ugh found one place I missed kinda

charred monolithBOT
limber skiff
austere talon
#

how did this make it past review O_o

#

did i just not notice

limber skiff
#

I guess lol

charred monolithBOT
limber skiff
#

huh

charred monolithBOT
#

thanks for the contribution!

a few thoughts:

  • how safe is this? using dangerouslySetInnerHTML is sketch. we don't want any XSS happening
  • there are some commands that may load external files, such as
    \includegraphics[height=0.8em, totalheight=0.9em, width=0.9em, alt=KA logo]{https://katex.org/img/khan-academy.png}
    
    have you made sure these are disabled?
  • does this prevent infinite loops? e.g.
    \def\x{Hello!\par\x}
    \x
    

i'm also not sure h...

limber skiff
charred monolithBOT
#

can confirm it works as expected now in that regard!

however there seems to be a new issue: when using the currentServer option, the emoji picker (ctrl + e) will only show emojis of the current guild. the other two options will show all servers

i think the purpose of this plugin is to just hide it from the autocomplete menu when you type :a, right? so i think this is a bug

desert cosmos
charred monolithBOT
#

Wow, this looks great so far, especially for a first time contributor!

This is only a partial review for now, mainly cause i feel bad for taking so long to get to it

I'll have to do a more thorough review soon, hopefully tomorrow, due to the size & potential security issues there could be

I still see a bunch of TODO comments... Do you need help with those or are you still working on them?

frail skyBOT
#
Bad Patches

None

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

#
Bad Patches

None

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

charred monolithBOT
#

5c7fa55 XSOverlay: Adjust message length timeout (#2445) - nyakowint
fd7dafb fix(MessageLatency): Adjust for Discord kotlin ... - dolfies
902b6bc PinDMs: ErrorBoundary renderChannel - Nuckyz
1f1c80c ValidUser: fix crashing when viewing a valid-us... - Vendicated
f676581 ValidUser: fix rendering old mentions when mess... - Vendicated

charred monolithBOT
charred monolithBOT
#

Those are good points. I personally have no issue with dangerouslySetInnerHTML, but I understand that it can be seen as sketchy. I'm pretty sure there's an option in katex to set a time limit, and there probably is one for external urls too; I haven't looked.

And yeah the value of this plugin is pretty low. It came up as a plugin request a while ago, and it was fun to make. Perhaps it's better off remaining as a userplugin. I don't mind if you choose to close this.

charred monolithBOT
#

Discoverability is really hard... I do set the cursor, but that's not really enough. Underlining the marker would make it stand out a little more, but don't want it to stabd out too much. Making a default-on option to underline it would be possible, but ML already has quite many options. Requiring usercss to remove the underline would be very poor UX. Maybe just some explanatory text on inlineEdits option. Though do people even read that?

Gonna be a bit busy the next few days, but I'll s...

charred monolithBOT
charred monolithBOT
#

it can allow for custom notification sounds for certain messages
Basically this. The original goal was to make the moyai plugin but for the skull emoji with the bad to the bone riff. Figured it would be duplicate work so I opted to make a generalized plugin that allowed you to make your own custom sounds.

It's been a hot minute since this was updated so I'll need to do that if you're okay with actually adding it.

charred monolithBOT
woeful sable
#

Nothing like abusing a plugin :)

austere talon
woeful sable
charred monolithBOT
#

Discoverability is really hard... I do set the cursor, but that's not really enough. Underlining the marker would make it stand out a little more, but don't want it to stabd out too much. Making a default-on option to underline it would be possible, but ML already has quite many options. Requiring usercss to remove the underline would be very poor UX. Maybe just some explanatory text on inlineEdits option. Though do people even read that?

exactly my thoughts... i think specifying it in t...

frail skyBOT
#
Bad Patches

None

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

#
Bad Patches

Settings (had no effect):
ID: 394644
Match: /\{section:(\i\.\i)\.HEADER,\s*label:(\i)\.\i\.Messages\.ACTIVITY_SETTINGS/

StartupTimings (errored):
ID: 620163
Match: /{section:\i\.UserSettingsSections\.PAYMENT_FLOW_MODAL_TEST_PAGE/
Error: Unexpected token '{'

BetterSettings (had no effect):
ID: 923422
Match: /\(0,\i.default\)\(\)(?=\.filter\(\i=>\{let\{section:\i\}=)/

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

austere talon
#

WHAT DID THEY COOK

#

we cant patch that in a compatible way

verbal pumice
austere talon
#

this is so ugly

#

but idk how to do better

#

the code is pain

shell shuttle
#

looks good

austere talon
#
function I() {
        let e = function() {
            let e = (0,
            S.useUnseenOutboundPromotions)().length
              , t = (0,
            c.useIsPrepaidPaymentPastDue)()
              , s = (0,
            n.useStateFromStores)([E.default], ()=>E.default.getProps().impressionSource)
              , a = (0,
            u.usePendingRequestCount)()
              , i = (0,
            m.useShouldShowOverlaySettings)()
              , _ = (0,
            o.useEnableClips)()
              , [g] = (0,
            d.useGetDismissibleContent)(_ ? [l.DismissibleContent.CLIPS_SETTINGS_BETA_TAG] : [])
              , I = "useGenerateUserSettingsSections";
            (0,
            r.useTriggerDebuggingAA)({
                location: I + " auto on",
                autoTrackExposure: !0
            }),
            (0,
            r.useTriggerDebuggingAA)({
                location: I + " auto off",
                autoTrackExposure: !1
            });
            let {shouldMergeGameSettings: h} = T.GameSettingsMergeExperiment.useExperiment({
                location: "settings"
            });
            return (0,
            f.getConfig)({
                unseenGiftCount: e,
                showPrepaidPaymentPastDueWarning: t,
                impressionSource: s,
                numOfPendingFamilyRequests: a,
                isOverlaySupported: i,
                isClipsBetaTagShowing: g === l.DismissibleContent.CLIPS_SETTINGS_BETA_TAG,
                shouldMergeGameSettings: h
            })
        }()
          , t = a.useMemo(()=>[{
            header: g.default.Messages.USER_SETTINGS,
            settings: [_.Setting.ACCOUNT, _.Setting.GAMES, _.Setting.PROFILE_CUSTOMIZATION, _.Setting.PRIVACY_AND_SAFETY, _.Setting.FAMILY_CENTER, _.Setting.AUTHORIZED_APPS, _.Setting.SESSIONS, _.Setting.CONNECTIONS, _.Setting.CLIPS, _.Setting.FRIEND_REQUESTS]
        }, {
            header: g.default.Messages.BILLING_SETTINGS,
            divider: !0,
            settings: [_.Setting.PREMIUM, _.Setting.GUILD_BOOSTING, _.Setting.SUBSCRIPTIONS, _.Setting.GIFT_INVENTORY, _.Setting.BILLING]
        }, {
            header: g.default.Messages.APP_SETTINGS,
            divider: !0,
            settings: [_.Setting.APPEARANCE, _.Setting.ACCESSIBILITY, _.Setting.VOICE_AND_VIDEO, _.Setting.POGGERMODE, _.Setting.CHAT, _.Setting.NOTIFICATIONS, _.Setting.KEYBINDS, _.Setting.LANGUAGE, _.Setting.WINDOW_SETTINGS, _.Setting.LINUX_SETTINGS, _.Setting.STREAMER_MODE, _.Setting.SPEED_TEST, _.Setting.SETTINGS_ADVANCED]
        }, {
            header: g.default.Messages.ACTIVITY_SETTINGS,
            divider: !0,
            settings: [_.Setting.ACTIVITY_PRIVACY, _.Setting.REGISTERED_GAMES, _.Setting.OVERLAY]
        }, {
            divider: !0,
            settings: [_.Setting.CHANGELOG, _.Setting.MERCHANDISE, _.Setting.HYPESQUAD, _.Setting.EXPERIMENTS, _.Setting.DEVELOPER_OPTIONS, _.Setting.HOTSPOT_OPTIONS, _.Setting.DISMISSIBLE_CONTENT_OPTIONS, _.Setting.PAYMENT_FLOW_MODALS, _.Setting.TEXT_PLAYGROUND, _.Setting.TEXT_COMPONENTS, _.Setting.PROFILE_EFFECTS_PREVIEW_TOOL, _.Setting.QUEST_PREVIEW_TOOL]
        }, {
            divider: !0,
            settings: [_.Setting.LOGOUT]
        }, {
            divider: !0,
            settings: [_.Setting.SOCIAL_LINKS, _.Setting.CLIENT_DEBUG_INFO]
        }], []);
        return a.useMemo(()=>(function(e, t) {
            let s = [];
            return e.forEach(e=>{
                0 !== e.settings.length && (!0 === e.divider && s.push({
                    section: i.SectionTypes.DIVIDER
                }),
                null != e.header && s.push({
                    section: i.SectionTypes.HEADER,
                    label: e.header
                }),
                e.settings.forEach(e=>{
                    s.push(t[e])
                }
                ))
            }
            ),
            s
        }
        )(t, e), [t, e])
    }
#

this is what we need to patch

#

but theres no clean way to patch it

#

so i did this

#

@limber skiff

#

basically t (aliased to e inside the useMemo) contains object with only the labels

and then e (aliased to t inside the useMemo) contains mapping of label to proper object with element

#

we need to like push here

#

which optimally we'd do like js ), $self.addSections(s), s

#

but thats really ugly

limber skiff
#

just do whatever is less likely to break

austere talon
#

actually we could also add it here

#

maybe thats cleanest actually

limber skiff
#

does that hook not exist on stable?

austere talon
#

nah

#

only canary for now

limber skiff
#

hmm

#

lol they added quest preview tool

charred monolithBOT
austere talon
#

im confused

#

theres literally third group

charred monolithBOT
austere talon
#

i deliberately made the patch as generic as possible

prime dew
#

fix stuff

charred monolithBOT
charred monolithBOT
charred monolithBOT
limber skiff
#

@austere talon they fucking pushed to stable already

austere talon
#

good i rushed update

limber skiff
#

maybe we should monkey patch settings as fallback

austere talon
#

naaaah

#

im just gonna add a second patch fallabck

limber skiff
#

if you want you can patch a total different place

#

and use the thing I showed to you to put elements in array

#

if it's needed

austere talon
#

what thing u showed

limber skiff
#

the reduce method

#

of the aliucord detection

austere talon
#

oh nah

#

i would just patch the export

limber skiff
#

right lmao

austere talon
#

i mean we could also patch where its used

#

but at that point its overkill xd

limber skiff
#

i was thinking of that

spark pivot
#

What happened this time

charred monolithBOT
somber thorn
#

yeah they're straight up farming

spark pivot
#

no way they tried to do that to facebook

turbid hatch
#

oh its that person

#

and that compaany

#

stepsecurity is a legit company

#

but bleh

long stream
turbid hatch
#

no that's fine

#

they're just commit hashes, that's actually good security practice

#

but you dont need that on trusted actions, only on ones you don't trust

long stream
#

ah

#

ic

turbid hatch
#

it's to pin the versions to specific commits because tags are technically mutable

#

but commit hashes arent

long stream
#

unless you somehow manage to reassign a commit hash blobcatnom

turbid hatch
#

if that ever happens we will explode

austere talon
#

it's not possible

#

well with infinite time it is

#

but

#

that would also mean all passwords are unsafe

turbid hatch
#

infinite time and/or infinite computing power

austere talon
#

anyway actions/* are official github actions

#

so those are trusted

#

and if pnpm wants to hack us, it's gonna happen anyway

#

so there's no reason to pin those two

lime stone
turbid hatch
#

nop

#

the hash doesnt exist on the parent repo when its pulled down by actions

lime stone
#

you can put commit hash of fork in url of parent

turbid hatch
#

the ability to view it is purely a git UI thing, it doesnt actually exist in the repo

#

you can try it on the command line if u wanna

lime stone
#

that definitely won't work

#

idk exactly how actions works

turbid hatch
#

like that

#

pretty much

lime stone
#

ig it might affect it if it was using download zip url

#

๐Ÿ˜ญ

turbid hatch
#

it's just cloning and building the action, then running it

lime stone
#

this is commit from my repo

#

oh wait this might be arjix's branch which i cloned

#

๐Ÿ˜ญ

turbid hatch
#

yeah that's just a githubism

#

that doesnt actually exist in the vencord repo on teh git side of things

lime stone
#

yeah sound-changer != cusotm-sounds

#

for some reason i ended up pushing arjix's code to one branch and mine to another

#

i didn't base off arjix's in the end

nimble plaza
#

would google get pissy if you made the extension fetch something on the gh repo and parse that for extra patches to apply

#

for when discord breaks smt important and it needs to be pushed out fast and google wont approve quick

nimble plaza
austere talon
#

no remote code allowed

nimble plaza
#

fair

austere talon
#

actually if it's just regex

nimble plaza
#

yeah thats what i was thinking

austere talon
#

maybe they won't realise

nimble plaza
#

its not remote code

austere talon
#

but better not to risk

nimble plaza
#

fair

austere talon
#

mozilla thanos snapped the extension one day

#

chrome ext has like nearly 100k users somehow

nimble plaza
#

what about querying a server to display a message that something is wrong

#

instead of ppl needing to check the server

austere talon
#

yeah i thought about that

#

like announcement feed

#

could do that

median rapids
nimble plaza
#

actually you could do that with @nimble pendant

median rapids
#

or just accept the invite within the client meowlien

#

but yeah that too

rugged spire
#

@austere talon how the fuck is google okay with the eval in oneko plugin btw

nimble plaza
#

i guess its commit hash pinned so its okay?

rugged spire
#

eh true

nimble plaza
#

although iirc it originally wasnt and google didnt notice

rugged spire
#

you should be more worried about github going rogue

austere talon
nimble plaza
#

i swear it wasnt and korbo noticed it or something stupid

somber thorn
#

just "commit hash pin it" but instead of fetching from github.com fetch from like gjthub.com and update it with time, no one will notice

austere talon
#

but yeah technically they don't allow it

rugged spire
#

chrome extension review team is stupid then

charred monolithBOT
charred monolithBOT
#

I was deperatly looking for a plugin like this. When I have Discord open on my second monitor and have an eye on it, I am there. Hands on my keyboard and mouse, and always an eye on Discord. But I still get set to idle when I don't actually click into the client for too long and then they think I'm not available and nobody messages me any more :( I'm so glad there's a plugin in development to fix this!!
I have a question though. I am absolutely not familiar with github though, so sorry if th...

limber skiff
#

oh you changed the default settings location ven?

austere talon
#

the reason is that the old default location might be removed in the future

#

theres an experiment that puts activity settings in the profile section

limber skiff
#

I see

frail skyBOT
#
Bad Patches

Settings (had no effect):
ID: 394644
Match: /\{section:(\i\.\i)\.HEADER,\s*label:(\i)\.\i\.Messages\.BILLING_SETTINGS/

StartupTimings (errored):
ID: 620163
Match: /{section:\i\.UserSettingsSections\.PAYMENT_FLOW_MODAL_TEST_PAGE/
Error: Unexpected token '{'

BetterSettings (had no effect):
ID: 923422
Match: /\(0,\i.default\)\(\)(?=\.filter\(\i=>\{let\{section:\i\}=)/

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

austere talon
#

enable this

limber skiff
#

huh

frail skyBOT
#
Bad Patches

Settings (had no effect):
ID: 394644
Match: /\{section:(\i\.\i)\.HEADER,\s*label:(\i)\.\i\.Messages\.BILLING_SETTINGS/

StartupTimings (errored):
ID: 620163
Match: /{section:\i\.UserSettingsSections\.PAYMENT_FLOW_MODAL_TEST_PAGE/
Error: Unexpected token '{'

BetterSettings (had no effect):
ID: 923422
Match: /\(0,\i.default\)\(\)(?=\.filter\(\i=>\{let\{section:\i\}=)/

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

austere talon
austere talon
#

i'll remove it in a bit

limber skiff
#

I'll do it

#

and fix the broken patches

austere talon
#

nah cause i also wanna future proof it by adding another patch

limber skiff
#

okay

#

I will let you handle settings and startup timings

austere talon
#

u can do the others :p

limber skiff
#

okay sure

#

easist fix of my life

charred monolithBOT
rugged spire
#

we love business months

limber skiff
#

startup timings is annoying to add now

rugged spire
#

vee will never touch the plugin that vee half made

charred monolithBOT
frail skyBOT
#
Bad Patches

Settings (had no effect):
ID: 394644
Match: /\{section:(\i\.\i)\.HEADER,\s*label:(\i)\.\i\.Messages\.BILLING_SETTINGS/

StartupTimings (errored):
ID: 620163
Match: /{section:\i\.UserSettingsSections\.PAYMENT_FLOW_MODAL_TEST_PAGE/
Error: Unexpected token '{'

BetterSettings (had no effect):
ID: 923422
Match: /\(0,\i.default\)\(\)(?=\.filter\(\i=>\{let\{section:\i\}=)/

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

#
Bad Patches

Settings (had no effect):
ID: 394644
Match: /\{section:(\i\.\i)\.HEADER,\s*label:(\i)\.\i\.Messages\.BILLING_SETTINGS/

StartupTimings (errored):
ID: 620163
Match: /{section:\i\.UserSettingsSections\.PAYMENT_FLOW_MODAL_TEST_PAGE/
Error: Unexpected token '{'

BetterSettings (had no effect):
ID: 923422
Match: /\(0,\i.default\)\(\)(?=\.filter\(\i=>\{let\{section:\i\}=)/

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

limber skiff
#

@austere talon settings and startup timings working together ๐Ÿค

austere talon
#

heh

limber skiff
#

it's just a joke cuz they patch the same thing

charred monolithBOT
#

looks pretty good!

can definitely go forward with a merge after addressing a few issues and making sure it still works

also unrelated to your pr, but in hindsight the XOR encryption is a bit cursed... maybe we could instead move the quotes to a separate file quotes.txt (in plain text) and use

import QuoteLines from "~includeFile/quotes.txt"

perhaps you'd like to do that in your pr as well, and maybe we could then also add some fresh quotes

austere talon
#

very small nitpick but do e.settings?.[0]

charred monolithBOT
austere talon
#

just in case discord overcooks in the future

#

also what's that predicate for ๐Ÿ˜ญ

limber skiff
#

i removed it

#

thought it was the issue before

charred monolithBOT
limber skiff
#

the new settings patch is very smart

charred monolithBOT
#

can this already be installed and if so, how?

it can be installed, but it's not an official plugin yet (vee needs to approve it first) so you need to install the dev version of Vencord. then you download the index.ts in this pull request and you move it to src/userplugins/customidle (create a folder)

however you won't get any support with dev versions/unofficial plugins like this one so you have to figure it out...

austere talon
limber skiff
#

yeah

austere talon
limber skiff
#

I hate scroll problems

#

at least I found what's causing it

#

or I mean, the function that makes the scroll change

heavy cedar
#

is it the one about scroll anchors

#

like fixScrollPosition or something

limber skiff
#

not this time

#

it's related to this

#

better folders problem

#

found it I think

austere talon
#

redundancy

limber skiff
#

fallback?

#

nice

austere talon
#

works

#

i should make clicking this copy more useful info

#

thats pain to do cause discord uses an insane component for it guh

limber skiff
#

oh I think I found the issue

#

yep

#

the useEffect to call the scrollToGuild depends on the guildTree

#

but guildTree will always change because I modify it and create a new everytime

#

so it keeps calling the effect

#

I just need to cache :)

#

didnt work ๐Ÿ˜”

austere talon
#

stable 293362 (73826fe)
Vencord 840d571c (Dev)
Electron 29.1.1
Chromium 122.0.6261.111

#

now it copies that

limber skiff
#

it is the problem but the cache didnt work

#

fuck

#

oh im stupid

austere talon
#

wtf is this montrosity bro

limber skiff
#

old patches haha

austere talon
#

well it hasnt broken ever so no need to change it

limber skiff
#

but do

austere talon
#

nah lol

limber skiff
#

make it at least use \i

#

oh you do

#

nvm!

austere talon
#

i did yeah

charred monolithBOT
limber skiff
#

nice it worked

charred monolithBOT
rugged spire
charred monolithBOT
heavy cedar
#

grinding through the prs

#

very hopeful

limber skiff
#

god finally I fixed it

charred monolithBOT
limber skiff
#

@austere talon does memos that depend on component props need to include it on the dependencies?

#

I thought if the props changed the component rendered again completely

#

I guess not

limber skiff
#

you mean no as in they dont need to include?

austere talon
#

no they dont rerender

#

yes you need to include

limber skiff
#

I see!

#

thank you

charred monolithBOT
limber skiff
#

you should have prob removed this comment

#

it doesnt matter though

charred monolithBOT
#

The image option for the PetPet command has not been working for about 5 months now, as noted in the closed #2070 pull request. This finally fixes it so it actually works again. This also includes clearing the slash command draft after you run it, so if you run the slash command again, the previously uploaded file from the previous slash command run will not be there in the upload area. The code to clear draft is placed in more than one area within PetPet's code to make sure the slash command...

limber skiff
charred monolithBOT
#

thanks, looks good!

your formatting doesn't follow the project's configured formatter. make sure you're using vscode & have the suggested extensions installed! also in general i recommend using more newlines to separate different sections/"paragraphs" of the code

thank you! I'm kinda busy rn but I'll update the formatting of my other prs when I have time.

in terms of the formatting, I use jetbrains and it has eslint + editorconfig installed, so idk why it didn't autoformat

austere talon
limber skiff
#

yeah

austere talon
#

but ofc functionality needs testing

#

which psychopath uses these slash commands bro

charred monolithBOT
limber skiff
#

@austere talon wanna look more into it or can be merged?

charred monolithBOT
limber skiff
charred monolithBOT
limber skiff
#

okay I'm merging regex finds

charred monolithBOT
austere talon
#

god there are still so many prs

#

hey at least its already down 50prs

limber skiff
#

fire

austere talon
#

a few days ago it was still at 180

frail skyBOT
#
Bad Patches

None

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

#
Bad Patches

None

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

austere talon
#

lets merge main

charred monolithBOT
limber skiff
#

bro

austere talon
#

how

limber skiff
#

idk git is weird sometimes

charred monolithBOT
limber skiff
#

I ran a merge and it forgot the merge commit

austere talon
#

i wish google let u like temporarily disable ratings while you have updates pending

#

its so frustrating to have users complain and leave negative reviews just cause google is still delaying the update

limber skiff
#

discord patched it

#

๐Ÿ˜”

austere talon
#

well at least the two top guys left good stars anyway

limber skiff
#

true

#

google should just let us load vencord dinamically

#

it's not something that can survive without constant updates

austere talon
#

we could make an alternative chrome extension that updates vencord internally

#

and then distribute it on vencord.dev as alternative that you need to manually install

limber skiff
#

bro

#

you have no fucking idea

austere talon
#

but need to figure out how to store the code in a way we can load it synchronously

limber skiff
#

this makes jsdocs go poof

#

give me my description ๐Ÿ˜ญ

austere talon
#

btw i plan to rehaul docs soon

limber skiff
#

the one thing I didn't test... because well it was jsdocs

austere talon
#

maybe we can use some tool to auto generate docs from jsdoc

limber skiff
#

nvm

#

jsdoc is still poof without the omit apparently

#

whatever

#

it's because this is strongly typed I think, instead of being Patch[]

#

probably the fault of definePlugin

#

oh yeah also regex finds dont support \i

#

I just realized that

charred monolithBOT
charred monolithBOT
austere talon
median rapids
austere talon
#

meh i don't like that

#

ticking timebomb

#

mozilla also didn't notice the violations for like a year then randomly nuked the extension out of nowhere

limber skiff
#

can't we email google and explain well why we should be allowed to do it

#

or like

#

how is tampermonkey allowed

#

you can eval anything there

#

and has auto update

austere talon
#

because the user enters it i think

limber skiff
#

so why dont we do it

austere talon
#

we would have to make it so that the user has to paste vencord url in ig

limber skiff
#

make the person paste the code for vencord once

#

it's way better than having google review everything

#

and for loading vencord we just need to cache it, and when it needs update we update the cache and restart the page

#

I think we can maybe use the extension storage for it, idk if it's async

median rapids
#

just make it possible to use custom vencord forks

#

and have a sane default blobcatcozy

limber skiff
#

make the url auto filled lmaoo

median rapids
#

yorp

#

just add autotyper

austere talon
#

i think having a default is already not allowed

charred monolithBOT
#

How ready would you say this is or whatโ€™s blocking this from being added to the plugin library, @Vendicated?

@R00tB33rMan there's nothing blocking it from being merged, it's just that i haven't gotten to it yet! there's quite the backlog of pull requests so it sadly takes a while sometimes. anyway ill look at this some time in the coming few days

you (and anyone reading this) can always help by testing open pull requests early and leaving constructive feedback / finding bugs yourself
...

charred monolithBOT
austere talon
#

LMAOO

#

well i went from oldest to newest

#

to get some of the grandpas sorted out

austere talon
#

but it's still a bit questionable

#

not every user is reasonable like you

#

it's probably better to keep it a user plugin, you don't want dozens of people stalking your vc location SKULL_SKELETON

charred monolithBOT
alpine jacinth
#

Should i open a PR that add arch to vencord-debug, i think support people would love to have it

austere talon
#

the arch doesn't really matter

alpine jacinth
#

I see

austere talon
#

unless you like have trouble running the installer but at that point you can't run vencord debug anyway :p

alpine jacinth
charred monolithBOT
#

can you still reproduce the issue you mentioned? if not, this seems mergeable

honestly looking back i might've been stupid and forgot to rebuild after the second commit or something, but it seems to work now after testing with people

but please undo the unrelated changes to the descriptions. all those strings are converted to full caps anyway so it doesnt change anything and just adds noise

yep sounds good, i've gone ahead and reverted all of that

somber thorn
charred monolithBOT
charred monolithBOT
charred monolithBOT
topaz thistle
charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
somber thorn
charred monolithBOT
#

i get the idea but i feel like people would just abuse this to spam / mass mention. maybe you have an idea how to reduce the spam potential

Added some logic to only show the button for channels the user is currently in. The main idea is to quickly mention friends, what if there was a limit to how many people can be in the vc (what would a good limit be?) or only mention people you have a relationship with?

spark pivot
somber thorn
#

ahh

#

gotchu thanks

charred monolithBOT
#

Fixes #2462

the issue mentioned above applies to all plugins without a start/stop function defined (like MoreKaomoji)

this occurs because the stopPlugin and startPlugin functions in plugins/index.ts rely on a stop/start function being defined respectively

so when I disable VcNarrator, p.started will still be true bc VcNarrator doesn't have a stop() function defined

then when i try to enable it again, it'll error bc it thinks it's already started

fix is to move the `p.start...

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

None

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

#
Bad Patches

None

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

charred monolithBOT
limber skiff
#

thanks

charred monolithBOT
limber skiff
#

oh wait...

#

I missed this line :(

#

it has one more zero than it should

charred monolithBOT
limber skiff
#

okay nvm I fucked up more

austere talon
#

horror

limber skiff
#

nvm I didnt

#

it was just another mistake I didnt see when I tested

charred monolithBOT
limber skiff
#

a bit of skill issue

charred monolithBOT
limber skiff
#

@austere talon lmao look at showtimeout duration with compact mode

#

however I fixed this crazy space on normal mode

limber skiff
#

almost forgot to post comment again

#

dummy mean

charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
limber skiff
#

pheww

#

that took a while

rugged spire
limber skiff
#

no prob!

somber thorn
charred monolithBOT
limber skiff
#

all fixed now, and everything was still on dev so it caused no issues

charred monolithBOT
somber thorn
limber skiff
#

I dont have permissions to manage that repo lol

limber skiff
rugged spire
limber skiff
#

I never asked for permission

#

I guess that doesnt need to be a regex find

#

horrible find but I found something

#

.cursorPointer:null,children

somber thorn
limber skiff
#

nah it's okay

#

you did most of it

charred monolithBOT
#

4281b7a ShowTimeoutDuration: Simplify tooltip style, al... - Sqaaakoi
fb19642 fix(readAllNotificationsButton): Mark threads a... - PonyGirlDShadow
cddc811 feat(ViewIcons): Group & User DMs icons support... - verticalsync
a255465 ViewIcon: Replace regex find with string find - Nuckyz

limber skiff
#

oops

charred monolithBOT
limber skiff
#

way better to not use a regex find

charred monolithBOT
rugged spire
#

push war

charred monolithBOT
limber skiff
#

prs going down

charred monolithBOT
limber skiff
#

vee reverted the other fix but I dont have a single idea of what are the issues

charred monolithBOT
#

The way this is currently done has a big problem. The same function that handles setting mobile notifications to true is the function that sets the idle. It is ran using a setInterval as seen here:
image

Modifying IDLE_DURATION to MAX_SAFE_INTEGER causes "C" to run on loop non stop. But also, modifying it means you are still making setting mobile notifications depend on the new idle timeout, bec...

frail skyBOT
#
Bad Patches

None

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

#
Bad Patches

None

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

charred monolithBOT
charred monolithBOT
#

Adds a plugin called "File Share" which adds a /fileshare slash command that allows you to upload files to gofile.io and then pastes the link into chat box to share with others. Since its a quick and easy way to share files, this would be very convenient for people who want to upload big files but don't have Discord nitro. Plus, it doesn't require other users to directly download the file if they'd like to view the file without downloading (such as a PDF).

charred monolithBOT
charred monolithBOT
#

Discord Account

No response

What happens when the bug or crash occurs?

Messages from likely spammers are completely hidden despite not being blocked. iLoveSpam fixes this as it completely overrides the flag I'm guessing.

What is the expected behaviour?

I would expect them to render as usual, with an option to show messages

How do you recreate this bug or crash?

  1. Find a message from a likely spammer
  2. Enable NoBlockedMessages
  3. Press Ctrl+R
  4. it has gone :o

##...

crude hearth
#

by merging my prs blobcatcozy

charred monolithBOT
#
#

Your PR will not be reviewed if you keep asking about it. Please be patient, we have other things to do both for the project and in life.

A month has passed and the pull request has still not been merged. You say we have things to do in our lives, but a pull request opened 4 hours ago is merged. There are people who have been waiting for a year. If you are not going to approve it, close this pull request and don't drag it out any longer.

charred monolithBOT
#

Okay, I don't normally do codereview for plugins anymore, but I'll give a response.

As it stands this plugin is not suited to be merged - creating tons of CSS for hiding messages is not effective and will eventually create a client slowdown. You don't need to manipulate the DOM to do this, you need to create a patch that filters out the hidden messages by ID when the channel view is rendered. I flagged this up previously but it seems like it was dismissed.

shell shuttle
#

vencord gets my gold star of approval

charred monolithBOT
rugged spire
charred monolithBOT
austere talon
#

lol yeah i was gonna say that

heavy cedar
#

oops

alpine jacinth
#

could add an item to menu bar but eh it gonna be complicated

charred monolithBOT
alpine jacinth
austere talon
#

yeah you can just listen to the quit event

#

and if a given condition is met cancel it

alpine jacinth
#

Good idea

#

But when we hide the window, how will we re-open it? do we let the user click the Discord app icon? or do we add a new item to the Menu?

austere talon
#

nothing

#

via the tray

#

it's already a feature

alpine jacinth
#

Huhh

#

oh wel i need to educate myself more on Electron

hollow heart
# charred monolith

my dumbass really called it file uploader instead of changing it from gofile uploader to file share in the pr title husk

#

never staying up till 4am ever again

alpine jacinth
#

decided to not work on the PR futhur, i have school

charred monolithBOT
charred monolithBOT
desert cosmos
# charred monolith

in my opinion there's never too long

better a long, descriptive name, than something misleading

rugged spire
#

did discord bomb legacy icons entirely

charred monolithBOT
limber skiff
# charred monolith

I had no idea 32 bit was the max, tried to search about it and couldn't find anything

limber skiff
#

this is just lovely

limber skiff
#

I don't think it's gonna be needed

#

okay but ideally we don't wanna cancel it

#

we want to avoid sending

rugged spire
#

Isn't this already a thing

#

or am I mistaken

heavy cedar
#

never thought i'd had to worry about overflow in javascript

#

thought i could just slap on safe_integer

limber skiff
#

makes sense haha

quaint sapphire
#

gonna steal it

limber skiff
#

I tried to slap infinity and had the same issue

quaint sapphire
#

ain't infinity just a zero with a special bit?

limber skiff
#

no idea what it is internally

quaint sapphire
#

The IEEE Standard for Floating-Point Arithmetic (IEEE 754) is a technical standard for floating-point arithmetic established in 1985 by the Institute of Electrical and Electronics Engineers (IEEE). The standard addressed many problems found in the diverse floating-point implementations that made them difficult to use reliably and portably. Many...

charred monolithBOT
charred monolithBOT
frail skyBOT
#
Bad Patches

None

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

#
Bad Patches

FakeNitro (had no effect):
ID: 176354
Match: /if\(!\i\.available/

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

limber skiff
median rapids
#

๐Ÿ˜ญ

limber skiff
#

does anyone know what are these COMMUNITY_CONTENT emojis

#

also kinda of cleaned up module that determines if you can use an emoji

const Constants = n("185923");

function isGuildEmoji(emoji) {
    if (emoji.type === r.EmojiTypes.GUILD)
        return !0;
    return emoji.guildId != null;
}
function isEmojiFromSameGuild(emoji, guildId) {
    return emoji != null && guildId != null && (!isGuildEmoji(emoji) || guildId === emoji.guildId);
}

function canUseEmoji(props) {
    var propsGuildId;
    const { emoji: emoji, channel: channel, intention: intention, forceIncludeExternalGuilds: forceIncludeExternalGuilds } = props;

    if (intention === Constants.EmojiIntention.COMMUNITY_CONTENT_ONLY && emoji.guildId == null)
        return Constants.EmojiDisabledReasons.ONLY_GUILD_EMOJIS_ALLOWED;

    if (!isGuildEmoji(emoji))
        return null;

    const guildId = (propsGuildId = props.guildId) !== null && void 0 !== propsGuildId ? propsGuildId : channel == null ? void 0 : channel.getGuildId()
        , isGuildTextChannelType = channel != null && (0, s.isGuildTextChannelType)(channel.type)
        , isGuildVocalChannelType = channel != null && (0, s.isGuildVocalChannelType)(channel.type)
        , emojiFromSameGuild = isEmojiFromSameGuild(emoji, guildId)
        , canUSE_EXTERNAL_EMOJIS = o.default.can(E.Permissions.USE_EXTERNAL_EMOJIS, channel);

    if (intention === Constants.EmojiIntention.COMMUNITY_CONTENT || intention === Constants.EmojiIntention.COMMUNITY_CONTENT_ONLY)
        return emojiFromSameGuild && emoji.available ? null : Constants.EmojiDisabledReasons.DISALLOW_EXTERNAL;

    if (!(0,
    Constants.isExternalEmojiAllowedForIntention)(intention) && !isEmojiFromSameGuild(emoji, guildId) && !forceIncludeExternalGuilds || (isGuildTextChannelType || isGuildVocalChannelType) && !emojiFromSameGuild && !canUSE_EXTERNAL_EMOJIS)
        return Constants.EmojiDisabledReasons.DISALLOW_EXTERNAL;

    if (!emoji.available)
        return Constants.EmojiDisabledReasons.GUILD_SUBSCRIPTION_UNAVAILABLE;

    const currentUser = l.default.getCurrentUser();

    if (!c.default.canUseEmojisEverywhere(currentUser) && !emojiFromSameGuild) {
        if (intention === Constants.EmojiIntention.STATUS)
            return Constants.EmojiDisabledReasons.PREMIUM_LOCKED;
        if (!emoji.managed)
            return Constants.EmojiDisabledReasons.PREMIUM_LOCKED;
    }

    if ((0, a.isUnusableRoleSubscriptionEmoji)(emoji, guildId != null ? guildId : void 0))
        return (0, i.shouldHideGuildPurchaseEntryPoints)(emoji.guildId) ? Constants.EmojiDisabledReasons.ROLE_SUBSCRIPTION_UNAVAILABLE : Constants.EmojiDisabledReasons.ROLE_SUBSCRIPTION_LOCKED;

    return !emoji.animated || c.default.canUseAnimatedEmojis(currentUser) || (0, a.isPurchasableRoleSubscriptionEmoji)(emoji) ? null : Constants.EmojiDisabledReasons.PREMIUM_LOCKED;
}
austere talon
#

editing things

#

like channel description rules etc

limber skiff
#

ah

austere talon
#

it seems

#

tbh idek how to open emoji picker in channel edit

#

but this is like channel edit

#

oh for forums

limber skiff
#

yeah then I cant bypass those

#

I'm rewriting the patches for bypassing emojis

limber skiff
#

@austere talon are those pay to use emojis not handled here?

#

oh wait nvm it's here I think

#

sorry for ping

austere talon
#

are u in a server with p2w emojis

limber skiff
#

nop

#

not that I know

austere talon
#

need an invite?

limber skiff
#

I need to check

#

nah it's okay I think

median rapids
#

invite anyway blobcatcozy

austere talon
charred monolithBOT
rugged spire
#

@austere talon i know you're using #1240831391298490419 for testing, do you mind setting a channel topic on it and not absolutely nuking it for a few days

austere talon
#

why