#πΎ-core-development
1 messages Β· Page 159 of 1
should we make the theme link thingy only accept http/https?
i feel like this is too much trolling
Vencord.Settings.themeLinks = ["data:text/css;base64,KnthbmltYXRpb246ciA0bXMgaW5maW5pdGUgbGluZWFyfUBrZXlmcmFtZXMgcnt0b3t0cmFuc2Zvcm06cm90YXRlKDF0dXJuKX19"]
there's no reason to be able to run this shit since quickcss exists
i hate anti malware detections so much they're so stupid
ill try to do some changes to the installer to reduce detections
no that doesn't solve them
the latest version is flagged as remote executable downloader trojan by one engine, i wonder if it's the self updater https://github.com/Vencord/Installer/blob/main/self_updater.go#L52
**self_updater.go: **Line 52
filename := Ternary(buildinfo.UiType == buildinfo.UiTypeCli, "VencordInstallerCli.exe", "VencordInstaller.exe")
lmao
another potentially sus thing is that it checks all Discord folders in AppData/Local https://github.com/Vencord/Installer/blob/main/find_discord_windows.go#L127
**find_discord_windows.go: **Line 127
if ExistsFile(path.Join(programData, username, discordName)) || ExistsFile(path.Join(programData, username, discordName)) {
so i might change it to where instead of checking each folder it instead just reads the AppData Local folder and then filters for Discord paths
why is there 2 times the same thing
like to me it looks like that line is saying if a || a
it's more like if a() || a()
that may not seem important but functions can have side effects
maybe go is so broken you need to check twice
lmao
no
im just dumb lmao
i think they used to be two different conditions but during a refactor at some point the second condition become obsolete
and i didnt fully remove it
i was wondering if it was some kind of multithreading shenanigans and this fixed some dumb bug...

lmao classic
I tried opening PR in the repo for the website but it got denied so I think it should at least be here https://github.com/Vencord/vencord.dev/pull/34
This information must be written down somewhere for people who want to take this route. Otherwise the XPI autobuild is meaningless.
baby duck syndrome moment
electron 28 drops win7 support so why even bother
what?
we might as well support win7 if it's as simple as reducing go version
we can drop support once discord drops support
None
None
None
None
None
None
None
None
I mean it's 2 months away so it seems kinda useless imo
its already dropped on canary so
its been ~4 days since 28 was pushed to canary
cyn
This plugin works great for me, is there anything else that needs to be done before this can be merged? Would be happy to help.
This if statement did exist previously but it was removed which ended up giving the path with /resources/ even if isSystemElectron was true
thanks! i accidently removed it, thinking both branches were identical
94c840d fix(regression): allow patching system electron... - ItsLogic
@urban wraith hilarious timing, someone complained about it the same time u opened the pr
unless that person was why u prd
pure coincidence
I tried to reinstall after updating my discord and realised it was using the wrong path
silly
it was just brainfart from me
i looked at that if else during refactor and was like ohh both parts are the same
so i removed it
turns out, they were not in fact the same
I wouldn't recommend merging this at the moment, since it's currently broken under Windows.
@topaz thistle is glibc always such a fucking pain in the ass
i love compiling on my system and then it doesn't run on other people's systems so i have to build in ancient ubuntu container instead
could they not have made glibc backwards compatible
Yes
Flatpak :)
That's also fucked
Not always and not perfect
there was a stupid linux bug in the vencord installer
but i didn't want to make a new version just for the small bug
so. i just replaced the release binary with my own build

