From 0ffdabb2a3427ff660532c6b3d8455d5b59f43b6 Mon Sep 17 00:00:00 2001 From: Prospector <6166773+Prospector@users.noreply.github.com> Date: Tue, 12 May 2026 22:23:18 -0700 Subject: [PATCH] feat: new proj moderation page (#6044) * feat: new proj moderation page * make requested changes * add boolean for showing delay message * fix server icon + shortened code * fix server icon * refactor admonitions * msg correction. * correction + change spam-notice * Separate status info from instruction details * Tweak timing delay msg, thread activity warning, and refer to moderation with consistent terms. * Whoops, actually updated msgs correctly now. * prepr + margin * split out strings, simplify code again * fix: a few more moderation fixes (#6048) * fix: move tooltip to button * fix: lock status buttons after pressing * fix: unlisted/withheld icon on legacy badge * prepprrr * fix banners, add some extra dev mode stuff * fix thread id copy padding * tweak: adjust some of the status change messages (#6041) * update messages & bunch of other stuff * rename toggle * change hover to 2.5, fix error size * private msg overlay --------- Co-authored-by: coolbot100s <76798835+coolbot100s@users.noreply.github.com> --- .../src/components/ui/ModrinthFooter.vue | 30 +- .../ui/banner/GeneratedStateErrorsBanner.vue | 40 +- .../components/ui/banner/PreviewBanner.vue | 15 +- .../src/components/ui/banner/RussiaBanner.vue | 4 +- .../components/ui/banner/StagingBanner.vue | 5 +- .../SubscriptionPaymentFailedBanner.vue | 4 +- .../ui/banner/TaxComplianceBanner.vue | 2 +- .../ui/banner/TaxIdMismatchBanner.vue | 2 +- .../ui/banner/VerifyEmailBanner.vue | 10 +- .../ui/banner/ViewOnModrinthBanner.vue | 41 + .../ui/moderation/ModerationQueueCard.vue | 6 +- .../ui/moderation/ModerationReportCard.vue | 2 +- .../ui/moderation/ModerationTechRevCard.vue | 3 +- .../checklist/ModerationChecklist.vue | 47 +- .../src/components/ui/report/ReportView.vue | 22 +- .../ui/thread/ConversationThread.vue | 846 +++++++++++------- .../components/ui/thread/ThreadMessage.vue | 48 +- .../src/components/ui/thread/ThreadView.vue | 8 +- apps/frontend/src/composables/featureFlags.ts | 5 + apps/frontend/src/layouts/default.vue | 31 +- apps/frontend/src/locales/en-US/index.json | 238 ++++- apps/frontend/src/pages/[type]/[id].vue | 1 + .../src/pages/[type]/[id]/changelog.vue | 4 + .../src/pages/[type]/[id]/moderation.vue | 584 ++++++++---- .../src/pages/[type]/[id]/settings/index.vue | 51 +- .../src/pages/dashboard/notifications.vue | 14 +- apps/frontend/src/pages/moderation/index.vue | 2 +- apps/frontend/src/pages/settings/flags.vue | 2 +- .../messages/post-approval/missed-deadline.md | 3 +- .../ui/src/components/base/Admonition.vue | 8 +- packages/ui/src/components/base/Badge.vue | 6 +- packages/ui/src/components/base/Checkbox.vue | 4 +- .../ui/src/components/base/MarkdownEditor.vue | 440 +++++++-- packages/ui/src/components/base/NavTabs.vue | 4 +- packages/ui/src/components/modal/NewModal.vue | 5 + .../ui/src/components/nav/PagewideBanner.vue | 42 +- packages/ui/src/locales/en-US/index.json | 144 +++ packages/ui/src/utils/auto-icons.ts | 4 + packages/utils/utils.ts | 2 +- 39 files changed, 1963 insertions(+), 766 deletions(-) create mode 100644 apps/frontend/src/components/ui/banner/ViewOnModrinthBanner.vue diff --git a/apps/frontend/src/components/ui/ModrinthFooter.vue b/apps/frontend/src/components/ui/ModrinthFooter.vue index 73109a3e5..2cb0d3828 100644 --- a/apps/frontend/src/components/ui/ModrinthFooter.vue +++ b/apps/frontend/src/components/ui/ModrinthFooter.vue @@ -1,5 +1,12 @@ + diff --git a/apps/frontend/src/components/ui/banner/PreviewBanner.vue b/apps/frontend/src/components/ui/banner/PreviewBanner.vue index 141f65649..7fc253caf 100644 --- a/apps/frontend/src/components/ui/banner/PreviewBanner.vue +++ b/apps/frontend/src/components/ui/banner/PreviewBanner.vue @@ -13,6 +13,7 @@ import { const { formatMessage } = useVIntl() const flags = useFeatureFlags() const config = useRuntimeConfig() +const route = useRoute() const messages = defineMessages({ title: { @@ -21,7 +22,7 @@ const messages = defineMessages({ }, description: { id: 'layout.banner.preview.description', - defaultMessage: `If you meant to access the official Modrinth website, visit https://modrinth.com. This preview deploy is used by Modrinth staff for testing purposes. It was built using {owner}/{branch} @ {commit}.`, + defaultMessage: `If you meant to access the official Modrinth website, visit {url}. This preview deploy is used by Modrinth staff for testing purposes. It was built using {owner}/{branch} @ {commit}.`, }, }) @@ -29,10 +30,12 @@ function hidePreviewBanner() { flags.value.hidePreviewBanner = true saveFeatureFlags() } + +const url = computed(() => `https://modrinth.com${route.fullPath}`)