#👾-core-development

1 messages · Page 220 of 1

jagged cloak
#

anyway just added it and blocked it too

#

ffs lol

limber skiff
#

fair enough

fossil inlet
#

WHAT

#

WHERE ARE VENCORD SETTINGS

limber skiff
#

don't bother fixing it for now

fossil inlet
limber skiff
#

we might as well just change everything with the hashed variant

fossil inlet
#

huh

limber skiff
#

read what happened

#

scroll up

fossil inlet
#

wait

#

can we no longer find by intl strings

#

or where there be some util to map the contents of intl strings to their hashes

limber skiff
#

there is a way to calculate the hash from the old key

#

and yes we can

#

but

limber skiff
#

as I said to vee too

#

for future keys, we won't know their original

#

the reason for the hashing is to obsfucate

#

which means, might as well just change everything to the hashed variant

#

it's consistent and doesn't change between builds

fossil inlet
#

if its a hash, it shouldnt it be just as stable as the normal one

#

meaning it will just be less readable

limber skiff
#

it is

fossil inlet
#

oh

limber skiff
#

it's based only in the key name

fossil inlet
#

this is just a pain in the ass more than a headache

limber skiff
#

it's just gonna be a magic string

fossil inlet
limber skiff
#

our finds already have so many

brazen bone
limber skiff
#

yes

#

but yeah we just need to calculate the hash for our old finds and update our patches

fossil inlet
#

is this what they're using?

limber skiff
#

yeah

limber skiff
#

now it's

fossil inlet
#

i might make something to convert your clipboard for you in vscode

limber skiff
#
children: s.intl.format(s.t.l5FFq6, {
    name: c
})
fossil inlet
#

so its easy to hash

limber skiff
#

vs

children: N.Z.Messages.REMOVE_FRIEND_CONFIRMATION.format({
    name: I.ZP.getName(t)
})
fossil inlet
#

?remind one month hover for intl strings in companion

shut vineBOT
#

Alright @fossil inlet, in 1 month and 1 hour: hover for intl strings in companion

brazen bone
#

Make a \I{unhashed_string} fake escape, if it's deterministic

fossil inlet
limber skiff
#

as I'm saying I think it's not needed to do the conversation

fossil inlet
limber skiff
#

for our current keys we could

#

but we won't be able to know future keys

fossil inlet
limber skiff
#

I dont think so

#

we would have to hash in patches

#

i18n usage

#

webpack finds

#

many places

fossil inlet
#

isnt that what canonicalize<...> is for

#

eaiser than updating with the hashed variant

limber skiff
#

gonna need to update the code regardless

#

but I will consider it

fossil inlet
#

alr

fossil inlet
brazen bone
#

Could put comments for what the keys used to be

limber skiff
#

if someone else wants to work on it for now

brazen bone
#

Or just git blane

limber skiff
#

here´s the hasher

#
/**
 * Returns a consistent, short hash of the given key by first processing it through a hash digest,
 * then encoding the first few bytes to base64.
 *
 * This function is specifically written to mirror the native backend hashing function used by
 * `@discord/intl-loader-core`, to be able to hash names at runtime.
 */
export function runtimeHashMessageKey(key: string): string {
  const hash = h64(key, 0);
  const bytes = numberToBytes(hash);
  return [
    BASE64_TABLE[bytes[0] >> 2],
    BASE64_TABLE[((bytes[0] & 0x03) << 4) | (bytes[1] >> 4)],
    BASE64_TABLE[((bytes[1] & 0x0f) << 2) | (bytes[2] >> 6)],
    BASE64_TABLE[bytes[2] & 0x3f],
    BASE64_TABLE[bytes[3] >> 2],
    BASE64_TABLE[((bytes[3] & 0x03) << 4) | (bytes[3] >> 4)],
  ].join('');
}
#

I'm busy with other stuff

fossil inlet
#

ill throw something together

limber skiff
#

it's part of that

fossil inlet
#

oh this is from their code

limber skiff
#

they were kindly enough to make it open worse so everything is easier

fossil inlet
#

open worse my beloved ❤️

#

everything should be closed source

austere talon
#

so bad

limber skiff
#

cursed

charred monolithBOT
jolly egret
#

so turns out it isn't as bad as we thought?

#

but its not great either

austere talon
#

the last one lmao

#

why is it generating invalid identifiers

fossil inlet
charred monolithBOT
fossil inlet
#

@limber skiff guhhhhhhhh is this related?

limber skiff
#

idk whats the error

brazen bone
fossil inlet
#

@brazen bone does that download all lazy chunks?

brazen bone
#

Yes

#

Including the one that makes everything pink, annoyingly

#

Doesn't download css though; I've thought about including that but haven't had the energy to do that yet

frail skyBOT
#
Bad Patches

None

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

fossil inlet
#

am i going fucking insane

fringe basalt
#

i've already fixed the strings differ, i will just have to go through node package hell tomorrow cuz discord decided to use a library with type: "module" which makes it impossible to import from ts without making your whole project a module as well

fossil inlet
fringe basalt
#

well it could be worse, it could be python

fossil inlet
fossil inlet
#

@limber skiff settings fixed

#

im not sure if how im fixing things is the best way

#

but guh

#

also loadLazyChunks is broken and idfk how to fix that

#

nevermind

#

it fixed itself after i fixed the settings patch

#

who knows

#

wait
no

#

its still broken

#

it just only fails when vencord is built with reporter

fossil inlet
#

i eep now

#

pray this doesnt hit stable

fossil inlet
#

@rugged spire you will help me fix i18n

limber skiff
#

i'll see

scenic brook
#

Thankful not to be a vencord maintainer in times like this

limber skiff
#

wouldn't be an issue if I wasn't busy

#

since when this happens you need time

scenic brook
#

Show of appreciation suffoPrayge

#

I'd help if I weren't too dumb and new

torpid vessel
limber skiff
#

this is so bad

limber skiff
#

okay this is kinda neat

#

did I cook?

austere talon
#

wtf is that lmao

#

oh

#

it's cool but like u said before it won't work for new keys xd

limber skiff
#

yes

#

but I guess it doesnt hurt having for now

austere talon
#

mmhhh

#

I think we shouldn't rely on i18n keys much anymore

#

try to find better way

#

only rely on it if absolutely necessary

limber skiff
#

I mean

#

they are still consistent

#

why not?

austere talon
#

otherwise imagine if they ever change their hash function

#

everything breaks again

limber skiff
#

hmm

austere talon
#

I wouldn't rely on it as much as we did before if possible

limber skiff
#

you are right

charred monolithBOT
fossil inlet
#

@limber skiff what plugins have you done so far

limber skiff
#

untested tho

#

and I havent touched i18n usage

charred monolithBOT
#
[Vendicated/Vencord] New branch created: i18-fix
limber skiff
#

forgot an n

fossil inlet
limber skiff
#

but whatever

fossil inlet
#

I’ll start on that

charred monolithBOT
#
[Vendicated/Vencord] New branch created: i18n-fix
#
[Vendicated/Vencord] branch deleted: i18-fix
fossil inlet
#

Wait did you ever manage to recreate the load lazy chunks not working on reporter

limber skiff
#

I havent tested any of it

fossil inlet
#

@limber skiff how cursed is this

