# BetterDiscord Changelog This changelog starts with the restructured 1.0.0 release that happened after context isolation changes. The changelogs here should more-or-less mirror the ones that get shown in the client but probably with less formatting and pizzazz. ## 1.10.1 ### Added - Added an `ErrorBoundary` to the custom modal stack to prevent errors from bubbling up and preventing startup. ### Removed ### Changed ### Fixed - Fixed modal transition component search for Discord's new function component version ## 1.10.0 ### Added - Enable/disable all buttons for both AddonLists - BDContextMenu has been integrated - Ability to reset to default settings of any collection - Several design components like Flex, Button, Text, and all Modal components - Added a backup modal stack and backdrop in case we lose Discord's again - Added a wanring for large debug logs - `onClose` for modal APIs - New debug information in user settings ### Removed - Several unused "known modules" - `DiscordClasses` module since it was seldom used - `ClassName` and similar constructs - Legacy emote assets ### Changed - Search bars now auto focus - Opening folder on Windows now occur in the foreground - Search fields are now clearable - AddonList pages now show totals and results of searches - Custom CSS live update is now debounced and using a proper switch not a checkbox - ConfirmationModal and ChangelogModal are now using custom components - Updater panel now uses icons rather than text buttons - AddonList panels have been rearranged to accomodate the new buttons - The anonymous BD patch function is now named `BDPatcher` - Modal APIs now use internal ConfirmationModal component - Markdown areas now consistenly allow for embedded links - Lazy loaded modules are returned to the original source ### Fixed - Fixed grabbing the wrong module for accepting invites - Fixed more strings that were not translatable ## 1.9.8 ### Added ### Removed ### Changed ### Fixed - Removed `ipc.sendTo` for electron 28 - Fixed core updater not using the semver comparator ## 1.9.7 ### Added - Support for Spanish (LATAM) locale ### Removed ### Changed - Updated translations - Ignore relative requires (This is because when favoriting a GIF and other UI actions, Discord repeatedly attempts to load relative requires on accident causing our code to make tons of FS requests causing lag.) ### Fixed - Fixed locale not falling back to English properly ## 1.9.6 ### Added - All HTTP request options for bd-fetch ### Removed ### Changed - Updated translations ### Fixed - Fixed race conditions for notices - Fixed options not being sent to fetch ## 1.9.5 ### Added ### Removed ### Changed ### Fixed - Fixed the webpack patch for the new loader ## 1.9.4 ### Added - New css variable `--os-accent-color` - Temporary `Buffer` polyfill ### Removed ### Changed - `BdApi.Net.fetch` now has an optional `timeout` parameter ### Fixed - Fixes not being able to use `http` for `BdApi.Net.fetch`. - Bad URLs and other early errors in `BdApi.Net.fetch` now handled better. ## 1.9.3 ### Added - Multiple shorthand functions under `BdApi.Webpack` - New `getStore` filter ### Removed ### Changed - Updated translations ### Fixed - Fixed header color in light mode. - Fixed window size retention for users of remove minimum size option. - Fixed a toast saying an addon was loaded when it was unloaded. - Fixed context menu patching API for plugins. ## 1.9.2 ### Added ### Removed ### Changed ### Fixed - Fixed context menu crash & api ## 1.9.1 ### Added - SourceURL for the renderer ### Removed ### Changed ### Fixed - Fixed client crashes ## 1.9.0 ### Added - Remove minimum window size now remembers desired size - Basic semver comparison ### Removed - Public Servers - Old DataStore functions that are no longer used ### Changed - All main react components are now functional with hooks - Mac now uses cmd instead of ctrl ### Fixed - Fixed dropdowns - Fixed markdown parser ## 1.8.5 ### Added - Ability to use a custom local version of React DevTools - Experimental `BdApi.Components` for component access in plugins ### Removed ### Changed - Title for settings sidebar now uses a custom component ### Fixed - Fixed ModalRoot and ConfirmationModal not being found in webpack - Fixed context menus for internal changes ## 1.8.4 ### Added ### Removed ### Changed ### Fixed - Fixed more bugs with context menu api ## 1.8.3 ### Added - Checking for old installs and deleting them ### Removed - All references to Emotes, this will become a separate plugin ### Changed - Moved to the more permissive Apache 2.0 license - Now check for discord.asar for electron17+ - Handle setting module exports internally rather than maintaining getter references ### Fixed - Fixed `inject` for electron17+ - Updater checking `>` which does not work for open versions - Fixed a startup bug with the context menu api ## 1.8.2 ### Added ### Removed ### Changed ### Fixed - Fixed modals not working - Fixed downloading binary files - Fixed public server invites ## 1.8.1 ### Added - A script to automatically grab the new translations from POEditor - Several new translations ### Removed ### Changed - Moved some hardcoded strings to be part of the translation system - Several updated translations ### Fixed - Fixed context menu patcher not patching consistently - Fixed context menu toggle item UI not updating - Fixed an issue with the bound API checking the wrong arguments - Fixed `getOwnerInstance` calling the wrong functions internally ## 1.8.0 ### Added - Proper updater system with UI. - Tooltip component for plugins. - Highly expanded plugin API. ### Removed ### Changed - Reverted how internal webpack module searches are performed. - New options for webpack searches. ### Fixed - Fixed many issues regarding memory leaks and out-of-memory errors! - Fixed a major issue where webpack searches would iterate by default. - Fixed an issue with `byStrings` and `combine` filters in the API. - Fixed an issue where searching for multiple modules could yield the same module multiple times. - Fixed an issue where misnamed addon files could prevent startup. - Fixed an issue where the `request` module would not follow redirects. - Fixed an issue where certain modals could crash the client. - Fixed an issue where toasts would not show on the crash screen. ## 1.7.0 ### Added - Polyfill for certain node modules. ### Removed - Proxy protection for certain modules. ### Changed - Changed how internal webpack module searches are performed. - New location for public servers button. - Switch to pnpm with workspaces. - Improved startup errors. ### Fixed - Fixed several issues for Discord's internal changes. ## 1.6.3 ### Added ### Removed ### Changed - Plugin startup errors should be more descriptive for developers. ### Fixed - Fixed an issue where custom css crashed Discord. - Fixed an issue where `waitForModule` returned a boolean instead of a module. ## 1.6.2 ### Added ### Removed ### Changed ### Fixed - Fixed non-loading issue due to changed UserSettingsStore ## 1.6.1 ### Added ### Removed ### Changed ### Fixed - Fixed an issue where `waitForModule` would not return the found module. - Fixed an issue where broken addon METAs could prevent BD from fully loading. - Fixed an issue where developer badges stopped rendering. ## 1.6.0 ### Added - Better handling and fallback when the editor fails to load. (Thanks Qb) - Now able to sort addons by whether they're enabled. (Thanks TheGreenPig) - New `Webpack` API added for plugin developers to take advantage of. ### Removed ### Changed - Addon loading no longer uses `require` - Addon error modal updated (Thanks Qb) - Fixed plugin error display on the modal ### Fixed - Fixed dispatcher changes by Discord ## 1.5.3 ### Added ### Removed ### Changed ### Fixed - Fixed Canary crashing immediately ## 1.5.2 ### Added ### Removed ### Changed ### Fixed - Fixed being unable to inject into settings, thanks @Strencher ## 1.5.1 ### Added - `Number` settings component using builtin `input[type=number]` - Settings for monaco editor: font size, line numbers, minimap, whitespace, quick suggestions, tooltips ### Removed ### Changed ### Fixed - Fixed `GuildComponent` throwing errors - Fixed public servers button disappearing when guilds list rerenders - Fixed plugin compilation error not pointing to console - Fixed plugins with no `@name` attempting to load ## 1.5.0 ### Added - `appSettings` override and corresponding toggle to enable DevTools (Thanks [Kyza](https://github.com/Kyza)) - `bd-transparency` class is added to `document.body` when window transparency is enabled (Thanks [Strencher](https://github.com/Strencher)) ### Removed - Removed all appearance related `Builtin`s including: 24 Hour Timestamps, Colored Text, Hide GIF/Gift Button, and MinimalMode ### Changed ### Fixed - Fixed `DebugLogs` throwing errors or not writing `null`, `undefined`, and circular objects - Fixed guild utility classes not being added - Fixed toast location ## 1.4.0 ### Added - Notices API (Thanks [Strencher](https://github.com/Strencher)) ### Removed ### Changed ### Fixed - Fixed outdates styles and classnames (Thanks [Strencher](https://github.com/Strencher)) - Fixed guild list classes being overwritten causing the public server button to not show - Fixed finding the wrong module for `ActionTypes` in custom css module - Fixed not removing customcss upon disable - Fixed media keys commandline switch not being applied ## 1.3.0 ### Added ### Removed ### Changed - Startup now waits for current user to be populated or for CONNECTION_OPEN event ### Fixed - Fixed emote menu causing crashes ## 1.2.4 ### Added ### Removed ### Changed ### Fixed - Fixed loading sequence using wrong classes ## 1.2.3 ### Added ### Removed ### Changed ### Fixed - Fixed translations not falling back to English - Fixed waiting for guilds due to class name changes ## 1.2.2 ### Added - Added Czech translation - Added Spanish translation - Added Hindi (partial) translation - Added Italian translation - Added Dutch translation - Added Norwegian translation - Added Portuguese (PT) translation - Added Romanian translation - Added Russian translation - Added Turkish translation ### Removed ### Changed - `window.webpackJsonp` is temporarily polyfilled for Canary but _will_ be disappearing - Updated French translation - Updated Germand translation ### Fixed - Fixed public servers missing (Thanks [Strencher](https://github.com/Strencher)) - Fixed guild classes missing (Thanks [Strencher](https://github.com/Strencher)) ## 1.2.1 ### Added - Added `getPatchesByCaller` to `BdApi.Patcher` ### Removed ### Changed - Internal react keys updated for new version in Discord (Thanks [Strencher](https://github.com/Strencher)) - Monaco editor now loads for all cases rather than just for custom css (Thanks [Qb](https://github.com/QbDesu)) - MacOS on Discord non-canary will use the default `process` object ### Fixed - Fixed failed plugin loads being permanently cached (Thanks [Strencher](https://github.com/Strencher)) - Fixed duplicate file renaming sometimes causing crashed (Thanks [Strencher](https://github.com/Strencher)) - Fixed plugin data retrieval when using falsey values - Fixed plugin data being overwritten if a read did not occur first - Fixed react dev tools time of installation to comply with linux injection. (Thanks [Qb](https://github.com/QbDesu)) ## 1.2.0 ### Added - `openDialog` function added to `BdApi` to enable save/load of files. ### Removed ### Changed - Emote menu now more seamlessly integrates with Discord. - Support for other chrome profiles added when using React DevTools. (Thanks [CrizGames](https://github.com/CrizGames)) - Console errors from plugins should now properly map to the local file. ### Fixed - Fixed several crashing issues related to voice and video chats. - Fixed the incompatibility with Canary/PTB - Fixed missing class names on guild elements. - Fixed minimal mode for new Discovery tab. (Thanks [dav1312](https://github.com/dav1312)) ## 1.1.1 ### Added ### Removed ### Changed - Plugin loader now removes the used `script` tags - URLs reflect new website ### Fixed - Fixed an issue with hiding GIF and Gift buttons - Fixed certain plugin patches not returning values - Fixed an issue with the settings patch failing ## 1.1.0 ### Added - Added an option to prevent Discord from hijacking the media keys. - Added command line flag to launch a vanilla version of Discord `--vanilla` - Added an option for app-wide `ctrl+shift+c` shortcut for inspect element. - Added emote blocklist to `BdApi` via `BdApi.Emotes.blocklist`. - Added the ability to remove Discord's forced minimum window size. - Added a basic core updater to hopefully prevent the need for future installs. - Added an option to log out all console logs to file for developers. - Added an option to disable Discord's console warning. - Added translations for the following languages: French, Slovak, Polish, Portuguese (BR), Chinese (Traditional), Chinese (Simplified) ### Removed - Class normalizer was removed as it does more harm than good. ### Changed - Addon error modals got a makeover thanks to [Strencher](https://github.com/Strencher) and [Tropical](https://github.com/Tropix126) - Emotes are now downloaded as a single asar bundle as opposed to individual JSON files. - Strings are now bundles with the main payload, but may move to a separate asar like the emotes. - `BdApi` functions related to window preferences no longer work and are deprecated. - Guild classes are obtained later from webpack in case it's not loaded in fast enough. - DataStore now has additional protections (`try..catch`). ### Fixed - Fixed an issue with old METAs used in themes cause the css to render invalid. - Fixed crashing issues with plugins using `Buffer`. - Fixed a bug for manual and 3rd party installations that don't create the BD folder. - Fixed incorrect path usage for some Mac devices. - Fixed colored text not doing anything. - Fixed detached css window not loading saved css. - Fixed an issue where toggling settings collections would remove incorrect panels. - Fixed the file watchers not properly matching duplicate files. - Fixed Hide GIF and Hide Gift options for Discord's changes - Fixed public servers button not showing. - Fixed multiple error modals showing on startup if multiple plugins had errors. - Fixed incorrect styling on emotes. - Fixed system editor edit buttons using an old Electron API (`openItem` vs `openPath`) - Fixed an issue for those using exclusively server folders ## 1.0.0 ### Added - **Everything** is entirely rewritten, for better or worse. - **Emotes and Custom CSS** can be completely turned off for those not interested. It saves on memory too by not loading those components. - **Floating editors** for both custom css and plugins/themes are now available. - **Monaco** is now used as the main CSS editor, in place of Ace. - **Settings panels** are completely new and sleek. They are also highly extensible for potential future features :eyes: - **Translations** are now integrated starting with only a couple languages, but feel free to contribute your own! - **Public servers** got a new makeover thanks to some design help from Tropical and Gibbu! We added settings to hide the **Gif Picker** and the **Nitro Gift** buttons in the textarea. ### Changed - **Patcher API** was added to `BdApi` under `BdApi.Patcher`. The old `BdApi.monkeyPatch` was patched to use the Patcher as well. This allows plugins and patches to play nice with one another. - **jQuery** was removed from dependencies. - **General performance** improvements throughout the app, from startup to emotes to addons. - **Exporting** by plugins is now highly encouraged over trying to match your meta name and class name. - **Plugins and Themes** pages have more options for sorting, views and more. The entire panel got a facelift! - **Blankslates** have been added all over for that added UX. - **Several unused UI features** have been removed for a more performant and usable experience. - **Debugger Hotkey** is now a built-in feature! ### Fixed - **Minimal mode** has been redesigned from the ground up and now works as intended. - **Emote menus** are fixed and now use React Patching to properly integrate into the new Emoji Picker. (Thanks Strencher#1044!)