From 36f62a3285c3f10e91d129246034c6f5a3c765b2 Mon Sep 17 00:00:00 2001 From: Prospector <6166773+Prospector@users.noreply.github.com> Date: Thu, 26 Mar 2026 14:10:01 -0700 Subject: [PATCH] refactor: move flags into settings, change icon (#5678) * refactor: move flags into settings, change icon * fix: use ButtonStyled for app --- .../components/ui/modal/AppSettingsModal.vue | 10 +-- .../ui/settings/FeatureFlagSettings.vue | 23 +++-- .../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, 137 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 1635b46a7..9419d6374 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 679dfc48e..dadcab73b 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 e698c8e2e..3c9690faa 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 000000000..d175e0f47 --- /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 5bb2fc169..60c441561 100644 --- a/packages/ui/src/locales/en-US/index.json +++ b/packages/ui/src/locales/en-US/index.json @@ -2714,6 +2714,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 5e6a5764c..42237784f 100644 --- a/packages/ui/src/utils/common-messages.ts +++ b/packages/ui/src/utils/common-messages.ts @@ -856,6 +856,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',