diff --git a/.github/workflows/labrinth-build.yml b/.github/workflows/labrinth-build.yml index 950a1337bd..dd19280d2d 100644 --- a/.github/workflows/labrinth-build.yml +++ b/.github/workflows/labrinth-build.yml @@ -86,7 +86,7 @@ jobs: GIT_HASH: ${{ github.sha }} SCCACHE_CACHE_SIZE: ${{ needs.skip-if-clean.outputs.internal == 'true' && '20G' || '' }} RUSTC_WRAPPER: ${{ needs.skip-if-clean.outputs.internal == 'true' && 'sccache' || '' }} - RUST_MIN_STACK: '16777216' + RUST_MIN_STACK: '268435456' steps: - name: Check out code uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 diff --git a/apps/docs/public/openapi.yaml b/apps/docs/public/openapi.yaml index 9407d9ac28..a424e7ef4a 100644 --- a/apps/docs/public/openapi.yaml +++ b/apps/docs/public/openapi.yaml @@ -436,7 +436,7 @@ components: - ai_content_code - ai_content_assets - ai_content_text - - ai_content_functionality + - ai_functionality - advertisements - epilepsy_triggers - system_interactions @@ -2202,7 +2202,7 @@ paths: - `ai_content_code` - `ai_content_assets` - `ai_content_text` - - `ai_content_functionality` + - `ai_functionality` - `advertisements` - `epilepsy_triggers` - `system_interactions` diff --git a/apps/frontend/src/components/ui/project-settings/disclosures/AiDisclosureCard.vue b/apps/frontend/src/components/ui/project-settings/disclosures/AiDisclosureCard.vue index e0280d303b..b1883fb6ce 100644 --- a/apps/frontend/src/components/ui/project-settings/disclosures/AiDisclosureCard.vue +++ b/apps/frontend/src/components/ui/project-settings/disclosures/AiDisclosureCard.vue @@ -25,7 +25,7 @@ const emit = defineEmits<{ const { formatMessage } = useVIntl() -const AI_USES: AiUsage[] = ['code', 'assets', 'text', 'functionality'] +const AI_USES: AiUsage[] = ['code', 'assets', 'text'] const messages = defineMessages({ title: { @@ -35,9 +35,8 @@ const messages = defineMessages({ description: { id: 'project.settings.disclosures.ai.description', defaultMessage: `You must enable this if this project contains a substantial amount of AI-generated code, any - assets that are substantially AI-generated, the project's functionality relies on the use of - generative AI, or if any element of your project's page such as description or publishing - relies on generative AI.`, + assets that are substantially AI-generated, or if any element of your project's page such as + description or publishing relies on generative AI.`, }, contentRules: { id: 'project.settings.disclosures.ai.content-rules', diff --git a/apps/frontend/src/components/ui/project-settings/disclosures/AiFunctionalityDisclosureCard.vue b/apps/frontend/src/components/ui/project-settings/disclosures/AiFunctionalityDisclosureCard.vue new file mode 100644 index 0000000000..529c179291 --- /dev/null +++ b/apps/frontend/src/components/ui/project-settings/disclosures/AiFunctionalityDisclosureCard.vue @@ -0,0 +1,67 @@ + + + diff --git a/apps/frontend/src/components/ui/project-settings/disclosures/form.ts b/apps/frontend/src/components/ui/project-settings/disclosures/form.ts index d6cedf831a..5e1ba8e419 100644 --- a/apps/frontend/src/components/ui/project-settings/disclosures/form.ts +++ b/apps/frontend/src/components/ui/project-settings/disclosures/form.ts @@ -22,7 +22,7 @@ function findDisclosure( return disclosures.find((disclosure): disclosure is DisclosureOf => disclosure.type === type) } -type NoteDisclosureType = 'advertisements' | 'epilepsy_triggers' | 'archived' +type NoteDisclosureType = 'ai_functionality' | 'advertisements' | 'epilepsy_triggers' | 'archived' function createNoteModel( disclosures: ProjectDisclosureData[], @@ -66,6 +66,7 @@ export function disclosuresToForm(disclosures: ProjectDisclosureData[]): Disclos uses: ai ? [...(ai.uses ?? [])] : [], note: ai?.note ?? '', }, + aiFunctionality: createNoteModel(disclosures, 'ai_functionality'), advertising: createNoteModel(disclosures, 'advertisements'), paidFeatures: { enabled: isActiveDisclosure(paidFeatures), @@ -110,6 +111,8 @@ export function formToDisclosure( uses: [...form.ai.uses], note: form.ai.note.trim() || null, } + case 'ai_functionality': + return { type: 'ai_functionality', note: form.aiFunctionality.note.trim() || null } case 'advertisements': return { type: 'advertisements', note: form.advertising.note.trim() || null } case 'paid_features': @@ -151,6 +154,9 @@ export function formToDisclosures(form: DisclosureFormState): ProjectDisclosure[ if (form.ai.enabled) { set.push(formToDisclosure(form, 'ai_content')) } + if (form.aiFunctionality.enabled) { + set.push(formToDisclosure(form, 'ai_functionality')) + } if (form.advertising.enabled) { set.push(formToDisclosure(form, 'advertisements')) } diff --git a/apps/frontend/src/components/ui/project-settings/disclosures/index.ts b/apps/frontend/src/components/ui/project-settings/disclosures/index.ts index 085bf22204..3c49f28e9a 100644 --- a/apps/frontend/src/components/ui/project-settings/disclosures/index.ts +++ b/apps/frontend/src/components/ui/project-settings/disclosures/index.ts @@ -1,5 +1,6 @@ export { default as AdvertisingDisclosureCard } from './AdvertisingDisclosureCard.vue' export { default as AiDisclosureCard } from './AiDisclosureCard.vue' +export { default as AiFunctionalityDisclosureCard } from './AiFunctionalityDisclosureCard.vue' export { default as ArchivedDisclosureCard } from './ArchivedDisclosureCard.vue' export { default as DerivativeDisclosureCard } from './DerivativeDisclosureCard.vue' export { default as DisclosureToggleCard } from './DisclosureToggleCard.vue' diff --git a/apps/frontend/src/components/ui/project-settings/disclosures/types.ts b/apps/frontend/src/components/ui/project-settings/disclosures/types.ts index 6983314a98..acf811d467 100644 --- a/apps/frontend/src/components/ui/project-settings/disclosures/types.ts +++ b/apps/frontend/src/components/ui/project-settings/disclosures/types.ts @@ -44,6 +44,7 @@ export type DerivativeDisclosure = { export type DisclosureFormState = { ai: AiDisclosure + aiFunctionality: NoteDisclosure advertising: NoteDisclosure paidFeatures: PaidFeaturesDisclosure telemetry: TelemetryDisclosure diff --git a/apps/frontend/src/locales/en-US/index.json b/apps/frontend/src/locales/en-US/index.json index 38ef534d84..862d471098 100644 --- a/apps/frontend/src/locales/en-US/index.json +++ b/apps/frontend/src/locales/en-US/index.json @@ -3839,11 +3839,20 @@ "project.settings.disclosures.advertising.title": { "message": "Contains advertisements" }, + "project.settings.disclosures.ai-functionality.description": { + "message": "Placeholder" + }, + "project.settings.disclosures.ai-functionality.note-placeholder": { + "message": "e.g. The in-game assistant uses generative AI to generate dialogue." + }, + "project.settings.disclosures.ai-functionality.title": { + "message": "Contains generative AI functionality" + }, "project.settings.disclosures.ai.content-rules": { "message": "Please refer to Section 6 of Modrinth's Content Rules for more information." }, "project.settings.disclosures.ai.description": { - "message": "You must enable this if this project contains a substantial amount of AI-generated code, any\n\t\t\t\tassets that are substantially AI-generated, the project's functionality relies on the use of\n\t\t\t\tgenerative AI, or if any element of your project's page such as description or publishing\n\t\t\t\trelies on generative AI." + "message": "You must enable this if this project contains a substantial amount of AI-generated code, any\n\t\t\t\tassets that are substantially AI-generated, or if any element of your project's page such as\n\t\t\t\tdescription or publishing relies on generative AI." }, "project.settings.disclosures.ai.note-placeholder": { "message": "e.g. The Chinese and Arabic translations are AI-generated." diff --git a/apps/frontend/src/pages/[type]/[project]/settings/disclosures.vue b/apps/frontend/src/pages/[type]/[project]/settings/disclosures.vue index 0d79f28ca8..dd9bc55b39 100644 --- a/apps/frontend/src/pages/[type]/[project]/settings/disclosures.vue +++ b/apps/frontend/src/pages/[type]/[project]/settings/disclosures.vue @@ -22,6 +22,7 @@ import { computed, watch } from 'vue' import { AdvertisingDisclosureCard, AiDisclosureCard, + AiFunctionalityDisclosureCard, ArchivedDisclosureCard, DerivativeDisclosureCard, type DisclosureFormIssue, @@ -293,6 +294,14 @@ const { confirmLeaveModal } = usePageLeaveSafety(hasChanges) (status: DisclosureLockStatus) => setDisclosureLockStatus('ai_content', status) " /> + 'uses' ? 'functionality' +ON CONFLICT (project_id, type) DO NOTHING; + +DELETE FROM project_disclosures +WHERE type = 'ai_content' + AND metadata -> 'uses' ? 'functionality' + AND jsonb_array_length(metadata -> 'uses') = 1; + +UPDATE project_disclosures +SET metadata = jsonb_set(metadata, '{uses}', (metadata -> 'uses') - 'functionality') +WHERE type = 'ai_content' + AND metadata -> 'uses' ? 'functionality'; diff --git a/apps/labrinth/src/models/v3/disclosures.rs b/apps/labrinth/src/models/v3/disclosures.rs index 2c7e7b2a45..48da86e906 100644 --- a/apps/labrinth/src/models/v3/disclosures.rs +++ b/apps/labrinth/src/models/v3/disclosures.rs @@ -18,6 +18,9 @@ pub enum ProjectDisclosure { note: Option, uses: BTreeSet, }, + AiFunctionality { + note: Option, + }, Advertisements { note: Option, }, @@ -161,7 +164,6 @@ pub enum AiUsages { Code, Assets, Text, - Functionality, } #[derive(Debug, Clone, Serialize, Deserialize, ToSchema, IntoStaticStr)] diff --git a/packages/api-client/src/modules/labrinth/types.ts b/packages/api-client/src/modules/labrinth/types.ts index 0c7f1b48ce..e6e512e1bc 100644 --- a/packages/api-client/src/modules/labrinth/types.ts +++ b/packages/api-client/src/modules/labrinth/types.ts @@ -1304,7 +1304,7 @@ export namespace Labrinth { export type TelemetryConsent = 'opt_in' | 'opt_out' | 'always_active' - export type AiUsage = 'code' | 'assets' | 'text' | 'functionality' + export type AiUsage = 'code' | 'assets' | 'text' export type DisclosureLockStatus = 'unlocked' | 'cannot_disable' | 'fully_locked' @@ -1320,6 +1320,10 @@ export namespace Labrinth { uses: AiUsage[] note?: string | null } + | { + type: 'ai_functionality' + note?: string | null + } | { type: 'advertisements' note?: string | null diff --git a/packages/assets/generated-icons.ts b/packages/assets/generated-icons.ts index b92e881e3a..5cf5029c49 100644 --- a/packages/assets/generated-icons.ts +++ b/packages/assets/generated-icons.ts @@ -61,6 +61,7 @@ import _BoxIcon from './icons/box.svg?component' import _BoxImportIcon from './icons/box-import.svg?component' import _BoxesIcon from './icons/boxes.svg?component' import _BracesIcon from './icons/braces.svg?component' +import _BrainCircuitIcon from './icons/brain-circuit.svg?component' import _BrushCleaningIcon from './icons/brush-cleaning.svg?component' import _BugIcon from './icons/bug.svg?component' import _CalendarIcon from './icons/calendar.svg?component' @@ -505,6 +506,7 @@ export const BoxIcon = _BoxIcon export const BoxImportIcon = _BoxImportIcon export const BoxesIcon = _BoxesIcon export const BracesIcon = _BracesIcon +export const BrainCircuitIcon = _BrainCircuitIcon export const BrushCleaningIcon = _BrushCleaningIcon export const BugIcon = _BugIcon export const CalendarIcon = _CalendarIcon diff --git a/packages/assets/icons/brain-circuit.svg b/packages/assets/icons/brain-circuit.svg new file mode 100644 index 0000000000..dc4bfb7700 --- /dev/null +++ b/packages/assets/icons/brain-circuit.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + 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 6ece4d1fd0..580736adb3 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 @@ -1 +1 @@ -- Advertisements or sponsored promotions of outside content. +- [Advertisements](%DISCLOSURES_FAQ_ADS_LINK%) or sponsored promotions of outside content. 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 deleted file mode 100644 index bce1cfecff..0000000000 --- a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai.md +++ /dev/null @@ -1,2 +0,0 @@ -- AI-generated or assisted content.
- %R6.1%, proper disclosure of AI usage is strictly required. diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai/ai-functionality.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai/ai-functionality.md new file mode 100644 index 0000000000..a51c12b0be --- /dev/null +++ b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai/ai-functionality.md @@ -0,0 +1 @@ +- [Functionality](%DISCLOSURES_FAQ_AI_FUNCTIONALITY_LINK%) that relies on or is designed by generative AI. 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 index f09a749f55..c93e3edba9 100644 --- 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 @@ -1 +1 @@ - - AI-generated or assisted art, assets, or other design elements. + - [AI-generated or assisted assets](%DISCLOSURES_FAQ_AI_ASSETS_LINK%), such as textures, audio, 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 index b1fbef3695..ddd2bb80de 100644 --- 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 @@ -1 +1 @@ - - AI-generated or assisted code. + - [AI-generated or assisted code](%DISCLOSURES_FAQ_AI_CODE_LINK%). diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai/ai-usages/functionality.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai/ai-usages/functionality.md deleted file mode 100644 index 9d407276cb..0000000000 --- a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai/ai-usages/functionality.md +++ /dev/null @@ -1 +0,0 @@ - - Functionality that relies on or is designed by generative AI. 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 index 1b1bcffeea..e4e40d4265 100644 --- 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 @@ -1 +1 @@ - - AI-generated or assisted writing or text, including translations. + - [AI-generated or assisted text](%DISCLOSURES_FAQ_AI_TEXT_LINK%) such as item names, project description, or translations. diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai/ai.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai/ai.md new file mode 100644 index 0000000000..39a26d34b2 --- /dev/null +++ b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai/ai.md @@ -0,0 +1,3 @@ +- [AI-generated or assisted content](%DISCLOSURES_FAQ_AI_CONTENT_LINK%).
+ %R6.1%, proper disclosure of AI usage is strictly required. \ + Refer to our guidelines on %AI_USAGE_FLINK% for more information. 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 7e97f23fb7..264fee063c 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 @@ -1 +1 @@ -- Being archived, or otherwise no longer receiving updates. +- [Being archived](%DISCLOSURES_FAQ_ARCHIVE_LINK%), 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 dcb1e2b360..4ad213f4cd 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 @@ -1,2 +1,2 @@ -- Derivative content, such as code or assets from another project or creator.
+- [Derivative content](%DISCLOSURES_FAQ_DERIVATIVE_LINK%), such as code or assets from another project or creator.
%R4%, 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/paid-features.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/paid-features.md index 775d73a711..2bb9ccd5e2 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 @@ -1 +1 @@ -- Features locked behind a paywall, donation, or other monetary exchange. +- [Features locked behind a paywall](%DISCLOSURES_FAQ_PAID_LINK%), 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 315a02b665..1df81b3451 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 @@ -1 +1 @@ -- Content that may be dangerous to users with photosensitive epilepsy. +- Content that [may be dangerous to users with photosensitive epilepsy](%DISCLOSURES_FAQ_PHOTOSENSITIVITY_LINK%). 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 d4c8f3d41b..4791db7744 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 @@ -1 +1 @@ -- Features that interact with the user's machine outside of the context of the game. +- Features that interact with the user's machine [outside of the context of the game](%DISCLOSURES_FAQ_EXTERNAL_LINK%). 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 2199aa8798..2a3bb7740e 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 @@ -1,2 +1,2 @@ -- Telemetry or any other instances of data being sent to a remote server that the user did not connect to.
+- [Telemetry](%DISCLOSURES_FAQ_TELEMETRY_LINK%), or any instances of data being sent to a remote server that the user did not connect to.
%R1.11%, proper disclosure of data collection is strictly required. diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/telemetry/consent-model/always.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/telemetry/consent-model/always.md index 4f173524f9..4aef1e12fd 100644 --- a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/telemetry/consent-model/always.md +++ b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/telemetry/consent-model/always.md @@ -1,2 +1,2 @@
- Additionally, it's important your telemetry's consent model is accurate. In this case, your %PROJECT_TYPE_FORMATTED_LOWER%'s telemetry appears to be "Always active". + Additionally, it's important your telemetry's [consent model](%DISCLOSURES_FAQ_TELEMTRY_CONSENT_LINK%) is accurate. In this case, your %PROJECT_TYPE_FORMATTED_LOWER%'s telemetry appears to be "Always active". diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/telemetry/consent-model/opt-in.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/telemetry/consent-model/opt-in.md index 0241ebcc5e..a9a169be97 100644 --- a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/telemetry/consent-model/opt-in.md +++ b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/telemetry/consent-model/opt-in.md @@ -1,2 +1,2 @@
- Additionally, it's important your telemetry's consent model is accurate. In this case, your %PROJECT_TYPE_FORMATTED_LOWER%'s telemetry appears to be "Opt In". + Additionally, it's important your telemetry's [consent model](%DISCLOSURES_FAQ_TELEMTRY_CONSENT_LINK%) is accurate. In this case, your %PROJECT_TYPE_FORMATTED_LOWER%'s telemetry appears to be "Opt In". diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/telemetry/consent-model/opt-out.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/telemetry/consent-model/opt-out.md index 7b5789a438..287c0d9e6e 100644 --- a/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/telemetry/consent-model/opt-out.md +++ b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/telemetry/consent-model/opt-out.md @@ -1,2 +1,2 @@
- Additionally, it's important your telemetry's consent model is accurate. In this case, your %PROJECT_TYPE_FORMATTED_LOWER%'s telemetry appears to be "Opt Out". + Additionally, it's important your telemetry's [consent model](%DISCLOSURES_FAQ_TELEMTRY_CONSENT_LINK%) is accurate. In this case, your %PROJECT_TYPE_FORMATTED_LOWER%'s telemetry appears to be "Opt Out". diff --git a/packages/moderation/src/data/messages/checklist/messages/disclosures/non-english.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/non-english.md new file mode 100644 index 0000000000..54b94b91a4 --- /dev/null +++ b/packages/moderation/src/data/messages/checklist/messages/disclosures/non-english.md @@ -0,0 +1,5 @@ +## Non-English Disclosure Information + +%R2.2%, we ask that you ensure all %PROJECT_CONTENT_DISCLOSURES_FLINK% are written in English. + +Please refer to our %DISCLOSURES_FAQ_FLINK% for more info. diff --git a/packages/moderation/src/data/stages/description.tsx b/packages/moderation/src/data/stages/description.tsx index 87ab2cf33e..ca9d67c8c1 100644 --- a/packages/moderation/src/data/stages/description.tsx +++ b/packages/moderation/src/data/stages/description.tsx @@ -48,7 +48,7 @@ export default function () { : '' }), - toggle('non-english', 'Non-english') + toggle('non-english', 'Non-English') .suggestedStatus('flagged') .message(() => `non-english${project.value.minecraft_java_server ? '-server' : ''}`) .shown( diff --git a/packages/moderation/src/data/stages/disclosures.tsx b/packages/moderation/src/data/stages/disclosures.tsx index 795337a9e5..c86bbf0548 100644 --- a/packages/moderation/src/data/stages/disclosures.tsx +++ b/packages/moderation/src/data/stages/disclosures.tsx @@ -18,7 +18,7 @@ export default function () { .children( toggle('ai', 'AI Usage') .suggestedStatus('flagged') - .message() + .message('ai/ai') .children( group() .title('What kind of AI content is present?') @@ -26,11 +26,14 @@ export default function () { 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(undefined, 'ai/list-intro'), + toggle('ai-functionality', 'AI Functionality') + .suggestedStatus('flagged') + .message('ai/ai-functionality'), + toggle('ads', 'Advertisements').suggestedStatus('flagged').message(), toggle('paid-features', 'Paid Features').suggestedStatus('flagged').message(), @@ -73,6 +76,7 @@ export default function () { .collect(undefined, 'missing-disclosures/list-intro'), toggle('misused', 'Misused').suggestedStatus('flagged').message(), + toggle('non-english', 'Non-English').suggestedStatus('flagged').message(), ), ) } diff --git a/packages/moderation/src/utils.ts b/packages/moderation/src/utils.ts index c9711596af..13ebb52df6 100644 --- a/packages/moderation/src/utils.ts +++ b/packages/moderation/src/utils.ts @@ -188,6 +188,32 @@ export function flattenStaticVariables(): Record { `[Markdown Formatting Guide](https://support.modrinth.com/en/articles/8801962)` vars[`DISCLOSURES_FAQ_FLINK`] = `[Content Disclosures FAQ](https://support.modrinth.com/en/articles/16567675)` + vars[`DISCLOSURES_FAQ_AI_CONTENT_LINK`] = + `https://support.modrinth.com/en/articles/16567675#h_ec72dfca13` + vars[`DISCLOSURES_FAQ_AI_CODE_LINK`] = + `https://support.modrinth.com/en/articles/16567675#h_281356a403` + vars[`DISCLOSURES_FAQ_AI_ASSETS_LINK`] = + `https://support.modrinth.com/en/articles/16567675#h_e5f38e66a1` + vars[`DISCLOSURES_FAQ_AI_TEXT_LINK`] = + `https://support.modrinth.com/en/articles/16567675#h_6e56d3fe64` + vars[`DISCLOSURES_FAQ_AI_FUNCTIONALITY_LINK`] = + `https://support.modrinth.com/en/articles/16567675#h_4482fb3bf7` + vars[`DISCLOSURES_FAQ_ADS_LINK`] = + `https://support.modrinth.com/en/articles/16567675#h_d486036510` + vars[`DISCLOSURES_FAQ_PAID_LINK`] = + `https://support.modrinth.com/en/articles/16567675#h_37c3b31394` + vars[`DISCLOSURES_FAQ_TELEMETRY_LINK`] = + `https://support.modrinth.com/en/articles/16567675#h_490dcf364b` + vars[`DISCLOSURES_FAQ_TELEMTRY_CONSENT_LINK`] = + `https://support.modrinth.com/en/articles/16567675#h_d209c4c04c` + vars[`DISCLOSURES_FAQ_DERIVATIVE_LINK`] = + `https://support.modrinth.com/en/articles/16567675#h_6422cc821e` + vars[`DISCLOSURES_FAQ_PHOTOSENSITIVITY_LINK`] = + `https://support.modrinth.com/en/articles/16567675#h_22ffae0bb1` + vars[`DISCLOSURES_FAQ_EXTERNAL_LINK`] = + `https://support.modrinth.com/en/articles/16567675#h_4a6264f07c` + vars[`DISCLOSURES_FAQ_ARCHIVE_LINK`] = + `https://support.modrinth.com/en/articles/16567675#h_76b62c699c` vars[`AI_USAGE_FLINK`] = `[AI Usage](https://support.modrinth.com/en/articles/16551575)` vars[`LICENSING_GUIDE`] = `our guide to [Licensing your Mods](https://modrinth.com/news/article/licensing-guide)` diff --git a/packages/ui/src/components/project/ProjectSidebarDetails.vue b/packages/ui/src/components/project/ProjectSidebarDetails.vue index 8be4b125e9..99399cfb12 100644 --- a/packages/ui/src/components/project/ProjectSidebarDetails.vue +++ b/packages/ui/src/components/project/ProjectSidebarDetails.vue @@ -38,6 +38,17 @@ +
+