#
export const { i18n } = mapMangledModuleLazy(['"en-GB":()=>', "getBinds"], {
    i18n: m => true
});```
limber skiff
#

just write a proper filter for it

#

instead of doing true

fossil inlet
#

i tried a find by code but it woudnt work

limber skiff
#

I mean like

fossil inlet
#

and wreq(number) gives it as an es module

limber skiff
#

use mapMangled

#

but put an actual filter in the i18n too

fossil inlet
#

heres the id

#

613338

fossil inlet
#

this better?

#
export const { i18n } = mapMangledModuleLazy(['"en-GB":()=>', "getBinds"], {
    // can be any i18n key
    i18n: m => m["0+11F"]
});
fossil inlet
#

@limber skiff i happen to be a bit stupid

#

there was another module that is 10x better

limber skiff
#

how lol

limber skiff
#

@fossil inlet macros in js

#

jokes that gonna be horrible to work with inside regex lmao

fossil inlet
limber skiff
#

lmao

fossil inlet
#

im doing a horror untold to the formatting side of i18n

limber skiff
#

🔥

fossil inlet
limber skiff
#

what's that

unkempt oak
limber skiff
#

I'm not sure which syntax to use

#

#intl<KEY> is ugly

fossil inlet
#

because i dont want to change everything to the new sytnax

limber skiff
#

using paranthesis makes it shit to work inside regex

#

same thing with $

limber skiff
#

just do

#

but have a helper function which hashes and uses the correct functions inside

#

so it's easier

#

no need to keep this much backwards compability

#

ideas

#intl<KEY>
#[intl::KEY] yes rust

fossil inlet
#

imo

limber skiff
#

just intl::KEY?

fossil inlet
#

no, the second

#

one

limber skiff
#

chat gpt with horrible ideas

fossil inlet
#

#[intl::key]

fossil inlet
limber skiff
#

and there isn't much usage of i18n inside Vencord I think

#

sorryy if you put a lot of work into it already

fossil inlet
#
export const formati18n = {
    Messages: new Proxy<Record<string, ReturnType<typeof formatUtils>>>({}, {
        get(target, key) {
            if (!(typeof key === "string")) throw new Error("key is not string");
            formatUtils(key);
        }
    })
};
#

emphasis on horror code

limber skiff
#

HAHAHA

#

@austere talon this is perfect

#

new syntax is fire

#

even better

fossil inlet
limber skiff
#

ugh

#

it turns into a set in regex

#

I'll just do #intl::KEY

#

looks pretty nice like that

limber skiff
#

can't find where it ends like that

unkempt oak
#

or since <> is used in ecmascript regex, ::ABC:: or something like that

austere talon
fossil inlet
#

did old intl always format as react

#

IT WORKS

#

finally

fringe basalt
fossil inlet
#

i am aware that this is horror code, but it works

#
export const i18n: t.i18n & { Messages: ReturnType<typeof formatUtils>; } = proxyLazy(() => {
    return {
        ...findLazy(m => m?.intl?.format),
        Messages: new Proxy<Record<string, ReturnType<typeof formatUtils>>>({}, {
            get(target, key) {
                if (!(typeof key === "string")) throw new Error("key is not string");
                return formatUtils(key);
            }
        })
    };
});
// FIXME: fix types
export const formatUtils = a => {
    console.log("running format utils");
    const k = i18n.t[runtimeHashMessageKey(a)];
    if (typeof (k().ast) === "string") return k().ast;
    return Object.assign(k, {
        format: (a: any) => i18n.intl.format(k, a),
        formatToMarkdownString: (a: any) => i18n.intl.formatToMarkdownString(k, a),
        formatToParts: (a: any) => i18n.intl.formatToParts(k, a),
        formatToPlainString: (a: any) => i18n.intl.formatToPlainString(k, a),
    });
};
limber skiff
#

#{intl::KEY}

#

will be it

austere talon
#

guh

#

just don't do this lmao

#

it's gonna be useless for new keys anyway

#

for finds you can use string interpolation

#

or just add a comment

limber skiff
#

it's fine

austere talon
#

you're overengineering this so hard xD

#

I get it it's a cool idea but it's not gonna be effective for new stuff

limber skiff
#

dont worry I'm enjoying it lol

limber skiff
#

slowly we can migrate to finds which dont use that

charred monolithBOT
limber skiff
#

okay back to actually fixing now

charred monolithBOT
rugged spire
frail skyBOT
#
Bad Patches

MoreUserTags (had no effect):
ID: 385499
Match: ```
/(switch(((?:\i))){.+?)case ((?:\i)(?:.(?:\i))?).BOT:default:((?:\i))=.{0,40}((?:\i).(?:\i).Messages).APP_TAG/


**__TypingTweaks (had no effect):__**
ID: `738619`
Match: ```
/(?<=((?:\i))\.length\?(?:\i).(?:\i)\.Messages.THREE_USERS_TYPING\.format\({(?:\i):((?:\i)),(?:(?:\i):)?((?:\i)),(?:\i):(?:\i)}\):)(?:\i)\.(?:\i)\.Messages\.SEVERAL_USERS_TYPING/

IgnoreActivities (had no effect):
ID: 293389
Match: ```
/(?:["1+O+Tk"]).+?}(),(?<={overlay:(?:\i),.+?=((?:\i)),.+?)(?=!((?:\i)))/


**__FakeProfileThemes (had no effect):__**
ID: `451392`
Match: ```
/RESET_PROFILE_THEME}\)(?<=color:((?:\i)),.{0,500}?color:((?:\i)),.{0,500}?)/

SupportHelper (had no effect):
ID: 600084
Match: ```
/BEGINNING_DM.format({.+?}),(?=.{0,300}((?:\i)).isMultiUserDM)/


**__ImplicitRelationships (had no effect):__**
ID: `270759`
Match: ```
/(\(0,(?:\i)\.jsx\)\((?:\i)\.TabBar\.Item,\{id:(?:\i)\.(?:\i))\.BLOCKED,className:([^\s]+?)\.item,children:(?:\i)\.(?:\i)\.Messages\.BLOCKED\}\)/

ServerListAPI (found no module):
ID: -
Match: ```
["7hB4kp),children


**__CrashHandler (found no module):__**
ID: `-`
Match: ```
#{intl:;ERRORS_UNEXPECTED_CRASH}

DisableCallIdle (found no module):
ID: -
Match: ```
.pps9zM


**__MoreUserTags (found no module):__**
ID: `-`
Match: ```
#{ìntl::USER_PROFILE_PRONOUNS}

PermissionsViewer (found no module):
ID: -
Match: ```
.VIEW_ALL_ROLES,


**__ReplyTimestamp (found no module):__**
ID: `-`
Match: ```
#[intl::REPLY_QUOTE_MESSAGE_BLOCKED}

ShowHiddenChannels (found no module):
ID: -
Match: ```
.Messages.CHANNEL_TOOLTIP_DIRECTORY


**__ValidReply (found no module):__**
ID: `-`
Match: ```
#{intl::REPLY_QUOTE_MESSAGE_NOT_LOADED

WebContextMenus (found no module):
ID: -
Match: ```
.Messages.SEARCH_WITH_GOOGLE


**__WebContextMenus (found no module):__**
ID: `-`
Match: ```
.Messages.COPY,hint:
Bad Webpack Finds
waitForComponent(t=>typeof t!="function"?!1:wa(Function.prototype.toString.call(t),e)...)
find(e=>e.Messages?.["en-US"]...)
findByCode(".ATTACHMENT_TOO_MANY_ERROR_TITLE,")
findComponentByCode(".Messages.USER_SETTINGS_PROFILE_COLOR_SELECT_COLOR", ".BACKGROUND_PRIMARY)")
findComponentByCode(".Messages.USER_SETTINGS_PROFILE_COLOR_SELECT_COLOR", ".BACKGROUND_PRIMARY)")
extractAndLoadChunks(["USER_SETTINGS_PROFILE_COLOR_DEFAULT_BUTTON.format"], /createPromise:\(\)=>\i\.\i(\("?.+?"?\)).then\(\i\.bind\(\i,"?(.+?)"?\)\)/)
findComponentByCode(".Messages.USER_SETTINGS_PROFILE_COLOR_SELECT_COLOR", ".BACKGROUND_PRIMARY)")
findComponentByCode(".CONNECTIONS_ROLE_OFFICIAL_ICON_TOOLTIP")
findComponentByCode(".Messages.ROLE_REQUIRED_SINGLE_USER_MESSAGE")
findComponent(e=>{if(typeof e!="function")return!1;let t=Function.prototype.toString.call(e);return t.includes(".Messages.FORUM_TAG_A11Y_FILTER_BY_TAG")&&!t.incl...)
findComponent(e=>e.prototype?.render?.toString().includes(".MAX_AGE_NEVER")...)
mapMangledModule(".Messages.GROUP_DM_ALONE", {
	useChannelName: t=>typeof t!="function"?!1:wa(Function.prototype.toString.call(t),e)...
})
Bad Starts

None

Discord Errors

None

rugged spire
#

Ughhhhhhhhhhhhhhhhh

limber skiff
#

lol

#

did you just find about it?

dusk blaze
rugged spire
#

i have been asleep for way too long and only just got up

#

well

#

i woke up multiple times in the night and saw @fossil inlet's message but thats it

limber skiff
#

welcome welcome

limber skiff
#

hmm

#

I wonder

#

what failed here

#

I see nvm

charred monolithBOT
frail skyBOT
#
Bad Patches

ValidReply (had no effect):
ID: 267128
Match: ```
/(?:["1i+hMj"]))/


**__MoreUserTags (had no effect):__**
ID: `385499`
Match: ```
/(switch\(((?:\i))\){.+?)case ((?:\i)(?:\.(?:\i))?)\.BOT:default:((?:\i))=.{0,40}((?:\i)\.(?:\i)\.Messages)\.APP_TAG/

TypingTweaks (had no effect):
ID: 738619
Match: ```
/(?<=((?:\i)).length?(?:\i).(?:\i).Messages.THREE_USERS_TYPING.format({(?:\i):((?:\i)),(?:(?:\i):)?((?:\i)),(?:\i):(?:\i)}):)(?:\i).(?:\i).Messages.SEVERAL_USERS_TYPING/


**__IgnoreActivities (had no effect):__**
ID: `293389`
Match: ```
/(?:\["1+O+Tk"\]).+?}\(\),(?<={overlay:(?:\i),.+?=((?:\i)),.+?)(?=!((?:\i)))/

FakeProfileThemes (had no effect):
ID: 451392
Match: ```
/RESET_PROFILE_THEME})(?<=color:((?:\i)),.{0,500}?color:((?:\i)),.{0,500}?)/


