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 9920b441b..78f97a96a 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 eef5628e9..a125e7779 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 52d7f6149..7db2b2113 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 d5f771725..6d9a8359a 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 f6a5020a8..3ff34f3ce 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 872653644..6ee8628d3 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 9964a9ccb..d227f9e2d 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 9d17b6811..bf50fca8d 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 fb93e052d..06f1c2d6f 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 76f63d069..44fba2470 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 5abcd0274..802f9da99 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 dedf1e48e..10dc32c1d 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 e585d6226..6178478f8 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 5e2820073..c0affa694 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 60489d737..1dfe5da07 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 e20d17f5f..b96055367 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 10866baea..739579c07 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 a575cc59b..88a83ba92 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 7796827b6..26d9c0d70 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; /**