From 36bf8f33fbeb483a13d085e307427a03ff3fd820 Mon Sep 17 00:00:00 2001 From: Prospector <6166773+Prospector@users.noreply.github.com> Date: Thu, 26 Mar 2026 13:18:24 -0700 Subject: [PATCH 1/2] refactor: move flags into settings, change icon --- .../components/ui/modal/AppSettingsModal.vue | 10 +-- .../ui/settings/FeatureFlagSettings.vue | 21 +++-- .../app-frontend/src/locales/en-US/index.json | 3 - apps/frontend/src/layouts/default.vue | 17 ++-- apps/frontend/src/locales/en-US/index.json | 3 - .../src/middleware/flags-redirect.global.ts | 6 ++ apps/frontend/src/pages/flags.vue | 78 ----------------- apps/frontend/src/pages/settings.vue | 9 ++ apps/frontend/src/pages/settings/flags.vue | 87 +++++++++++++++++++ packages/ui/src/locales/en-US/index.json | 3 + packages/ui/src/utils/common-messages.ts | 4 + 11 files changed, 135 insertions(+), 106 deletions(-) create mode 100644 apps/frontend/src/middleware/flags-redirect.global.ts delete mode 100644 apps/frontend/src/pages/flags.vue create mode 100644 apps/frontend/src/pages/settings/flags.vue diff --git a/apps/app-frontend/src/components/ui/modal/AppSettingsModal.vue b/apps/app-frontend/src/components/ui/modal/AppSettingsModal.vue index 1635b46a70..9419d63749 100644 --- a/apps/app-frontend/src/components/ui/modal/AppSettingsModal.vue +++ b/apps/app-frontend/src/components/ui/modal/AppSettingsModal.vue @@ -6,12 +6,13 @@ import { LanguagesIcon, ModrinthIcon, PaintbrushIcon, - ReportIcon, SettingsIcon, ShieldIcon, + ToggleRightIcon, } from '@modrinth/assets' import { commonMessages, + commonSettingsMessages, defineMessage, defineMessages, ProgressBar, @@ -95,11 +96,8 @@ const tabs = [ content: ResourceManagementSettings, }, { - name: defineMessage({ - id: 'app.settings.tabs.feature-flags', - defaultMessage: 'Feature flags', - }), - icon: ReportIcon, + name: commonSettingsMessages.featureFlags, + icon: ToggleRightIcon, content: FeatureFlagSettings, developerOnly: true, }, diff --git a/apps/app-frontend/src/components/ui/settings/FeatureFlagSettings.vue b/apps/app-frontend/src/components/ui/settings/FeatureFlagSettings.vue index 679dfc48eb..ee69d2a701 100644 --- a/apps/app-frontend/src/components/ui/settings/FeatureFlagSettings.vue +++ b/apps/app-frontend/src/components/ui/settings/FeatureFlagSettings.vue @@ -1,5 +1,5 @@ - - diff --git a/apps/frontend/src/pages/settings.vue b/apps/frontend/src/pages/settings.vue index e698c8e2e9..3c9690faae 100644 --- a/apps/frontend/src/pages/settings.vue +++ b/apps/frontend/src/pages/settings.vue @@ -20,6 +20,13 @@ icon: LanguagesIcon, badge: `${formatMessage(commonMessages.beta)}`, }, + flags.developerMode + ? { + link: '/settings/flags', + label: formatMessage(commonSettingsMessages.featureFlags), + icon: ToggleRightIcon, + } + : null, auth.user ? { type: 'heading', label: formatMessage(messages.account) } : null, auth.user ? { @@ -91,6 +98,7 @@ import { PaintbrushIcon, ServerIcon, ShieldIcon, + ToggleRightIcon, UserIcon, } from '@modrinth/assets' import { commonMessages, commonSettingsMessages, defineMessages, useVIntl } from '@modrinth/ui' @@ -116,6 +124,7 @@ const messages = defineMessages({ const route = useNativeRoute() const auth = await useAuth() +const flags = useFeatureFlags() useSeoMeta({ robots: 'noindex', diff --git a/apps/frontend/src/pages/settings/flags.vue b/apps/frontend/src/pages/settings/flags.vue new file mode 100644 index 0000000000..d175e0f471 --- /dev/null +++ b/apps/frontend/src/pages/settings/flags.vue @@ -0,0 +1,87 @@ + + + diff --git a/packages/ui/src/locales/en-US/index.json b/packages/ui/src/locales/en-US/index.json index 49e1503662..974ee89ba2 100644 --- a/packages/ui/src/locales/en-US/index.json +++ b/packages/ui/src/locales/en-US/index.json @@ -2354,6 +2354,9 @@ "settings.display.theme.title": { "defaultMessage": "Color theme" }, + "settings.feature-flags.title": { + "defaultMessage": "Feature flags" + }, "settings.language.categories.default": { "defaultMessage": "Standard languages" }, diff --git a/packages/ui/src/utils/common-messages.ts b/packages/ui/src/utils/common-messages.ts index db2dd285ee..67313d25d7 100644 --- a/packages/ui/src/utils/common-messages.ts +++ b/packages/ui/src/utils/common-messages.ts @@ -764,6 +764,10 @@ export const commonSettingsMessages = defineMessages({ id: 'settings.billing.title', defaultMessage: 'Billing and subscriptions', }, + featureFlags: { + id: 'settings.feature-flags.title', + defaultMessage: 'Feature flags', + }, language: { id: 'settings.language.title', defaultMessage: 'Language', From c7ffd4bb9729092d161a5a19671f0516b15c1978 Mon Sep 17 00:00:00 2001 From: Prospector <6166773+Prospector@users.noreply.github.com> Date: Thu, 26 Mar 2026 13:42:26 -0700 Subject: [PATCH 2/2] fix: use ButtonStyled for app --- .../ui/settings/FeatureFlagSettings.vue | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/apps/app-frontend/src/components/ui/settings/FeatureFlagSettings.vue b/apps/app-frontend/src/components/ui/settings/FeatureFlagSettings.vue index ee69d2a701..dadcab73be 100644 --- a/apps/app-frontend/src/components/ui/settings/FeatureFlagSettings.vue +++ b/apps/app-frontend/src/components/ui/settings/FeatureFlagSettings.vue @@ -1,5 +1,5 @@