**__SupportHelper (had no effect):__**
ID: `600084`
Match: ```
/BEGINNING_DM\.format\(\{.+?\}\),(?=.{0,300}((?:\i))\.isMultiUserDM)/

ImplicitRelationships (had no effect):
ID: 270759
Match: ```
/((0,(?:\i).jsx)((?:\i).TabBar.Item,{id:(?:\i).(?:\i)).BLOCKED,className:([^\s]+?).item,children:(?:\i).(?:\i).Messages.BLOCKED})/


**__MoreUserTags (found no module):__**
ID: `-`
Match: ```
#{ìntl::USER_PROFILE_PRONOUNS}
Bad Webpack Finds
waitForComponent(t=>typeof t!="function"?!1:wa(Function.prototype.toString.call(t),e)...)
find(e=>e.Messages?.["en-US"]...)
findByCode(".ATTACHMENT_TOO_MANY_ERROR_TITLE,")
findComponentByCode(".Messages.USER_SETTINGS_PROFILE_COLOR_SELECT_COLOR", ".BACKGROUND_PRIMARY)")
findComponentByCode(".Messages.USER_SETTINGS_PROFILE_COLOR_SELECT_COLOR", ".BACKGROUND_PRIMARY)")
extractAndLoadChunks(["USER_SETTINGS_PROFILE_COLOR_DEFAULT_BUTTON.format"], /createPromise:\(\)=>\i\.\i(\("?.+?"?\)).then\(\i\.bind\(\i,"?(.+?)"?\)\)/)
findComponentByCode(".Messages.USER_SETTINGS_PROFILE_COLOR_SELECT_COLOR", ".BACKGROUND_PRIMARY)")
findComponentByCode(".CONNECTIONS_ROLE_OFFICIAL_ICON_TOOLTIP")
findComponentByCode(".Messages.ROLE_REQUIRED_SINGLE_USER_MESSAGE")
findComponent(e=>{if(typeof e!="function")return!1;let t=Function.prototype.toString.call(e);return t.includes(".Messages.FORUM_TAG_A11Y_FILTER_BY_TAG")&&!t.incl...)
findComponent(e=>e.prototype?.render?.toString().includes(".MAX_AGE_NEVER")...)
mapMangledModule(".Messages.GROUP_DM_ALONE", {
	useChannelName: t=>typeof t!="function"?!1:wa(Function.prototype.toString.call(t),e)...
})
Bad Starts

None

Discord Errors

None

limber skiff
#

#{ìntl::USER_PROFILE_PRONOUNS}

#

omg the typos

rugged spire
#

LOL WTF ARE YOU DOING

limber skiff
#

calculating hashes at runtime and making finds/matches based on that

rugged spire
#

DID YOU WRITE A SYSTEM LOOK UP THE HASHES

#

awesome

limber skiff
#

yeah

rugged spire
#

this takes 5 hours of torture and shrinks it down to 1 hour of torture

#

im too fucking scared to restart my canary client

#

i already see breakage

#

You can't even open settings.

#

@limber skiff I maintain 20+ plugins I've developed myself and each one is maintained on its own branch

#

See why I want to hollow

prime dew
#

Is this going to be unleashed upon the stable branch in the immediate future?

prime dew
#

Gosh

rugged spire
#

I daily drive canary btw

fossil inlet
#

Last night I spent a hour writing a script to hash the clipboard

rugged spire
#

and I've been called insane for it

fossil inlet
fossil inlet
#

Very useful

#

While testing

prime dew
fossil inlet
charred monolithBOT
rugged spire
#

It's okay. I only have this many plugins to fix

limber skiff
#

if you are only using the messages for finds it's pretty straightforward

rugged spire
#

I know

fossil inlet
#

?remind one week update all my prs

shut vineBOT
#

Alright @fossil inlet, in 1 week: update all my prs

rugged spire
frail skyBOT
#
Bad Patches

ValidReply (had no effect):
ID: 267128
Match: ```
/(?:["1i+hMj"])"])/


