What's Changed
⭐ Highlights
- Added a new setting to toggle Quick CSS (2c86d71) (by @yofukashino in #737)
- Added the ability to recall the last used custom slash command by pressing the up key (2c598e5) (by @yofukashino in #717)
- Added a custom theme color for the Replugged's notices (d68b127) (by @yofukashino in #711)
- Refreshed the UI of Replugged's settings:
- Reposition buttons on addon pages to take up a full line below the heading (1d5fa5a) (by @yofukashino in #723)
- Reposition buttons and author(s) on addon cards to the bottom (80b13b3) (by @yofukashino in #685)
- Organize the General page with TabBars for clearer navigation (0f74600) (by @fedeericodl)
- Added a new coremod for decoding React error codes, showing the error message directly instead of a code (1bd34cf) (by @yofukashino in #733)
- Added custom tray menu items; one to show the current version, one for updating Replugged (useful if the updater can't be opened), and another as a shortcut to developer tools (a53982c) (by @yofukashino in #740)
- Added an advanced setting to toggle whether Discord hides the token in localStorage when developer tools are open; previously this was always enabled, but it is now configurable and disabled by default (58b8a0e) (by @fedeericodl)
- Added support for theme presets, allowing themes to offer multiple built-in variations (d16dc24) (by @12944qwerty in #570)
- Added a new setting for managing transparency of the window (3a4f0c5) (by @EastArctica in #540)
- Added a new setting for disabling the minimum size restrictions of the window (c771d6f) (by @fedeericodl)
- Added a patch to automatically keep Replugged plugged after Discord updates on Windows, with a new toggle available in settings (203d078) (by @yofukashino in #707)
✨ Enhancements
- Added
getBoundMethods
inutil
to create an object with all prototype methods bound to a given instance (546b998) (by @fedeericodl) - Added
info
andverbose
methods to theLogger
(c3dd97e) (by @yofukashino in #727) - Added support for
stream
andsupportFetchAPI
on our protocol (088409c) (by @yofukashino in #732) - Added
useValue
onSettingsManager
for accessing settings in React components with automatic updates when values change (6d1abfe) (by @yofukashino in #704) - Export
wpRequire
andsourceStrings
for more advanced webpack module searches (347e97b) (by @yofukashino in #734) - Enabled more staff only features when the experiments setting is turned on:
- Show the Mana playground embed (Discord's custom Storybook implementation for the new Mana design system) in chat (
dev://mana/COMPONENT_NAME
) when the experiments setting is turned on (c3ae426) (by @fedeericodl) - Show the Playgrounds and Build Overrides (when available) menu items in the User Settings cog menu, and add the Playgrounds tab in the Staff Help Popout when the experiments setting is turned on (7834bf4) (by @fedeericodl)
- Show the Mana playground embed (Discord's custom Storybook implementation for the new Mana design system) in chat (
- Download and use React DevTools from Chrome Web Store; the extension is now always updated to the latest version (ea67967) (by @fedeericodl)
- Added support for
\i
and$exports
placeholders in plaintext patches and filters (fc82ad3) (by @yofukashino in #706) - Added
getComponentBySource
to search modules for React components, including ones wrapped withReact.memo
andReact.forwardRef
(c7a56ee) (by @fedeericodl) - Added
discord-client-types
, centralized, always up-to-date type definitions for Discord modules, reducing the need for Replugged updates due to minor type changes (32b83d2) (by @fedeericodl in #736):- Remove all previously bundled component types;
- Add new components:
Anchor
,Breadcrumbs
,SearchBar
andTabBar
; - Replace legacy
TextInput
with the newTextInput
from Mana; - Add
marginStyles
common module: replaced inline margins with standardized classes.
- Added
KeyRecorder
component for recording keyboard combinations (d616afc) (by @yofukashino in #511) - Added data attributes for themes on the root element, messages, avatars, and TabBars (d3c50f6) (by @yofukashino in #719)
- Added
ColorPicker
component for selecting colors (ecb7f0e) (by @yofukashino in #694) - Updated components and Replugged settings to be similar to the new Discord settings arrangement (57790be) (by @fedeericodl):
- Add new components:
FieldSet
,FormControl
andStack
; - Remove all components that have an "Item" variant: use the new
label
anddescription
Discord added to the base components; - Replace legacy
TextArea
with the newTextArea
from Mana.
- Add new components:
🐞 Bug Fixes
- Fixed an issue with
virtualMerge
failing whenownKeys
needs to return duplicate keys (5429962) (by @yofukashino in #730) - Fixed an issue with custom slash command attachments being undefined (5da33b5) (by @yofukashino in #716)
- Fixed an issue with images not appearing when using ephemeral custom slash commands (5d03adf) (by @yofukashino in #715)
- Log a warning if the plaintext patch had no effect; can be silenced by setting the
warn
flag of a plaintext patch to false (06d1013) (by @yofukashino in #729) - Fixed an issue with our custom version in settings not being shown (63c83ac) (by @fedeericodl)
- Wrap setting pages with
ErrorBoundary
to avoid crashing the whole client if an error occurs (0064dd6) (by @fedeericodl) - Fixed an issue with the
FormText
component being undefined (fe5d21d) (by @fedeericodl) - Fixed an issue with the
language
coremod's plaintext patches (893701e) (by @fedeericodl) - Fixed an issue where user profile modals opened from an addon author were showing incomplete profile data (05bee34) (by @fedeericodl)
📰 Other Changes
- Extend the types of
GuildRoleStore
and export functions that are not on the prototype (b82f3ae) (by @yofukashino in #725) - Change the plugin init timeout from 5 to 10 seconds (b352479) (by @yofukashino in #731)
- Add back the ability to use hashed keys on Discord's translation messages (dd10072) (by @yofukashino in #738)
- Use the correct string for the reload/relaunch modal (58b8a0e) (by @yofukashino in #744)
- Rewrite and improve webpack documentation for clarity and accuracy (7f68706) (by @fedeericodl)
- Refactor RPC handling; moved logic to a dedicated API and avoid modifying Discord's original commands object (b886b41) (by @yofukashino in #745)
- Change
getById
typings to accept both number and string IDs (1018f18) (by @yofukashino in #748) - Dependencies updates (77f98de) (by @fedeericodl)
Full Changelog: v4.10.2...v4.11.0