FUCK UBUNTU STOP SHIPPING ANCIENT SOFTWARE
I don't get how people run such ancient glibc though
ubuntutards need to become normal and switch to fedora
it's not people it's fucking ubuntu
yes
A developers worst nightmare is straight up ubuntu
are you on your pc rn
I can't tell you how much trouble I've had with that shit
Just woke up
mmm
Have to get ready for exam
best of success!
Which one is it? Simply the installer?
I can take a look after the exam (will probably be done at 12:30 or something)
Describe the bug
When screensharing on Vesktop the audio from the stream also has my microphone audio in it, this makes people in the call hear you double when watching your stream.
This kind of negates the entire use of audio screen-share as you either have to be muted and then not de audible by people not watching your stream or people have to mute your stream which defeats the purpose entirely.
To Reproduce
Steps to reproduce the behavior:
- Open Vesktop
- Join any vc
...
@austere talon can we have a bot that instantly closes issues that contain Screen-Share and audio with a notice to transfer it to venmic?
Also - do I have permission to close issues like this?
I'd actually prefer not to transfer them but close them instead so that they will reopen in Venmic with the required data
My version is 1.5.0
It is happening, I just tested it.
I'll look at Venmic and make an issue there tho.
Just had my first occurrences of this exact thing happening inside Armcord with Vesktop.
glibc is awful
I had deranged experience with rust extension while working on oracle
oracle linux has decade old glibc version
wth is wrong with ubuntu
snap is awful yes but what else if horrible
i just remembered
i am about to accidentally implement global shortcuts on wayland
please do NOT actually use my plugin I am building to do so though
βοΈ Bug Description
When screensharing on Vesktop the audio from the stream also has my microphone audio in it, this makes people in the call hear you double when watching your stream.
This kind of negates the entire use of audio screen-share as you either have to be muted and then not de audible by people not watching your stream or people have to mute your stream which defeats the purpose entirely.
π Steps to reproduce
Steps to reproduce the behavior:
- Open Vesktop
- Join ...
can we make vencord devbuild inject command use cli
is there anything else that needs to be done before this can be merged? Would be happy to help.
Blood sacrifice. It just takes a long time to get plugins merged. Stay patient and it will happen eventually.
Stdout should suffice.
Can you also attach a helvum / qpwgraph screenshot?
Here you go, thanks for the fast reply :)
id 29, type PipeWire:Interface:Node/3
object.serial = "29"
factory.id = "10"
priority.driver = "20000"
node.name = "Dummy-Driver"
id 30, type PipeWire:Interface:Node/3
object.serial = "30"
factory.id = "10"
priority.driver = "19000"
node.name = "Freewheel-Driver"
id 42, type PipeWire:Int...
Seems to be the same issue as #15, the Venmic audio isn't actually fed into discord but discord uses the microphone instead.
Are you able to change your discord input device? Or will discord always use your system default microphone?
This seems to be a pipewire bug
I can but it doesn't make the bug not happen weirdly.
I can but it doesn't make the bug not happen weirdly.
What the fuck π€
What did you change your input device to? (Also did you only change it in discord and not on system level?)
I installed Electron 29 (beta) And added the flags from https://chromium.googlesource.com/chromium/src/+/refs/heads/main/docs/gpu/vaapi.md#verify-driver Just to test
app.commandLine.appendSwitch("enable-features", "VaapiVideoDecodeLinuxGL,VaapiVideoEncoder"); app.commandLine.appendSwitch("use-gl", "angle"); app.commandLine.appendSwitch("use-angle", "gl"); app.commandLine.appendSwitch("ozone-platform", "x11");I can see in nvtop that its encoding with gpu...
When I change it to vencord-screen-share it does seem to eliminate the problem, I forgot to change it on system level, my bad.
I think that fixes it? I'll keep checking but it should be good now, only annoying thing having to keep changing my system input to vencord-screen-share every restart but I'll manage.
Thank you for your quick and efficient help, enjoy your day!
When I change it to vencord-screen-share it does seem to eliminate the problem, I forgot to change it on system level, my bad.
I think that fixes it? I'll keep checking but it should be good now, only annoying thing having to keep changing my system input to vencord-screen-share every restart but I'll manage.
Thank you for your quick and efficient help, enjoy your day!
I forgot to change it on system level, my bad
You shouldn't do that
I'll keep checking but it should be go...
I just wanted to check if it is the same issue as in #15.
Where, as far as I could reproduce - discord would always ignore whatever device I select as my microphone in the discord settings.
Discord would only use the microphone I had configured on system level regardless of what I selected in discord itself - Thus I figured it has to be a chromium bug on ubuntu and not an issue from our side
When I change it to vencord-screen-share it does seem to eliminate the problem, I forgot to change it on system level, my bad.
I think that fixes it? I'll keep checking but it should be good now, only annoying thing having to keep changing my system input to vencord-screen-share every restart but I'll manage.
Thank you for your quick and efficient help, enjoy your day!I forgot to change it on system level, my bad
You shouldn't do that
I'll keep checking...
When I change it to vencord-screen-share it does seem to eliminate the problem, I forgot to change it on system level, my bad.
I think that fixes it? I'll keep checking but it should be good now, only annoying thing having to keep changing my system input to vencord-screen-share every restart but I'll manage.
Thank you for your quick and efficient help, enjoy your day!I forgot to change it on system level, my bad
You shouldn't do that
I'll kee...
This could have been introduced with an upgrade from the (old) vencord-desktop package, 0.4.4-3 -> 0.4.4-4 (Pacman package on Manjaro). That would seem to line up with when people in my VC's started to notice the sound (For me, I installed that on Jan 3rd, just about 3 weeks ago). I'm more than willing to do the legwork to manually figure out what commit may have introduced this bug, but I have no idea what commits were a part of that package - 0.4.4 is not even on the releases page. Given th...
Hate to do the classing "bump" but I'm getting so many DMs from people asking how to install it, could this be reviewed asap?
Hey fellow dumb nocturnal developers where's the setSelfMute function
This could have been introduced with an upgrade from the (old) vencord-desktop package, 0.4.4-3 -> 0.4.4-4 (Pacman package on Manjaro). That would seem to line up with when people in my VC's started to notice the sound (For me, I installed that on Jan 3rd, just about 3 weeks ago). I'm more than willing to do the legwork to manually figure out what commit may have introduced this bug, but I have no idea what commits were a part of that package - 0.4.4 is not even on the releases page. Given ...
Closing in favor of #15
Some more relevant information is available in #15.
Also loki-47-6F-64/sunshine#298 seems related, however it seems the issue there is not strictly related to Debian installs and seems to be faulty on Arch instead, which I cannot confirm/reproduce. I can only observe this behavior in a Debian based VM.
lol how did u even find that issue
@mhkdepauw can you reproduce what I showed in the video above?
It demonstrates that Firefox ignores the selected microphone as well which further indicates a pipewire issue
horror
@austere talon I can build a workaround for this, which would be an additional function that would require me to know which node.id the screenshare node has, can you get that info from the JS side?
If I were to add it, you could simply call that function and venmic would manually fix the created links by electron
Could be an additional toggle in the audio tab
yes
wait why does the js side need the node id
the part calling venmic would be native
Because I need to know which node is the screenshare
well you can check that from main
not from js
ohhh
okay i misunderstood
i assumed by js side you meant the renderer
but you mean js in general
yeah okay
it should be really easy
**venmic.ts: **Lines 19-21
.getAppMetrics()
.find(proc => proc.name === "Audio Service")
?.pid?.toString() ?? "owo"
But fuck pipewire on Debian I guess
getAppMetrics is what u need
Does that also return the screenshare node?
I think I can also take the EasyEffects approach and set a redirect prop in the metadata which would make it way more clean
Will check it out
Thanks for that. After reviewing that commit to the AUR package, probably rather unlikely that it was that given the very minimal changes. I noticed that on my end, Electron25 was updated from 25.9.4 to 25.9.6 in the late December timeframe. It has since again updated to some 28 version due to the manjaro meta package updating. I've already downgraded the system package, is there a way to force vesktop to use a specific Electron version? I tried --electron-version=25.9.4, but that didn't do it.
I love your work @Vendicated! Curious whether we could contribute some of these features you've listed. For context, I use Vesktop on Linux so I could perhaps see if I could implement any of the Linux features?
Yep I just tested it and it does only use the microphone set in the system settings and not in firefox. Do you need me to make a video of that or is me just saying it enough, I can if you wanted.
Yes you can, contributions are always Welcome! Out of the ones listed here, a lot of them are already being done, but you could contribute any of the last 3
Or take a look at the open issues and see if there's any bug or feature request you would like to fix or implement
Yep I just tested it and it does only use the microphone set in the system settings and not in firefox. Do you need me to make a video of that or is me just saying it enough, I can if you wanted.
Confirmation suffices, thanks!
Ugh
Actually I'm not even sure if this will work
Because I think the redirection has to happen when the node is created not once it's already created
Got an idea
not the fanciest but should work π΅βπ«
@austere talon since the issue is #15 I'm tempted to call the workaround flag burgerking_foot_lettuce
I need to figure out if the node is the screenshare audio node, before I can know it from JS Side
the binary name should be vesktop, but i wouldn't rely on it if possible
what's wrong with you
just try logging all nodes and see if you can find it by name or smth?
So I'd go with a combination of application.process.binary contains vencord and media.name being RecordStream
binary would be vesktop most likely, but like i said i wouldn't rely on it
node name would be "chromium input"
I guess with regards to the time frame we're working with it'd be ok if I just take the next node that's a RecordStream and Chrome related
Ah
Wait I can figure it out based on the PID
Because I can know that up front