**__MoreUserTags (had no effect):__**
ID: `385499`
Match: ```
/(switch\(((?:\i))\){.+?)case ((?:\i)(?:\.(?:\i))?)\.BOT:default:((?:\i))=.{0,40}((?:\i)\.(?:\i)\.Messages)\.APP_TAG/

TypingTweaks (had no effect):
ID: 738619
Match: ```
/(?<=((?:\i)).length?(?:\i).(?:\i).Messages.THREE_USERS_TYPING.format({(?:\i):((?:\i)),(?:(?:\i):)?((?:\i)),(?:\i):(?:\i)}):)(?:\i).(?:\i).Messages.SEVERAL_USERS_TYPING/


**__IgnoreActivities (had no effect):__**
ID: `293389`
Match: ```
/(?:\["1+O+Tk"\]).+?}\(\),(?<={overlay:(?:\i),.+?=((?:\i)),.+?)(?=!((?:\i)))/

FakeProfileThemes (had no effect):
ID: 451392
Match: ```
/(?:["L+Gmoa"]))})(?<=color:((?:\i)),.{0,500}?color:((?:\i)),.{0,500}?)/


**__SupportHelper (had no effect):__**
ID: `600084`
Match: ```
/(?:\["Qvg+6+"\])"],{.+?}\),(?=.{0,300}((?:\i))\.isMultiUserDM)/

ImplicitRelationships (had no effect):
ID: 270759
Match: ```
/((0,(?:\i).jsx)((?:\i).TabBar.Item,{id:(?:\i).(?:\i)).BLOCKED,className:([^\s]+?).item,children:(?:\i).(?:\i).Messages.BLOCKED})/

