From 051d05783ce896330a161a48caae2bd2e8e10529 Mon Sep 17 00:00:00 2001 From: Eazvy <57739965+Eazvy@users.noreply.github.com> Date: Sat, 29 Mar 2025 13:33:12 -0400 Subject: [PATCH 1/8] update (randomVoice) *fix chat bar buttons / new icon* (#204) * Update index.tsx * Update styles.css * Update index.tsx * Add files via upload * Add files via upload --- src/equicordplugins/randomVoice/index.tsx | 11 +++++------ src/equicordplugins/randomVoice/styles.css | 4 ++-- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/equicordplugins/randomVoice/index.tsx b/src/equicordplugins/randomVoice/index.tsx index 9920b441..78f97a96 100644 --- a/src/equicordplugins/randomVoice/index.tsx +++ b/src/equicordplugins/randomVoice/index.tsx @@ -16,7 +16,7 @@ import { ChannelStore, ContextMenuApi, GuildStore, Menu, NavigationRouter, Permi import style from "./styles.css?managed"; -const ChatVoiceIcon = findComponentByCodeLazy("22H12Zm2-5.26c0"); +const ChatVoiceIcon = findComponentByCodeLazy("0l1.8-1.8c.17"); const Button = findComponentByCodeLazy(".NONE,disabled:", ".PANEL_BUTTON"); const VoiceStateStore = findStoreLazy("VoiceStateStore"); const MediaEngineStore = findStoreLazy("MediaEngineStore"); @@ -276,10 +276,9 @@ function ContextMenu() { @@ -485,7 +484,7 @@ function ContextMenu() { [class^="buttons__"]:not([class^="expression-picker"]) { width: 150px; margin-left: -15px; } [class^="micButtonParent__"] { width: 16px; -} +} \ No newline at end of file From 0cdb9155c6c7f6d5f83d9a688d5324bee6555e63 Mon Sep 17 00:00:00 2001 From: thororen1234 <78185467+thororen1234@users.noreply.github.com> Date: Sat, 29 Mar 2025 13:42:32 -0400 Subject: [PATCH 2/8] Make ChatBarIcons Match Other Sizes --- src/equicordplugins/encryptcord/index.tsx | 4 ++-- src/equicordplugins/furudoSpeak.dev/index.tsx | 2 +- src/equicordplugins/hideChatButtons/index.tsx | 4 ++-- src/equicordplugins/meow/index.tsx | 2 +- src/equicordplugins/moreStickers/index.tsx | 7 +++---- src/equicordplugins/signature/index.tsx | 2 +- src/equicordplugins/soundBoardLogger/components/Icons.tsx | 2 +- src/equicordplugins/talkInReverse/index.tsx | 2 +- src/equicordplugins/woof/index.tsx | 2 +- 9 files changed, 13 insertions(+), 14 deletions(-) diff --git a/src/equicordplugins/encryptcord/index.tsx b/src/equicordplugins/encryptcord/index.tsx index eef5628e..a125e777 100644 --- a/src/equicordplugins/encryptcord/index.tsx +++ b/src/equicordplugins/encryptcord/index.tsx @@ -114,8 +114,8 @@ const ChatBarIcon: ChatBarButtonFactory = ({ isMainChat }) => { }} > {!enabled && <> diff --git a/src/equicordplugins/furudoSpeak.dev/index.tsx b/src/equicordplugins/furudoSpeak.dev/index.tsx index 52d7f614..7db2b211 100644 --- a/src/equicordplugins/furudoSpeak.dev/index.tsx +++ b/src/equicordplugins/furudoSpeak.dev/index.tsx @@ -125,7 +125,7 @@ const FurudoSpeakChatToggle: ChatBarButtonFactory = ({ isMainChat }) => { tooltip={isEnabled ? "Disable FurudoSpeak" : "Enable FurudoSpeak"} onClick={toggle} > - + {isEnabled && ( <> diff --git a/src/equicordplugins/hideChatButtons/index.tsx b/src/equicordplugins/hideChatButtons/index.tsx index d5f77172..6d9a8359 100644 --- a/src/equicordplugins/hideChatButtons/index.tsx +++ b/src/equicordplugins/hideChatButtons/index.tsx @@ -37,8 +37,8 @@ function HideToggleButton(props: { open: boolean | undefined, onClick: MouseEven diff --git a/src/equicordplugins/meow/index.tsx b/src/equicordplugins/meow/index.tsx index f6a5020a..3ff34f3c 100644 --- a/src/equicordplugins/meow/index.tsx +++ b/src/equicordplugins/meow/index.tsx @@ -17,7 +17,7 @@ async function handleButtonClick() { const ChatBarIcon: ChatBarButtonFactory = () => { return ( - + ); }; diff --git a/src/equicordplugins/moreStickers/index.tsx b/src/equicordplugins/moreStickers/index.tsx index 87265364..6ee8628d 100644 --- a/src/equicordplugins/moreStickers/index.tsx +++ b/src/equicordplugins/moreStickers/index.tsx @@ -103,12 +103,11 @@ export default definePlugin({ onClick={onClick} style={{ backgroundColor: "transparent" }} > - { - /* Icon taken from: https://github.com/Pitu/Magane/blob/0ebb09acf9901933ebebe19fbd473ec08cf917b3/src/Button.svelte#L29 */} + {/* Icon taken from: https://github.com/Pitu/Magane/blob/0ebb09acf9901933ebebe19fbd473ec08cf917b3/src/Button.svelte#L29 */} { tooltip={isEnabled ? "Disable Signature" : "Enable Signature"} onClick={toggle} > - + {isEnabled && ( <> diff --git a/src/equicordplugins/soundBoardLogger/components/Icons.tsx b/src/equicordplugins/soundBoardLogger/components/Icons.tsx index 9964a9cc..d227f9e2 100644 --- a/src/equicordplugins/soundBoardLogger/components/Icons.tsx +++ b/src/equicordplugins/soundBoardLogger/components/Icons.tsx @@ -62,7 +62,7 @@ export const ChatBarIcon: ChatBarButtonFactory = () => { return ( - + ); }; diff --git a/src/equicordplugins/talkInReverse/index.tsx b/src/equicordplugins/talkInReverse/index.tsx index 9d17b681..bf50fca8 100644 --- a/src/equicordplugins/talkInReverse/index.tsx +++ b/src/equicordplugins/talkInReverse/index.tsx @@ -49,7 +49,7 @@ const ReverseMessageToggle: ChatBarButtonFactory = ({ isMainChat }) => { tooltip={enabled ? "Disable Reverse Message" : "Enable Reverse Message"} onClick={() => setEnabledValue(!enabled)} > - + ); }; diff --git a/src/equicordplugins/woof/index.tsx b/src/equicordplugins/woof/index.tsx index fb93e052..06f1c2d6 100644 --- a/src/equicordplugins/woof/index.tsx +++ b/src/equicordplugins/woof/index.tsx @@ -17,7 +17,7 @@ async function handleButtonClick() { const ChatBarIcon: ChatBarButtonFactory = () => { return ( - + ); }; From 2f0260c9bbca37797f62067752f94b4481949415 Mon Sep 17 00:00:00 2001 From: Eazvy <57739965+Eazvy@users.noreply.github.com> Date: Sun, 30 Mar 2025 07:06:11 -0400 Subject: [PATCH 3/8] Add files via upload (#205) --- src/equicordplugins/questCompleter/index.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/equicordplugins/questCompleter/index.tsx b/src/equicordplugins/questCompleter/index.tsx index 76f63d06..44fba247 100644 --- a/src/equicordplugins/questCompleter/index.tsx +++ b/src/equicordplugins/questCompleter/index.tsx @@ -254,8 +254,8 @@ export default definePlugin({ find: "M7.5 21.7a8.95 8.95 0 0 1 9 0 1 1 0 0 0 1-1.73c", replacement: { match: /(?<=className:\i\}\))/, - replace: ",onClick:$self.openCompleteQuestUI()" - }, + replace: ",onClick:()=>$self.openCompleteQuestUI()" + }, predicate: () => settings.store.clickableQuestDiscovery } ], From 68d813b56ef5e78fe3d4becf6a8d7580a72ce00f Mon Sep 17 00:00:00 2001 From: thororen1234 <78185467+thororen1234@users.noreply.github.com> Date: Sun, 30 Mar 2025 10:55:31 -0400 Subject: [PATCH 4/8] Equibop has addpatch --- src/webpack/patchWebpack.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/webpack/patchWebpack.ts b/src/webpack/patchWebpack.ts index 5abcd027..802f9da9 100644 --- a/src/webpack/patchWebpack.ts +++ b/src/webpack/patchWebpack.ts @@ -519,11 +519,6 @@ function patchFactory(moduleId: PropertyKey, originalFactory: AnyModuleFactory): continue; } - // TODO: remove once Vesktop has been updated to use addPatch - if (patch.plugin === "Vesktop") { - canonicalizeReplacement(replacement, "VCDP"); - } - const lastCode = code; const lastFactory = originalFactory; From cbf36f8b4f1886f36f9532c05f6403452d931cfe Mon Sep 17 00:00:00 2001 From: thororen1234 <78185467+thororen1234@users.noreply.github.com> Date: Sun, 30 Mar 2025 12:33:52 -0400 Subject: [PATCH 5/8] Remove Migration --- CONTRIBUTING.md | 7 ++++--- src/main/patcher.ts | 15 +++------------ src/main/updater/http.ts | 28 +--------------------------- 3 files changed, 8 insertions(+), 42 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index dedf1e48..10dc32c1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,7 +2,7 @@ Vencord is a community project and welcomes any kind of contribution from anyone! -We have development documentation for new contributors, which can be found at . +We have development documentation for new contributors, which can be found at . All contributions should be made in accordance with our [Code of Conduct](./CODE_OF_CONDUCT.md). @@ -17,9 +17,10 @@ Pull requests can be made either to the `main` or the `dev` branch. However, unl Writing a plugin is the primary way to contribute. Before starting your plugin: +- Be in our discord - Check existing pull requests to see if someone is already working on a similar plugin -- Check our [plugin requests tracker](https://github.com/Vencord/plugin-requests/issues) to see if there is an existing request, or if the same idea has been rejected -- If there isn't an existing request, [open one](https://github.com/Vencord/plugin-requests/issues/new?assignees=&labels=&projects=&template=request.yml) yourself +- Check our [plugin requests tracker](https://discord.com/channels/1173279886065029291/1173334591302553631) to see if there is an existing request, or if the same idea has been rejected +- If there isn't an existing request, [open one](https://discord.com/channels/1173279886065029291/1173334591302553631) yourself. and include that you'd like to work on this yourself. Then wait for feedback to see if the idea even has any chance of being accepted. Or maybe others have some ideas to improve it! - Familarise yourself with our plugin rules below to ensure your plugin is not banned diff --git a/src/main/patcher.ts b/src/main/patcher.ts index e585d622..6178478f 100644 --- a/src/main/patcher.ts +++ b/src/main/patcher.ts @@ -26,13 +26,6 @@ import { IS_VANILLA } from "./utils/constants"; console.log("[Equicord] Starting up..."); -// FIXME: remove at some point -const isLegacyNonAsarVencord = IS_STANDALONE && !__dirname.endsWith(".asar"); -if (isLegacyNonAsarVencord) { - console.warn("This is a legacy non asar install! Migrating to asar and restarting..."); - require("./updater/http").migrateLegacyToAsar(); -} - // Our injector file at app/index.js const injectorPath = require.main!.filename; @@ -46,7 +39,7 @@ if (IS_VESKTOP || IS_EQUIBOP) require.main!.filename = join(dirname(injectorPath // @ts-ignore Untyped method? Dies from cringe app.setAppPath(asarPath); -if (!IS_VANILLA && !isLegacyNonAsarVencord) { +if (!IS_VANILLA) { const settings = RendererSettings.store; // Repatch after host updates on Windows if (process.platform === "win32") { @@ -162,7 +155,5 @@ if (!IS_VANILLA && !isLegacyNonAsarVencord) { console.log("[Equicord] Running in vanilla mode. Not loading Equicord"); } -if (!isLegacyNonAsarVencord) { - console.log("[Equicord] Loading original Discord app.asar"); - require(require.main!.filename); -} +console.log("[Equicord] Loading original Discord app.asar"); +require(require.main!.filename); diff --git a/src/main/updater/http.ts b/src/main/updater/http.ts index 5e282007..c0affa69 100644 --- a/src/main/updater/http.ts +++ b/src/main/updater/http.ts @@ -19,9 +19,8 @@ import { get } from "@main/utils/simpleGet"; import { IpcEvents } from "@shared/IpcEvents"; import { VENCORD_USER_AGENT } from "@shared/vencordUserAgent"; -import { app, dialog, ipcMain } from "electron"; +import { ipcMain } from "electron"; import { writeFileSync as originalWriteFileSync } from "original-fs"; -import { join } from "path"; import gitHash from "~git-hash"; import gitRemote from "~git-remote"; @@ -87,28 +86,3 @@ ipcMain.handle(IpcEvents.GET_REPO, serializeErrors(() => `https://github.com/${g ipcMain.handle(IpcEvents.GET_UPDATES, serializeErrors(calculateGitChanges)); ipcMain.handle(IpcEvents.UPDATE, serializeErrors(fetchUpdates)); ipcMain.handle(IpcEvents.BUILD, serializeErrors(applyUpdates)); - -export async function migrateLegacyToAsar() { - try { - const isFlatpak = process.platform === "linux" && !!process.env.FLATPAK_ID; - if (isFlatpak) throw "Flatpak Discord can't automatically be migrated."; - - const data = await get(`https://github.com/${gitRemote}/releases/latest/download/desktop.asar`); - - originalWriteFileSync(join(__dirname, "../equicord.asar"), data); - originalWriteFileSync(__filename, '// Legacy shim for new asar\n\nrequire("../equicord.asar");'); - - app.relaunch(); - app.exit(); - } catch (e) { - console.error("Failed to migrate to asar", e); - - app.whenReady().then(() => { - dialog.showErrorBox( - "Legacy Install", - "The way Equicord loaded was changed and the updater failed to migrate. Please reinstall using the Equicord Installer!" - ); - app.exit(1); - }); - } -} From 165191644103fa4789ad4884f5b46acbd95a4181 Mon Sep 17 00:00:00 2001 From: thororen1234 <78185467+thororen1234@users.noreply.github.com> Date: Sun, 30 Mar 2025 12:57:16 -0400 Subject: [PATCH 6/8] Fix DIscord Server link --- README.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 60489d73..1dfe5da0 100644 --- a/README.md +++ b/README.md @@ -2,17 +2,19 @@ [![Equibop](https://img.shields.io/badge/Equibop-grey?style=flat)](https://github.com/Equicord/Equibop) [![Tests](https://github.com/Equicord/Equicord/actions/workflows/test.yml/badge.svg?branch=main)](https://github.com/Equicord/Equicord/actions/workflows/test.yml) -[![Discord](https://img.shields.io/discord/1207691698386501634.svg?color=768AD4&label=Discord&logo=discord&logoColor=white)](https://discord.gg/5Xh2W87egW) +[![Discord](https://img.shields.io/discord/1173279886065029291.svg?color=768AD4&label=Discord&logo=discord&logoColor=white)](https://discord.gg/5Xh2W87egW) Equicord is a fork of [Vencord](https://github.com/Vendicated/Vencord), with over 300+ plugins. You can join our [discord server](https://discord.gg/5Xh2W87egW) for commits, changes, chat or even support.


### Extra included plugins +
161 additional plugins ### All Platforms + - AllCallTimers by MaxHerbold & D3SOX - AltKrispSwitch by newwares - AlwaysExpandProfile by thororen @@ -170,43 +172,52 @@ You can join our [discord server](https://discord.gg/5Xh2W87egW) for commits, ch - YoutubeDescription by arHSM ### Web Only + - None At This Time ### Vesktop & Equibop Only + - ScreenRecorder by AutumnVN ### Discord Desktop Only + - MediaDownloader by Colorman - StatusWhilePlaying by thororen ### Equicord Devbuilds Only + - FurudoSpeak by example-git - Shakespearean by vmohammad - VoiceChannelLog by Sqaaakoi & maintained by thororen
- ## Installing / Uninstalling Windows + - [GUI](https://github.com/Equicord/Equilotl/releases/latest/download/Equilotl.exe) - [CLI](https://github.com/Equicord/Equilotl/releases/latest/download/EquilotlCli.exe) MacOS + - [GUI](https://github.com/Equicord/Equilotl/releases/latest/download/Equilotl.MacOS.zip) Linux + - [GUI-X11](https://github.com/Equicord/Equilotl/releases/latest/download/Equilotl-x11) - [GUI-Wayland](https://github.com/Equicord/Equilotl/releases/latest/download/Equilotl-wayland) - [CLI](https://github.com/Equicord/Equilotl/releases/latest/download/EquilotlCli-Linux) - [AUR](https://aur.archlinux.org/packages?O=0&K=equicord) + ```shell sh -c "$(curl -sS https://raw.githubusercontent.com/Equicord/Equicord/refs/heads/main/misc/install.sh)" ``` + ## Installing Equicord Devbuild ### Dependencies + [Git](https://git-scm.com/download) and [Node.JS LTS](https://nodejs.dev/en/) are required. Install `pnpm`: @@ -237,6 +248,7 @@ Build Equicord: ```shell pnpm build ``` + Inject Equicord into your client: ```shell From a1564cc1f0cc0db80933b1697a716d2fbedd52c1 Mon Sep 17 00:00:00 2001 From: thororen1234 <78185467+thororen1234@users.noreply.github.com> Date: Sun, 30 Mar 2025 13:37:58 -0400 Subject: [PATCH 7/8] Fix MessageDecorationsAPI --- src/equicordplugins/polishWording/index.ts | 11 +++-------- src/plugins/_api/messageDecorations/index.tsx | 2 +- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/src/equicordplugins/polishWording/index.ts b/src/equicordplugins/polishWording/index.ts index e20d17f5..b9605536 100644 --- a/src/equicordplugins/polishWording/index.ts +++ b/src/equicordplugins/polishWording/index.ts @@ -30,16 +30,11 @@ const settings = definePluginSettings({ export default definePlugin({ name: "PolishWording", - description: - "Tweaks your messages to make them look nicer and have better grammar", + description: "Tweaks your messages to make them look nicer and have better grammar", authors: [Devs.Samwich], dependencies: ["MessageEventsAPI"], - start() { - addMessagePreSendListener(presendObject); - }, - stop() { - removeMessagePreSendListener(presendObject); - }, + start: () => addMessagePreSendListener(presendObject), + stop: () => removeMessagePreSendListener(presendObject), settings, }); diff --git a/src/plugins/_api/messageDecorations/index.tsx b/src/plugins/_api/messageDecorations/index.tsx index 10866bae..739579c0 100644 --- a/src/plugins/_api/messageDecorations/index.tsx +++ b/src/plugins/_api/messageDecorations/index.tsx @@ -32,7 +32,7 @@ export default definePlugin({ { find: '"Message Username"', replacement: { - match: /#{intl::GUILD_COMMUNICATION_DISABLED_BOTTOM_SHEET_TITLE}.+?}\),\i(?=\])/, + match: /#{intl::GUILD_COMMUNICATION_DISABLED_BOTTOM_SHEET_TITLE}.+?}\)\)(?=\])/, replace: "$&,Vencord.Api.MessageDecorations.__addDecorationsToMessage(arguments[0])" } } From fce4ffaabbaa43c21b327855ec22f6b5c550c0ed Mon Sep 17 00:00:00 2001 From: thororen1234 <78185467+thororen1234@users.noreply.github.com> Date: Sun, 30 Mar 2025 13:56:37 -0400 Subject: [PATCH 8/8] Revert Reload --- src/Vencord.ts | 60 ++++++------------------------------------ src/webpack/webpack.ts | 2 +- 2 files changed, 9 insertions(+), 53 deletions(-) diff --git a/src/Vencord.ts b/src/Vencord.ts index a575cc59..88a83ba9 100644 --- a/src/Vencord.ts +++ b/src/Vencord.ts @@ -30,7 +30,6 @@ import "./utils/quickCss"; import "./webpack/patchWebpack"; import { openUpdaterModal } from "@components/VencordSettings/UpdaterTab"; -import { Logger } from "@utils/Logger"; import { StartAt } from "@utils/types"; import { get as dsGet } from "./api/DataStore"; @@ -49,37 +48,6 @@ if (IS_REPORTER) { Settings.plugins.CharacterCounter.enabled = false; } -const logger = new Logger("Debug", "#a6d189"); - -let isFrozen = true; -const checkInterval = 5000; -const freezeChecker = setInterval(() => { - if (isFrozen) { - location.reload(); - } - isFrozen = true; -}, checkInterval); - -function safeInit() { - try { - startAllPlugins(StartAt.Init); - init(); - - const originalLoggerInfo = logger.info.bind(logger); - logger.info = function (message) { - originalLoggerInfo(message); - if (message.includes("Completed Equicord initialization.")) { - isFrozen = false; - clearInterval(freezeChecker); - } - }; - } catch (error) { - logger.error("Failed to initialize Equicord, reloading in 5 seconds...", error); - clearInterval(freezeChecker); - setTimeout(() => location.reload(), 5000); - } -} - async function syncSettings() { // pre-check for local shared settings if ( @@ -126,8 +94,6 @@ async function init() { syncSettings(); - logger.info("Completed Equicord initialization."); - if (!IS_WEB && !IS_UPDATER_DISABLED) { try { const isOutdated = await checkForUpdates(); @@ -173,25 +139,15 @@ async function init() { } } -safeInit(); +startAllPlugins(StartAt.Init); +init(); document.addEventListener("DOMContentLoaded", () => { - try { - startAllPlugins(StartAt.DOMContentLoaded); - - if (IS_DISCORD_DESKTOP && Settings.winNativeTitleBar && navigator.platform.toLowerCase().startsWith("win")) { - document.head.append(Object.assign(document.createElement("style"), { - id: "vencord-native-titlebar-style", - textContent: "[class*=titleBar]{display: none!important}" - })); - } - - isFrozen = false; - clearInterval(freezeChecker); - logger.info("DOMContentLoaded event handled successfully."); - } catch (error) { - logger.error("Error during DOMContentLoaded event, reloading in 5 seconds...", error); - clearInterval(freezeChecker); - setTimeout(() => location.reload(), 5000); + startAllPlugins(StartAt.DOMContentLoaded); + if (IS_DISCORD_DESKTOP && Settings.winNativeTitleBar && navigator.platform.toLowerCase().startsWith("win")) { + document.head.append(Object.assign(document.createElement("style"), { + id: "vencord-native-titlebar-style", + textContent: "[class*=titleBar]{display: none!important}" + })); } }, { once: true }); diff --git a/src/webpack/webpack.ts b/src/webpack/webpack.ts index 7796827b..26d9c0d7 100644 --- a/src/webpack/webpack.ts +++ b/src/webpack/webpack.ts @@ -26,7 +26,7 @@ import { traceFunction } from "../debug/Tracer"; import { Flux } from "./common"; import { AnyModuleFactory, AnyWebpackRequire, ModuleExports, WebpackRequire } from "./wreq"; -export const logger = new Logger("Webpack"); +const logger = new Logger("Webpack"); export let _resolveReady: () => void; /**