yeah there u go
that's better
also hate to be that guy but didn't u want it to work with browsers as well
you'd be throwing it out of the window
the number 15 makes me think of an age when i was stupid. not this
Describe the bug
I have noticed a CPU usage increase happening over time as I am streaming.
It should also be mentioned that I can feel the effect this bug has on my system, where if I am playing a game I notice the performance gradually degrading - until I restart my stream and the issue is resolved.
To Reproduce
Steps to reproduce the behavior:
- Start streaming.
- Wait a couple of hours.
- Monitor CPU, and see a massive increase in the electron process.
**Expected ...
I am damaged beyond repair
Can someone please invent break for ifs
I'm so close to using goto rn
streaming is out of vesktops control, it's just electron/chromium api
currently, streams are sadly not hardware accelerated so that's likely where your issue comes from. hopefully we'll be able to fix that in the future, and it should help with this issue as well
make a separate function then you can just return
yeah I re-organized it properly
but goto is fine as well tbh, idk why people think it's evil
I also don't have a big problem with goto as long as it's not excessive
vencord uses goto in some places 
based
well js doesn't have goto , but smth very similar
Implementation of the fix from earlier expects only English errors. This pull request solves the issue and checks if video error contains link to the YouTube video thus meaning the video is not available to watch in embed.
/run ```js
console.log("before block")
block: {
console.log("inside block")
break block
console.log("unreachable")
}
console.log("after block")
Here is your js(18.15.0) output @austere talon
before block
inside block
after block
okay
I'm not sure if I want to keep the name
Imagine someone reads the code lmao
you can nest blocks and achieve insane goto capabilities
but I'll save the target as lettuce_target
because that is shorter than workaround_target
that's really useful
that's funnier
i don't think I've seen anyone use blocks like that tho
i like using things that most developers think is evil
i also like using var to hoist variables out of try catch / if else

evil is a social construct
virgin
let thing: string;
try {
thing = getThing();
} catch {
return
}
console.log("thing")
``` vs chad ```ts
try {
var thing = getThing();
} catch {
return
}
console.log(thing)
always take the most sane approeach to reach your goal
if that happens to be using goto
fine
lol
insane
i prefer the var version
**Tracer.ts: **Lines 21-24
if (IS_DEV) {
var traces = {} as Record<string, [number, any[]]>;
var logger = new Logger("Tracer", "#FFD166");
}
you can do this as well
you can do this in java too

i remember people being annoyed when i did so
if only you could make it const though
well you can either choose var or let
both are mutable
there's a const method but it's uuuuugly
this would be solved if js had blocks as expressions
const thing = try {
getThing()
} catch {
return
}
many other languages allow this
i'm not a fan of blocks as expressions...
need this in js
everything being an expression is hot
Just remove try catch
there's a reason tons of languages are adding it
it's really ugly
horror
when you do multiple levels of blocks-as-expressions i don't think it's any better than ternary nesting
expected<> π
I honestly love kotlin var thing = that ?: return
true
Assuming your return type supports it :)
π
every system has its pro's and con's i guess
(do not critisise the approstophy, its' required to make it readable)
my beloved
If you actually do it like that lmao
Alright, moment of truth, now I need to make Vesktop use my local venmic build and check if shit explods
with exceptions it's nice you can yeet stuff without any boilerplate*
* apart from writing a whole exception class
Anyway nah you gotta match every single dangerous call
Back to the point of block expressions lol
apart from writing a whole exception class
/run ```js
throw "pipe bomb"
@austere talon I only received js(18.15.0) error output
/piston/jobs/f003871b-af2d-47da-8f86-ce7cf0a3a7a2/file0.code:1
throw "pipe bomb"
^
pipe bomb
(Use `βnode --trace-uncaught ...`β to show where the exception was thrown)
Node.js v18.15.0
Uncaught pipe bomb
/run
struct ExceptionsMyBeloved : std::exception {
const char *msg;
const char *what() const noexcept override { return msg; }
};
int main() {
throw ExceptionsMyBeloved{"pipe bomb"};
}
@lime stone I received c++(10.2.0) compile errors
file0.code.cpp:1:45: error: expected class-name before '{' token
1 | struct ExceptionsMyBeloved : std::exception {
| ^
file0.code.cpp:3:17: error: 'const char* ExceptionsMyBeloved::what() const' marked 'override', but does not override
3 | const char *what() const noexcept override { return msg; }
| ^~~~
chmod: cannot access 'a.out': No such file or directory
/piston/packages/gcc/10.2.0/run: line 6: ./a.out: No such file or directory
c++ never works the first time
@austere talon can I quickly get the vencord PID from devtools?
hold my beer

Use std::expected
no
you can only get the pid from main process
alright
the best way to eval code in main is to add --inspect-brk or whatever it was to launch flags and attach a debugger
okay yeah I'm just gonna run a new build then xD
see the comment here
and copy paste that file into vesktop repo
pretty easy to set up actually
you can configure launch flags by copying .env.example to .env and editing it
could even create a vscode launch task that automatically launches vesktop with a debugger attached
Alright artificially reproduced the bug
Time to test the workaround 
So that should work?
Do I need another pnpm install after?
also make sure you have the same structure as the bundled package
should be roughly the same
it uses the prebuild folder
might be easier to just manually replace the file in the node modules folder
probably but I think I got it
nvm
will replace lmao
moment of truth
fuck
Nvm
Didn't even call it lmao
I have it exactly the same as easyeffects
yet shit refuses to work
identifying the node also works correctly
What is that software?
qpwgraph
Discord Account
ezid
What happens when the bug or crash occurs?
The ShowMeYourName plugin doesn't update the name in the " is typing..." field at the bottom of Discord.
This is especially confusing with the option 'Username only' as you'll see names there that you wouldn't recognise from the chat.
([Initially reported in the support channel.](#π₯-vencord-support-π₯ message))
What is the expected behaviour?
When a u...
@austere talon will you punch me for this
the data param's type isn't quite simple
so I'd rather use it like this
or do you have any suggestions?
Will make a PR shortly just review there I guess
@austere talon how can I add a Checkbo in AudioSourcePickerLinux?
for what
Found it
Don't want to force it on for everyone
@Vendicated For the vesktop website, I was wondering if you'd like a website similar to the existing one on https://vencord.dev/?
For this:
reorganise settings to not be a crazy mess of switches (either use sections, or even multiple settings tabs)
does it only pertain to "Vesktop Settings" page or other settings too?
@austere talon does this look ok?
Text should probably rather be: "Workaround for issue that causes the microphone to be shared instead of selected audio"
don't say debian
Just Workaround?
do you think mint or ubuntu users know what debian is
explain like the user is a 10yo (they are)
Number 15 Workaround
So just:
Workaround
- Workaround for issue that causes the microphone to be shared instead of selected audio
?
Or "Force Audio"?
"Linux fix:
Stops microphone audio shared in screeshare. Only use if you have problems"
It's a Debian fix. But they don't know it's Debian, but saying Linux helps narrow down the people who do use it
Windows users don't even see that
They'll only see it when they're already on Linux
It will make them even more confused
Horror
"
Microphone Workaround
Work around an issue that causes the microphone to be shared instead of the correct audio. Only enable if you're experiencing this issue.
"
smth like that
c&p
That's good
looks good to me
Will open PR
Will have to wait for this motherfucker to finish before merging though
I've now implemented a workaround that forcefully redirects discords record-stream to venmic
EasyEffects now reads the custom
PW_KEY_TARGET_OBJECTset by the user to the stream node and tries to not touch the stream if it is not recording from the same input device EasyEffects is using. There are some limitations. For example the stream has to be started when EasyEffects is already running. And if EasyEffects is started when the stream is already there there is a chance that we do not know yet which input device we have to use by the time pipewire tells us about the stream prop...
@austere talon This also fixes the EasyEffects incompatibility
Nice
pog good work
nit: it would be better to store the result of this in a variable to avoid the extra work (i assume collecting metrics is kinda costly)
import type { PatchBay } from "@vencord/venmic";
is there a way to force vesktop to use a specific Electron version?
Just build it locally and replace it inside package.json.
Or with an approach like the vesktop-git AUR package uses the system electron:
https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=vesktop-git
Can we use a global cached variable?
hmm
idk if i would
could the pid change?
probably best to not
considering this is a very rare call it's whatever
i just meant use variable instead of calling it twice in a row
@austere talon give me something to do for vencord or vesktop
None
None
None
None
None
None
None
None
surely this is old enouigh right
Describe the bug
An error popup dialog is raised when updating vencord has failed due to GitHub being unreachable.
After closing the popup, another appears, this keeps going on and on.
This also happens on startup when the user has auto updating vencord enabled.
Meanwhile, nothing appears in the console.
To Reproduce
Steps to reproduce the behavior:
- Somehow make GitHub unreachable
- Go to Updater in settings, and click "Check for Updates"
- When pending updates a...
Is anyone else able to test this on Windows? The person I had asked to test it before didn't rebuild the app properly. They rebuilt it today with the latest changes, and it's working now.
I also don't see the badge while on GNOME. Unsure whether it's settings although I've looked everything possible. I know it works perfectly fine on Windows.
Describe the bug
On Windows, I'm unable to disable the unread notification count seen in taskbar.
I thought turning off this setting in Vesktop would work but it doesn't appear to do what I think it should do (i.e. disable unread notification count in taskbar). I can't really tell what this toggle actually does otherwise and so either this is a bug or this issue is a feature request.
![...
@austere talon it would be awesome if venmic supported more complex inclusion/exclusion logic
I thought about having the mode be either include or exclude but both modes support boolean expressions - that way we wouldn't need mixed include/exclude as well
The only problem is how to represent the logic expressions
I thought about writing my own boolean expression parser for this that supports a minimal amount of operations, in this case ==, !=, &&, ||, contains, startsWith, endsWith maybe?
So we could for example have the current system audio logic where everything except Vesktop is included be:
props["application.process.id"] != "1337"
And if someone wanted to include Firefox but not a specific instance for example it could be:
props["node.name"] == "Firefox" && props["application.process.id"] != "<some-pid>"
I don't think we have the need for complicated expressions like that right now but it could be useful in the future maybe
Tests are still failing because I had the types wrong in venmic 3.3.1, 3.3.2 is currently underway :face_with_spiral_eyes:
jq 
The CLI JSON parser?
yop
How is that related xd
^ you could write expressions like this and jq will handle the filtering for you
Huh interesting, but that would not be suitable for this use-case, as I'd need it as a library not as a cli tool
And I don't really need a JSON parser
A really simple expression parser is more than enough
you'd have to decide on the syntax, write a parser and implement the filtering
jq can already handle that for you
iirc there are some jq bindings
I've already decided on the Syntax and writing the parser is quite simple I think
And as I've already mentioned I don't need JSON parsing, iirc jq filtering only works on JSON
Then I'd have to serialize the data to JSON, run jq on it, deserialize it
and in the worst case even spawn a subprocess to Interact with jq
I don't see how that is any better than writing an expression parser
Β―_(γ)_/Β―
Describe the bug
When I run Vesktop on Windows 7 x64, it says "Entey Point Not Found"
I am not sure how about windows 8/8.1.
To Reproduce
Steps to reproduce the behavior:
- Installed Vesktop as Administrator and All users
- When I clicked finish
- Error shows
Expected behavior
It should literally run fine, but it throws an error differently than I expected.
Screenshots
=>{var Ww=Object.create;var pa=Object.defineProperty;var qw=Object.getOwnPropertyDescriptor;var Kw=Object.getOwnPropertyNames;var Yw=Object.getPrototypeOf,Zw=Object.prototype.hasOwnProperty;var Gi=(e=>typeof require<"u"?require:typeof Proxy(typeof require(e&&(t=e(e=0)),t);var Mh=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Ye=(e,t)=>{for(var o in t)pa(e,o,{get:t[o],enumerable:!0})},Ph=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function...
Please use Code-Blocks to make this more readable:
<pre>
... the code
</pre>
did that, does not seems like it gave expected result
Was the toggle that I screenshot red the button that was described? Not sure why it was closed @Vendicated because that button doesn't seem to work even after a full restart.
either script corrupt (redownload) or you're using an ancient browser (update)
Can confirm I also have this issue intermittently on Vekstop v1.5.0 Flatpak on Fedora 39
I have a problem where desktop audio lower down while someone is talking, I guess is discord default but i can't seem to find it on the settings.
The other things is auto voice gain, since there are two option Voice Activity, Push to talk, and voice activity has a fixed threshold while on the official desktop is automatic.
For the vesktop website, I was wondering if you'd like a website similar to the existing one on https://vencord.dev/?
correct, that would require contributions to the vencord.dev repo
does it only pertain to "Vesktop Settings" page or other settings too?
only the vesktop settings section. currently it's a crazy mess of switches which is a bit hard to use
I thought I'd ask here instead of support.. is it known that if you open rtc debug on vesktop you can't close it, it closes the main vesktop window instead
None
None
None
None
None
None
None
None
- whar
- kinda useless
anyway
ignore my todo list lol
hmm i might be able to spoof the remix tag
that would be quite silly
sadly it looks like discord removes this when you upload the file
sadge
discord actually making their api do something 
i think you also need to prefix the file name with REMIX_
could be spreading misinformation tho
"filename": "1192174392839520346remix-1706336625969.png",
"flags": 4,
flags 4 is remix, there is remix in the filename but idk
docs say its 1 >> 2
yeah sadly doesnt work
uhhh im sorry to annoy, but it's been a month and im wonder if there is anything else that is stopping this from being merged? @Vendicated
I assume patching out the chill zone would be bannable?
prob would just return 429 or something
Hmmm
Builds on the idea of the callTimer plugin but adds timers to all users in guild voice calls.
Note: this only keeps track of users as long as Discord is open. When restarting Discord for any reason the data is lost.
Looks like this
Please let me know if you have any questions or suggestions for improvement.
I think you could use IPC events instead of the interval to handle users joining/switching channels.
It looks kinda bad as the red color doesn't fit very well and it overlaps other things
Don't use snake case, please use ESLint
You could use array functions like .map here to make the code prettier
Holy shit i am unreasonably proud of this plugin
brackets was the linter suggestion seemed less readable to me but listening to the linter removed the underline
Thanks for the suggestions here - actually, I agree it would be nicer. I don't know js so well to easily switch this to a map.
my main complaint would be the comma separated values
a lot of plugins do that ig
also the name probably isn't appropriate for vencord
Just replace the "fuck" with "no" and it's fine
I think you could use IPC events instead of the interval to handle users joining/switching channels
How it is at the moment works; given it's never necessary to update this more than once a second. I agree, where could I find some example how to do/use this? I have 0 experience with this.
As per looks I think it looks kinda bad as the red color doesn't fit very well and it overlaps other things
I also agree. It's less than ideal to move elements around; there is very limited space...
Some more suggestions:
For the looks maybe use a clock icon and then put the time in the tooltip if it's okay to be only visible on hover
For the IPC implementation just look into other plugins. For example
https://github.com/Vendicated/Vencord/blob/620c127b58e94ce4bf0b78d7e55fbce8e4f376e2/src/plugins/vcNarrator/index.tsx#L160-L188
The Plugin name doesn't need to be camelCase (also see other plugins for reference)
Not sure if it's a problem to have the store in this. Other plugins do it differently. Another contributor should probably review this.
it calls itself? I don't understand this inbuilt react timer but it works. Without it, the timer won't refresh
Oh ok, I'm sure there's a better way to make the component re-render but I can't debug it right now
I'm not gonna pr it 
Just showing it :p
how are u sending the file
you can definitely send proper remix tag
With the files field
Not on computer rn Iβll go look soon
For the looks maybe use a clock icon and then put the time in the tooltip if it's okay to be only visible on hover
<img width="165" alt="image" src="https://github.com/Vendicated/Vencord/assets/49804267/9e2e7fa2-ebf0-48d0-bf94-9c4e59cfb397"> (mouse is hovering on the user's clock icon)
Also implemented with a toggle switch setting (because I like not having to move my mouse to see the times). The default setting is with the icon + tooltip.
Looks like the standard is to lazily find at the top of the file - switched to this.
export function sendRemix(blob: Blob) {
const body = new FormData();
body.append("payload_json", JSON.stringify({
content: "",
attachments: [{
id: 0,
filename: "remix.png",
flags: 4
}]
}));
body.append("files[0]", blob, "remix.png");
RestAPI.post({
url: `/channels/${Util.getCurrentChannel().id}/messages`,
body,
});
}
i see
Are you working on the IPC implementation? Or should I do it?
export function sendRemix(blob: Blob) {
const currentChannelId = Util.getCurrentChannel().id;
const reply = PendingReplyStore.getPendingReply(currentChannelId);
if (reply) FluxDispatcher.dispatch({ type: "DELETE_PENDING_REPLY", currentChannelId });
const upload = new CloudUtils.CloudUpload({
file: new File([blob], "remix.png", { type: "image/png" }),
isClip: false,
isThumbnail: false,
platform: 1
}, currentChannelId, false, 0);
upload.on("complete", () => {
console.log(upload);
RestAPI.post({
url: `/channels/${currentChannelId}/messages`,
body: {
channel_id: currentChannelId,
content: "",
nonce: SnowflakeUtils.fromTimestamp(Date.now()),
sticker_ids: [],
type: 0,
attachments: [{
id: "0",
filename: upload.filename,
uploaded_filename: upload.uploadedFilename,
size: blob.size,
flags: 1 << 2,
}],
message_reference: reply ? MessageActions.getSendMessageOptionsForReply(reply)?.messageReference : null,
},
});
});
upload.on("error", () => showToast("Failed to upload remix", Toasts.Type.FAILURE));
upload.upload();
}
the image sends but no remix tag
message type 0 is likely wrong
what should it be then
Are you working on the IPC implementation? Or should I do it? And a quick heads-up the
README.mdis still missing
I was planning to have a look tomorrow but I would love to see what you come up with!
0 seems correct
there isn't any other ones
but it should be 19 for the reply case
replys still work on 0 lol
oh
anyway it looks like discord strips out any attachment flags when you send them
so i don't think it's possible sadly
true
mobile just sends everything normal except the attachment has flag 4
actually the CloudUpload platform param might do something
well it just breaks if i change it so thats a no
discord type
is it connected to a webpack export
you'd usually put it in webpack commons
see how types work there
lol????
patch-2
Engineer's pronouns on discord are just the word "Engineer"
at least based on the id used in the author field
Missing license header
@TheKodeToad its a userplugin it doesnt follow any of those rules πππ
webpack
search for the class in sources and you'll find the module
you can findByProps it
impressive
@crude hearth why are you not the latest and greatest Windows 11
Windows 10 better
norp
Describe the bug
Transparency is not working in latest Vesktop on Linux. This was working in previous versions of Vesktop via a workaround, however the option added in https://github.com/Vendicated/Vencord/commit/988435714e8b1de6e7e95885cbb5222113fb039c and https://github.com/Vencord/Vesktop/commit/b636b65e55235fde9092843a7d3f8dae02d9d720 does not seem to be working
To Reproduce
- Launch Vesktop
- Attempt to enable window transparency using Vencord settings
- Relaunch
- Ob...
its not flags: 1<<2
its is_remix: true
then it will work
:3
because it is a flag
is_remix applies the flag
how come
oh nvm just had to be in all caps
what?? π
issue of skill :3
clearly it is a skill issue then
i prob reloaded before it could finish building
anyway it work
clearly use https://docs.discord.sex
while it doesnt have that you need to send is_remix, is_clip, is_thumbnail
it will.
ok time to make this look good and pr
oh yeah how can i load the color picker cause it doesnt find the module until you load the color picker somewhere else
see how ClientTheme settings page does that?
findComponentByCodeLazy(".Messages.USER_SETTINGS_PROFILE_COLOR_SELECT_COLOR", ".BACKGROUND_PRIMARY)");
idk
yeah but it finds nothing if you havent loaded the color picker yet
I did something similar for the file upload button cause i stole that from some plugin
does it?
i reloaded discord and it found it fine
whar
i reload discord and test the find and it says nothing
then i go to settings page and it works
well idk
dzuriwa
me
hello
are discords devtools lazy loaded or nah
since I'm pretty sure that their devtools have color picker
hello mantikafatatsi
have you tried wndows 10
nop
soon
nop
you need to force load it
Thanks, I wasn't aware.
how
It occurred to me previously but I only realised it was an issue now. UserState does not dispatch updates for users in a guild that has not been opened (literally viewed on the client side). This plays into the issue I was trying to fix with https://github.com/Vendicated/Vencord/pull/2132/commits/5ebc2c8819b3fa489ce5e3bcaaa8083d00d65d33. I guess on the first open of a guild discord client bulk updates all users in the guide and then updates them when something actually happens. Essentially; i...
Oh yes good catch haven't noticed that
None
None
None
None
None
None
None
None
Potentially also there is an issue after a certain period of time of a guild being unopened events stop being dispatched but this is only an intuitive guess that should be checked
I don't think so as this worked for me
Oh yes good catch haven't noticed that. Analyze the format when the client is loaded I don't think the way you do it right now is necessary.
True. I think that change (https://github.com/Vendicated/Vencord/commit/5ebc2c8819b3fa489ce5e3bcaaa8083d00d65d33) simply made the issue more complicated
Hm but it does seem to work for me
Hm but it does seem to work for me
There is the case where a user joins/moves channel that hasn't been opened and they end up without a timer (in the userJoinTimes) and therefor no visual timer.
perhaps a different font? (inter is boring)
figtree
epilogue
some opinionated styling improvements, perfectly understandable if you dont like them
- adjusted border-radius for elements to be more consistent based on their size
- 16px for large background panels
- 12px for buttons, plugin cards, faq cards, etc.
- 8px for smaller elements
- reworked download page tabs
- fixed inconsistent vertical/horizontal padding on faqs
- removed 1px borders on some elements (doesn't look very clean), made them 2px borders on buttons
@ading2210 seems to work for me (i had to get something from google)
it does now 
does it?
revert to old method but keep the good changes since
reverted the change to use VoiceStateStore but kept everything else.
i feel bad for whoever has to review this pr
the voices
horror
VOICE_STATE_UPDATES does not dispatch updates for users in a guild that has not been opened (literally viewed on the client side)
There is the case where a user joins/moves channel that hasn't been opened and they end up without a time (in the
userJoinTimes) and therefor no visual timer.
I can't reproduce this issue with the state of my PR. Can you give me more detailed instructions on how to reproduce it?
I have two Discord accounts open. With the Vencord one I'm just at the fri...
I can't reproduce this issue with the state of my PR. Can you give me more detailed instructions on how to reproduce it? I have two Discord accounts open. With the Vencord one I'm just at the friends tab and when I log the voice state updates and search for my user ID I can clearly see the update looking fine on initial load (without
oldChannelId) and when switching channels
After restarting Discord directly into DM's (somewhere other than a guild); I had added a console debug in the I...
On a side note I am not entirely satisfied with the location of this injection.
There is a case when a user joins/moves channel in a guild that without manually triggering a re-render (by clicking on the user or switch to another guild and back) the state will not update. Essentially showing an old timer that is still ticking from the last call the user was in or no timer in the case they had just joined a call. This was the location of injection on another modified discord platform.
probably because of guild subscriptions
you'd have to dispatch gateway opcode 14 or 37 to subscribe to their events
there's probably info about it on https://discord-userdocs.vercel.app
or the funny alternative url https://discord.sex
the client has a function called updateGuildSubscriptions() i think?
you could use that one
i can get on pc in a moment and see
I think I definitely know why it happens and can fix the IPC implementation. Are you on Discord btw?
I think I definitely know why it happens and can fix the IPC implementation. Are you on Discord btw?
yeah ill msg u
from a quick look at the caller, you should be able to dispatch GUILD_SUBSCRIPTIONS_FLUSH instead
tho im not exactly sure what params do you need to subscribe to the members voice events
that'd be something for dolfies xd
nvm figured it out
you only need typing: true
so something like this should workjs FluxDispatcher.dispatch({type: "GUILD_SUBSCRIPTIONS_FLUSH", subscriptions: {"guild id": {typing: true}}})
don't send a separate event for every guild
you can combine them all into the subscriptions field
you could also patch the gateway somewhere to log everything you send, and check what events are sent when you open a large server
that way you can mimic exactly what discord does
you can just use this
also this is exactly what discord does
yeah except discord subscribes to more events
why is it typing true π€
but there's no need to do that in the background for that person's plugin
so just typing is fine
Β―_(γ)_/Β―
ye
op 36 is request channel statuses
it's why you see a CHANNEL_STATUSES response
(aka irrelevant here)
ye
you don't need to subscribe to other events, just typing is enough for voice updates
pretty sure this is a terrible idea
the inbox does this and if you're in a lot of guilds it gets you rate limited from the gateway and disconnects you
inbox subscribes to individual channels
this doesn't do that
also the client is already subscribed to non-big guilds like that by default
https://github.com/Vendicated/Vencord/pull/552
but fixed now apparently https://github.com/Vendicated/Vencord/commit/a82544e93ed72f445fd35b007e7b03851b530d2f
anyway it's still a bad idea i think
but why
personally im in a lot of very large guilds
the performance impact of subbing to all of those is probably bad xd
there's a reason discord doesn't do it by default
what's this for anyway
a vc timer plugin i think
why do you need to be subbed to all guilds for that
so you can show timers for random guilds you don't normally use?
they're trying to track the times since client start i believe yeah
i would just forget about these, you're not gonna have an accurate time anyway if people are already in vc when you open the client
just only use the guilds discord is already subbed to
but also why do u even care how long random people were in vc for

did they
opening inbox tab still causes death on my discord
oh nvm now its running smoothly
increadible discord
soon
is this ready for merge?
soon
is this ready for merge?
Yes
2bd8ca9 Workaround screenshare audio using microphone o... - Curve
will see what else can be added and then maybe make a release
but i also really wanna get auto updating ready sooon
cause its inconvenient otherwise
@austere talon & other flatpakkers, has your arRPC experience been okay
yes but when you tried it did you have issues with rpc if you ever played
dunno i didnt test
shrug
i commented on the issue
one of the assumptions is really bad about multiple clients
but besides that it seems like an okay doc change
for guilds you aren't subscribed to, discord will periodically sync you the voice states
through the PASSIVE_UPDATE_V1 event
so you don't have to do this
you need to subscribe to typing events to subscribe to the guild
for... reasons
The issue is not present at all in Fedora with the official Discord client, my viewers reported speeds and quality on par with the Windows counterpart. As far as I know the big difference is that Discord on Fedora uses Wayland to X11 video bridge under the hood.
I think that's because the official client can do GPU acceleration, at least it has an option for it in its settings.
please someone with this issue investigate why it happens #π₯-vencord-support-π₯ message
i dont have the issue
the only time my vesktop suspends is when my pc suspends but thats to be expected, also happens with stock discord
horror
interesting thing, i found an extension that's able to disable CSP in firefox, which i thought was basically impossible because of extension restrictions
maybe a variant of this could be used to make the vencord firefox addon work again?
vencord does exactly that
oh huh
**background.js: **Lines 11-32
chrome.webRequest.onHeadersReceived.addListener(
({ responseHeaders, type, url }) => {
if (!responseHeaders) return;
if (type === "main_frame") {
// In main frame requests, the CSP needs to be removed to enable fetching of custom css
// as desired by the user
removeFirst(responseHeaders, h => h.name.toLowerCase() === "content-security-policy");
} else if (type === "stylesheet" && url.startsWith("https://raw.githubusercontent.com/")) {
// Most users will load css from GitHub, but GitHub doesn't set the correct content type,
// so we fix it here
removeFirst(responseHeaders, h => h.name.toLowerCase() === "content-type");
responseHeaders.push({
name: "Content-Type",
value: "text/css"
});
}
return { responseHeaders };
},
{ urls: ["https://raw.githubusercontent.com/*", "*://*.discord.com/*"], types: ["main_frame", "stylesheet"] },
["blocking", "responseHeaders"]
);
i see
seems like for the Last FM Scrobble presence to work it needs to unblock the endpoint URL for it as well
you shouldnt use this btw
it disables csp on all websites = shit security
this only disables discord csp but mozilla doesnt allow it
i was hoping to find an extension that lets me modify it in a more fine-grained way
so cant be on store
no cause its against mozilla rules

if u find an extension that does it on the store, its just mozilla being dum dum
LMFAO
they didnt notice it in vencord for like a year then suddenly flagged it

ya not allowed
use firefox nightly and just install vencord
or use a firefox fork that enables installing extensions
mozilla kinda cringe
yea..
"we care about freedom and decentralisation" until you try to install an extension that doesnt follow their expectactions
theres a problem specifically with the LastFMRichPresence plugin which fails due to CSP because it reaches out to ws.audioscrobbler.com
i could just like, use vesktop but apparently the webview for it cant use bitmap fonts so it uses the vector version which looks awful
None
None
None
None
None
None
None
None
maybe they just have a shorter suspend timeout?
LMAO
when i suspend i often get logged out though
firefox Ws are not rare smh
name another W it has then
(no, being not chromium doesn't count)
better dev tools are kind of subjective, firefox doesnt have lighthouse and stuff for example
lie
i hate firefox devtools so much
horrible
cannot use that shit
ff devtools is only good at css
doesnt even have https://developer.chrome.com/docs/devtools/console/utilities
A reference of convenience functions available in the Chrome DevTools Console.
lighthouse u can run anywhere though
we'll not talk about that
you shouldnt use lighthouse in devtools cause its inconsistent
this is also true lmao
i cba to ever add aria-* stuff
this one color renders the page completely unsightreadable
aria is v simple but you don't need it most of the time
if you use html properly
horror
this is whats failing btw
imo thats enough contrast
devtools disagrees
prob not accounting the font size/weight
oh im 0.02 off
it needs to be 3 i have 2.98
thats why it looks fine, cause it is fine (nearly)
trolled


