#๐พ-core-development
1 messages ยท Page 109 of 1
can you send me your plugin? (like a zip file or a repo)
https://github.com/FieryFlames/Vencord/tree/decor/src/plugins/decor
I can figure out getting said fancy file input myself, I already do something similar, I'm just waiting to see if vap still has their find for it
fancey
Thanks
it wasn't me
it was done by AutumnVN and it's merged
You're not gonna be able to take decor out and put it in your fork in it's current state. And the plugin is mostly useless right now because I haven't added the file input and finished the create decoration flow .-.
#rules message rule 9
What does that plugin do
yes it does, it's missing those two exports because my branch adds those
look at the path.. it's not in my plugin
the two exports that are failing are from the webpack common components/icons
...
Not in my plugin
I added two icons to the common icons file and because you didnt copy that file to your branch too it fails to import them
how?
I got the selector
but you need to open something that loads its module first
or you can just make it from scratch
This is why I was waiting for vap.. I was wondering if he still had the code to load the module
I've already had to do it once for a load of the decoration components, I can probably do it again
cause I might need it
Kind of.. you can find the bit that loads the chunks and modules and regex the various ids out and recreate it
my workaround for this is having to open settings at least once to load the module if it's not loaded
look at decor's requireDecorationModules util
Anyways, don't worry about doing it for the file input. I'll figure it out tomorrow when I'm up
pretty convincing
from here it will return a file object, like the actual filepicker\
here is the plugin with the filepicker
it won't let me send the 2 files changed individually
the only files changed are style.css and the creator modal
I think I should learn basic TypeScript syntax
Embeds the plugin card
Based on bracket notation: [[Plugin Name]]
moving pr to github for hacktoberfest :3
why does this have colorways commits uhh
uhh but vencord repo is not in hacktoberfest
oh whale
i can just add it
do you really care about their digital badges
fair
nooo that wasn't a "don't do hacktoberfest" ๐ญ
i was just curious if you really cared
i can add the hacktobafest tag if you want :3
no it's all digital ๐ญ
such a shame but I get why they can't send 500k free shirts
ven did u forget to revert shiki + invis chat to web, since we dropped firefox
no
chrome also does not allow remote code
if you want to bring them back you need to refactor them for web to embed dependencies
similar to monaco and rnnoise
reposting since it got purged
is there any real reason to keep rnnoise anymore? since krisp is on web now
kinda
@spark cove wanted to refactor it to give you the choice between krisp and rnnoise
oo
cause apparently for some people rnnoise is better
anyway i personally think just removing it is simpler and I doubt many people will care
other than the requested changes, it seems good now from my side
so unless you still want to make any changes, we can merge this and start battle testing it
Should be ready to merge now!
Is it possible to have a plugin that would check if a user is in a voice channel and if they aren't to reconnect them?
no
I would need a discord bot for that right?
I tried a py script that used the user token to login and verify connectivity to the vc using the channel ID and reconnect if not connected, but user tokens are not accepted by discords api per the TOS. Didn't know that until I tried to run the script and got a 401 unauthorized error
if by "a user" you mean yourself then yes
yes by user I mean myself. long story short, a friends discord has leaderboards and im trying to be at the top of hours active in it, but they know im trying to do this and disconnect me from calls if im the only one there lol
but if it is possible for myself, how would I go about starting that? Clearly I wouldn't need a user token as the plugin runs when discord launches, Im assuming I can use similar logic to the call length plugin as that starts a timer once connected to a voice channel. but the reconnecting feature is where i get lost
your use case is against our rules
ah so nevermind
I did not know that, my bad
that would fall into the category of selfbotting huh
lol that's pretty funny but you'd probably get into to trouble if you were automatically reconnecting (and i believe it's selfbotting so discord may terminate/tempban you)
Yeah reconnecting myself is where the issue comes in lol cause thats requiring something else to "login" as myself and reconnect me and then logout. Not worth losing my account over I'll just grind the hours manually lmfao
their pr
how'd I mess with someone's pr?
they mess it themself ig
banned for messing with other people's prs ๐
oh boy
fuck me
i'm going to actually explode
if i have to do any more work on this pr
because of merge conflicts
and not because of bugfixes or whatever
its actually annoying me how git cant resolve this and github forces me to manually resolve it
the thing is i dont actually know what git is doing
to break it this bad
because in the merge editor the incoming side is completely blank
so i'm just blindly accepting the current and then working out what's changed
@turbid hatch can you add 
another time
Will anyone ever add a avatar decoration / profile effect plugin?
okii
because we have the ability to find when a role changes
being worked on
oh
Oo okay, thanks.
@Vendicated can this PR be prioritised? every time we make a change to themes/whatever has been moved, it requires a manual merge because the changes are apparently too complex for Git and GitHub to resolve (and for some reason the incoming changes become blank, so I have to manually go through and work out what the changes are to fix it).
^ it's just getting a bit frustrating that i can't progress with any features/changes because i need a review, and my only maintenance to this PR is that i have to go through git commit history on files that no longer exist on this branch to work out how to merge it
@verbal pumice is the mac issue on channeltabs still there?
yeah
hm
haven't touched it since and cant test
i think @olive barn can help u out with that
once it's fixed i think we can merge it in
(after review ofc)
still waiting for BD to add it
there's not much point in us adding it until they also support it
i dont think it matters if BD adds it 
we can at least encourage people to try and make themes for it
then they'll also be BD-ready when they add the feature
cause it'd be cool to see less and less :root { /* config... */ } and more usercss based gui
(also it might prod them to hurry up on their support)
what issue should i look for
run channeltabs on mac, apparently that should be enough to cause the bug
it's because channeltabs can't account for the mac controls atm
so sunnie needs to know how to account for them and needs a tester
@verbal pumice this look good?
or should it be more left
this is 80px padding-left on .vc-channeltabs-inner-container
overall, a lot of this code needs to be rewritten to use async/await - there's a lot of deeply nested promises that can be made a lot nicer.
also, this code is very dense to read, so if you could add linebreaks just to help with readability that would be great
## Join our Support/Community Server
hmm.. wonder if these would be useful to put into src/components/Icons.tsx ?
can't you use <clipPath> ?
jumpscare
yeah i struggled going through colorways
(hence my comment about adding linebreaks)
yeah
that's what i was thinking of too
lemme find how to make it apply a class on macos then
doesnt the body have a specific class dependent on platform
it does yeah
.platform-osx or smth like that
is that because you already have a padding-left
oh wait
no your selector is wrong
yeah
yeah?
other way around means an element with platform-osx under the innercontainer
wait no
but html is the one with the class
.child .parent has never worked in css
css selectors are order sensitive
inner container is used for both tabs and bookmarks so thatll add padding to both
why did i not add a separate class
although i think html.platform-osx ... is probably a better idea for clarity
nah
easy fix though
discord doesn't do that either
wdym
at the start
got what you mean
aanyways easy fix is just css .platform-osx .vc-channeltabs-inner-container { padding-left: 80px; }
with whatever the new class you add is
:3
i thought you meant they dont put it on html
but now i understand
xd
is 80 the amount of spacing they add?
like do i do that now or
this is 72px
try 72
ye, add it to your style rules with whatever the tabbar container is
and change it to 72 whilst ur at it
looks better xd
hm
shame the traffic lights dont line up
wonder if thats something we can change
.platform-osx .vc-channeltabs-container:nth-child(1) {
padding-left: 72px;
}```
this works if u dont wanna add a new class
double height titlebars are a norm on OSX so probs not
ig
imo this is better than 2 identical classes but what does everyone else here think
you dont have to dupe the style rule
.vc-channeltabs-container, .vc-channeltabs-tab-container
oh right
annoyingly i think to move the traffic lights further down we have to edit how the window gets created
its not a big deal but i dont think its worth it
WHAT DID I DO
have to set hiddenInset instead of hidden, but it might move the lights down too far so it would look off either way, it'd have to be tested
ok pushed
i went fucking insane over trying to disable the discord bind
i probably should but like dont have the mental capacity rn
lmao dwdw
sdfbghjhkasfhjagdfhj
nodevtoolswarning didnt do its job and logged me out and when i logged back in bookmarks shat themselves
it should work
permission to copy the cli.go file from the old installer into the new one?
oh it saves the bookmarks per account
oh its because datastore as a whole exploded
not my fault
woo
just pulled again, looks good
actually wait
its just a bit too far right
65px looks good
done
oh yeah am i the only one getting this sometimes
โ _Pat&quality=lossless
quality=lossless
not possible
vesktop decided to just nuke local storage outta nowhere
i reinstalled and its fine so idrc
when that happens just close and fully reopen
it happens when you have a dead instance still lingering
normally when you start vesktop from source
(yk what would be cool imho? if vencord showed on <@&1026534353167208489>sโ profiles which plugins they made/ contributed to)
someone already suggested that once
might be motivating to contribute as well
would probably be a pain to go back for all the old entries
as well as the discussion of what counts and what doesn't
probably not worth it
I wonderโฆ what happened here
Tbh, I don't have a good reason for why I added it
I was trying to avoid adding/changing too much outside of the plugin folder, but I will try it
You can't use regex in finds can you?
I will prob try to find the module that provides this, or make custom classes
no
send module id
I got a find but I'm haivng other problems now
I can't findByCode it
I don't really want to regex replace it
yeah 1s getting id
oki
863979
I want to extract Promise.all([n.e(40532), n.e(56729), n.e(82761)]).then(n.bind(n, 856729))];
I found a working find: {filteredStickers
why tho
what are you even trying to do
why dont you just get module via findByProps
because the module isn't loaded
i cant
also that module returns react component
the user would need to go to that specific place before the chunks get downloaded and loaded
i'm trying to get those chunks downloaded and loaded in a entirely different place
wait is that module input chat box
no
which module are you even talking about
.
it's a load of stuff
not just that
ctrlf {filteredStickers
I want to extract the promise down there to load the create sticker modal that has a component i want
basically you want this
yes i am trying to load the module that contains that, as it depends on the module that has that file input, causing it to load, and then i can patch that module and extract that file input
I don't want the modal itself I just want to load the modal
tbh just recreate components at this point
i mean maybe but if it can be loaded why not
I've already done it once for another module that I needed the components from way more
I mean maybe but I just think your way of doing it is horror
regex matching webpack.require picking module ids
and loading
it's the best I can do
If I'm doing it for another module I more desperately need the components from I may as well stick with it for this
wtvr ill recreate it
@nimble plaza i found a better place to extract the ids from
i froze patch helpr
I think a github review got f*ed
Why are these outdated?
@torn knot because the reviewed files are changed
I see
REMOVE
Well, I just hope that my actual changes that I made just now didn't break
not testing them 
UHHHH
is that a command or you being shocked i dare say that
Command
WHAT
Slash command
Slash remove
Bloat
All my code is basically like barf
That will eventually be sweeped up
And mopped
And drowned in anti biotics
Lest it get any worse
I can't believe it
Dear God
Could you be more subtle next time
And I'll take the bait cus
For the very first time in my life
I'm fixin to bite
animated png or png reads weirdly
it was written at 4am 
It requires the AvatarDecorationModal when opening the decor modal, and then requires the CreateStickerModal once the user opens create
it's so seamless
sauce?
yeah just 's' + 'h' + 'i' + 'g'
import { wreq } from "@webpack";
export default async function extractAndRequireModuleIds(code: Function | string) {
const chunksAndModule = [...code.toString().match(/(Promise.all.+?\)\))/)?.[1].matchAll(/[0-9]+/g) ?? []];
const ids = chunksAndModule.map(m => parseInt(m[0]));
const module = ids.pop()!;
return Promise.all(ids.map(i => wreq.e(i))).then(wreq.bind(wreq, module));
}
that Promise.all regex looks a bit dangerous
do you still have to hover over your pfp to update the decor?
what that regex actually means is find the first Promise.all, then go as far as you need to find )))
that's only visual
for that page only
I know, in both cases it's fine tho
when itโs finished will it automatically update?
it matches the .then's double parenthesis
or is it destined to do that
it really isn't
when u go out of settings it will update in the app
in my two cases
also having โaddโ at the end still feels weird
the regex can be made safer 100%
keeping it like this for now
idk if thatโs just me
either way itโs great as it is!! youโve done a great job
@austere talon here i'll make a better regex
also maybe make them the same colour for consistency
@austere talon how is
Promise.all.+?]\)\.then\(.+?\)\)
not rlly sure how to make it safer
Also tried on Arch and got this message after choosing what to share :
Along with this error :
Screensharing (without audio) is working though
(Tested on Hyprland 0.30.0 and i3 4.22)
please send the finished snippet once you finalize it, as I was looking for something simmilar for a long time
Also tried on Arch and got this message after choosing what to share :
Along with this error :
Screensharing (without audio) is working though
(Tested on Hyprland 0.30.0 and i3 4.22)
This probably happens because the virtmic code was updated and this PR ...
that's no better
like i said this will find the very first Promise.all in the file then match everything up to the ending
do not use .+
What should I use instead
It seems to match exactly what I want it to..
It's not being run on files its being run on individual functions
the ? makes it lazy and stops at the first ))
Promise.all random ass code that has nothing to do with what you want to match Promise.all([]).then(blah))
try it on this
yes it matches that but the chances of the funcs it's being ran on containing that are slim
but okay
how can it be made better? I don't know
neat
by not using .+
but what do i use instead
/Promise\.all\(\[(\i\.\i\(\d+\),?\)+\]\)\.then/
now you don't even need to match a second time
I really don't like how vencord has custom regex codes
makes it hard to test online
I always use \w+ instead of \i
this is error but im trying to fix
so you'd rather want to type [A-Za-z_$][\w_$]* every time

I only type \w+
they are minified so special chars are rare
doesn't \w+ match _?
it's equally common as normal letters
_ is matched
$ is not matched, which makes sense
most of the time \w+ is enough
I haven't had the need to not use it
I do believe you that there are variables that it won't match
but \i feels more greedy than \w+
and I don't like being greedy in regex
It is looking for more candidate matches, or am I wrong?
(group is getting overwritten?)
Uhh, regex is not meant for sub-patterns like that, or so I believe
You either match the entire thing, or individually the IDs inside
guhh
? it precisely matches Javascript identifiers
your regex matches a subset of javascript identifiers
Which is less greedy
wrap it in a second group
wrap what in a 2nd group
on tetr.io theres a random line of code that uses cjk characters as identifiers
clearly not enough
actually we don't include those so even \i doesn't match all identifiers
it matches all normal identifiers

that makes no sense
that's like saying /a/ is better than /\w/ for text matching cause its less greedy
its insane cuz the rest of the file is minified normally
osk trolling
meanwhile swift allowing variables to be emojis
It matches 100% of the inputs I want
And is more optimal than \i since it ain't as powerful
Promise\.all\(\[(?:\i\.\i\((\d+)\),?)+\]\).then\(\i\.bind\(\i,(\d+)\)\)
what do i wrap in a 2nd group 
okay keep yapping
no it doesnt because identifier names can change between versions
the part u want
arjix trying not to start prolonged arguments over the most meaningless nothingburger
it just captures it again vee
and also that promise.all could have any amt of chunks
so hm
the entire body pal
so i do need to match a 2nd time?
probably
I did not start an argument, I merely stated how annoying \i is since it is an unofficial extension
I did not say that \i is worse than \w+, but that \w+ is enough for my needs, and it is more efficient since it ain't as powerful as \i
what do we think of this
when my regex gets broken bc of that, I'll update it to use \i
i'll make the matchAll match the chunk ids
match only the body
the array?
yes
when 0.1 ms patches aren't efficient ๐ฉ
@junior olive can ya give me the link to the module?
my pc is lagging so much that I do not dare open the devtools
isTryItOutFlow;
the link...
thx
out of this, what do you need?
Promise.all([n.e(40532),n.e(29392),n.e(39685),n.e(47007),n.e(79249),n.e(69876),n.e(79913),n.e(19493),n.e(64466),n.e(92465),n.e(10675),n.e(73679),n.e(87440),n.e(73177),n.e(67874)]).then(n.bind(n,788533))]
i'm working on the regex dw
only the list?
cause you also capture the bind after
yes I need the id in there
export default async function extractAndRequireModuleIds(code: Function | string) {
const chunksAndModule = code.toString()
.match(/Promise\.all\(\[((?:\i\.\i\(\d+\),?)+)\]\).then\(\i\.bind\(\i,(\d+)\)\)/);
const chunkIds = Array.from(chunksAndModule?.[1]
.matchAll(/(?:\i\.\i\((\d+)\),?)/)!)
.map(m => parseInt(m[0]));
const moduleId = parseInt(chunksAndModule?.[2]!);
return Promise.all(chunkIds.map(i => wreq.e(i))).then(wreq.bind(wreq, moduleId));
}
time to test this
doesnt the code have more than one chunk load
cuz if it does you should prob put an anchor to just require the one you need
aka SOME_TEXT_BEHIND_WHAT_YOU_NEED.+?<the normal match>
oh
I presume the module needs both chunks, and i'm trying to make it generic so i can reuse it (as i already am)
you are making it generic
it takes in the function I believe
mmmmmm oh boy why is chunksAndModule null
wait is \i available when using regex like this
yes
use the canonicalizeMatch function
it accepts the regex with \i and returns the normal one
thanks
the 2nd regex should be safe to replace with just (\d+)
or \((\d+)\) to not capture the last one as well
ur first regex acts like a guard, so it is safe
ok i got it working
export default async function extractAndRequireModuleIds(code: Function | string) {
const chunksAndModule = code.toString()
.match(canonicalizeMatch(/Promise\.all\(\[((?:\i\.\i\(\d+\),?)+)\]\).then\(\i\.bind\(\i,(\d+)\)\)/));
const chunks = chunksAndModule?.[1].matchAll(/(\d+)/g);
const chunkIds = Array.from(chunks ?? []).map(c => parseInt(c[0]!));
const moduleId = parseInt(chunksAndModule?.[2]!);
return Promise.all(chunkIds.map(i => wreq.e(i))).then(wreq.bind(wreq, moduleId));
}
^
I don't need that
oh yeah
I have a capture group for the array contents yeah
bre?
so we can annihilation that patch
still works (very nicely)
thing
damn you
i was explaining it but my brain stopped now i need to shower
wha
eslint patch
oh
that allows \i
import { canonicalizeMatch } from "@utils/patches";
import { wreq } from "@webpack";
export default async function extractAndRequireModuleIds(code: Function | string) {
const chunksAndModule = code.toString()
.match(canonicalizeMatch(/Promise\.all\(\[((?:\i\.\i\(\d+\),?)+)\]\).then\(\i\.bind\(\i,(\d+)\)\)/));
if (!chunksAndModule) throw new Error("Couldn't extract anything of relevance");
else if (!chunksAndModule[1]) throw new Error("Couldn't extract any chunk requires");
else if (!chunksAndModule[2]) throw new Error("Couldn't extract module ID");
const chunkIds = Array.from(chunksAndModule[1].matchAll(/(\d+)/g)).map(cId => parseInt(cId[0]));
const moduleId = parseInt(chunksAndModule[2]);
return Promise.all(chunkIds.map(i => wreq.e(i))).then(wreq.bind(wreq, moduleId));
}
cleaned it up, i think this turned out very nicely
would be nice if we had custom error classes
can we not make those?
we can
or are u saying i should add
eh
it can be added later
more of a "ven should consider it" thing
I have a feeling of that ,in 3 days while reviewing ven will come and say "wt* is this"
Hey Turkish lad @crude hearth
hi
normal
it is since few years ago
but everyone is kinda getting used to it
make a Logger and use that
currency here aint shit, but the local prices are shit
then you can have a title like ModuleLoader idk
If ven wants to move this into vencord utils then sure
but rn it's decor plugin util
the consumer should still handle them errors, or are you suggeting the logger to be ontop of that?
maybe add a logger if the error is unhandled
(commit adding this util)
I'm down to move it into a generic util i just don't know if ven wants that
tbh to make it generic we need that anchor thing I said
and have it be optional
in the case it is needed
idk what ur talking abt anchor thing
the consumer still needs to find the function that contains the IDs
yep
this
it doesn't scan all modules
we can't really pick and choose what chunks to load
hmm
is there an exported function that does that?
a module can have more than one of those
it's best just to assume module needs all defined chunk loads
you didnt understand what I mean
the same module can have more than one Promise.all and the rest of the stuff that loads chunks
I do understand, but I disagree ๐
in that case the generic function needs a way to select the right one
..you find the function to extract a single promise.all load from
the consumer handles getting the func that handles loading a module
but the module is not what the function accepts !?
oh wait
it accepts an exported function
are those always behind a single function
that's not true some chunk loaders arent exported
What i've seen is you can find multiple funcs with the same promise.all load
yep
i had to deal with that: https://github.com/Vendicated/Vencord/pull/910/commits/0e2d6bb5912f0bf19692527041d185f0435196c3#diff-b6696714e736bf768510134b07e4ccbddda92680456d724e4746d06fed7fb6fcR94-R130
heh
I really wonder how the discord source code actually looks like
wish they shipped the sourcemaps
i need to figure out this file input now 
I mean behind the scenes it's all normal imports
webpack does the magic of making chunks very likely
I assume you can re-use discord's component for that, well, dunno where it is
(by hijacking another one)
im looking at src rn to figure out
me when it aint loaded 
yep!
that's why i have the extract and require
ok yeah it works
i had a typo in a prop lol
For those of us who have our own image hosts it would be cool to use our own? Would this be possible to add to themer?
what does that even mean?
what are they on
Yeah Iโm confused
sees issue
says no and closes the issue
doesn't elaborate
Huh
aliucord jumpscare
Ahh I just had to open
Since that fork
since what fork?
its the purge
@austere talon just archive the repo
no
Will there be a scoop package for Vesktop? I recently switched from winget to scoop and I am actually more comfortable using it compared to winget
if you make it
Rest in peace ven aliucord plugins
the purge is done
scoop follows the philosophy of only having portable programs, which is nice (there are third party repos with non-portable programs tho)
meanwhile with winget...it updated some programs that I had an older version on purpose, like OpenVPN, that was a pain to debug
Tbh It kind of fits me since Iโm that man who always prefer portable programs than non-portable
Fr
it also doesn't pollute ur PATH, since it adds shims
I learnt that the PATH has a length limit the hard way
as shown in that ss, rn every plugin has a list of contributors.
i was talking about adding the reverse: Every contributorโs profile having a list of their plugins
i often pop up peopleโs profiles (contributors or not). With this feature, i would prbly open contributorโs profiles all the time until ik their plugins by heart lol
I'd rather prefer a search filter in the plugins page to filter by author
Would be less intrusive and a more obvious place to have it
what would you use it for?
for my use case that would be way too much effort
(i think)
opening settings is slow on my pc
Effort to use or code?
use
plus the typing and whatnot. Vs. literally a single click
Maybe you can add a "Show all plugins made by this user" button that opens the settings page with the filter enabled
yeah, that would be a good compromise
a nice thing about the search filter would be that you could also use it to look up colabs, e.g. which plugins did ven and lewi do together? โ author:ven author:lewi
It's just that plugins don't have a logo or smth, so it would be kinda empty to have them in the profile modal
Plus you may want to enable a plugin by that user, but doing that from the profile modal feels off
Yee
If you make a search component that supports that I'll 100% steal it for another plugin I am too lazy to complete
lol yeah, hadnโt thought of that, i still like that idea tho haha, but maybe too odd for mainstream yeah
not sure wym by empty. Do you mean dry? With only the plugin names
if anything ig it could be too full/cluttered, imagine venโs profile haha
but imho that would be ok if itโs at the bottom, like the ReviewDB reviews may-they-rest-in-peace
I think making the button similar to the "join vc" button (well, it is the VC name) would be nice
i feel like having an extra tab might feel a little crammed, especially if you also have mutual groups
so we could make the vencord contrib badge open ur page on click
already crammed enough
@austere talon can I get teal role back ๐
Aktivitat
Using discord with a local locale?
yeah i feel ya
Ven is wild
i was thinking server profile anyway (1 click instead of 2) (also like reviewdb)
that would be sensible, and fine for me, but maybe a waste of implementation effort, as few ppl would prbly guess that function (unless thereโs a hint)
side note, not all contribers have the badge
example: @fleet depot
Ig I am too used to exclusively using English in anything tech related
because they havent made any plugins
why do they have the role then?
because they're a contributor?
They could have contributed to the core of vencord
not every contribution is a plugin
i don't have contributor
makes sense

then what are you even doing with your life!
Most of my contributions were not in plugins funnily enough
for simplicity purposes, vencord considers anyone a contributor who's listed in Devs
so if you never add yourself there, you're not considered a contributor
you have to beg
get on ur hands and knees
ayy congrats epic contributor @junior olive ๐ฆพ
VENNY VENCORD I AM ON MY HANDS AND KNEES BEGGING YOU PLEASE GIVE ME contributor (epic) ROLE IN THE VENCORD SERVER I WILL OWE YOU ALL MY LIFE
@austere talon plz gib the teal role ๐ญ
thank u venny vencord
u are bambik
bambik
gentlemen, one at a time single file line please
I was never banned from the server, I foolishly left it on my own
oh, contriber profiles might also be good, plausibly even more priority, on vencord.dev โ then the devs can link that in their portfolios
hot
thank u venny vencord
Time to use my steam decors
fr
i will upload troller.txt as decor
Hm, it looks like that file might've been a virus. Instead of cooking up trouble, try cooking up a Beet-Pickled Deviled Eggs: https://www.thekitchn.com/recipe-beet-pickled-deviled-eggs-151550
for example its the eicar text
@junior olive might wanna look at steam's avatar decorations
If it's possible to have them stolen then it would be nice to include them as built-in or smth
I've been using them for testing
I don't think I really want to include them built in because tbh they don't work very well due to being square
does steam let u just download them
AvatarDecorRepo when?
yeah from the site
(also licensing issues)
that too
Scraping at runtime for the win
will everyone have to upload their own decor or will there be a way to browse all already uploaded decors and pick any of them
the latter would be neat
upload your own, but there's gonna be preset sets that u can pick from (and in the future I may add the ability to pick from a list of public ones made public by their creators)
@austere talon ven listening to not cute music? (I don't know the song)
maybe make it so that when you upload a decor, there's a checkbox make public | this will allow anyone to find and use your decoration and if you check it you need to enter a description / tags
Yeah that'll be a a down the line update
and then you could either have a website or in client where you can browse all public decors and search by description/tag
that'd be neat
For now decorations will be private with the exception of presets (hoping to have a community pack at launch via collaboration with a artist in the client modding community)
in client ๐ช
yeah ven that sounds good but I'm gonna worry about that down the line
a future feature
yop
into a bright feature future
black metal
upvote
still wanting shiggy decor
listen to this tho it's very pretty
make transparent ill use for testing
on ios canโt
i was promised black metal and what is this
ios L
fr
i rest my case
its just the intro to the album
vennnn why is formdata broken
a
Eisenkult - Anrufung & Der Teufel hat's gesandt
taken from 3rd album
โVulgรคre, deutsche Hassmusikโ
CD / Din A5 Digipak CD released the 22.04.2023
LP / Tape the 02.06.2023
album stream
their label uploaded it super weird, they combine two songs into one video instead of either having one video per song or one video for the entire album
๐ a little satanism in the evening never hurt anybody
What the fuckk
they're not actually
fixx
@austere talon
yes
(ah ig i jumped to conclusions from Anrufung and Teufel in the same line)
oh thatโs the double song upload
it could be like the server @dusk hill has where you request a badge and mods have to approve or is that what your going for
still then youโd need dedicated staff
UserEffects soon
that's what i have lol
decor feature eventually
how would that even be implemented unless you have template
im having a essential chrisis rn

are u doing custom profile effects or
custom profile effects
bc i was hoping to add that to decor in the future
oof
canโt wait to see the atrocities people make
ong
i cant seem to be able to actually set this up
i can set the ones discord already has but the ones i added ๐ค
fixed the flow
What is that!?!?
a effect
I hope someone makes a free profile effect / avatar decoration plugin.
That'd be nice
yeah decor has profile effects on the to-do
we rlly shouldnt have 2 competing effect plugin
Ooo
yeah
would it not be better it request via server bot first than to do that
but the one im working on is on replugged
wym
sorry autocorrect
I think it makes sense
like go to the server, request decor, wait for approval then enable via plugin
user creates from their client -> request goes to private channel - > request is approved -> it becomes their active decoration
requesting via a discord server is icky
mmm true
at least when a users decor has been approved could it show a message at the top of the client saying it has been approved
example, when a user has been removed from a. guild the green bar shows
or maybe a popup message
iโll show in a second
Maybe but that'd require a considerable amount more code
i suppose
yeah that'd be neat
@austere talon does vencord have apis to make a banner like that
check the โrelationship notifierโ plugin
why do we live in a world where swift allows variables to be emojis but discord doesn't allow captital letters in usernames
i hope this free decos plugin doesnt get stuck in PR hell 
@austere talon do you think you could start reviewing it? The only missing feature is presets and I'd rather start squashing review notes
actually hmmmmmm
maybe i should fix decor updates
a start on reviewing it would be nice
there's only 2 more things
presets and switching fetching decorations for other users to timezonedb-style
@topaz thistle would you like me to just publish 1.0.0 to npm?
and i'm still waiting for channel tabs 
it's still not finished, is it?
you can just use a devbuild until it's ready / eventually merged
i mean it seems fine
Yep
alright
so, new PatchBay() throws if no pipewire right
is everything lazily initialised once i call the constructor for the first time, or should i lazy import the entire module?
Yes
The first
so simply importing the module won't initialise a bunch of pipewire stuff?
Yes
neat
how do i figure out the discord webrtc stream name
is it always the same?
it seems to just be "Chromium"
I think discords voice chat output is always WEBRTC something
The chromium thing is only notification sounds
As include?
yeah
Hm can you run pw-cli ls Node
I guess 90 is discord here, what does pw-dump 90 print?
a lot jeez
Yeah I know
Ah
Two things
It should work with the official discord client as that usually has WEBRTC as the voice chat audio
I can give you the application name and Id in list
Would that help?
yeah i have confirmed that link("Chromium", "exclude") works for system audio and doesn't include discord
Can you check if the process Id that pipewire has is the same as the one of Vesktop?
Eh
Wait
Yes
Could very well be a subprocess considering it's chrome
If so can you figure out if that process belongs to Vekstop?
well i restarted discord so it changed but
vee 25666 3.6 0.4 34235080 68176 pts/0 Sl+ 01:50 0:10 /home/vee/Coding/Vesktop/node_modules/electron/dist/electron --type=utility --utility-sub-type=audio.mojom.AudioService --lang=en-GB --service-sandbox-type=none --enable-crash-reporter=5202b306-7f8e-4b0e-9759-5b4adec4e909,no_channel --user-data-dir=/home/vee/.config/VencordDesktop --shared-files=v8_context_snapshot_data:100 --field-trial-handle=0,i,10662465288986271862,12928842484402543385,262144 --enable-features=WaylandWindowDecorations --disable-features=HardwareMediaKeyHandling,MediaSessionService,SpareRendererForSitePerProcess,WidgetLayering,WinRetrieveSuggestionsOnlyOnDemand
this is the one
i think
that is
id 68, type PipeWire:Interface:Node/3
object.serial = "772"
factory.id = "6"
client.id = "82"
client.api = "pipewire-pulse"
application.name = "Chromium"
node.name = "Chromium"
media.class = "Stream/Output/Audio"
Does the process Id from pw-dump match?
yes
"props": {
"adapt.follower.spa-node": "",
"application.icon-name": "chromium-browser",
"application.language": "en_GB.UTF-8",
"application.name": "Chromium",
"application.process.binary": "electron",
"application.process.host": "vendingmachine",
"application.process.id": 25666,
"application.process.machine-id": "3f7a4b6efc23421cbc2744660539dc57",
"application.process.user": "vee",
"audio.adapt.follower": "",
"client.api": "pipewire-pulse",
"client.id": 82,
"clock.quantum-limit": 8192,
"factory.id": 6,
"factory.mode": "split",
"library.name": "audioconvert/libspa-audioconvert",
"media.class": "Stream/Output/Audio",
"media.name": "Playback",
"node.autoconnect": true,
"node.latency": "512/48000",
"node.name": "Chromium",
"node.rate": "1/48000",
"node.want-driver": true,
"object.id": 68,
"object.register": false,
"object.serial": 772,
"pulse.attr.maxlength": 4194304,
"pulse.attr.minreq": 2048,
"pulse.attr.prebuf": 6152,
"pulse.attr.tlength": 8192,
"pulse.server.type": "unix",
"stream.is-live": true,
"window.x11.display": ":0"
},
If so I can push an update tomorrow that will also give you the process Id when calling list
Nice
Do you need just the process Id or do you want to have the application name as well?
and link will also take process id?
I can add support for that yeah
also perhaps the app name might change if packaged, keep in mind i'm running via electron directly
So just process Id then right?
I'll go to sleep now but if you don't have any objections I'll make list Return both node name as well as process Id and allow link to take an id as well
You may want to test if the process Id approach would work for the official discord client as well
ohh i see
It has "WEBRTC <something>" as the node name when in voice chat
"props": {
"adapt.follower.spa-node": "",
"application.icon-name": "chromium-browser",
"application.language": "en_GB.UTF-8",
"application.name": "Chromium",
"application.process.binary": "vencorddesktop",
"application.process.host": "vendingmachine",
"application.process.id": 27450,
"application.process.machine-id": "3f7a4b6efc23421cbc2744660539dc57",
"application.process.user": "vee",
"audio.adapt.follower": "",
"client.api": "pipewire-pulse",
"client.id": 70,
"clock.quantum-limit": 8192,
"factory.id": 6,
"factory.mode": "split",
"library.name": "audioconvert/libspa-audioconvert",
"media.class": "Stream/Output/Audio",
"media.name": "Playback",
"node.autoconnect": true,
"node.latency": "512/48000",
"node.name": "Chromium",
"node.rate": "1/48000",
"node.want-driver": true,
"object.id": 65,
"object.register": false,
"object.serial": 872,
"pulse.attr.maxlength": 4194304,
"pulse.attr.minreq": 2048,
"pulse.attr.prebuf": 6152,
"pulse.attr.tlength": 8192,
"pulse.server.type": "unix",
"stream.is-live": true,
"window.x11.display": ":0"
}
note application.process.binary
this is when packaged
Yeah I know, it was previously electron that's why I thought it wasn't too applicable
But we can also use that
Whatever you prefer
it's only electron when running directly without packaging
i think it's fine to have it semi broken when running unpackaged considering that's only for development
Alright so we'll go with the binary prop then?
If so we'd have to figure out how to tell link wether or not you gave it a binary or node name
so some options:
- allow excluding by application.process.binary
- allow linking by id and return id, application.name and application.process.binary in list()
I think the latter approach would be nice
alright, that works
i might just try to add it myself real quick, it should probably be pretty easy
really? would it not just be editing the place where it creates the object array and changing that to an object then adding those additional props?
ig you might pass some of these across different functions
Should we change the signature of link to
link(target: { name: string } | { id: number}. , mode: ...) or something along those lines?

Along with this error : 
