Experiments: support playground & remove bug report button (#4577)

Co-authored-by: Vendicated <vendicated@riseup.net>
This commit is contained in:
thororen 2026-09-05 20:33:34 -04:00 • committed by GitHub
parent 6fef6b5179
commit af114dab7c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 44 additions and 63 deletions

View file

@ -1,3 +0,0 @@
#staff-help-popout-staff-help-bug-reporter {
display: none;
}

View file

@ -16,33 +16,22 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { definePluginSettings } from "@api/Settings";
import { disableStyle, enableStyle } from "@api/Styles";
import { BaseText } from "@components/BaseText";
import ErrorBoundary from "@components/ErrorBoundary";
import { ErrorCard } from "@components/ErrorCard";
import { Flex } from "@components/Flex";
import { Paragraph } from "@components/Paragraph";
import { Devs, IS_MAC } from "@utils/constants";
import { Margins } from "@utils/margins";
import definePlugin, { OptionType } from "@utils/types";
import definePlugin from "@utils/types";
import { findByPropsLazy } from "@webpack";
import { ExperimentStore, Forms, React } from "@webpack/common";
import { React } from "@webpack/common";
import hideBugReport from "./hideBugReport.css?managed";
const KbdStyles = findByPropsLazy("key", "combo");
const modKey = IS_MAC ? "cmd" : "ctrl";
const altKey = IS_MAC ? "opt" : "alt";
const settings = definePluginSettings({
toolbarDevMenu: {
type: OptionType.BOOLEAN,
description: "Change the Help (?) toolbar button (top right in chat) to Discord's developer menu",
default: false,
restartNeeded: true
}
});
export default definePlugin({
name: "Experiments",
description: "Enable Access to Experiments & other dev-only features in Discord!",
@ -55,8 +44,6 @@ export default definePlugin({
Devs.Nuckyz,
],
settings,
patches: [
{
find: "Object.defineProperties(this,{isDeveloper",
@ -87,23 +74,6 @@ export default definePlugin({
}
]
},
// Change top right toolbar button from the help one to the dev one
{
find: '?"BACK_FORWARD_NAVIGATION":',
replacement: {
match: /hasBugReporterAccess:(\i)/,
replace: "_hasBugReporterAccess:$1=true"
},
predicate: () => settings.store.toolbarDevMenu
},
// Disable opening the bug report menu when clicking the top right toolbar dev button
{
find: 'navId:"staff-help-popout"',
replacement: {
match: /(isShown.+?)onClick:\i/,
replace: (_, rest) => `${rest}onClick:()=>{}`
}
},
// Enable experiment embed on sent experiment links
{
find: "Clear Treatment ",
@ -127,45 +97,59 @@ export default definePlugin({
replace: "$&if($1==null)return;"
}
},
// Enable playground embed on sent playground links
// dev://playground/mana, dev://playground/payments, dev://playground/virtual-currency,
// dev://playground/nitro, dev://playground/mfa, dev://playground/cms, dev://playground/void
{
find: '"Open Playground',
replacement: {
match: "isStaff()||",
replace: "$& true||"
}
},
{
// Expands the experiment uri regex to allow negative numbers, e.g. dev://experiment/2026-02-mana-playground-access/-1
// -1 is "Not Eligible"
find: '"^dev://experiment/',
replacement: {
match: /(?<=dev:\/\/experiment.{0,20}?)\[0-9\]\+/,
replace: "[0-9-]+"
}
}
],
start: () => ExperimentStore.getUserExperimentBucket("2026-01-bug-reporter") > 0 && enableStyle(hideBugReport),
stop: () => disableStyle(hideBugReport),
settingsAboutComponent: () => {
return (
<React.Fragment>
<Forms.FormTitle tag="h3">More Information</Forms.FormTitle>
<Paragraph size="md">
You can open Discord's DevTools via {" "}
<div className={KbdStyles.combo} style={{ display: "inline-flex" }}>
<kbd className={KbdStyles.key}>{modKey}</kbd>{" "}
<kbd className={KbdStyles.key}>{altKey}</kbd>{" "}
<kbd className={KbdStyles.key}>O</kbd>{" "}
</div>
</Paragraph>
</React.Fragment>
<Paragraph size="md">
Tip: You can open Discord's DevTools via {" "}
<div className={KbdStyles.combo} style={{ display: "inline-flex" }}>
<kbd className={KbdStyles.key}>{modKey}</kbd>{" "}
<kbd className={KbdStyles.key}>{altKey}</kbd>{" "}
<kbd className={KbdStyles.key}>O</kbd>{" "}
</div>
</Paragraph>
);
},
WarningCard: ErrorBoundary.wrap(() => (
<ErrorCard id="vc-experiments-warning-card" className={Margins.bottom16}>
<Forms.FormTitle tag="h2">Hold on!!</Forms.FormTitle>
<Flex flexDirection="column" gap={8}>
<BaseText tag="h2" weight="bold" size="lg">Hold on!!</BaseText>
<Forms.FormText>
Experiments are unreleased Discord features. They might not work, or even break your client or get your account disabled.
</Forms.FormText>
<Paragraph>
Experiments are unreleased Discord features. They might not work, or even break your client or get your account disabled.
</Paragraph>
<Forms.FormText className={Margins.top8}>
Only use experiments if you know what you're doing. Vencord is not responsible for any damage caused by enabling experiments.
<Paragraph>
Only use experiments if you know what you're doing. Vencord is not responsible for any damage caused by enabling experiments.
If you don't know what an experiment does, ignore it. Do not ask us what experiments do either, we probably don't know.
</Forms.FormText>
If you don't know what an experiment does, ignore it. Do not ask us what experiments do either, we probably don't know.
</Paragraph>
<Forms.FormText className={Margins.top8}>
No, you cannot use server-side features like checking the "Send to Client" box.
</Forms.FormText>
<Paragraph>
<b>You cannot use server-side features like checking the "Send to Client" box.</b>
</Paragraph>
</Flex>
</ErrorCard>
), { noop: true })
});