<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.vencord.dev/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Cynosphere</id>
	<title>Discord Client Modding Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.vencord.dev/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Cynosphere"/>
	<link rel="alternate" type="text/html" href="https://wiki.vencord.dev/article/Special:Contributions/Cynosphere"/>
	<updated>2026-05-11T02:13:43Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.vencord.dev/index.php?title=Bundler_Updates&amp;diff=969</id>
		<title>Bundler Updates</title>
		<link rel="alternate" type="text/html" href="https://wiki.vencord.dev/index.php?title=Bundler_Updates&amp;diff=969"/>
		<updated>2024-03-14T18:46:55Z</updated>

		<summary type="html">&lt;p&gt;Cynosphere: SWC was not a new bundler&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Discord uses a bundler to compress individual files into bigger, singular files known as chunks. This article documents major and minor changes to the bundler or its config over the years that have caused client mods to break.&lt;br /&gt;
&lt;br /&gt;
== Unique CSS class names ==&lt;br /&gt;
In 2017 or 2018, Discord introduced a bundler plugin that made CSS class names unique by adding a random 6-character string at the end of the class.&lt;br /&gt;
&lt;br /&gt;
== 1000 character line splitting ==&lt;br /&gt;
On July 29, 2021, Discord added a [https://babeljs.io/ Babel] rule to split every line of code into 1000 characters within the limits of syntax. At the time, no public client mods broke because none searched modules by code or used module patching.&lt;br /&gt;
&lt;br /&gt;
== Webpack 5 ==&lt;br /&gt;
On October 21, 2021, Discord updated from [https://webpack.js.org/ Webpack] 4 to 5. This introduced lazy-loaded chunks and WebAssembly support.&lt;br /&gt;
&lt;br /&gt;
The Webpack global was renamed from &amp;lt;code&amp;gt;webpackJsonp&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;webpackChunkdiscord_app&amp;lt;/code&amp;gt;.&lt;br /&gt;
Entrypoint modules were changed from an array of module IDs to a function with Webpack&#039;s &amp;lt;code&amp;gt;require&amp;lt;/code&amp;gt; function as the only argument.&lt;br /&gt;
&lt;br /&gt;
== SWC ==&lt;br /&gt;
On September 26, 2022, Discord switched from Babel to [https://swc.rs/ SWC]. This is considered the great cataclysmic event that killed off almost every client mod.&lt;br /&gt;
&lt;br /&gt;
React component display names were removed, making it harder for mods to find components.&lt;br /&gt;
There were plans for Discord to find a way to keep display names for debugging purposes&amp;lt;ref&amp;gt;{{cite web|title=Ability to add displayName to all React components to prevent names from getting mangled|url=https://github.com/swc-project/swc/issues/5958}}&amp;lt;/ref&amp;gt;, but they opted not to bother&amp;lt;ref&amp;gt;{{cite web|title=&amp;quot;We might just stick with not having displayNames&amp;quot;|url=https://github.com/swc-project/swc/issues/5958#issuecomment-1258764673}}&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Module export names were mangled. Finding specific functions without searching for the function&#039;s code was even harder. There were specific patterns, such as &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; becoming &amp;lt;code&amp;gt;Z&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ZP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Rspack ==&lt;br /&gt;
On October 26, 2023, Discord switched from Webpack to [https://www.rspack.dev/ Rspack]. While not as cataclysmic, it wasn&#039;t without issues.&lt;br /&gt;
&lt;br /&gt;
Module export names return. This caused parts of mods broken by SWC to work in some capacity, excluding React component display names.&lt;br /&gt;
&lt;br /&gt;
Every theme was now broken as Rspack&#039;s unique class name plugin uses &amp;lt;code&amp;gt;_&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;__&amp;lt;/code&amp;gt; as the separator between the name and the random string.&lt;br /&gt;
In addition, every stylesheet was loaded in the body instead of the head, forcing client mods to put their stylesheets in &amp;lt;code&amp;gt;document.documentElement&amp;lt;/code&amp;gt; for the highest priority.&lt;br /&gt;
&lt;br /&gt;
More than 100 chunk files are initially loaded instead of 4.&lt;br /&gt;
&lt;br /&gt;
[https://sentry.io Sentry]&#039;s chunk would overwrite the module storage, causing two instances of modules to exist but only one to be accessible.&lt;br /&gt;
&amp;lt;!-- should there be technical details here on how this was fixed? --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The chunk loader chunk loads later than expected, forcing mods that use module patching to disregard further calls to binding &amp;lt;code&amp;gt;webpackChunkdiscord_app.push&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Accidental Early Rspack testing on production ==&lt;br /&gt;
On September 29, 2023, a build on Canary was released that broke everything. It was not known at the time this was Rspack. It was using a non-production-ready config.&lt;br /&gt;
&lt;br /&gt;
Chunk names were not transformed into numbers, which leaked some file names. An example name would be &amp;lt;code&amp;gt;defaultVendors~node_modules_lodash_lodash_js~_36ba&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Script tags had the &amp;lt;code&amp;gt;defer&amp;lt;/code&amp;gt; property set, causing loading race conditions in some mods.&lt;br /&gt;
&lt;br /&gt;
== Config Issues ==&lt;br /&gt;
&#039;&#039;&#039;Config issues&#039;&#039;&#039; refer to minor changes to the config as opposed to entire bundler updates.&lt;br /&gt;
&lt;br /&gt;
=== iOS CI ===&lt;br /&gt;
[[File:iOS_Revert_Times.png|thumb|A message of a (Discord?) moderator (in the TestFlight server?) confirming that iOS CI builds being pushed to Canary weren&#039;t intentional and had to be reverted. Also confirming Discord&#039;s build times at the time]]&lt;br /&gt;
At the beginning of August 2021, Discord had an older CI for iOS builds that would push builds to Canary that would have to be reverted.&lt;br /&gt;
&lt;br /&gt;
=== ES version indecisiveness ===&lt;br /&gt;
&#039;&#039;&#039;[[wikipedia:ECMAScript|ECMAScript]]&#039;&#039;&#039; is a standard for scripting languages, namely JavaScript. It was formerly numerically versioned but is now versioned by year.&lt;br /&gt;
Targeting a specific version tells the bundler what modern features need to be transpiled to compatible features supported by that version.&lt;br /&gt;
&lt;br /&gt;
Changing this version breaks mods that use module patching.&lt;br /&gt;
&lt;br /&gt;
==== December 21, 2023 ====&lt;br /&gt;
The targeted version was downgraded to what it was set to pre-Rspack (ES5?). It was reverted and unreverted several times within a 3-hour window.&lt;br /&gt;
&lt;br /&gt;
[[Vendicated|Vee]] messaged Discord developer Brandon (aweary) about it, and it was confirmed as unintentional.&lt;br /&gt;
&lt;br /&gt;
==== February 28, 2024 ====&lt;br /&gt;
The targeted version was bumped to ES 2020 or newer. It was reverted within 24 hours.&lt;br /&gt;
&lt;br /&gt;
[[Category:Drama &amp;amp; Incidents]]&lt;/div&gt;</summary>
		<author><name>Cynosphere</name></author>
	</entry>
	<entry>
		<id>https://wiki.vencord.dev/index.php?title=Category:Client_Mods&amp;diff=965</id>
		<title>Category:Client Mods</title>
		<link rel="alternate" type="text/html" href="https://wiki.vencord.dev/index.php?title=Category:Client_Mods&amp;diff=965"/>
		<updated>2024-03-14T03:05:03Z</updated>

		<summary type="html">&lt;p&gt;Cynosphere: slash to and&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A Discord &#039;&#039;client mod&#039;&#039; (client modification) is a piece of software that aims to alter the functionality or look of Discord in some way. While this behavior is against the Discord TOS&amp;lt;ref&amp;gt;{{cite web|title=Discord&#039;s Terms of Service|url=https://discord.com/terms}}&amp;lt;/ref&amp;gt;, it is common knowledge that Discord generally does not care about such projects nor the users who use them. Even their employees have been known to use them&amp;lt;ref&amp;gt;{{cite web|title=A Discord employee &#039;devsnek&#039; replying to a comment asking about employees using BetterDiscord|url=https://wiki.vencord.dev/index.php/File:Devsnek_about_BD.png}}&amp;lt;/ref&amp;gt; and contribute back to the community&amp;lt;ref&amp;gt;{{cite web|title=GitHub issue by night in BetterDiscord|url=https://github.com/BetterDiscord/BetterDiscord/issues/442}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web|title=GitHub issue by night in PowerCord|url=https://github.com/powercord-org/powercord/issues/386}}&amp;lt;/ref&amp;gt;. The only exception would be when the Discord API is used abnormally or abused, commonly referred to as a [[selfbot]].&lt;br /&gt;
&lt;br /&gt;
While this only lists client &#039;&#039;modifications&#039;&#039;, some projects aim to recreate a Discord client entirely from the ground up. A complete and up-to-date list of all mods and [[:Category:Custom Clients|custom clients]] to exist can be viewed at the [https://github.com/Discord-Client-Encyclopedia-Management/Discord3rdparties Discord Client Encyclopedia].&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;/div&gt;</summary>
		<author><name>Cynosphere</name></author>
	</entry>
	<entry>
		<id>https://wiki.vencord.dev/index.php?title=Discord_SWC_Change&amp;diff=964</id>
		<title>Discord SWC Change</title>
		<link rel="alternate" type="text/html" href="https://wiki.vencord.dev/index.php?title=Discord_SWC_Change&amp;diff=964"/>
		<updated>2024-03-14T02:43:13Z</updated>

		<summary type="html">&lt;p&gt;Cynosphere: Redirect to Bundler Updates&amp;#039; SWC section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Bundler Updates#SWC]]&lt;/div&gt;</summary>
		<author><name>Cynosphere</name></author>
	</entry>
	<entry>
		<id>https://wiki.vencord.dev/index.php?title=Bundler_Updates&amp;diff=963</id>
		<title>Bundler Updates</title>
		<link rel="alternate" type="text/html" href="https://wiki.vencord.dev/index.php?title=Bundler_Updates&amp;diff=963"/>
		<updated>2024-03-14T02:41:57Z</updated>

		<summary type="html">&lt;p&gt;Cynosphere: Created page with &amp;quot;__NOTOC__ Discord uses a bundler to compact down individual files into bigger singular files, known as chunks. This article serves to document major and minor changes to the bundler or its config over the years that have caused client mods to break.  == Unique CSS class names == Sometime in 2017 or 2018, Discord introduced a bundler plugin that made CSS class names unique by adding a random 6 character string at the end of the class.  == 1000 character line splitting ==...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Discord uses a bundler to compact down individual files into bigger singular files, known as chunks. This article serves to document major and minor changes to the bundler or its config over the years that have caused client mods to break.&lt;br /&gt;
&lt;br /&gt;
== Unique CSS class names ==&lt;br /&gt;
Sometime in 2017 or 2018, Discord introduced a bundler plugin that made CSS class names unique by adding a random 6 character string at the end of the class.&lt;br /&gt;
&lt;br /&gt;
== 1000 character line splitting ==&lt;br /&gt;
On July 29, 2021, Discord added a Babel rule to split every line of code to 1000 characters within limits of syntax. No public client mods at the time broke because none were searching modules by code or using module patching.&lt;br /&gt;
&lt;br /&gt;
== Webpack 5 ==&lt;br /&gt;
On October 21, 2021, Discord updated from [https://webpack.js.org/ Webpack] 4 to 5. This introduced lazy loaded chunks and WebAssembly support.&lt;br /&gt;
&lt;br /&gt;
The Webpack global was renamed from &amp;lt;code&amp;gt;webpackJsonp&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;webpackChunkdiscord_app&amp;lt;/code&amp;gt;.&lt;br /&gt;
Entrypoint modules were changed from an array of module IDs to a function with Webpack&#039;s &amp;lt;code&amp;gt;require&amp;lt;/code&amp;gt; function as the only argument.&lt;br /&gt;
&lt;br /&gt;
== SWC ==&lt;br /&gt;
On September 26, 2022, Discord switched from Webpack to [https://swc.rs/ SWC]. This is considered the great cataclysmic event that killed off almost every client mod.&lt;br /&gt;
&lt;br /&gt;
React component display names were removed, making it harder for mods to find components.&lt;br /&gt;
There were plans for Discord to find a way to keep display names for debugging purposes&amp;lt;ref&amp;gt;{{cite web|title=Ability to add displayName to all React components to prevent names from getting mangled|url=https://github.com/swc-project/swc/issues/5958}}&amp;lt;/ref&amp;gt;, but they opted to not bother&amp;lt;ref&amp;gt;{{cite web|title=&amp;quot;We might just stick with not having displayNames&amp;quot;|url=https://github.com/swc-project/swc/issues/5958#issuecomment-1258764673}}&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Module export names were mangled. It was even harder to find specific functions without searching for the code of the function. There were specific patterns such as &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; becoming &amp;lt;code&amp;gt;Z&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ZP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Rspack ==&lt;br /&gt;
On October 26, 2023, Discord switched from SWC to [https://www.rspack.dev/ Rspack]. While not as cataclysmic, it wasn&#039;t without issues.&lt;br /&gt;
&lt;br /&gt;
Module export names return. This caused parts of mods broken by SWC to work in some capacity, excluding React component display names.&lt;br /&gt;
&lt;br /&gt;
Every theme was now broken as Rspack&#039;s unique class name plugin uses &amp;lt;code&amp;gt;_&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;__&amp;lt;/code&amp;gt; as the separator between the name and the random string.&lt;br /&gt;
In addition, every stylesheet was now loaded in the body instead of the head, forcing client mods to put their stylesheets in &amp;lt;code&amp;gt;document.documentElement&amp;lt;/code&amp;gt; for highest priority.&lt;br /&gt;
&lt;br /&gt;
Upwards of 100 chunk files are initially loaded instead of 4.&lt;br /&gt;
&lt;br /&gt;
[https://sentry.io Sentry]&#039;s chunk would end up overwriting the module storage, causing there to be two instances of modules but only one was ever accessible.&lt;br /&gt;
&amp;lt;!-- should there be technical details here on how this was fixed? --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The chunk loader chunk loads later than expected, forcing mods that use module patching to disregard further calls to binding &amp;lt;code&amp;gt;webpackChunkdiscord_app.push&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Accidental Early Rspack testing on production ==&lt;br /&gt;
On September 29, 2023, a build on Canary was released that broke everything. It was not known at the time this was Rspack. It was using a non-production ready config.&lt;br /&gt;
&lt;br /&gt;
Chunk names were not transformed into numbers, which leaked some file names. An example name would be &amp;lt;code&amp;gt;defaultVendors~node_modules_lodash_lodash_js~_36ba&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Script tags had the &amp;lt;code&amp;gt;defer&amp;lt;/code&amp;gt; property set, causing loading race conditions in some mods.&lt;br /&gt;
&lt;br /&gt;
== Config Issues ==&lt;br /&gt;
&#039;&#039;&#039;Config issues&#039;&#039;&#039; refer to minor changes to the config opposed to entire bundler updates.&lt;br /&gt;
&lt;br /&gt;
=== iOS CI ===&lt;br /&gt;
[[File:iOS_Revert_Times.png|thumb|A message of a (Discord?) moderator (in the TestFlight server?) confirming that iOS CI builds being pushed to Canary weren&#039;t intentional and had to be reverted. Also confirming Discord&#039;s build times at the time]]&lt;br /&gt;
During the beginning of August 2021, Discord had an older CI for iOS builds that would push builds to Canary that would have to be reverted.&lt;br /&gt;
&lt;br /&gt;
=== ES version indecisiveness ===&lt;br /&gt;
&#039;&#039;&#039;[[wikipedia:ECMAScript|ECMAScript]]&#039;&#039;&#039; is a standard for scripting languages, namely JavaScript. It was formerly numerically versioned, but is now versioned by year.&lt;br /&gt;
Targeting a specific version tells the bundler what modern features need to be transpiled to compatible features supported by that version.&lt;br /&gt;
&lt;br /&gt;
Changing this version breaks mods that use module patching.&lt;br /&gt;
&lt;br /&gt;
==== December 21, 2023 ====&lt;br /&gt;
The targeted version was downgraded to what it was set to pre-Rspack (ES5?). It was reverted and unreverted a handful of times within a 3 hour window.&lt;br /&gt;
&lt;br /&gt;
[[Vendicated|Vee]] messaged Discord developer Brandon (aweary) about it and it was confirmed unintentional.&lt;br /&gt;
&lt;br /&gt;
==== February 28, 2024 ====&lt;br /&gt;
The targeted version was bumped to ES 2020 or newer. It was reverted within 24 hours.&lt;br /&gt;
&lt;br /&gt;
[[Category:Drama &amp;amp; Incidents]]&lt;/div&gt;</summary>
		<author><name>Cynosphere</name></author>
	</entry>
	<entry>
		<id>https://wiki.vencord.dev/index.php?title=File:IOS_Revert_Times.png&amp;diff=962</id>
		<title>File:IOS Revert Times.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vencord.dev/index.php?title=File:IOS_Revert_Times.png&amp;diff=962"/>
		<updated>2024-03-14T02:34:24Z</updated>

		<summary type="html">&lt;p&gt;Cynosphere: A message of a (Discord?) moderator (in the TestFlight server?) confirming that iOS CI builds being pushed to Canary weren&amp;#039;t intentional and had to be reverted. Also confirming Discord&amp;#039;s build times at the time.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
A message of a (Discord?) moderator (in the TestFlight server?) confirming that iOS CI builds being pushed to Canary weren&#039;t intentional and had to be reverted. Also confirming Discord&#039;s build times at the time.&lt;/div&gt;</summary>
		<author><name>Cynosphere</name></author>
	</entry>
	<entry>
		<id>https://wiki.vencord.dev/index.php?title=BetterDiscord&amp;diff=925</id>
		<title>BetterDiscord</title>
		<link rel="alternate" type="text/html" href="https://wiki.vencord.dev/index.php?title=BetterDiscord&amp;diff=925"/>
		<updated>2024-03-12T23:36:20Z</updated>

		<summary type="html">&lt;p&gt;Cynosphere: Properly document BandagedBD&amp;#039;s history&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox mod&lt;br /&gt;
| name = BetterDiscord&lt;br /&gt;
| logo = BetterDiscord Logo.png&lt;br /&gt;
| logoCaption = Logo of BetterDiscord&lt;br /&gt;
| yearsActive = August 2015 - present (9 years)&lt;br /&gt;
| platforms = Desktop&lt;br /&gt;
| developers = [[Zerebos]], (formerly [[Jiiks]])&lt;br /&gt;
| licenses = Apache-2.0&lt;br /&gt;
| repo = [https://github.com/BetterDiscord/BetterDiscord BetterDiscord/BetterDiscord]&lt;br /&gt;
| languages = Javascript&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;BetterDiscord&#039;&#039;&#039; (formerly BetterDiscordApp and BandagedBD) is one of the first client mods and the oldest that is still alive today.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
BetterDiscord was created by [[Jiiks]] in August 2015.&lt;br /&gt;
&lt;br /&gt;
Jiiks started a rewrite under the v2 branch was started on November 6, 2016, which became dormant on May 17. 2017. On January 10, 2018, another rewrite was started as a fork under the JsSucks organization&amp;lt;ref&amp;gt;{{cite web|title=First commit to JsSucks/BetterDiscordApp|url=https://github.com/JsSucks/BetterDiscordApp/commit/ea8ac32a1c7debacf57dc175d4caca770bc01a78}}&amp;lt;/ref&amp;gt;, referred to as BetterDiscordv2.&lt;br /&gt;
&lt;br /&gt;
In October 2018, [[Zerebos]] forked the original repository to keep it maintained while BetterDiscordv2 was in development, rebranding it as BandagedBD on February 5, 2018&amp;lt;ref&amp;gt;{{cite web|title=&amp;quot;rebrand as BandagedBD&amp;quot;|url=https://github.com/BetterDiscord/BetterDiscord/commit/d60461023d13775c9b2d2d2fc980bb3e00b1db2d}}&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
BetterDiscordv2 goes dormant on March 16, 2019&amp;lt;ref&amp;gt;{{cite web|title=Final JsSucks/BetterDiscordApp commit|url=https://github.com/JsSucks/BetterDiscordApp/commit/835cc3134cbc80408faeec8b6df9608405650a1b}}&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
BandageBD would begin a rewrite on March 20, 2020&amp;lt;ref&amp;gt;{{cite web|title=First BandagedBD rewrite commit|url=https://github.com/BetterDiscord/BetterDiscord/commit/aa7a1a0966692a319d9a6e0a8a9612bf3a33c0d6}}&amp;lt;/ref&amp;gt;, which has become the current code base since. BandageBD would acquire the BetterDiscord name on July 26, 2020&amp;lt;ref&amp;gt;{{cite web|title=&amp;quot;Changes BandagedBD to BetterDiscord&amp;quot;|url=https://github.com/BetterDiscord/BetterDiscord/commit/0f45dc6e22028bbb4ea1dc456d86a455e47d9dc7}}&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The original BetterDiscordApp repository is finally archived on August 2, 2022.&lt;br /&gt;
&lt;br /&gt;
[[Category:Client Mods]]&lt;/div&gt;</summary>
		<author><name>Cynosphere</name></author>
	</entry>
	<entry>
		<id>https://wiki.vencord.dev/index.php?title=DiscordInjections&amp;diff=924</id>
		<title>DiscordInjections</title>
		<link rel="alternate" type="text/html" href="https://wiki.vencord.dev/index.php?title=DiscordInjections&amp;diff=924"/>
		<updated>2024-03-12T22:46:40Z</updated>

		<summary type="html">&lt;p&gt;Cynosphere: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Infobox mod&lt;br /&gt;
| name = DiscordInjections&lt;br /&gt;
| logo = DiscordInjections Logo.png&lt;br /&gt;
| logoCaption = DiscordInjections Logo&lt;br /&gt;
| yearsActive = April - September 2017&lt;br /&gt;
| platforms = Desktop&lt;br /&gt;
| developers = Ratismal, Snazzah, [[aetheryx]]&lt;br /&gt;
| licenses = MIT&lt;br /&gt;
| repo = DiscordInjections/DiscordInjections (deleted), [https://github.com/Snazzah/DiscordInjections Snazzah/DiscordInjections]&lt;br /&gt;
| languages = [[wikipedia:JavaScript|JavaScript]]&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;DiscordInjections&#039;&#039;&#039; was a client mod that claimed to &amp;quot;pick up where [[BeautifulDiscord]] ends&amp;quot;&amp;lt;ref&amp;gt;{{cite web|title=DiscordInjections&#039; README|url=https://github.com/Snazzah/DiscordInjections/blob/master/README.md}}&amp;lt;/ref&amp;gt; by offering custom JavaScript in addition to custom CSS, which later transformed into a plugin system. It used DOM manipulation via [https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver mutation observers] and jQuery, and interacted with Discord&#039;s backend via [https://discord.js.org discord.js]. It is a [[Selfbotting|selfbotting]] risk by today&#039;s standards.&lt;br /&gt;
&lt;br /&gt;
[[Category:Client Mods]]&lt;/div&gt;</summary>
		<author><name>Cynosphere</name></author>
	</entry>
	<entry>
		<id>https://wiki.vencord.dev/index.php?title=DiscordInjections&amp;diff=923</id>
		<title>DiscordInjections</title>
		<link rel="alternate" type="text/html" href="https://wiki.vencord.dev/index.php?title=DiscordInjections&amp;diff=923"/>
		<updated>2024-03-12T22:46:03Z</updated>

		<summary type="html">&lt;p&gt;Cynosphere: Created page with &amp;quot;__NOTOC__ {{Infobox mod | name = DiscordInjections | logo = DiscordInjections Logo.png | logoCaption = DiscordInjections Logo | yearsActive = April - September 2017 | platforms = Desktop | developers = Ratismal, Snazzah, aetheryx | licenses = MIT | repo = DiscordInjections/DiscordInjections (deleted), [https://github.com/Snazzah/DiscordInjections Snazzah/DiscordInjections] | languages = JavaScript }} &amp;#039;&amp;#039;&amp;#039;DiscordInjections&amp;#039;&amp;#039;&amp;#039; was a client mod t...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Infobox mod&lt;br /&gt;
| name = DiscordInjections&lt;br /&gt;
| logo = DiscordInjections Logo.png&lt;br /&gt;
| logoCaption = DiscordInjections Logo&lt;br /&gt;
| yearsActive = April - September 2017&lt;br /&gt;
| platforms = Desktop&lt;br /&gt;
| developers = Ratismal, Snazzah, [[aetheryx]]&lt;br /&gt;
| licenses = MIT&lt;br /&gt;
| repo = DiscordInjections/DiscordInjections (deleted), [https://github.com/Snazzah/DiscordInjections Snazzah/DiscordInjections]&lt;br /&gt;
| languages = [[wikipedia:JavaScript|JavaScript]]&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;DiscordInjections&#039;&#039;&#039; was a client mod that claimed to &amp;quot;pick up where [[BeautifulDiscord]] ends&amp;quot;&amp;lt;ref&amp;gt;{{cite web|title=DiscordInjections&#039; README|url=https://github.com/Snazzah/DiscordInjections/blob/master/README.md}}&amp;lt;/ref&amp;gt; by offering custom JavaScript in addition to custom CSS, which later transformed into a plugin system. It used DOM manipulation via [https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver mutation observers] and jQuery, and interacted with Discord&#039;s backend via [https://discord.js.org discord.js]. It is a [[Selfbotting|selfbotting]] risk by today&#039;s standards.&lt;/div&gt;</summary>
		<author><name>Cynosphere</name></author>
	</entry>
	<entry>
		<id>https://wiki.vencord.dev/index.php?title=File:DiscordInjections_Logo.png&amp;diff=922</id>
		<title>File:DiscordInjections Logo.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vencord.dev/index.php?title=File:DiscordInjections_Logo.png&amp;diff=922"/>
		<updated>2024-03-12T22:39:41Z</updated>

		<summary type="html">&lt;p&gt;Cynosphere: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{PD-textlogo}}&lt;/div&gt;</summary>
		<author><name>Cynosphere</name></author>
	</entry>
	<entry>
		<id>https://wiki.vencord.dev/index.php?title=EndPwn&amp;diff=917</id>
		<title>EndPwn</title>
		<link rel="alternate" type="text/html" href="https://wiki.vencord.dev/index.php?title=EndPwn&amp;diff=917"/>
		<updated>2024-03-12T22:08:40Z</updated>

		<summary type="html">&lt;p&gt;Cynosphere: Created page with &amp;quot;__NOTOC__ {{Infobox mod | name = EndPwn | logo = EndPwnArchive Logo.png | logoCaption = Unofficial EndPwn logo created for the EndPwn archive | yearsActive = 2017 - 2018 | platforms = Desktop, Web | developers = justquant/dr1ft, BlockBuilder57, twilight-sparkle-irl, User:Cynosphere | licenses = MIT, WTFPL | repo = [https://github.com/EndPwnArchive EndPwnArchive organization] | languages = JavaScript }} &amp;#039;&amp;#039;&amp;#039;EndPwn&amp;#039;&amp;#039;&amp;#039; (stylized as ΣndPwn) was a...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Infobox mod&lt;br /&gt;
| name = EndPwn&lt;br /&gt;
| logo = EndPwnArchive Logo.png&lt;br /&gt;
| logoCaption = Unofficial EndPwn logo created for the EndPwn archive&lt;br /&gt;
| yearsActive = 2017 - 2018&lt;br /&gt;
| platforms = Desktop, Web&lt;br /&gt;
| developers = justquant/dr1ft, BlockBuilder57, twilight-sparkle-irl, [[User:Cynosphere]]&lt;br /&gt;
| licenses = MIT, WTFPL&lt;br /&gt;
| repo = [https://github.com/EndPwnArchive EndPwnArchive organization]&lt;br /&gt;
| languages = [[wikipedia:JavaScript|JavaScript]]&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;EndPwn&#039;&#039;&#039; (stylized as ΣndPwn) was a client mod created by justquant (later known as dr1ft). It was installed using exploits which would change the client&#039;s webapp endpoint to the mod&#039;s loader page, later the updater endpoint was used instead.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
EndPwn originally started as spyware due to trust issues justquant had. It was later turned into a general purpose client mod.&lt;br /&gt;
&lt;br /&gt;
=== EndPwn2 ===&lt;br /&gt;
EndPwn2 was the first public version of EndPwn. Unlike other client mods, it offered a defined set of features with minimal extensibility, such as its own default theme. It used DOM manipulation to make modifications, Webpack searching to pull various functions and used BeautifulDiscord as a base to load CSS.&lt;br /&gt;
&lt;br /&gt;
=== Cynergy ===&lt;br /&gt;
Cynergy was a fork of EndPwn2 by [[User:Cynosphere]] that was nothing but a rebrand with a demoscene-esque injection screen and no default theme. It was functionally identical to EndPwn2.&lt;br /&gt;
&lt;br /&gt;
=== bootsyhax ===&lt;br /&gt;
bootsyhax was a fork by twilight-sparkle-irl. It has been lost to time and the only mentions in it are in EndPwn3&#039;s code as attributions.&lt;br /&gt;
&lt;br /&gt;
=== EndPwn3 ===&lt;br /&gt;
EndPwn3 was a complete rewrite of EndPwn that introduced a plugin system and find and replace patching of Discord&#039;s code. It also replaced the old asarpwn method with the new bspwn method, which would instead scrape Discord client updates, patch them and distribute the patched versions via the updater endpoint of the client.&lt;br /&gt;
&lt;br /&gt;
=== Lambda ===&lt;br /&gt;
Lambda was a fork and continuation of EndPwn3 by [[User:Cynosphere]]. It was later hastily discontinued out of paranoia after someone asked about it in concern towards Discord on Twitter, as Discord&#039;s stance on client mods wasn&#039;t known at the time.&lt;br /&gt;
&lt;br /&gt;
There were plans to make Lambda its own standalone mod at one point.&lt;br /&gt;
&lt;br /&gt;
=== Aftermath ===&lt;br /&gt;
dr1ft disappeared from the internet, taking EndPwn&#039;s GitHub organization down in the process. All archived material has been found from forks on GitHub.&lt;br /&gt;
&lt;br /&gt;
[[toonlink]] is the current holder of the EndPwn organization name on GitHub.&lt;/div&gt;</summary>
		<author><name>Cynosphere</name></author>
	</entry>
	<entry>
		<id>https://wiki.vencord.dev/index.php?title=File:EndPwnArchive_Logo.png&amp;diff=913</id>
		<title>File:EndPwnArchive Logo.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vencord.dev/index.php?title=File:EndPwnArchive_Logo.png&amp;diff=913"/>
		<updated>2024-03-12T21:00:29Z</updated>

		<summary type="html">&lt;p&gt;Cynosphere: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{self|cc-by-sa-4.0}}&lt;/div&gt;</summary>
		<author><name>Cynosphere</name></author>
	</entry>
	<entry>
		<id>https://wiki.vencord.dev/index.php?title=Yelm&amp;diff=911</id>
		<title>Yelm</title>
		<link rel="alternate" type="text/html" href="https://wiki.vencord.dev/index.php?title=Yelm&amp;diff=911"/>
		<updated>2024-03-12T20:44:25Z</updated>

		<summary type="html">&lt;p&gt;Cynosphere: Created page with &amp;quot;__NOTOC__ {{Infobox mod | name = yelm | yearsActive = 2017 | platforms = Web | developers = Memework | licenses = All Rights Reserved | repo = [https://github.com/adryd325/yelm adryd325/yelm] | languages = JavaScript }} &amp;#039;&amp;#039;&amp;#039;yelm&amp;#039;&amp;#039;&amp;#039; was a private client mod and build logger used by members of Memework. It was one of the earliest client mods to use regular expressions to patch Discord&amp;#039;s code. Unlike modern client mod...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Infobox mod&lt;br /&gt;
| name = yelm&lt;br /&gt;
| yearsActive = 2017&lt;br /&gt;
| platforms = Web&lt;br /&gt;
| developers = Memework&lt;br /&gt;
| licenses = All Rights Reserved&lt;br /&gt;
| repo = [https://github.com/adryd325/yelm adryd325/yelm]&lt;br /&gt;
| languages = [[wikipedia:JavaScript|JavaScript]]&lt;br /&gt;
}}&lt;br /&gt;
&#039;&#039;&#039;yelm&#039;&#039;&#039; was a private client mod and build logger used by members of Memework. It was one of the earliest client mods to use [[wikipedia:Regular_expression|regular expressions]] to patch Discord&#039;s code. Unlike modern client mods, it would download, patch and rehost Discord&#039;s frontend.&lt;br /&gt;
&lt;br /&gt;
In 2020, its code would be made public by adryd for archival purposes.&lt;/div&gt;</summary>
		<author><name>Cynosphere</name></author>
	</entry>
</feed>