From 0fc7cfdf02f9d2ed82a7f47f736de691a49aab4a Mon Sep 17 00:00:00 2001 From: coolbot <76798835+coolbot100s@users.noreply.github.com> Date: Fri, 7 Aug 2026 19:05:23 -0700 Subject: [PATCH 1/5] Utils nav, new disclosures stage, ai button in rules --- packages/moderation/src/data/checklist.ts | 2 + .../disclosures/missing-disclosures/ads.md | 0 .../missing-disclosures/ai-usages.md | 1 + .../missing-disclosures/ai-usages/assets.md | 1 + .../missing-disclosures/ai-usages/code.md | 1 + .../ai-usages/functionality.md | 1 + .../missing-disclosures/ai-usages/text.md | 1 + .../disclosures/missing-disclosures/ai.md | 1 + .../missing-disclosures/archive.md | 0 .../missing-disclosures/derivative-content.md | 0 .../disclosures-selected.md | 1 + .../missing-disclosures-header.md | 5 ++ .../missing-disclosures/paid-features.md | 0 .../missing-disclosures/photosensitivity.md | 0 .../system-interactions.md | 0 .../missing-disclosures/telemetry.md | 0 .../checklist/messages/rules/ai-generated.md | 6 ++ .../src/data/stages/disclosures.tsx | 79 +++++++++++++++++++ packages/moderation/src/data/stages/rules.tsx | 2 + .../src/data/stages/status-alerts.tsx | 4 +- packages/moderation/src/utils.ts | 4 + 21 files changed, 107 insertions(+), 2 deletions(-) create mode 100644 packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ads.md create mode 100644 packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages.md create mode 100644 packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages/assets.md create mode 100644 packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages/code.md create mode 100644 packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages/functionality.md create mode 100644 packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages/text.md create mode 100644 packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai.md create mode 100644 packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/archive.md create mode 100644 packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/derivative-content.md create mode 100644 packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/disclosures-selected.md create mode 100644 packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/missing-disclosures-header.md create mode 100644 packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/paid-features.md create mode 100644 packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/photosensitivity.md create mode 100644 packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/system-interactions.md create mode 100644 packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/telemetry.md create mode 100644 packages/moderation/src/data/messages/checklist/messages/rules/ai-generated.md create mode 100644 packages/moderation/src/data/stages/disclosures.tsx diff --git a/packages/moderation/src/data/checklist.ts b/packages/moderation/src/data/checklist.ts index 929552718f..7f93149b5c 100644 --- a/packages/moderation/src/data/checklist.ts +++ b/packages/moderation/src/data/checklist.ts @@ -11,6 +11,7 @@ import usePermissionsStage from './stages/permissions' import usePostApprovalStage from './stages/post-approval' import useReReviewStage from './stages/re-review' import useReuploadsStage from './stages/reupload' +import useDisclosuresStage from './stages/disclosures' import useRulesStage from './stages/rules' import useStatusAlertsStage from './stages/status-alerts' import useSummaryStage from './stages/summary' @@ -37,6 +38,7 @@ export function useStages( useReuploadsStage(), usePermissionsStage(), useRulesStage(), + useDisclosuresStage(), ] return [...mainStages, useStatusAlertsStage(mainStages, globalState)] } diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ads.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ads.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages.md new file mode 100644 index 0000000000..21e63b5498 --- /dev/null +++ b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages.md @@ -0,0 +1 @@ +Don't forget to label the inclusion of diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages/assets.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages/assets.md new file mode 100644 index 0000000000..c49616da93 --- /dev/null +++ b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages/assets.md @@ -0,0 +1 @@ + - AI generated or assisted art, assets, or other design elements. diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages/code.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages/code.md new file mode 100644 index 0000000000..555f9866f0 --- /dev/null +++ b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages/code.md @@ -0,0 +1 @@ + - AI generated or assisted code. diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages/functionality.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages/functionality.md new file mode 100644 index 0000000000..9d407276cb --- /dev/null +++ b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages/functionality.md @@ -0,0 +1 @@ + - Functionality that relies on or is designed by generative AI. diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages/text.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages/text.md new file mode 100644 index 0000000000..6dea98529e --- /dev/null +++ b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages/text.md @@ -0,0 +1 @@ + - AI generated or assisted writting or text, including translations. diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai.md new file mode 100644 index 0000000000..6fed74175e --- /dev/null +++ b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai.md @@ -0,0 +1 @@ +- Per section 6.1 of %RULES% please label this %PROJECT_TYPE_FORMATTED_LOWER% as containing AI-generated content. diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/archive.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/archive.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/derivative-content.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/derivative-content.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/disclosures-selected.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/disclosures-selected.md new file mode 100644 index 0000000000..821ffabca0 --- /dev/null +++ b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/disclosures-selected.md @@ -0,0 +1 @@ +Currently, some applicable disclosures may be missing: diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/missing-disclosures-header.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/missing-disclosures-header.md new file mode 100644 index 0000000000..e440e9d823 --- /dev/null +++ b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/missing-disclosures-header.md @@ -0,0 +1,5 @@ +## Missing Content Disclosures + +Per section 5.8 of %RULES%, we ask that you ensure all applicable %PROJECT_CONTENT_DISCLOSURES_FLINK% are filled out with accurate information. + +%DISCLOSURES_SELECTED% diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/paid-features.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/paid-features.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/photosensitivity.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/photosensitivity.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/system-interactions.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/system-interactions.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/telemetry.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/telemetry.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/moderation/src/data/messages/checklist/messages/rules/ai-generated.md b/packages/moderation/src/data/messages/checklist/messages/rules/ai-generated.md new file mode 100644 index 0000000000..9edbd44d87 --- /dev/null +++ b/packages/moderation/src/data/messages/checklist/messages/rules/ai-generated.md @@ -0,0 +1,6 @@ +## Project Withheld + +Per section 6.3 of %RULES%, this project is not suitable to be published on Modrinth. + +With this in mind, this project will remain unlisted, so you may still share it privately with a direct link. \ +We appreciate your understanding and ask that you **do not resubmit**. diff --git a/packages/moderation/src/data/stages/disclosures.tsx b/packages/moderation/src/data/stages/disclosures.tsx new file mode 100644 index 0000000000..5131345079 --- /dev/null +++ b/packages/moderation/src/data/stages/disclosures.tsx @@ -0,0 +1,79 @@ +import { TriangleAlertIcon } from '@modrinth/assets' +import { injectProjectPageContext } from '@modrinth/ui' +import { computed } from 'vue' + +import { group, markdown, md, option, stage, toggle } from '../../types/node' + +export default function () { + const { projectV3: project } = injectProjectPageContext() + + return stage('disclosures', 'Disclosures') + .hint('Has this project selected all proper content disclosures?') + .guidance('https://www.notion.so/2e15ee711bf080e4a41df61bbab49892') + .icon(TriangleAlertIcon) + .navigate('/settings/disclosures') + .children( + group().children( + toggle('missing-disclosures', 'Disclosures Missing') + .rawMessage(async (state) => { + if (state?.['missing-disclosures']) + return md( + 'checklist/messages/disclosures/missing-disclosures/missing-disclosures-header', + () => ({ + DISCLOSURES_SELECTED: md( + 'checklist/messages/disclosures/missing-disclosures/disclosures-selected', + ), + }), + )(state) + + return md( + 'checklist/messages/disclosures/missing-disclosures/missing-disclosures-header', + () => ({ + DISCLOSURES_SELECTED: '', + }), + )(state) + }) + + .children( + group() + .title('Which content disclosures are missing?') + .children( + option('ai', 'AI Usage') + .suggestedStatus('flagged') + .message() + .children( + group() + .title('What kind of AI content is present?') + .children( + option('code', 'Code').message(), + option('assets', 'Assets').message(), + option('text', 'Text').message(), + option('functionality', 'Functionality').message(), + ), + ), + + option('ads', 'Advertisements').suggestedStatus('flagged').message(), + + option('paid-features', 'Paid Features').suggestedStatus('flagged').message(), + + option('telemetry', 'Telemetry').suggestedStatus('rejected').message(), + + option('derivative-content', 'Derivative Content') + .suggestedStatus('rejected') + .message(), + + option('photosensitivity', 'Photosensitivity') + .suggestedStatus('rejected') + .message(), + + option('system-interactions', 'System Interactions') + .suggestedStatus('rejected') + .message(), + + option('archive', 'Archive').message(), + ), + ) + .collect(), + ), + ) +} diff --git a/packages/moderation/src/data/stages/rules.tsx b/packages/moderation/src/data/stages/rules.tsx index 75f2de6a7b..abb7512549 100644 --- a/packages/moderation/src/data/stages/rules.tsx +++ b/packages/moderation/src/data/stages/rules.tsx @@ -77,6 +77,8 @@ export default function () { .suggestedStatus('flagged') .message(), + toggle('ai-generated', 'AI Generated').suggestedStatus('flagged').message(), + toggle('rule-breaking-other', 'Other') .suggestedStatus('rejected') .message((state) => ({ MESSAGE: state.message })) diff --git a/packages/moderation/src/data/stages/status-alerts.tsx b/packages/moderation/src/data/stages/status-alerts.tsx index 2c61a176cc..69c93b4741 100644 --- a/packages/moderation/src/data/stages/status-alerts.tsx +++ b/packages/moderation/src/data/stages/status-alerts.tsx @@ -1,4 +1,4 @@ -import { TriangleAlertIcon } from '@modrinth/assets' +import { MegaphoneIcon } from '@modrinth/assets' import { injectProjectPageContext } from '@modrinth/ui' import type { Ref } from 'vue' import { computed } from 'vue' @@ -28,7 +28,7 @@ export default function ( .guidance( 'https://www.notion.so/2e15ee711bf080e4a41df61bbab49892#2e35ee711bf080968699c397e470eca6', ) - .icon(TriangleAlertIcon) + .icon(MegaphoneIcon) .navigate('/moderation') .children( () => ( diff --git a/packages/moderation/src/utils.ts b/packages/moderation/src/utils.ts index 3df242bf55..4df6ebde35 100644 --- a/packages/moderation/src/utils.ts +++ b/packages/moderation/src/utils.ts @@ -246,6 +246,10 @@ export function flattenProjectVariables( vars[`PROJECT_MONETIZATION_SETTINGS_LINK`] = `https://modrinth.com/project/${project.id}/settings` vars[`PROJECT_MONETIZATION_SETTINGS_FLINK`] = `[Monetization settings](https://modrinth.com/project/${project.id}/settings)` + vars[`PROJECT_CONTENT_DISCLOSURES_LINK`] = + `https://modrinth.com/project/${project.id}/settings/disclosures` + vars[`PROJECT_CONTENT_DISCLOSURES_FLINK`] = + `[Monetization settings](https://modrinth.com/project/${project.id}/settings/disclosures)` return vars } From 8af64027e9a099d6fc5ddfe83d235e580baa7047 Mon Sep 17 00:00:00 2001 From: chyzman Date: Fri, 7 Aug 2026 22:09:45 -0400 Subject: [PATCH 2/5] add prefix to collect --- .../src/data/stages/disclosures.tsx | 31 +++---------------- .../moderation/src/data/stages/metadata.tsx | 1 + .../moderation/src/types/node/capabilities.ts | 21 +++++++------ packages/moderation/src/types/node/collect.ts | 2 ++ packages/moderation/src/types/node/state.ts | 2 +- 5 files changed, 20 insertions(+), 37 deletions(-) diff --git a/packages/moderation/src/data/stages/disclosures.tsx b/packages/moderation/src/data/stages/disclosures.tsx index 5131345079..23b5149239 100644 --- a/packages/moderation/src/data/stages/disclosures.tsx +++ b/packages/moderation/src/data/stages/disclosures.tsx @@ -1,12 +1,8 @@ import { TriangleAlertIcon } from '@modrinth/assets' -import { injectProjectPageContext } from '@modrinth/ui' -import { computed } from 'vue' -import { group, markdown, md, option, stage, toggle } from '../../types/node' +import { group, option, stage, toggle } from '../../types/node' export default function () { - const { projectV3: project } = injectProjectPageContext() - return stage('disclosures', 'Disclosures') .hint('Has this project selected all proper content disclosures?') .guidance('https://www.notion.so/2e15ee711bf080e4a41df61bbab49892') @@ -15,25 +11,7 @@ export default function () { .children( group().children( toggle('missing-disclosures', 'Disclosures Missing') - .rawMessage(async (state) => { - if (state?.['missing-disclosures']) - return md( - 'checklist/messages/disclosures/missing-disclosures/missing-disclosures-header', - () => ({ - DISCLOSURES_SELECTED: md( - 'checklist/messages/disclosures/missing-disclosures/disclosures-selected', - ), - }), - )(state) - - return md( - 'checklist/messages/disclosures/missing-disclosures/missing-disclosures-header', - () => ({ - DISCLOSURES_SELECTED: '', - }), - )(state) - }) - + .message('header') .children( group() .title('Which content disclosures are missing?') @@ -50,7 +28,8 @@ export default function () { option('text', 'Text').message(), option('functionality', 'Functionality').message(), ), - ), + ) + .collect(), option('ads', 'Advertisements').suggestedStatus('flagged').message(), @@ -73,7 +52,7 @@ export default function () { option('archive', 'Archive').message(), ), ) - .collect(), + .collect(undefined, 'list-intro'), ), ) } diff --git a/packages/moderation/src/data/stages/metadata.tsx b/packages/moderation/src/data/stages/metadata.tsx index 9817081489..ed2e3c7032 100644 --- a/packages/moderation/src/data/stages/metadata.tsx +++ b/packages/moderation/src/data/stages/metadata.tsx @@ -93,6 +93,7 @@ export default function () { return md('checklist/messages/metadata/environment/inaccurate', () => ({ CORRECT: correct, }))(state) + }) .fix( fix().project((patch, state) => { diff --git a/packages/moderation/src/types/node/capabilities.ts b/packages/moderation/src/types/node/capabilities.ts index 5d89d16740..fcb5731281 100644 --- a/packages/moderation/src/types/node/capabilities.ts +++ b/packages/moderation/src/types/node/capabilities.ts @@ -108,7 +108,7 @@ export interface Messageable { this: this, content: string | ((state: Record) => string | Promise), ): this - collect(this: this, path?: string | (() => string) | GetVarsFn, getVars?: GetVarsFn): this + collect(this: this, fallback?: string | (() => string), prefix?: string | (() => string)): this } function splitPathAndVars( @@ -151,17 +151,18 @@ export function withMessaging(node: T): T & Messageable { }, collect( this: Messageable, - pathOrGetVars?: string | (() => string) | GetVarsFn, - getVarsArg?: GetVarsFn, + fallbackPath?: string | (() => string), + prefixPath?: string | (() => string), ) { - const { path, getVars } = splitPathAndVars(pathOrGetVars, getVarsArg) const fallback: MessageSegment | undefined = - path !== undefined || getVars !== undefined - ? path === undefined - ? { type: 'auto', ...(getVars && { getVars }) } - : { type: 'path', path, ...(getVars && { getVars }) } - : undefined - this._segments.push({ type: 'collect', ...(fallback && { fallback }) }) + fallbackPath !== undefined ? { type: 'path', path: fallbackPath } : undefined + const prefix: MessageSegment | undefined = + prefixPath !== undefined ? { type: 'path', path: prefixPath } : undefined + this._segments.push({ + type: 'collect', + ...(fallback && { fallback }), + ...(prefix && { prefix }), + }) return this }, }) diff --git a/packages/moderation/src/types/node/collect.ts b/packages/moderation/src/types/node/collect.ts index 3398c436eb..69849b220b 100644 --- a/packages/moderation/src/types/node/collect.ts +++ b/packages/moderation/src/types/node/collect.ts @@ -87,6 +87,8 @@ export async function evalActiveAction( } if (!collected.trim() && seg.fallback) { collected = await evalSegment(seg.fallback, entry.state, entry.statePath) + } else if (collected.trim() && seg.prefix) { + collected = (await evalSegment(seg.prefix, entry.state, entry.statePath)) + collected } result += collected } else { diff --git a/packages/moderation/src/types/node/state.ts b/packages/moderation/src/types/node/state.ts index 2812f8b8d9..773ebbd176 100644 --- a/packages/moderation/src/types/node/state.ts +++ b/packages/moderation/src/types/node/state.ts @@ -30,4 +30,4 @@ export type MessageSegment = | { type: 'fn'; fn: ContentFn } | { type: 'auto'; getVars?: GetVarsFn } | { type: 'path'; path: string | (() => string); getVars?: GetVarsFn } - | { type: 'collect'; fallback?: MessageSegment } + | { type: 'collect'; fallback?: MessageSegment; prefix?: MessageSegment } From 9d911c66226010680cd1546a1909f8e90f2d94f8 Mon Sep 17 00:00:00 2001 From: coolbot <76798835+coolbot100s@users.noreply.github.com> Date: Fri, 7 Aug 2026 20:41:58 -0700 Subject: [PATCH 3/5] Finish up new disclosures stage --- .../disclosures/missing-disclosures/ads.md | 1 + .../missing-disclosures/ai-usages.md | 1 - .../missing-disclosures/ai-usages/assets.md | 1 - .../missing-disclosures/ai-usages/code.md | 1 - .../missing-disclosures/ai-usages/text.md | 1 - .../disclosures/missing-disclosures/ai.md | 3 +- .../ai/ai-usages/assets.md | 1 + .../missing-disclosures/ai/ai-usages/code.md | 1 + .../{ => ai}/ai-usages/functionality.md | 0 .../missing-disclosures/ai/ai-usages/text.md | 1 + .../missing-disclosures/ai/list-intro.md | 2 ++ .../missing-disclosures/archive.md | 1 + .../missing-disclosures/derivative-content.md | 2 ++ .../disclosures-selected.md | 1 - .../missing-disclosures/list-intro.md | 2 ++ .../missing-disclosures-header.md | 2 -- .../missing-disclosures/paid-features.md | 1 + .../missing-disclosures/photosensitivity.md | 1 + .../system-interactions.md | 1 + .../missing-disclosures/telemetry.md | 2 ++ .../src/data/stages/disclosures.tsx | 30 +++++++++---------- packages/moderation/src/utils.ts | 2 +- 22 files changed, 34 insertions(+), 24 deletions(-) delete mode 100644 packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages.md delete mode 100644 packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages/assets.md delete mode 100644 packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages/code.md delete mode 100644 packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages/text.md create mode 100644 packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai/ai-usages/assets.md create mode 100644 packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai/ai-usages/code.md rename packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/{ => ai}/ai-usages/functionality.md (100%) create mode 100644 packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai/ai-usages/text.md create mode 100644 packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai/list-intro.md delete mode 100644 packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/disclosures-selected.md create mode 100644 packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/list-intro.md diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ads.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ads.md index e69de29bb2..6ece4d1fd0 100644 --- a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ads.md +++ b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ads.md @@ -0,0 +1 @@ +- Advertisements or sponsored promotions of outside content. diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages.md deleted file mode 100644 index 21e63b5498..0000000000 --- a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages.md +++ /dev/null @@ -1 +0,0 @@ -Don't forget to label the inclusion of diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages/assets.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages/assets.md deleted file mode 100644 index c49616da93..0000000000 --- a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages/assets.md +++ /dev/null @@ -1 +0,0 @@ - - AI generated or assisted art, assets, or other design elements. diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages/code.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages/code.md deleted file mode 100644 index 555f9866f0..0000000000 --- a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages/code.md +++ /dev/null @@ -1 +0,0 @@ - - AI generated or assisted code. diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages/text.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages/text.md deleted file mode 100644 index 6dea98529e..0000000000 --- a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages/text.md +++ /dev/null @@ -1 +0,0 @@ - - AI generated or assisted writting or text, including translations. diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai.md index 6fed74175e..e75129c6e8 100644 --- a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai.md +++ b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai.md @@ -1 +1,2 @@ -- Per section 6.1 of %RULES% please label this %PROJECT_TYPE_FORMATTED_LOWER% as containing AI-generated content. +- AI-generated or assisted content.
+ Proper disclosure of AI usage is strictly required per section 6.1 of %RULES%. diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai/ai-usages/assets.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai/ai-usages/assets.md new file mode 100644 index 0000000000..f09a749f55 --- /dev/null +++ b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai/ai-usages/assets.md @@ -0,0 +1 @@ + - AI-generated or assisted art, assets, or other design elements. diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai/ai-usages/code.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai/ai-usages/code.md new file mode 100644 index 0000000000..b1fbef3695 --- /dev/null +++ b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai/ai-usages/code.md @@ -0,0 +1 @@ + - AI-generated or assisted code. diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages/functionality.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai/ai-usages/functionality.md similarity index 100% rename from packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai-usages/functionality.md rename to packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai/ai-usages/functionality.md diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai/ai-usages/text.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai/ai-usages/text.md new file mode 100644 index 0000000000..1b1bcffeea --- /dev/null +++ b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai/ai-usages/text.md @@ -0,0 +1 @@ + - AI-generated or assisted writing or text, including translations. diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai/list-intro.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai/list-intro.md new file mode 100644 index 0000000000..b7e1b79ab8 --- /dev/null +++ b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai/list-intro.md @@ -0,0 +1,2 @@ +
+ Don't forget to label the inclusion of: diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/archive.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/archive.md index e69de29bb2..7e97f23fb7 100644 --- a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/archive.md +++ b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/archive.md @@ -0,0 +1 @@ +- Being archived, or otherwise no longer receiving updates. diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/derivative-content.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/derivative-content.md index e69de29bb2..3c9672dd35 100644 --- a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/derivative-content.md +++ b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/derivative-content.md @@ -0,0 +1,2 @@ +- Derivative content, such as code or assets from another project or creator.
+ Per section 4 of %RULES%, you may be required to list the origin of content you did not create here if the content's license requires attribution. diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/disclosures-selected.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/disclosures-selected.md deleted file mode 100644 index 821ffabca0..0000000000 --- a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/disclosures-selected.md +++ /dev/null @@ -1 +0,0 @@ -Currently, some applicable disclosures may be missing: diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/list-intro.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/list-intro.md new file mode 100644 index 0000000000..6f28d49088 --- /dev/null +++ b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/list-intro.md @@ -0,0 +1,2 @@ +
+Currently, your %PROJECT_TYPE_FORMATTED_LOWER% appears to be missing disclosure of: diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/missing-disclosures-header.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/missing-disclosures-header.md index e440e9d823..e9a234cc2a 100644 --- a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/missing-disclosures-header.md +++ b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/missing-disclosures-header.md @@ -1,5 +1,3 @@ ## Missing Content Disclosures Per section 5.8 of %RULES%, we ask that you ensure all applicable %PROJECT_CONTENT_DISCLOSURES_FLINK% are filled out with accurate information. - -%DISCLOSURES_SELECTED% diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/paid-features.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/paid-features.md index e69de29bb2..775d73a711 100644 --- a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/paid-features.md +++ b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/paid-features.md @@ -0,0 +1 @@ +- Features locked behind a paywall, donation, or other monetary exchange. diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/photosensitivity.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/photosensitivity.md index e69de29bb2..315a02b665 100644 --- a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/photosensitivity.md +++ b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/photosensitivity.md @@ -0,0 +1 @@ +- Content that may be dangerous to users with photosensitive epilepsy. diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/system-interactions.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/system-interactions.md index e69de29bb2..d4c8f3d41b 100644 --- a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/system-interactions.md +++ b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/system-interactions.md @@ -0,0 +1 @@ +- Features that interact with the user's machine outside of the context of the game. diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/telemetry.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/telemetry.md index e69de29bb2..124d92f703 100644 --- a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/telemetry.md +++ b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/telemetry.md @@ -0,0 +1,2 @@ +- Telemetry or any other instances of data being sent to a remote server that the user did not connect to.
+ Proper disclosure of data collection is strictly required per section 1.11 of %RULES%. diff --git a/packages/moderation/src/data/stages/disclosures.tsx b/packages/moderation/src/data/stages/disclosures.tsx index 23b5149239..47a775ca1f 100644 --- a/packages/moderation/src/data/stages/disclosures.tsx +++ b/packages/moderation/src/data/stages/disclosures.tsx @@ -11,48 +11,48 @@ export default function () { .children( group().children( toggle('missing-disclosures', 'Disclosures Missing') - .message('header') + .message('missing-disclosures/missing-disclosures-header') .children( group() .title('Which content disclosures are missing?') .children( - option('ai', 'AI Usage') + toggle('ai', 'AI Usage') .suggestedStatus('flagged') .message() .children( group() .title('What kind of AI content is present?') .children( - option('code', 'Code').message(), - option('assets', 'Assets').message(), - option('text', 'Text').message(), - option('functionality', 'Functionality').message(), + toggle('code', 'Code').message('ai-usages/code'), + toggle('assets', 'Assets').message('ai-usages/assets'), + toggle('text', 'Text').message('ai-usages/text'), + toggle('functionality', 'Functionality').message('ai-usages/functionality'), ), ) - .collect(), + .collect(undefined, 'ai/list-intro'), - option('ads', 'Advertisements').suggestedStatus('flagged').message(), + toggle('ads', 'Advertisements').suggestedStatus('flagged').message(), - option('paid-features', 'Paid Features').suggestedStatus('flagged').message(), + toggle('paid-features', 'Paid Features').suggestedStatus('flagged').message(), - option('telemetry', 'Telemetry').suggestedStatus('rejected').message(), + toggle('telemetry', 'Telemetry').suggestedStatus('rejected').message(), - option('derivative-content', 'Derivative Content') + toggle('derivative-content', 'Derivative Content') .suggestedStatus('rejected') .message(), - option('photosensitivity', 'Photosensitivity') + toggle('photosensitivity', 'Photosensitivity') .suggestedStatus('rejected') .message(), - option('system-interactions', 'System Interactions') + toggle('system-interactions', 'System Interactions') .suggestedStatus('rejected') .message(), - option('archive', 'Archive').message(), + toggle('archive', 'Archive').message(), ), ) - .collect(undefined, 'list-intro'), + .collect(undefined, 'missing-disclosures/list-intro'), ), ) } diff --git a/packages/moderation/src/utils.ts b/packages/moderation/src/utils.ts index 4df6ebde35..f3d5426543 100644 --- a/packages/moderation/src/utils.ts +++ b/packages/moderation/src/utils.ts @@ -249,7 +249,7 @@ export function flattenProjectVariables( vars[`PROJECT_CONTENT_DISCLOSURES_LINK`] = `https://modrinth.com/project/${project.id}/settings/disclosures` vars[`PROJECT_CONTENT_DISCLOSURES_FLINK`] = - `[Monetization settings](https://modrinth.com/project/${project.id}/settings/disclosures)` + `[Content disclosures](https://modrinth.com/project/${project.id}/settings/disclosures)` return vars } From dee70105552f6b719817fbd6d94f3dc4e48bfda0 Mon Sep 17 00:00:00 2001 From: coolbot <76798835+coolbot100s@users.noreply.github.com> Date: Fri, 7 Aug 2026 20:57:06 -0700 Subject: [PATCH 4/5] update r4 messages --- .../checklist/messages/reupload/insufficient-fork.md | 5 +++-- .../checklist/messages/reupload/request-proof-server.md | 7 ++++--- .../messages/checklist/messages/reupload/request-proof.md | 7 ++++--- .../data/messages/checklist/messages/reupload/reupload.md | 4 ++-- .../messages/checklist/messages/reupload/unclear-fork.md | 5 +++-- packages/moderation/src/utils.ts | 2 +- 6 files changed, 17 insertions(+), 13 deletions(-) diff --git a/packages/moderation/src/data/messages/checklist/messages/reupload/insufficient-fork.md b/packages/moderation/src/data/messages/checklist/messages/reupload/insufficient-fork.md index 90a0f018c7..4dba0a426f 100644 --- a/packages/moderation/src/data/messages/checklist/messages/reupload/insufficient-fork.md +++ b/packages/moderation/src/data/messages/checklist/messages/reupload/insufficient-fork.md @@ -1,4 +1,5 @@ ## Insufficient Fork -This project does not appear to significantly diverge from the source work, or does not abide by the license of the source work as required by section 4 of %RULES%. -Please provide proof of your explicit permission to distribute this project from the creator(s) of the source work. +This project does not appear to significantly diverge from the source work, or does not abide by the license of the source work as required by section 4 of %RULES%.
+Please provide proof of your explicit permission to distribute this project from the creator(s) of the source work.
+Remember to appropriately credit all external content you've included or forked in your project's derivative content %PROJECT_CONTENT_DISCLOSURES_FLINK%, this may be required by the license of the source work. diff --git a/packages/moderation/src/data/messages/checklist/messages/reupload/request-proof-server.md b/packages/moderation/src/data/messages/checklist/messages/reupload/request-proof-server.md index f01171f50b..fe3998060d 100644 --- a/packages/moderation/src/data/messages/checklist/messages/reupload/request-proof-server.md +++ b/packages/moderation/src/data/messages/checklist/messages/reupload/request-proof-server.md @@ -1,5 +1,6 @@ ## Reuploads are forbidden -This server appears to have uploaded a Modpack by another creator. -Per section 4 of %RULES%, we ask that you provide proof of your permission to distribute this pack on Modrinth. -Either implicit permission abiding by the terms of the content's license(s) or explicit permission from the original creator of the pack. +This server appears to have uploaded a Modpack by another creator.
+Per section 4 of %RULES%, we ask that you provide proof of your permission to distribute this pack on Modrinth.
+Either implicit permission abiding by the terms of the content's license(s) or explicit permission from the original creator of the pack.
+Please remember to appropriately credit all external content you've included or forked in your project's derivative content %PROJECT_CONTENT_DISCLOSURES_FLINK%. diff --git a/packages/moderation/src/data/messages/checklist/messages/reupload/request-proof.md b/packages/moderation/src/data/messages/checklist/messages/reupload/request-proof.md index 26296101fb..bb707f76c7 100644 --- a/packages/moderation/src/data/messages/checklist/messages/reupload/request-proof.md +++ b/packages/moderation/src/data/messages/checklist/messages/reupload/request-proof.md @@ -1,5 +1,6 @@ ## Proof of permissions -This project appears to contain content from other creators. -Per section 4 of %RULES%, we ask that you provide proof of your permission to distribute this content, or derivatives of this content in your project on Modrinth. -Either implicit permission abiding by the terms of the content's license(s) or explicit permission from the original creator of the content. +This project appears to contain content from other creators.
+Per section 4 of %RULES%, we ask that you provide proof of your permission to distribute this content, or derivatives of this content in your project on Modrinth.
+Either implicit permission abiding by the terms of the content's license(s) or explicit permission from the original creator of the content.
+Please remember to appropriately credit all external content you've included or forked in your project's derivative content %PROJECT_CONTENT_DISCLOSURES_FLINK%, this may be required by the license of the content. diff --git a/packages/moderation/src/data/messages/checklist/messages/reupload/reupload.md b/packages/moderation/src/data/messages/checklist/messages/reupload/reupload.md index 6c2cc9b7ff..85b34b93c0 100644 --- a/packages/moderation/src/data/messages/checklist/messages/reupload/reupload.md +++ b/packages/moderation/src/data/messages/checklist/messages/reupload/reupload.md @@ -1,5 +1,5 @@ ## Reuploads are forbidden -This project appears to contain content from %ORIGINAL_PROJECT% by %ORIGINAL_AUTHOR%. -Per section 4 of %RULES%, this is strictly forbidden. +This project appears to contain content from %ORIGINAL_PROJECT% by %ORIGINAL_AUTHOR%.
+Per section 4 of %RULES%, this is strictly forbidden.
If you believe this is an error, or you can verify you are the creator and rightful owner of this content please let us know. Otherwise, we ask that you **do not resubmit this project**. diff --git a/packages/moderation/src/data/messages/checklist/messages/reupload/unclear-fork.md b/packages/moderation/src/data/messages/checklist/messages/reupload/unclear-fork.md index ba885a2304..21347f7ef8 100644 --- a/packages/moderation/src/data/messages/checklist/messages/reupload/unclear-fork.md +++ b/packages/moderation/src/data/messages/checklist/messages/reupload/unclear-fork.md @@ -1,4 +1,5 @@ ## Forks and Reuploads -Per section 4 of %RULES%, please provide proof that this project is both license-abiding and significantly divergent from the source work. -Alternatively, please provide proof of your explicit permission from the author of the source work to distribute this content on Modrinth. +Per section 4 of %RULES%, please provide proof that this project is both license-abiding and significantly divergent from the source work.
+Alternatively, please provide proof of your explicit permission from the author of the source work to distribute this content on Modrinth.
+Please remember to appropriately credit all external content you've included or forked in your project's derivative content %PROJECT_CONTENT_DISCLOSURES_FLINK%, this may be required by the license of the source work. diff --git a/packages/moderation/src/utils.ts b/packages/moderation/src/utils.ts index f3d5426543..7e7dbd9477 100644 --- a/packages/moderation/src/utils.ts +++ b/packages/moderation/src/utils.ts @@ -249,7 +249,7 @@ export function flattenProjectVariables( vars[`PROJECT_CONTENT_DISCLOSURES_LINK`] = `https://modrinth.com/project/${project.id}/settings/disclosures` vars[`PROJECT_CONTENT_DISCLOSURES_FLINK`] = - `[Content disclosures](https://modrinth.com/project/${project.id}/settings/disclosures)` + `[Content Disclosures](https://modrinth.com/project/${project.id}/settings/disclosures)` return vars } From 747fb373f9b4e604940443ec4dd62bd41dc71161 Mon Sep 17 00:00:00 2001 From: coolbot <76798835+coolbot100s@users.noreply.github.com> Date: Fri, 7 Aug 2026 21:29:31 -0700 Subject: [PATCH 5/5] new r4 msg, update showcase clarity message --- .../checklist/messages/gallery/showcase-clarity.md | 4 +++- .../checklist/messages/reupload/missing-attribution.md | 4 ++++ packages/moderation/src/data/stages/reupload.tsx | 7 +++++++ 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 packages/moderation/src/data/messages/checklist/messages/reupload/missing-attribution.md diff --git a/packages/moderation/src/data/messages/checklist/messages/gallery/showcase-clarity.md b/packages/moderation/src/data/messages/checklist/messages/gallery/showcase-clarity.md index bf7c812178..c93ae5a601 100644 --- a/packages/moderation/src/data/messages/checklist/messages/gallery/showcase-clarity.md +++ b/packages/moderation/src/data/messages/checklist/messages/gallery/showcase-clarity.md @@ -5,6 +5,8 @@ Per section 2 of %RULES%, it's important that your project page accurately and h Currently, it looks like some images do not accurately represent the content of your %PROJECT_TYPE_FORMATTED_LOWER%. Please make sure you use authentic images such as in-game screenshots when showcasing the content or functionality of your work. -Images such as renders, AI generated or assisted images, or heavily modified images should not be used to demonstrate the functionality of your project in the %PROJECT_DESCRIPTION_FLINK% or %PROJECT_GALLERY_FLINK%. +Images such as renders, or heavily modified images should not be used to demonstrate the functionality of your project in the %PROJECT_DESCRIPTION_FLINK% or %PROJECT_GALLERY_FLINK%. You may still include these types of branding assets or unrelated images on your project page, so long as it is clear they are not authentic representations of the content. + +Per section 6.2 of %RULES%, the use of AI images is strictly prohibited. diff --git a/packages/moderation/src/data/messages/checklist/messages/reupload/missing-attribution.md b/packages/moderation/src/data/messages/checklist/messages/reupload/missing-attribution.md new file mode 100644 index 0000000000..5952604e02 --- /dev/null +++ b/packages/moderation/src/data/messages/checklist/messages/reupload/missing-attribution.md @@ -0,0 +1,4 @@ +## Missing Attribution + +Please ensure you've provided proper attribution to the source of all assets you have not created yourself by listing them accordingly in your project's %PROJECT_CONTENT_DISCLOSURES_FLINK%. +Per section 4 of %RULES%, this is strictly required for any content licensed with an attribution requirement clause. diff --git a/packages/moderation/src/data/stages/reupload.tsx b/packages/moderation/src/data/stages/reupload.tsx index 002f284072..6665336368 100644 --- a/packages/moderation/src/data/stages/reupload.tsx +++ b/packages/moderation/src/data/stages/reupload.tsx @@ -88,6 +88,13 @@ export default function () { OVERRIDES: state.overrides, })) .children(markdown('overrides').title('Forbidden overrides list').required()), + + toggle('missing-attribution', 'Missing Attribution') + .suggestedStatus('rejected') + .message((state) => ({ + MISSING_CREDITS: state.missing_credits, + })), + //.children(markdown('missing_credits').title('Add list of missing credits.')), ), ) }