Bad Webpack Finds
waitForComponent(t=>typeof t!="function"?!1:wa(Function.prototype.toString.call(t),e)...)
find(e=>e.Messages?.["en-US"]...)
findByCode(".ATTACHMENT_TOO_MANY_ERROR_TITLE,")
findComponentByCode(".Messages.USER_SETTINGS_PROFILE_COLOR_SELECT_COLOR", ".BACKGROUND_PRIMARY)")
findComponentByCode(".Messages.USER_SETTINGS_PROFILE_COLOR_SELECT_COLOR", ".BACKGROUND_PRIMARY)")
extractAndLoadChunks(["USER_SETTINGS_PROFILE_COLOR_DEFAULT_BUTTON.format"], /createPromise:\(\)=>\i\.\i(\("?.+?"?\)).then\(\i\.bind\(\i,"?(.+?)"?\)\)/)
findComponentByCode(".Messages.USER_SETTINGS_PROFILE_COLOR_SELECT_COLOR", ".BACKGROUND_PRIMARY)")
findComponentByCode(".CONNECTIONS_ROLE_OFFICIAL_ICON_TOOLTIP")
findComponentByCode(".Messages.ROLE_REQUIRED_SINGLE_USER_MESSAGE")
findComponent(e=>{if(typeof e!="function")return!1;let t=Function.prototype.toString.call(e);return t.includes(".Messages.FORUM_TAG_A11Y_FILTER_BY_TAG")&&!t.incl...)
findComponent(e=>e.prototype?.render?.toString().includes(".MAX_AGE_NEVER")...)
mapMangledModule(".Messages.GROUP_DM_ALONE", {
	useChannelName: t=>typeof t!="function"?!1:wa(Function.prototype.toString.call(t),e)...
})
Bad Starts

None

Discord Errors

None

rugged spire
#

i cant live without betterquickreact actually

fossil inlet
limber skiff
#

bruh

#

did I make a typo

fossil inlet
#

Got a lot of other work

rugged spire
#

See I'm the opposite

#

I don't really have much I need to do

limber skiff
#

ah

#

I did

rugged spire
#

@limber skiff are you fixing game activity toggle button plugin

charred monolithBOT
rugged spire
#

love

limber skiff
#

first patches

#

then finds

#

and then usages of i18n inside vencord and inside patches

fossil inlet
frail skyBOT
#
Bad Patches

ValidReply (had no effect):
ID: 267128
Match: ```
/(?:["1i+hMj)"])/


**__MoreUserTags (had no effect):__**
ID: `385499`
Match: ```
/(switch\(((?:\i))\){.+?)case ((?:\i)(?:\.(?:\i))?)\.BOT:default:((?:\i))=.{0,40}((?:\i)\.(?:\i)\.Messages)\.APP_TAG/

TypingTweaks (had no effect):
ID: 738619
Match: ```
/(?<=((?:\i)).length?(?:\i).(?:\i).Messages.THREE_USERS_TYPING.format({(?:\i):((?:\i)),(?:(?:\i):)?((?:\i)),(?:\i):(?:\i)}):)(?:\i).(?:\i).Messages.SEVERAL_USERS_TYPING/


**__IgnoreActivities (had no effect):__**
ID: `293389`
Match: ```
/(?:\["1+O+Tk).+?}\(\),(?<={overlay:(?:\i),.+?=((?:\i)),.+?)(?=!((?:\i)))/

FakeProfileThemes (had no effect):
ID: 451392
Match: ```
/(?:["L+Gmoa))})(?<=color:((?:\i)),.{0,500}?color:((?:\i)),.{0,500}?)/


**__Decor (had no effect):__**
ID: `532495`
Match: ```
/(?<=(?:\["7v0T9P)\)},"decoration"\),)/

ServerListAPI (had no effect):
ID: 416568
Match: ```
/(?<=(?:["7hB4kp)),children:)(?:\i).map((?:\i))/


**__SupportHelper (had no effect):__**
ID: `600084`
Match: ```
/(?:\["Qvg+6+)"],{.+?}\),(?=.{0,300}((?:\i))\.isMultiUserDM)/

ImplicitRelationships (had no effect):
ID: 270759
Match: ```
/((0,(?:\i).jsx)((?:\i).TabBar.Item,{id:(?:\i).(?:\i)).BLOCKED,className:([^\s]+?).item,children:(?:\i).(?:\i).Messages.BLOCKED})/

Bad Webpack Finds
waitForComponent(t=>typeof t!="function"?!1:wa(Function.prototype.toString.call(t),e)...)
find(e=>e.Messages?.["en-US"]...)
findByCode(".ATTACHMENT_TOO_MANY_ERROR_TITLE,")
findComponentByCode(".Messages.USER_SETTINGS_PROFILE_COLOR_SELECT_COLOR", ".BACKGROUND_PRIMARY)")
findComponentByCode(".Messages.USER_SETTINGS_PROFILE_COLOR_SELECT_COLOR", ".BACKGROUND_PRIMARY)")
extractAndLoadChunks(["USER_SETTINGS_PROFILE_COLOR_DEFAULT_BUTTON.format"], /createPromise:\(\)=>\i\.\i(\("?.+?"?\)).then\(\i\.bind\(\i,"?(.+?)"?\)\)/)
findComponentByCode(".Messages.USER_SETTINGS_PROFILE_COLOR_SELECT_COLOR", ".BACKGROUND_PRIMARY)")
findComponentByCode(".CONNECTIONS_ROLE_OFFICIAL_ICON_TOOLTIP")
findComponentByCode(".Messages.ROLE_REQUIRED_SINGLE_USER_MESSAGE")
findComponent(e=>{if(typeof e!="function")return!1;let t=Function.prototype.toString.call(e);return t.includes(".Messages.FORUM_TAG_A11Y_FILTER_BY_TAG")&&!t.incl...)
findComponent(e=>e.prototype?.render?.toString().includes(".MAX_AGE_NEVER")...)
mapMangledModule(".Messages.GROUP_DM_ALONE", {
	useChannelName: t=>typeof t!="function"?!1:wa(Function.prototype.toString.call(t),e)...
})
Bad Starts

None

Discord Errors

None

rugged spire
#

I like to believe it gave up listing what is broken

jolly egret
#

spam

rugged spire
#

ok

#

so

#

i need to base upon the existing branch

#

@limber skiff do you intend to force push the branch with all the fixes

limber skiff
#

no

rugged spire
opaque silo
#

20 dollars discord will revert

rugged spire
#

nuh uh

limber skiff
#

ughh

rugged spire
#

how it feels wanting to explode

limber skiff
#

I have to escape +

rugged spire
#

i will delete that showTimeoutDuration file

#

how do you vertical split in vscode?

#

oh i dont think i even edited that patch thumbsup

unkempt oak
#

press f1 type "split horizontally" press enter

#

ok nvm

#

it's View: Split Editor Right

rugged spire
#

i worded it wrong and figured it out anyways

#

@limber skiff will this code still work?

limber skiff
#

nop

#

not rn

rugged spire
#

HOW DO I FIX

#

DO I NEED TO FIX

limber skiff
#

and I havent decided the approach for that

#

I dont know yet

#

wait

rugged spire
#

guh

#

praying to vencord gods

charred monolithBOT
limber skiff
#

okay that's big progress

rugged spire
#

Most

frail skyBOT
#
Bad Patches

MoreUserTags (had no effect):
ID: 385499
Match: ```
/(switch(((?:\i))){.+?)case ((?:\i)(?:.(?:\i))?).BOT:default:((?:\i))=.{0,40}((?:\i).(?:\i).Messages).APP_TAG/


**__TypingTweaks (had no effect):__**
ID: `738619`
Match: ```
/(?<=((?:\i))\.length\?(?:\i).(?:\i)\.Messages.THREE_USERS_TYPING\.format\({(?:\i):((?:\i)),(?:(?:\i):)?((?:\i)),(?:\i):(?:\i)}\):)(?:\i)\.(?:\i)\.Messages\.SEVERAL_USERS_TYPING/

ImplicitRelationships (had no effect):
ID: 270759
Match: ```
/((0,(?:\i).jsx)((?:\i).TabBar.Item,{id:(?:\i).(?:\i)).BLOCKED,className:([^\s]+?).item,children:(?:\i).(?:\i).Messages.BLOCKED})/

Bad Webpack Finds
waitForComponent(t=>typeof t!="function"?!1:wa(Function.prototype.toString.call(t),e)...)
find(e=>e.Messages?.["en-US"]...)
findByCode(".ATTACHMENT_TOO_MANY_ERROR_TITLE,")
findComponentByCode(".Messages.USER_SETTINGS_PROFILE_COLOR_SELECT_COLOR", ".BACKGROUND_PRIMARY)")
findComponentByCode(".Messages.USER_SETTINGS_PROFILE_COLOR_SELECT_COLOR", ".BACKGROUND_PRIMARY)")
extractAndLoadChunks(["USER_SETTINGS_PROFILE_COLOR_DEFAULT_BUTTON.format"], /createPromise:\(\)=>\i\.\i(\("?.+?"?\)).then\(\i\.bind\(\i,"?(.+?)"?\)\)/)
findComponentByCode(".Messages.USER_SETTINGS_PROFILE_COLOR_SELECT_COLOR", ".BACKGROUND_PRIMARY)")
findComponentByCode(".CONNECTIONS_ROLE_OFFICIAL_ICON_TOOLTIP")
findComponentByCode(".Messages.ROLE_REQUIRED_SINGLE_USER_MESSAGE")
findComponent(e=>{if(typeof e!="function")return!1;let t=Function.prototype.toString.call(e);return t.includes(".Messages.FORUM_TAG_A11Y_FILTER_BY_TAG")&&!t.incl...)
findComponent(e=>e.prototype?.render?.toString().includes(".MAX_AGE_NEVER")...)
mapMangledModule(".Messages.GROUP_DM_ALONE", {
	useChannelName: t=>typeof t!="function"?!1:wa(Function.prototype.toString.call(t),e)...
})
Bad Starts

None

Discord Errors

None

rugged spire
#

@limber skiff can you confirm you have not touched any finds yet

limber skiff
#

only three patches

#

will do those later

#

now finds

#

they should be pretty straightforward too

#

tf is this tho

#

found it

charred monolithBOT
limber skiff
#

pretty easy

rugged spire
#

hello i love developing on a renamed version of an existing plugin

#

commit war

charred monolithBOT
rugged spire
#

That wasn't hard

#

basically just copy paste a few lines

frail skyBOT
#
Bad Patches

MoreUserTags (had no effect):
ID: 385499
Match: ```
/(switch(((?:\i))){.+?)case ((?:\i)(?:.(?:\i))?).BOT:default:((?:\i))=.{0,40}((?:\i).(?:\i).Messages).APP_TAG/


**__TypingTweaks (had no effect):__**
ID: `738619`
Match: ```
/(?<=((?:\i))\.length\?(?:\i).(?:\i)\.Messages.THREE_USERS_TYPING\.format\({(?:\i):((?:\i)),(?:(?:\i):)?((?:\i)),(?:\i):(?:\i)}\):)(?:\i)\.(?:\i)\.Messages\.SEVERAL_USERS_TYPING/

ImplicitRelationships (had no effect):
ID: 270759
Match: ```
/((0,(?:\i).jsx)((?:\i).TabBar.Item,{id:(?:\i).(?:\i)).BLOCKED,className:([^\s]+?).item,children:(?:\i).(?:\i).Messages.BLOCKED})/

Bad Webpack Finds
find(e=>e.Messages?.["en-US"]...)
Bad Starts

None

Discord Errors

None

rugged spire
#

WOAH

#

surely that isnt all thats left

#

right?

#

wtf happened here

limber skiff
#

only those 3 patches yes

#

and the usage of i18n

limber skiff
rugged spire
#

guh

#

ok time to see if ShowTimeoutDetails works

#

I still cannot click into another channel.

bleak blaze
#

so all plugins that are merged into vencord you guys have to maintain yourself right?

#

unless a push is made

#

it’s not the developers that maintain those

#

that’s why alot of plugins get rejected (maybe)

rugged spire
rugged spire
bleak blaze
#

yeah they all end up as user plugins usually

rugged spire
#

i have to go through 20 of my own personal plugins today

#

and "fix" them

#

Oh

#

It's AutomodIndicator causing the crash

glass jasper
#

this is why i won’t use patch’s

rugged spire
glass jasper
#

my three plugins are still find

rugged spire
#

your plugins likely touch i18n

#

that has no fix yet

#

I can finally enter settings

#

@limber skiff How are you thinking of solving i18n.Messages.MESSAGE

#

I propose the API should be compatible without changes if possible

#

i wonder how bd users are doing

limber skiff
limber skiff
#

too much backwards compability in a project like this is kinda bad

rugged spire
#

true

#

how do formatted messages work

#

also

#

can we get a i18n message lookup page in settings?

limber skiff
#

or hashed

rugged spire
#

❤️

limber skiff
rugged spire
#

have you committed this yet

#

can I just import the getIntlMessage function alone?

charred monolithBOT
limber skiff
#

there you go

#

lmk if you have issues

rugged spire
#

time to fix ShowTimeoutDetails and AutomodIndicator

#

how many times do you think I'll be running this today @limber skiff

limber skiff
#

I should be finishing soon I think

rugged spire
#

part of me thinks it'd be neat to have the API as a Proxy

fossil inlet
rugged spire
#

No.

#

Please link it

fossil inlet
#

export const i18n: t.i18n & { Messages: ReturnType<typeof formatUtils>; } = proxyLazy(() => {
    return {
        ...findLazy(m => m?.intl?.format),
        Messages: new Proxy<Record<string, ReturnType<typeof formatUtils>>>({}, {
            get(target, key) {
                if (!(typeof key === "string")) throw new Error("key is not string");
                return formatUtils(key);
            }
        })
    };
});
// FIXME: fix types
export const formatUtils = a => {
    console.log("running format utils");
    const k = i18n.t[runtimeHashMessageKey(a)];
    if (typeof (k().ast) === "string") return k().ast;
    return Object.assign(k, {
        format: (a: any) => i18n.intl.format(k, a),
        formatToMarkdownString: (a: any) => i18n.intl.formatToMarkdownString(k, a),
        formatToParts: (a: any) => i18n.intl.formatToParts(k, a),
        formatToPlainString: (a: any) => i18n.intl.formatToPlainString(k, a),
    });
};
rugged spire
#

did you give a good reason why that is a horrible idea or something

fossil inlet
#

it works

rugged spire
#

Oh

#

The Compatibility Layer that @limber skiff doesn't want to support

fossil inlet
#

yop

#

i just made it because i thought it would be cool

#

and was bored

rugged spire
#

is that compatible with how it worked before

fossil inlet
#

thats the whole point

rugged spire
#

ngl the older API was definitely easier to write

fossil inlet
#

yop

rugged spire
#

the function call is bad IMO

fossil inlet
#

where?

charred monolithBOT
rugged spire
fossil inlet
#

eh

charred monolithBOT
limber skiff
#

I'm not sure if this works lol

rugged spire
limber skiff
#

someone type

rugged spire
#

,,

limber skiff
#

without silent typing

#

seems to work

#

good

rugged spire
#

before my brain explodes

#

nvm

frail skyBOT
#
Bad Patches

MoreUserTags (had no effect):
ID: 385499
Match: ```
/(switch(((?:\i))){.+?)case ((?:\i)(?:.(?:\i))?).BOT:default:((?:\i))=.{0,40}((?:\i).(?:\i).Messages).APP_TAG/


**__TypingTweaks (had no effect):__**
ID: `738619`
Match: ```
/(?<=((?:\i))\.length\?(?:\i).(?:\i)\.Messages.THREE_USERS_TYPING\.format\({(?:\i):((?:\i)),(?:(?:\i):)?((?:\i)),(?:\i):(?:\i)}\):)(?:\i)\.(?:\i)\.Messages\.SEVERAL_USERS_TYPING/

ImplicitRelationships (had no effect):
ID: 270759
Match: ```
/((0,(?:\i).jsx)((?:\i).TabBar.Item,{id:(?:\i).(?:\i)).BLOCKED,className:([^\s]+?).item,children:(?:\i).(?:\i).Messages.BLOCKED})/

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

limber skiff
#

now that's right

#

only those three patches left

fossil inlet
#

WHAT IS THAT PATCH

limber skiff
#

to change this

fossil inlet
#

@dapper tiger fix your plugin

rugged spire
fossil inlet
#

@dusk blaze make i18n unhahser

rugged spire
rugged spire
fossil inlet
fossil inlet
#

thats doesnt get the intl key from the hashed intl key

#

thats what i ment

rugged spire
#

why do you need this?

#

i dont think that is actually implemented here

fossil inlet
#

yea

#

and

rugged spire
#

what i can see here is

hash to string
key to hash to string
key to hash

fossil inlet
#

hash to key blobcatcozy

fossil inlet
#

brute force

rugged spire
fossil inlet
#

not in vencord

#

but as something funny

rugged spire
#

I have a really horrible question?

#

How are we going to find new unhashed names

fossil inlet
#

thats the fun part

#

we dont

rugged spire
#

vencord hash cracking service

fossil inlet
#

yop

rugged spire
#

they're only xxh32 right

fossil inlet
#

idk

#

check the js impl and compare

rugged spire
fossil inlet
#

iirc they're 64 bit

rugged spire
#

no

#

they are xxh64

#

FUCK

fossil inlet
#

but we know they're all caps, and delimited by _

rugged spire
#

yes

fossil inlet
#

@fringe basaltthoughts on cracking the i18n hashes

rugged spire
dusk blaze
#

by preventing the discord sandbox from silently nuking your system

charred monolithBOT
limber skiff
#

done

frail skyBOT
#
Bad Patches

None

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

fossil inlet
#

nuckyz so good

fringe basalt
#

but idk about collisions

charred monolithBOT
fringe basalt
#

if it's any similar to murmurhash then it will have a TON of collisions

charred monolithBOT
limber skiff
#

I am tired

fossil inlet
dusk blaze
#

amazing

fossil inlet
#

is it on stable yet?

limber skiff
#

nop

#

lol

#

I think I found one with noWarn

#

almost blobwob

rugged spire
#

you will explode

charred monolithBOT
rugged spire
#

i will need to merge in the real changes soon

#

?remindme 6h merge dev into plugin branches

shut vineBOT
#

Alright @rugged spire, in 6 hours: merge dev into plugin branches

rugged spire
#

nah

#

i will do now

limber skiff
#

okay so like

#

there's one major issue

rugged spire
#

yes

#

what is it

limber skiff
#

settings crash without the fixes

#

which means users will suffer to update

rugged spire
#

Oh

fossil inlet
#

not that bad tbh

#

people can just paste update into console

rugged spire
#

vee should make an announcement saying you might have to manually repatch vencord in a few days if it breaks

prime dew
prime dew
#

I can't really remember which plugin it was in particular

fossil inlet
#

@grizzled halo how bad of an issue will it be if people cant open settings to update

prime dew
rugged spire
#

or what

#

maybe I think a "if its broken now do update" thing was pushed idk'

#

I don't remember well

prime dew
#

I wish I could remember as well

charred monolithBOT
limber skiff
#

okay actually

#

it does not crash

#

but the patch is not applied

rugged spire
#

it only crashes if you patch settings itself with i18n

limber skiff
#

I'm pushing a fix to make it work

rugged spire
#

To main?

#

That is compatible with new AND old versions for now?

fossil inlet
#

why is my discord crashing randomly when idle fear

rugged spire
prime dew
rugged spire
#

wow thats not much for me to fix in terms of i18n messages being displayed

charred monolithBOT
rugged spire
charred monolithBOT
limber skiff
#

pretty sure it does

#

it's an id, not a localized string

fossil inlet
#

ah

rugged spire
#

at least I think I have

charred monolithBOT
rugged spire
#

ok yes I fixed it 🙏

#

im sorry if i'm yapping

limber skiff
#

alright

#

I'm done

rugged spire
#

so the API is stable?

limber skiff
#

I suppose

#

you gotta remember I love changing stuff

#

but I think I wont change this one

fossil inlet
limber skiff
#

so go ahead and use it

rugged spire
#

guhhhhhhh

fossil inlet
#

the only thing thats stable is that its unstable

rugged spire
#

I can't tell why BetterQuickReact broke

#

and I rely on that plugin

limber skiff
#

however the intl syntax is stable

rugged spire
#

if i dont have BetterQuickReact i will literally husk

fossil inlet
#

what even is betterquickreact

limber skiff
#

here's a brief explanation

#{intl:MESSAGE} gets transformed into .hash or ["hash

rugged spire
fossil inlet
limber skiff
#

the second case is used if the hash contains special characters like +

fossil inlet
#

SO BAD

rugged spire
#

i know its cursed af

#

thats why I like it

limber skiff
#

depending in the case

rugged spire
#

nvm I'm blind AF

limber skiff
#

#{intl:MESSAGE}\) will match \i.intl.string(\i.\i.hash)
^^^^^
#{intl:MESSAGE}"\] will match \i.intl.string(\i.\i["hash"])
^^^^^^

austere talon
#

betterdiscord guy

rugged spire
austere talon
#

why do we need that dependency?

limber skiff
#

for 64 bits hashing

fossil inlet
#

@limber skiff

austere talon
#

is that what discord uses too?

limber skiff
#

yeah

rugged spire
#

yes

austere talon
#

oh funny

#

i see

rugged spire
#

@austere talon want to hollow?

#

this is hashing so we are effectively now forced to guess the translation keys

limber skiff
austere talon
#

hilarious

fossil inlet
#

match with \I

rugged spire
#

which we wont do

fossil inlet
limber skiff
rugged spire
#

/iYSo6

fossil inlet
#

nevermind

#

i think i need sleep

#

only got five hours

limber skiff
#

I think I need to escape \ too

#

but I havent had issues with any patches so maybe not

limber skiff
#

yes

rugged spire
#

I am trying to match this ```js
"aria-label": E.intl.formatToPlainString(E.t["/iYSo6"], {
emojiName: t.name
}),

#
"aria-label":E.intl.formatToPlainString(E.t["/iYSo6"],{emojiName:t.name}),
limber skiff
fossil inlet
#

@dusk blaze forgot i installed this

rugged spire
charred monolithBOT
limber skiff
#

the original before hashed

austere talon
#

oh it wasnt unsafe before

#

but still needs try catch

limber skiff
#

yep

rugged spire
#

I think I've got it though

#

This is going to be much harder than I thought

#

@fossil inlet i need emotional support

fossil inlet
#

are those all your plugibns

rugged spire
#

some of them are

fossil inlet
#

send repo

#

ill help fix

rugged spire
#

i dont need help

fossil inlet
#

ok blobcatcozy

charred monolithBOT
limber skiff
#

@austere talon this one doesn't need

#

it only tries if it's the better folders sidebar

#

which is wrapped in an error boundary

rugged spire
#

shitty highlighter job

austere talon
#

oh is it?

#

i would still add just for safety

limber skiff
#

yeah

#

okay

austere talon
#

basically to test just make ur getIntlMessage() throw an error always

#

and if shit crashes that needs fixing

#

it should still work worst case

limber skiff
#

HAHA

#

copilot leaked

rugged spire
#

ok

#

BetterQuickReact is fixed

austere talon
#

maybe getIntlMessage() should have its own try catch and return the i18n key?

#

so if it breaks in the future shit will still kinda work

limber skiff
#

sorry but how would it throw?

austere talon
#

you're using discord module

#

if lookup fails it will throw

limber skiff
#

I'm not

austere talon
#

oh right

#

it's using our function only

limber skiff
#

I copied discord code

austere talon
#

yeah fair

limber skiff
#

this is too early to do a webpack find

austere talon
#

but all getIntlMessage calls need catch

limber skiff
#

yep

austere talon
#

or maybe

#
function getIntlMessage(key) {
  try {
    return blahBlah;
  } catch (e) {
    console.error(`#getIntlMessage(${key})`, e);
    return key;
  }
}
#

it could catch on its own

dusk blaze
austere talon
#

so vencord is still semi functional worst case

austere talon
charred monolithBOT
fossil inlet
#

poor soul

rugged spire
#

what am I

fossil inlet
dusk blaze
#

my greatest works

rugged spire
#

unpaid intern?

limber skiff
#

good enough?

rugged spire
limber skiff
#

actually I didnt even read the error message copilot just made it up 😭

austere talon
#

it's more useful to see ui string like VIEW_USER than just empty text XD

#

but yeah

limber skiff
#

well actually that's the one that accepts the hash

fossil inlet
#

shtring

rugged spire
#

@fossil inlet lets patch all of discord to remove hashed translation keys

fossil inlet
#

yes

austere talon
#

but

#

well idk

rugged spire
limber skiff
#

alright done

rugged spire
#

?remindme 10m bqr patch

shut vineBOT
#

Alright @rugged spire, in 10 minutes: bqr patch

rugged spire
#

someone should pin a warning in #1256395889354997771 saying that many plugins might be broken due to these changes

#
VV       VV              sqaaakoi
 VV     VV               Version: 1.10.5 ~ 61acc9af (Dev) - 2 Nov 2024
  VV   VV                Client: Canary ~ Vesktop v1.5.3
   VV VV                 Build Number: 341146 ~ Hash: d69a6c6
    VVV
        CCCCCCC          Platform: Linux (Linux x86_64)
       CC                Plugins: 104 / 179 (official), 32 / 53 (userplugins)
      CC                 Uptime: 113388s
       CC
        CCCCCCC          Donor: no
                         Contributor: yes

                         ███████████████████████████

charred monolithBOT
limber skiff
#

there you go @rugged spire

rugged spire
#

that is much more clean

limber skiff
#

yep

#

I agree

frail skyBOT
#
Bad Patches

NoUnblockToJump (had no effect):
ID: 348238
Match: ```
/.?(.{1,10}.show({.{1,50}(?:.j7eA/v))/


**__NoUnblockToJump (had no effect):__**
ID: `494404`
Match: ```
/if\(.{1,10}\)(.{1,10}\.show\({.{1,50}(?:\.j7eA\/v))/

NoUnblockToJump (had no effect):
ID: 619753
Match: ```
/if(.{1,10})(.{1,10}.show({.{1,50}(?:.j7eA/v))/


**__NoOnboardingDelay (found no module):__**
ID: `-`
Match: ```
.Alcl/f

ThemeAttributes (found no module):
ID: -
Match: ```
./6mw19


**__WebContextMenus (found no module):__**
ID: `-`
Match: ```
.Rd/Mkp
Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

limber skiff
#

I broke stuff

rugged spire
charred monolithBOT
frail skyBOT
#
Bad Patches

None

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

limber skiff
shut vineBOT
#

@rugged spire, <t:1730661613:R>: bqr patch

rugged spire
#

done already

#

time to fix PollCommands

#

fuck

#

fixed another plugin

#

fuck

limber skiff
#

pretty straightforward to fix or having issues?

#

(the plugins)

rugged spire
#

Very straight forward

#

Just working through a list

limber skiff
#

nice

rugged spire
#

ughhhhh

#

JGDkfn GUILD_TEMPLATE_SELECTOR_OPTION_HEADER

limber skiff
#

btw theres a console shortcut to hash a key

rugged spire
#

love

#

need to fix

#

no thanks

weary cave
#

okay maybe more like half a megabyte but still

rugged spire
#

Genuinely try stock Vendroid and you'll hate it

weary cave
rugged spire
#

Ughhhhhhhhhhhhh

#

Finally getting around to SimplifiedProfileNotes

#

which is blatantly broken

rugged spire
#

lol wtf

#

@rugged spire@rugged spire@rugged spire@rugged spire@rugged spire

#

@limber skiff @fossil inlet i found an odd side effect from my broken plugin

limber skiff
#

what is it

glass jasper
rugged spire
#

the point is to restore it to how it was

#

if there is a note rendered on a profile in my simplifiedprofilenotes plugin, and the profile popout was opened from a mention, the mention just Disappears

rugged spire
rugged spire
glass jasper
glass jasper
rugged spire
charred monolithBOT
rugged spire
#

i've noticed that failed patches aren't being logged at all

#

ok I regained my sanity

rugged spire
#

?remindme 2d find a suitable name and description for simplifiedprofilenotes

shut vineBOT
#

Alright @rugged spire, in 2 days: find a suitable name and description for simplifiedprofilenotes

rugged spire
#

@fossil inlet i think I've fixed everything

fossil inlet
#

now i have to fix my plugins fear

rugged spire
#

it only took ~4 hours (including breaks)

charred monolithBOT
charred monolithBOT
rugged spire
#

i can tell even though I've left my thoughts on it, this will be stuck in PR hell

charred monolithBOT
glass jasper
charred monolithBOT
#

I'm against this. It requires basic competence from the user, since this isn't reactive, if a user goes into pwa mode without restarting shit will break

True. I'm not actually sure what this would look like. Perhaps some hackery with CSS media queries could be done directly? I say this as I don't know if using a React hook would work here. Is it even worth checking?

#

uuuuuh??? english pls?

You might not need to be loading it all like this, if you lazy load the stores using findStoreLazy you should be able to directly call addChangeListener on the stores here.

If that doesn't work, I would recommend replacing waitForAndSubscribeToStore with a promise wrapper around waitFor that also attaches the listeners and then using. Promise.all like Promise.all(["Store"].map(waitForAndSubscribeToStore)).then(() => setBadge()).
Make sure to replace the...

#

@Sqaaakoi any chance if you know if discord still hardcodes 720p 30fps for screensharing? I remember from GM days the browser code looked something like:

screenShare(videoQuality, audioQuality) {
// just ignore the settings lol
return navigator.mediaDevices.getDisplayMedia({ video: { height: 720, frameRate: 30 } })
}

but I'm struggling to navigate the new minified code, I wanted to fix that in this plugin too, but I can't verify if it's an issue

opaque silo
rugged spire
frail skyBOT
#
Bad Patches

None

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

rugged spire
#

I am so sorry if I unleash horrors from my next comment

shut vineBOT
#

@rugged spire, <t:1730659145:R>: merge dev into plugin branches

rugged spire
#

already did

charred monolithBOT
#

@Sqaaakoi any chance if you know if discord still hardcodes 720p 30fps for screensharing? I remember from GM days the browser code looked something like:

screenShare(videoQuality, audioQuality) {
// just ignore the settings lol
return navigator.mediaDevices.getDisplayMedia({ video: { height: 720, frameRate: 30 } })
}

but I'm struggling to navigate the new minified code, I wanted to fix that in this plugin too, but I can't verify if it's an issue

I'm...

charred monolithBOT
frail skyBOT
#
Bad Patches

None

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

charred monolithBOT
limber skiff
#

lol why did I write a good commit

#

forgot that wasn't dev

charred monolithBOT
charred monolithBOT
torpid vessel
austere talon
#

did they push stable yet

rugged spire
#

no?

frail skyBOT
#
Bad Patches

None

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

charred monolithBOT
frail skyBOT
#
Bad Patches

None

Bad Webpack Finds

None

Bad Starts

None

Discord Errors

None

charred monolithBOT
charred monolithBOT
#

I suspect this isn't going to work when using the userscript version because of Discord's CSP. I tried to manually inject the webmanifest just by copying the code out of here:

Refused to load manifest from 'blob:https://discord.com/2720f46f-fefa-4280-ac70-2df63a550683' because it violates the following Content Security Policy directive: "default-src 'self'". Note that 'manifest-src' was not explicitly set, so 'default-src' is used as a fallback.

charred monolithBOT
limber skiff
#

it's been so long since they pushed to stable

glass jasper
#

nelly.tools shoutout

charred monolithBOT
long stream
#

new intl still has bugs on other languages

glass jasper
# charred monolith

well id imagine with Vencord half broken rn, cause discord won’t push to stable that no plugin might be merged rn

limber skiff
long stream
jolly egret
#

despite the breakages i think my PRs still work 😎

jolly egret
#

They pushed stable

opaque silo
#

nuckyz manifested it...

glass jasper
#

nuckyz what did you do

limber skiff
#

oh

#

it's time

jolly egret
#

wanna do a deploy?

#

i was thinking about pinging you

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
#

uhh

#

I should have put the bump in a separate commit

#

lol

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
#
[Vendicated/Vencord] New tag created: v1.10.6
limber skiff
#

@jolly egret

jolly egret
#

thanks

glass jasper
# jolly egret thanks

we just need to close the whole server and post a message telling people to update

jolly egret
#

tbh so true

#

like just lock the support channel for 30 minutes lol

fossil inlet
#

Wait did discord push?

jolly egret
#

yep

#

and so did we, so everything but chrome extension is fixed

fossil inlet
jolly egret
#

it kinda surprises me how many people can come in on breakages like these, how often are y'all starting/restarting discord so that our joins increase 500%

fossil inlet
#

General will be flooded in two seconds

fossil inlet
austere talon
#

there are 1mil+ users

jolly egret
#

insane

austere talon
#

thank you guys, good work

#

especially nuckyz and sadan

austere talon
long stream
jolly egret
#

imagine they revert because theres some bug thats apparent with stable

#

(please don't)

glass jasper
#

husk dont even joke about that

limber skiff
#

then we revert too

#

LOL

#

but not the extension of course

jolly egret
#

btw, noblockedmessages seems to crash right now

jolly egret
fossil inlet
jolly egret
#

👍

fossil inlet
#

i was the one who pushed that change 😭

jolly egret
#

you doomed us

fossil inlet
jolly egret
#

surely we can change what stuff we push for review on the extension or else we are gonna be pushing another one so soon lol

limber skiff
#

we can't...

#

happens

jolly egret
#

oof

odd heath
#

messagelogger also crashes when you have the collapse option on

fossil inlet
#

prob same issue

odd heath
#

yea

fossil inlet
#

ill look into that aswell

#

fixing no blocked rn

limber skiff
#

@austere talon lol we really need remote plugin disabling

fossil inlet
#

disable for devs blobcatcozy

jolly egret
#

fwiw you can kinda do that by pushing an update zzzz

fossil inlet
glass jasper
limber skiff
glass jasper
limber skiff
#

I should have waited a bit before bumping

odd heath
#

lmao

jolly egret
limber skiff
#

@austere talon is it possible to cancel a review

jolly egret
#

hopefully we can do that, force push the tag and submit for review again 🙏

odd heath
#

there must be a way

austere talon
high oracle
#

I’m not sure if there’s a way to delete your review from the userside, let me check

limber skiff
#

not user