diff --git a/apps/frontend/package.json b/apps/frontend/package.json index d143b5699e..156c472201 100644 --- a/apps/frontend/package.json +++ b/apps/frontend/package.json @@ -54,6 +54,7 @@ "@vue-email/components": "^0.0.21", "@vue-email/render": "^0.0.9", "@vueuse/core": "^11.1.0", + "@zip.js/zip.js": "^2.8.34", "ace-builds": "^1.36.2", "ansi-to-html": "^0.7.2", "chart.js": "^4.5.1", diff --git a/apps/frontend/src/helpers/infer/infer.ts b/apps/frontend/src/helpers/infer/infer.ts index 9bda8a8049..de5956abf1 100644 --- a/apps/frontend/src/helpers/infer/infer.ts +++ b/apps/frontend/src/helpers/infer/infer.ts @@ -19,6 +19,26 @@ export interface InferredVersionInfo { game_versions?: string[] } +async function readMrpackManifest(rawFile: RawFile): Promise { + const { BlobReader, TextWriter, ZipReader } = await import('@zip.js/zip.js') + const reader = new ZipReader(new BlobReader(rawFile)) + + try { + const entries = await reader.getEntries() + const manifest = entries.find( + (entry) => !entry.directory && entry.filename === 'modrinth.index.json', + ) + + if (!manifest || manifest.directory) { + throw new Error('Missing modrinth.index.json') + } + + return await manifest.getData(new TextWriter()) + } finally { + await reader.close() + } +} + /** * Fills in missing version information from the filename if not already present. */ @@ -56,11 +76,18 @@ export const inferVersionInfo = async function ( const simplifiedGameVersions = gameVersions .filter((it) => it.version_type === 'release') .map((it) => it.version) + const loaderParsers = createLoaderParsers(project, gameVersions, simplifiedGameVersions) + const fileName = rawFile.name.toLowerCase() + + if (fileName.endsWith('.mrpack') || fileName.endsWith('.mrpack-primary')) { + const manifest = await readMrpackManifest(rawFile) + const result = loaderParsers['modrinth.index.json'](manifest) + return fillMissingFromFilename(result, rawFile.name, project.title) + } const zipReader = new JSZip() const zip = await zipReader.loadAsync(rawFile) - const loaderParsers = createLoaderParsers(project, gameVersions, simplifiedGameVersions) const packParser = createPackParser(project, gameVersions, rawFile) const multiFileDetectors = createMultiFileDetectors(project, gameVersions, rawFile) diff --git a/apps/labrinth/src/database/models/delphi_report_item.rs b/apps/labrinth/src/database/models/delphi_report_item.rs index 4ae71749b4..41bfa6b782 100644 --- a/apps/labrinth/src/database/models/delphi_report_item.rs +++ b/apps/labrinth/src/database/models/delphi_report_item.rs @@ -84,6 +84,8 @@ pub enum DelphiSeverity { High, #[serde(alias = "SEVERE")] Severe, + #[serde(alias = "MALWARE")] + Malware, } /// An issue found in a Delphi report. Every issue belongs to a report, diff --git a/packages/app-lib/src/api/instance/export_mrpack.rs b/packages/app-lib/src/api/instance/export_mrpack.rs index dd6605f42c..b0ba914642 100644 --- a/packages/app-lib/src/api/instance/export_mrpack.rs +++ b/packages/app-lib/src/api/instance/export_mrpack.rs @@ -184,7 +184,7 @@ pub async fn export_mrpack( let mut file = File::create(&export_path) .await .map_err(|e| IOError::with_path(e, &export_path))?; - let mut writer = ZipFileWriter::with_tokio(&mut file); + let mut writer = ZipFileWriter::with_tokio(&mut file).force_no_zip64(); let version_id = version_id.unwrap_or("1.0.0".to_string()); let mut packfile = create_mrpack_json(&metadata, version_id, description).await?; diff --git a/packages/blog/changelog.ts b/packages/blog/changelog.ts index 186f72224c..1e62b822f6 100644 --- a/packages/blog/changelog.ts +++ b/packages/blog/changelog.ts @@ -10,6 +10,13 @@ export type VersionEntry = { } const VERSIONS: VersionEntry[] = [ + { + date: `2026-08-08T19:10:34+00:00`, + product: 'web', + body: `## Fixed +- Fixed action bar becoming very wide on larger displays. +- Version upload failing to detect mrpack loader.`, + }, { date: `2026-08-07T20:41:51+00:00`, product: 'app', 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/description/clarity.md b/packages/moderation/src/data/messages/checklist/messages/description/clarity.md index 8c59da9dd0..4990bccf3a 100644 --- a/packages/moderation/src/data/messages/checklist/messages/description/clarity.md +++ b/packages/moderation/src/data/messages/checklist/messages/description/clarity.md @@ -1,7 +1,7 @@ ## Description Clarity -Per section 2 of %RULES% It's important that your Description accurately and honestly represents the content of your project. -Currently, some elements in your Description may be confusing or misleading. -Please edit your description to ensure it accurately represents the current functionality of your project. -Avoid making hyperbolic claims that could misrepresent the facts of your project. +%R2%, It's important that your Description accurately and honestly represents the content of your project. \ +Currently, some elements in your Description may be confusing or misleading. \ +Please edit your description to ensure it accurately represents the current functionality of your project. \ +Avoid making hyperbolic claims that could misrepresent the facts of your project. \ Ensure that your Description is accurate and not likely to confuse users. diff --git a/packages/moderation/src/data/messages/checklist/messages/description/headers-as-body.md b/packages/moderation/src/data/messages/checklist/messages/description/headers-as-body.md index 78e8366f60..3c67ab0959 100644 --- a/packages/moderation/src/data/messages/checklist/messages/description/headers-as-body.md +++ b/packages/moderation/src/data/messages/checklist/messages/description/headers-as-body.md @@ -1,6 +1,6 @@ ## Description Accessibility -In accordance with section 2.2 of %RULES%, we request that `# header`s not be used as body text. +%R2.2%, we ask that `# header`s not be used as body text. Headers are interpreted differently by screen-readers and thus should generally only be used for things like separating sections of your Description. diff --git a/packages/moderation/src/data/messages/checklist/messages/description/image-only.md b/packages/moderation/src/data/messages/checklist/messages/description/image-only.md index 57781986e0..6539d94cdb 100644 --- a/packages/moderation/src/data/messages/checklist/messages/description/image-only.md +++ b/packages/moderation/src/data/messages/checklist/messages/description/image-only.md @@ -1,6 +1,6 @@ ## Image Descriptions -In accordance with section 2.2 of %RULES%, we ask that you provide a text alternative to your current Description. +%R2.2%, we ask that you provide a text alternative to your current Description. It is important that your Description contains enough detail about your project that a user can have a full understanding of it from text alone. diff --git a/packages/moderation/src/data/messages/checklist/messages/description/insufficient/header.md b/packages/moderation/src/data/messages/checklist/messages/description/insufficient/header.md index 68f69b9e31..872243af5f 100644 --- a/packages/moderation/src/data/messages/checklist/messages/description/insufficient/header.md +++ b/packages/moderation/src/data/messages/checklist/messages/description/insufficient/header.md @@ -1,4 +1,4 @@ ## Insufficient Description -Per section 2.1 of %RULES%, your %PROJECT_DESCRIPTION_FLINK% should clearly inform the reader of the content, purpose, and appeal of your %PROJECT_TYPE%.
+%R2.1%, your %PROJECT_DESCRIPTION_FLINK% should clearly inform the reader of the content, purpose, and appeal of your %PROJECT_TYPE%.
Currently, it looks like there are some missing details. diff --git a/packages/moderation/src/data/messages/checklist/messages/description/non-english-server.md b/packages/moderation/src/data/messages/checklist/messages/description/non-english-server.md index 2ddce75ab0..29ba76fbf3 100644 --- a/packages/moderation/src/data/messages/checklist/messages/description/non-english-server.md +++ b/packages/moderation/src/data/messages/checklist/messages/description/non-english-server.md @@ -1,6 +1,6 @@ ## No English Description -Per section 2.2 of %RULES%, a server's [Summary](%PROJECT_SETTINGS_LINK%) and %PROJECT_DESCRIPTION_FLINK% must be in English, unless meant exclusively for a non-english audience. +%R2.2%, a server's %PROJECT_SUMMARY_FLINK% and %PROJECT_DESCRIPTION_FLINK% must be in English, unless meant exclusively for a non-english audience. You may include your non-English Description if you would like but we ask that you also add an English translation of the Description to your project page, if you would like to use an online translator to do this, we recommend [DeepL](https://www.deepl.com/translator). diff --git a/packages/moderation/src/data/messages/checklist/messages/description/non-english.md b/packages/moderation/src/data/messages/checklist/messages/description/non-english.md index 07d83a7da7..e62e614520 100644 --- a/packages/moderation/src/data/messages/checklist/messages/description/non-english.md +++ b/packages/moderation/src/data/messages/checklist/messages/description/non-english.md @@ -1,5 +1,5 @@ ## No English Description -Per section 2.2 of %RULES%, a project's [Summary](%PROJECT_SETTINGS_LINK%) and %PROJECT_DESCRIPTION_FLINK% must be in English, unless meant exclusively for non-English use, such as translations. +%R2.2%, a project's %PROJECT_SUMMARY_FLINK% and %PROJECT_DESCRIPTION_FLINK% must be in English, unless meant exclusively for non-English use, such as translations. You may include your non-English Description if you would like but we ask that you also add an English translation of the Description to your project page, if you would like to use an online translator to do this, we recommend [DeepL](https://www.deepl.com/translator). diff --git a/packages/moderation/src/data/messages/checklist/messages/description/non-standard-text.md b/packages/moderation/src/data/messages/checklist/messages/description/non-standard-text.md index e7aad98962..d153e6917c 100644 --- a/packages/moderation/src/data/messages/checklist/messages/description/non-standard-text.md +++ b/packages/moderation/src/data/messages/checklist/messages/description/non-standard-text.md @@ -1,6 +1,6 @@ ## Description Accessibility -Per section 2 of %RULES%, your description must be plainly readable and accessible. +%R2.2%, your description must be plainly readable and accessible. Using non-standard text characters like Zalgo or "fancy text" in place of text anywhere in your project, including the Description, Summary, or Title can make your project pages inaccessible. 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..6ece4d1fd0 --- /dev/null +++ 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.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai.md new file mode 100644 index 0000000000..bce1cfecff --- /dev/null +++ b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai.md @@ -0,0 +1,2 @@ +- 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-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/ai-usages/functionality.md b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/ai/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/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/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 new file mode 100644 index 0000000000..7e97f23fb7 --- /dev/null +++ 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 new file mode 100644 index 0000000000..dcb1e2b360 --- /dev/null +++ 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.
+ %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/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 new file mode 100644 index 0000000000..2a5390689c --- /dev/null +++ b/packages/moderation/src/data/messages/checklist/messages/disclosures/missing-disclosures/missing-disclosures-header.md @@ -0,0 +1,3 @@ +## Missing Content Disclosures + +%R5.8%, we ask that you ensure all applicable %PROJECT_CONTENT_DISCLOSURES_FLINK% are filled out with accurate information. 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..775d73a711 --- /dev/null +++ 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 new file mode 100644 index 0000000000..315a02b665 --- /dev/null +++ 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 new file mode 100644 index 0000000000..d4c8f3d41b --- /dev/null +++ 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 new file mode 100644 index 0000000000..2199aa8798 --- /dev/null +++ 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.
+ %R1.11%, proper disclosure of data collection is strictly required. diff --git a/packages/moderation/src/data/messages/checklist/messages/gallery/insufficient.md b/packages/moderation/src/data/messages/checklist/messages/gallery/insufficient.md index b061941ffb..09699f8fca 100644 --- a/packages/moderation/src/data/messages/checklist/messages/gallery/insufficient.md +++ b/packages/moderation/src/data/messages/checklist/messages/gallery/insufficient.md @@ -1,7 +1,7 @@ ## Insufficient Gallery Images -We ask that projects like yours show off their content using images in the %PROJECT_GALLERY_FLINK%, or optionally in the Description, in order to effectively and clearly inform users of its content per section 2.1 of %RULES%. -Keep in mind that you should: +%R2.1%, we ask that projects like yours show off their content using images in the %PROJECT_GALLERY_FLINK%, or optionally in the Description, in order to effectively and clearly inform users of its content. \ +Keep in mind that you should: \ - Set a featured image that best represents your project. - Ensure all your images have titles that accurately label the image, and optionally, details on the contents of the image in the images Description. diff --git a/packages/moderation/src/data/messages/checklist/messages/gallery/not-relevant.md b/packages/moderation/src/data/messages/checklist/messages/gallery/not-relevant.md index 58c4881992..be59d7fd14 100644 --- a/packages/moderation/src/data/messages/checklist/messages/gallery/not-relevant.md +++ b/packages/moderation/src/data/messages/checklist/messages/gallery/not-relevant.md @@ -1,3 +1,3 @@ ## Unrelated Gallery Images -Per section 5.5 of %RULES%, any images in your project's %PROJECT_GALLERY_FLINK% must be relevant to the project and also include a Title. +%R5.5%, any images in your project's %PROJECT_GALLERY_FLINK% must be relevant to the project and also include a Title. 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..5ba4e12520 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 @@ -1,10 +1,12 @@ ## Showcase Clarity -Per section 2 of %RULES%, it's important that your project page accurately and honestly represent the content of your project. +%R2%, it's important that your project page accurately and honestly represent the content of your project. 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/license/no-source-fork.md b/packages/moderation/src/data/messages/checklist/messages/license/no-source-fork.md index ded248ea3a..f2588a7ae1 100644 --- a/packages/moderation/src/data/messages/checklist/messages/license/no-source-fork.md +++ b/packages/moderation/src/data/messages/checklist/messages/license/no-source-fork.md @@ -1,5 +1,5 @@ ## No Source Code Provided -Your project's %PROJECT_LICENSE_FLINK% of `%PROJECT_LICENSE_NAME%`, requires source disclosure. -Consider adding a Source link to your project's repository, or including a Sources file for each version as an Additional File. -Keep in mind this may be a requirement of the source work's licensing, which must be abided per section 4 of %RULES%. +Your project's %PROJECT_LICENSE_FLINK% of `%PROJECT_LICENSE_NAME%`, requires source disclosure. \ +Consider adding a Source link to your project's repository, or including a Sources file for each version as an Additional File. \ +%R4%, you may be required to publish your source work by the terms of the source work's licensing. diff --git a/packages/moderation/src/data/messages/checklist/messages/links/header.md b/packages/moderation/src/data/messages/checklist/messages/links/header.md index b7b3092d90..1ef5825e0c 100644 --- a/packages/moderation/src/data/messages/checklist/messages/links/header.md +++ b/packages/moderation/src/data/messages/checklist/messages/links/header.md @@ -1,4 +1,4 @@ ## Links -It looks like some of your %PROJECT_TYPE_FORMATTED_LOWER%'s %PROJECT_LINKS_FLINK% are misused or inaccessible.
-Per section 5.4 of %RULES%, all %PROJECT_LINKS_FLINK% must lead to correctly labeled publicly available resources that are directly related to your project. +It looks like some of your %PROJECT_TYPE_FORMATTED_LOWER%'s %PROJECT_LINKS_FLINK% are misused or inaccessible. \ +%R5.4%, all %PROJECT_LINKS_FLINK% must lead to correctly labeled publicly available resources that are directly related to your project. diff --git a/packages/moderation/src/data/messages/checklist/messages/metadata/dependencies.md b/packages/moderation/src/data/messages/checklist/messages/metadata/dependencies.md index 8498e5c58b..2a43042164 100644 --- a/packages/moderation/src/data/messages/checklist/messages/metadata/dependencies.md +++ b/packages/moderation/src/data/messages/checklist/messages/metadata/dependencies.md @@ -1,4 +1,4 @@ ## Missing Dependencies -Per section 5.6 of %RULES%, it is important that relevant dependencies be listed in the dependencies section of your project. +%R5.6%, it is important that relevant dependencies be listed in the dependencies section of your project. \ Please ensure that all relevant dependencies are included in the Dependencies section of each version of your project. diff --git a/packages/moderation/src/data/messages/checklist/messages/metadata/environment/inaccurate.md b/packages/moderation/src/data/messages/checklist/messages/metadata/environment/inaccurate.md index b0017998e4..06c5696664 100644 --- a/packages/moderation/src/data/messages/checklist/messages/metadata/environment/inaccurate.md +++ b/packages/moderation/src/data/messages/checklist/messages/metadata/environment/inaccurate.md @@ -1,8 +1,8 @@ ## Environment Metadata -Per section 5.1 of %RULES%, it is important that the metadata of your projects is accurate, including Environment Information. +%R5.1%, it is important that the metadata of your projects is accurate, including Environment Information. -We've recently overhauled how environment metadata works on Modrinth, you can now edit this in your project's [Version Settings](https://modrinth.com/project/%PROJECT_ID%/settings/versions). +We've recently overhauled how environment metadata works on Modrinth, you can now edit this in your project's [Version Settings](https://modrinth.com/project/%PROJECT_ID%/settings/versions). \ Please [read this blogpost](%NEW_ENVIRONMENTS_LINK%) for full details and information on how to ensure your project is labeled correctly. %CORRECT% diff --git a/packages/moderation/src/data/messages/checklist/messages/metadata/game-version/inaccurate.md b/packages/moderation/src/data/messages/checklist/messages/metadata/game-version/inaccurate.md index b2d18df43a..45c0665e15 100644 --- a/packages/moderation/src/data/messages/checklist/messages/metadata/game-version/inaccurate.md +++ b/packages/moderation/src/data/messages/checklist/messages/metadata/game-version/inaccurate.md @@ -1,5 +1,5 @@ ## Game Version Metadata -Per section 5.1 of %RULES%, it is important that the metadata of your project is accurate, including which Minecraft versions are selected. +%R5.1%, it is important that the metadata of your project is accurate, including which Minecraft versions are selected. %CORRECT% diff --git a/packages/moderation/src/data/messages/checklist/messages/metadata/loader/inaccurate.md b/packages/moderation/src/data/messages/checklist/messages/metadata/loader/inaccurate.md index a1cf5e0f98..43e2271581 100644 --- a/packages/moderation/src/data/messages/checklist/messages/metadata/loader/inaccurate.md +++ b/packages/moderation/src/data/messages/checklist/messages/metadata/loader/inaccurate.md @@ -1,5 +1,5 @@ ## Loader Metadata -Per section 5.1 of %RULES%, it is important that the metadata of your project is accurate, including which loaders are selected. +%R5.1%, it is important that the metadata of your project is accurate, including which loaders are selected. %CORRECT% diff --git a/packages/moderation/src/data/messages/checklist/messages/permissions/missing-permissions.md b/packages/moderation/src/data/messages/checklist/messages/permissions/missing-permissions.md index 9dc97b32b5..12cfc22f23 100644 --- a/packages/moderation/src/data/messages/checklist/messages/permissions/missing-permissions.md +++ b/packages/moderation/src/data/messages/checklist/messages/permissions/missing-permissions.md @@ -1,3 +1,3 @@ ## Permissions Incomplete -Per section 4 of %RULES%, we ask that you complete all steps requested in your project's %PROJECT_PERMISSIONS_FLINK%. +%R4%, we ask that you complete all steps requested in your project's %PROJECT_PERMISSIONS_FLINK%. diff --git a/packages/moderation/src/data/messages/checklist/messages/post-approval/metadata-issue.md b/packages/moderation/src/data/messages/checklist/messages/post-approval/metadata-issue.md index bcb9ecc59c..c2b1e0bb80 100644 --- a/packages/moderation/src/data/messages/checklist/messages/post-approval/metadata-issue.md +++ b/packages/moderation/src/data/messages/checklist/messages/post-approval/metadata-issue.md @@ -2,4 +2,5 @@ Unfortunately, it has come to our attention that there may be issues with your project that require attention. -Some information may be incorrect, per section 5.1 of %RULES% it's important that all project metadata be accurate to ensure the best experience for all modrinth users. +%R5.1%, it's important that all project metadata be accurate to ensure the best experience for all modrinth users. \ +Currently, some information may be incorrect. diff --git a/packages/moderation/src/data/messages/checklist/messages/reupload/custom-pack-verification.md b/packages/moderation/src/data/messages/checklist/messages/reupload/custom-pack-verification.md index 47e094ce90..b71be0779a 100644 --- a/packages/moderation/src/data/messages/checklist/messages/reupload/custom-pack-verification.md +++ b/packages/moderation/src/data/messages/checklist/messages/reupload/custom-pack-verification.md @@ -2,8 +2,8 @@ It looks like the custom modpack for your server may be distributing content from outside of the Modrinth ecosystem. -Per section 4 of [Modrinth's Content Rules](https://modrinth.com/legal/rules), we ask that you verify you are abiding by all licensing requirements and have permission to distribute the content included in your modpack. +%R4%, we ask that you verify you are abiding by all licensing requirements and have permission to distribute the content included in your modpack. By resubmitting your server while including this content, you acknowledge that you have seen this notice and have all necessary rights and permissions to upload your custom server pack to Modrinth. -Keep in mind, if your server's custom modpack is found to be in violation of [Modrinth's Content Rules](https://modrinth.com/legal/rules), your listing may be temporarily or permanently removed from Modrinth with or without warning. +Keep in mind, if your server's custom modpack is found to be in violation of %RULES%, your listing may be temporarily or permanently removed from Modrinth with or without warning. 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..a53c05fc3e 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,7 @@ ## 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. +%R4%, it is important that your project your project abides by the license of and is significantly divergent from the source work. + +Unfortunately, this project does not appear to meet these requirements. \ +For your project to be published, you can instead 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/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/messages/checklist/messages/reupload/request-proof-server.md b/packages/moderation/src/data/messages/checklist/messages/reupload/request-proof-server.md index f01171f50b..bc17a7d60e 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,7 @@ ## 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. + +%R4%, 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..98005981d5 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. \ +%R4%, 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..e59afcc92c 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,6 @@ ## 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%. + +%R4%, 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..525b9d3c69 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. +%R4%, 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/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..77ce9cd4ba --- /dev/null +++ b/packages/moderation/src/data/messages/checklist/messages/rules/ai-generated.md @@ -0,0 +1,6 @@ +## Project Withheld + +%R6.2b%, 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/messages/checklist/messages/rules/cheat-or-hack-advertising.md b/packages/moderation/src/data/messages/checklist/messages/rules/cheat-or-hack-advertising.md index fc0e232ed5..da5c4cb617 100644 --- a/packages/moderation/src/data/messages/checklist/messages/rules/cheat-or-hack-advertising.md +++ b/packages/moderation/src/data/messages/checklist/messages/rules/cheat-or-hack-advertising.md @@ -1,5 +1,5 @@ ## Prohibited Content -This project may violate section 3.1 of [Modrinth's Content Rules](https://modrinth.com/legal/rules). +This project may violate section 3.1 of [Modrinth's Content Rules](https://modrinth.com/legal/rules#cheats-and-hacks). We ask that you ensure your project does not endorse, promote, or enable hacks or the use of hacks. Additionally, your project page should not contain language that endorses or promotes hacks or the use of hacks. diff --git a/packages/moderation/src/data/messages/checklist/messages/rules/excessive-languages.md b/packages/moderation/src/data/messages/checklist/messages/rules/excessive-languages.md index 2a67e51b1d..ae4086410d 100644 --- a/packages/moderation/src/data/messages/checklist/messages/rules/excessive-languages.md +++ b/packages/moderation/src/data/messages/checklist/messages/rules/excessive-languages.md @@ -1,5 +1,6 @@ ## Supported Languages -Currently, you've selected %PROJECT_LANGUAGE_COUNT% [Languages](%PROJECT_LANGUAGE_SETTINGS%), per section 5.1 of %RULES% we ask that you confirm all selected languages are accurate. +%R5.1% we ask that you confirm all selected languages are accurate. \ +Currently, you've selected %PROJECT_LANGUAGE_COUNT% [Languages](%PROJECT_LANGUAGE_SETTINGS%). Selected languages should represent what players can expect to see on your server, and all players should be able to get the full experience out of your server even if they only understand one of the selected languages. diff --git a/packages/moderation/src/data/messages/checklist/messages/rules/prohibited-content-header.md b/packages/moderation/src/data/messages/checklist/messages/rules/prohibited-content-header.md index fc0eb4c90b..578ba2a87c 100644 --- a/packages/moderation/src/data/messages/checklist/messages/rules/prohibited-content-header.md +++ b/packages/moderation/src/data/messages/checklist/messages/rules/prohibited-content-header.md @@ -1,3 +1,3 @@ ## Prohibited Content -This project contains content which may violate section 1 of [Modrinth's Content Rules](https://modrinth.com/legal/rules): +This project contains content which may violate section 1 of [Modrinth's Content Rules](https://modrinth.com/legal/rules#prohibited-content): diff --git a/packages/moderation/src/data/messages/checklist/messages/rules/server-side-opt-in-header.md b/packages/moderation/src/data/messages/checklist/messages/rules/server-side-opt-in-header.md index d6c2dda8ca..f19b8b6e4b 100644 --- a/packages/moderation/src/data/messages/checklist/messages/rules/server-side-opt-in-header.md +++ b/packages/moderation/src/data/messages/checklist/messages/rules/server-side-opt-in-header.md @@ -1,3 +1,3 @@ ## Server-side opt-in required -Per section 3.3 of [Modrinth's Content Rules](https://modrinth.com/legal/rules), we ask that any features in this project that violate the following rules require a server-side opt-in: +%R3.3%, we ask that any features in this project that violate the following rules require a server-side opt-in: diff --git a/packages/moderation/src/data/messages/checklist/messages/rules/server-side-opt-out.md b/packages/moderation/src/data/messages/checklist/messages/rules/server-side-opt-out.md index 5be794c0c5..df1c52edb4 100644 --- a/packages/moderation/src/data/messages/checklist/messages/rules/server-side-opt-out.md +++ b/packages/moderation/src/data/messages/checklist/messages/rules/server-side-opt-out.md @@ -1,3 +1,3 @@ ## Server-side opt-out required -Per section 3.2 of [Modrinth's Content Rules](https://modrinth.com/legal/rules), we ask that your project implements a server-side opt-out. +%R3.3%, we ask that your project implements a server-side opt-out. diff --git a/packages/moderation/src/data/messages/checklist/messages/status-alerts/corrections-applied-approved.md b/packages/moderation/src/data/messages/checklist/messages/status-alerts/corrections-applied-approved.md index e278db95c5..424769f3e0 100644 --- a/packages/moderation/src/data/messages/checklist/messages/status-alerts/corrections-applied-approved.md +++ b/packages/moderation/src/data/messages/checklist/messages/status-alerts/corrections-applied-approved.md @@ -1,4 +1,4 @@ ## Corrections Applied -These have been corrected by our Moderation Team so your project can remain Approved, be sure to read and understand each issue listed below to ensure a smooth review for your next submission. +These have been corrected by our Moderation Team so your project can remain Approved, be sure to read and understand each issue listed below to ensure a smooth review for your next submission. \ If you have further questions, %SUPPORT% diff --git a/packages/moderation/src/data/messages/checklist/messages/status-alerts/corrections-applied.md b/packages/moderation/src/data/messages/checklist/messages/status-alerts/corrections-applied.md index 472e6b37cd..a1c17f862e 100644 --- a/packages/moderation/src/data/messages/checklist/messages/status-alerts/corrections-applied.md +++ b/packages/moderation/src/data/messages/checklist/messages/status-alerts/corrections-applied.md @@ -1,4 +1,4 @@ ## Corrections Applied -Your submission contained some issues that may have prevented your project from being published. +Your submission contained some issues that may have prevented your project from being published. \ These have been corrected by our Moderation Team so your project can be Approved, be sure to read and understand each issue listed below to ensure a smooth review for your next submission. diff --git a/packages/moderation/src/data/messages/checklist/messages/summary/formatting.md b/packages/moderation/src/data/messages/checklist/messages/summary/formatting.md index 945c2afa37..09115d783a 100644 --- a/packages/moderation/src/data/messages/checklist/messages/summary/formatting.md +++ b/packages/moderation/src/data/messages/checklist/messages/summary/formatting.md @@ -1,6 +1,6 @@ ## Invalid Summary Formatting -Per section 5.3 of %RULES%, your %PROJECT_SUMMARY_FLINK% can not include any extra formatting such as lists, or links. +%R5.3%, your %PROJECT_SUMMARY_FLINK% can not include any extra formatting such as lists, or links. Your project summary should provide a brief overview of your project that informs and entices users. diff --git a/packages/moderation/src/data/messages/checklist/messages/summary/insufficient.md b/packages/moderation/src/data/messages/checklist/messages/summary/insufficient.md index 0d65ce2632..bbd362ef99 100644 --- a/packages/moderation/src/data/messages/checklist/messages/summary/insufficient.md +++ b/packages/moderation/src/data/messages/checklist/messages/summary/insufficient.md @@ -1,5 +1,5 @@ ## Insufficient Summary -Per section 5.3 of %RULES%, your project %PROJECT_SUMMARY_FLINK% should provide a brief overview of your project that informs and entices users. +%R5.3%, your project %PROJECT_SUMMARY_FLINK% should provide a brief overview of your project that informs and entices users. This is the first thing most people will see about your %PROJECT_TYPE% other than the Logo, so it's important it be accurate, reasonably detailed, and exciting. diff --git a/packages/moderation/src/data/messages/checklist/messages/summary/non-english.md b/packages/moderation/src/data/messages/checklist/messages/summary/non-english.md index 4ae933462e..05f5c381b6 100644 --- a/packages/moderation/src/data/messages/checklist/messages/summary/non-english.md +++ b/packages/moderation/src/data/messages/checklist/messages/summary/non-english.md @@ -1,5 +1,5 @@ ## No English Summary -Per section 2.2 of %RULES%, a project's %PROJECT_SUMMARY_FLINK% and %PROJECT_DESCRIPTION_FLINK% must be in English, unless meant exclusively for non-English use, such as translations. +%R2.2%, a project's %PROJECT_SUMMARY_FLINK% and %PROJECT_DESCRIPTION_FLINK% must be in English, unless meant exclusively for non-English use, such as translations. You may include your non-English Summary but we ask that you also add an English translation. diff --git a/packages/moderation/src/data/messages/checklist/messages/summary/repeat-title.md b/packages/moderation/src/data/messages/checklist/messages/summary/repeat-title.md index 69a8ae4cc7..23d2063df3 100644 --- a/packages/moderation/src/data/messages/checklist/messages/summary/repeat-title.md +++ b/packages/moderation/src/data/messages/checklist/messages/summary/repeat-title.md @@ -1,6 +1,6 @@ ## Insufficient Summary -Per section 5.3 of %RULES%, your %PROJECT_SUMMARY_FLINK% can not be the same as your project's Title. +%R5.3%, your %PROJECT_SUMMARY_FLINK% can not be the same as your project's Title. Your project summary should provide a brief overview of your project that informs and entices users. diff --git a/packages/moderation/src/data/messages/checklist/messages/tags/inaccurate.md b/packages/moderation/src/data/messages/checklist/messages/tags/inaccurate.md index fb523e0655..ba419c4e66 100644 --- a/packages/moderation/src/data/messages/checklist/messages/tags/inaccurate.md +++ b/packages/moderation/src/data/messages/checklist/messages/tags/inaccurate.md @@ -1,3 +1,3 @@ ## Misuse of Tags -Per section 5.1 of %RULES%, it is important that the metadata of your projects is accurate. Including that selected tags honestly represent your project. +%R5.1%, it is important that the metadata of your projects is accurate. Including that selected tags honestly represent your project. diff --git a/packages/moderation/src/data/messages/checklist/messages/title-slug/title/minecraft-branding.md b/packages/moderation/src/data/messages/checklist/messages/title-slug/title/minecraft-branding.md index 6c8e7f988b..fe78918b4f 100644 --- a/packages/moderation/src/data/messages/checklist/messages/title-slug/title/minecraft-branding.md +++ b/packages/moderation/src/data/messages/checklist/messages/title-slug/title/minecraft-branding.md @@ -1,6 +1,6 @@ ## Minecraft Project Names -Projects must not use Minecraft's branding or include "Minecraft" as a significant part of the title. -Your project's current Name of `%PROJECT_TITLE%` may be confusingly similar to, or imply association with, the game Minecraft. We encourage you to change your project's [Name](%PROJECT_SETTINGS_LINK%) to avoid a potential violation of Minecraft's Usage Guidelines. -Abbreviations like "MC" or elaborate titles that do not make the name Minecraft a significant portion of the name are okay. +Projects must not use Minecraft's branding or include "Minecraft" as a significant part of the title. \ +Your project's current Name of `%PROJECT_TITLE%` may be confusingly similar to, or imply association with, the game Minecraft. We encourage you to change your project's [Name](%PROJECT_SETTINGS_LINK%) to avoid a potential violation of Minecraft's Usage Guidelines. \ +Abbreviations like "MC" or elaborate titles that do not make the name Minecraft a significant portion of the name are okay. \ When editing your project's Name, remember to update its [URL](%PROJECT_SETTINGS_LINK%) to match. diff --git a/packages/moderation/src/data/messages/checklist/messages/title-slug/title/similarities.md b/packages/moderation/src/data/messages/checklist/messages/title-slug/title/similarities.md index 280b5f0b9c..d9fcf094b8 100644 --- a/packages/moderation/src/data/messages/checklist/messages/title-slug/title/similarities.md +++ b/packages/moderation/src/data/messages/checklist/messages/title-slug/title/similarities.md @@ -1,5 +1,5 @@ ## Project Branding -Per section 1.8 of %RULES%, your project or its branding must not imply association or be easily confused with any other person or organization. -We ask that you change your project's [Name](%PROJECT_SETTINGS_LINK%) and other relevant branding to avoid causing confusion or implying association with existing projects or individuals. +%R1.8%, your project or its branding must not imply association or be easily confused with any other person or organization. \ +We ask that you change your project's [Name](%PROJECT_SETTINGS_LINK%) and other relevant branding to avoid causing confusion or implying association with existing projects or individuals. \ When editing your project's Name, remember to update its [URL](%PROJECT_SETTINGS_LINK%) to match. diff --git a/packages/moderation/src/data/messages/checklist/messages/title-slug/title/similarities/fork.md b/packages/moderation/src/data/messages/checklist/messages/title-slug/title/similarities/fork.md index 9318c8e75f..9064caf8f5 100644 --- a/packages/moderation/src/data/messages/checklist/messages/title-slug/title/similarities/fork.md +++ b/packages/moderation/src/data/messages/checklist/messages/title-slug/title/similarities/fork.md @@ -1,2 +1,2 @@ -You may reference the source work in the Description of your fork, however, you must do so in a way that is unlikely to cause confusion or imply association with or endorsement from the author of the source work. -Additionally, per section 4 of %RULES%, we ask that you ensure your project's Name and Branding abide by the license of the source work. +You may reference the source work in the Description of your fork, however, you must do so in a way that is unlikely to cause confusion or imply association with or endorsement from the author of the source work. \ +%R4%, we also ask that you ensure your project's Name and Branding abide by the license of the source work. diff --git a/packages/moderation/src/data/messages/checklist/messages/title-slug/title/useless-info.md b/packages/moderation/src/data/messages/checklist/messages/title-slug/title/useless-info.md index f23185bff5..c78beec0de 100644 --- a/packages/moderation/src/data/messages/checklist/messages/title-slug/title/useless-info.md +++ b/packages/moderation/src/data/messages/checklist/messages/title-slug/title/useless-info.md @@ -1,6 +1,6 @@ ## Misuse of Project Name -Per section 5.2 of %RULES%, your project's [Name](%PROJECT_SETTINGS_LINK%) should not include unnecessary information such as loaders, themes, tags, or versions. -Your project's current Name of `%PROJECT_TITLE%` appears to contain extra information. -We ask that you remove all additional information from the [Name](%PROJECT_SETTINGS_LINK%). Instead, consider including this in your project's Summary or Description, or as a part of its relevant metadata. +%R5.2%, your project's [Name](%PROJECT_SETTINGS_LINK%) should not include unnecessary information such as loaders, themes, tags, or versions. \ +Your project's current Name of `%PROJECT_TITLE%` appears to contain extra information. \ +We ask that you remove all additional information from the [Name](%PROJECT_SETTINGS_LINK%). Instead, consider including this in your project's Summary or Description, or as a part of its relevant metadata. \ When editing your project's Name, remember to update its [URL](%PROJECT_SETTINGS_LINK%) to match. diff --git a/packages/moderation/src/data/messages/checklist/messages/versions/alternate-versions/additional.md b/packages/moderation/src/data/messages/checklist/messages/versions/alternate-versions/additional.md index fdb9e9103d..d2cbbcbdee 100644 --- a/packages/moderation/src/data/messages/checklist/messages/versions/alternate-versions/additional.md +++ b/packages/moderation/src/data/messages/checklist/messages/versions/alternate-versions/additional.md @@ -1,5 +1,5 @@ ## Unsupported Project -Per section 5.7 of %RULES%, Modrinth does not support uploading multiple variations of your project as Additional files. -Having alternate versions of your content on the same project will hurt the functionality of the Modrinth App and other supported launchers as it would prevent users from updating your content, and may make it harder for your users to find the content they want. +%R5.7%, Modrinth does not support uploading multiple variations of your project as Additional files. \ +Having alternate versions of your content on the same project will hurt the functionality of the Modrinth App and other supported launchers as it would prevent users from updating your content, and may make it harder for your users to find the content they want. \ We ask that you upload each alternate version of your project as a new project, ensuring that all users will be able to access and easily find your content. diff --git a/packages/moderation/src/data/messages/checklist/messages/versions/alternate-versions/server-additional.md b/packages/moderation/src/data/messages/checklist/messages/versions/alternate-versions/server-additional.md index 51a9e2871e..40938be605 100644 --- a/packages/moderation/src/data/messages/checklist/messages/versions/alternate-versions/server-additional.md +++ b/packages/moderation/src/data/messages/checklist/messages/versions/alternate-versions/server-additional.md @@ -1,4 +1,4 @@ ## Incorrect Additional Files -Per section 5.7 of %RULES%, the additional files section should only be used for specific designated purposes such as a `Sources.jar`. +%R5.7%, the additional files section should only be used for specific designated purposes such as a `Sources.jar`. \ To ensure a smooth experience for you and your users, please upload each alternate version of your modpack as its own Modpack project, thank you. diff --git a/packages/moderation/src/data/messages/checklist/messages/versions/alternate-versions/zip.md b/packages/moderation/src/data/messages/checklist/messages/versions/alternate-versions/zip.md index 70fafd9316..c9ff20c6f9 100644 --- a/packages/moderation/src/data/messages/checklist/messages/versions/alternate-versions/zip.md +++ b/packages/moderation/src/data/messages/checklist/messages/versions/alternate-versions/zip.md @@ -1,5 +1,5 @@ ## Incorrect Additional Files -Per section 5.7 of %RULES%, the additional files section should only be used for specific designated purposes such as a `Sources.jar`. -Modrinth does not support the upload of modpacks in the `.zip` format, as this may cause issues for Modrinth users or distribute copyrighted content without the proper permissions. +%R5.7%, the additional files section should only be used for specific designated purposes such as a `Sources.jar`. \ +Modrinth does not support the upload of modpacks in the `.zip` format, as this may cause issues for Modrinth users or distribute copyrighted content without the proper permissions. \ If you would like to upload a server-specific version of your modpack, consider creating a separate Modpack project. diff --git a/packages/moderation/src/data/messages/checklist/messages/versions/incorrect-additional-files.md b/packages/moderation/src/data/messages/checklist/messages/versions/incorrect-additional-files.md index 6756d8d200..ce1dd9bc28 100644 --- a/packages/moderation/src/data/messages/checklist/messages/versions/incorrect-additional-files.md +++ b/packages/moderation/src/data/messages/checklist/messages/versions/incorrect-additional-files.md @@ -1,5 +1,7 @@ ## Incorrect Use of Additional Files -It looks like you've uploaded multiple primary files to one Version as Additional Files. Per section 5.7 of %RULES%, each Version of your project must include only one primary file that corresponds to its respective Minecraft and loader versions. -This allows users to easily find and download the content they need for their game profile with ease. The Additional Files feature can be used for things like a `Sources.jar`. +%R5.7%, each Version of your project must include only one primary file that corresponds to its respective Minecraft and loader versions. + +It looks like you've uploaded multiple primary files to one Version as Additional Files. \ +Ensuring your project's upload scheme is correct allows users to easily find and download the content they need for their game profile with ease. The Additional Files feature can be used for things like a `Sources.jar`. \ Please upload each version of your project separately, thank you. diff --git a/packages/moderation/src/data/messages/checklist/messages/versions/incorrect-loader.md b/packages/moderation/src/data/messages/checklist/messages/versions/incorrect-loader.md index 17c12c713c..78fc2f57df 100644 --- a/packages/moderation/src/data/messages/checklist/messages/versions/incorrect-loader.md +++ b/packages/moderation/src/data/messages/checklist/messages/versions/incorrect-loader.md @@ -1,4 +1,4 @@ -## Incorrect Loader Labels +## Incorrect Loaders -Per section 5.7 of %RULES%, the loader labels on each of your %PROJECT_VERSIONS_FLINK% must accurately reflect what the uploaded files support. +%R5.7%, the loader labels on each of your %PROJECT_VERSIONS_FLINK% must accurately reflect what the uploaded files support. \ Currently, some of your versions appear to use the following incorrect loader label(s). Please remove these loaders from any affected versions before resubmitting your project: diff --git a/packages/moderation/src/data/nags/core.ts b/packages/moderation/src/data/nags/core.ts index 2695aeda99..165a35c819 100644 --- a/packages/moderation/src/data/nags/core.ts +++ b/packages/moderation/src/data/nags/core.ts @@ -281,4 +281,33 @@ export const coreNags: Nag[] = [ context.currentRoute !== 'type-project-settings-permissions', }, }, + { + id: 'check-disclosures', + title: defineMessage({ + id: 'nags.check-disclosures.title', + defaultMessage: 'Check content disclosures', + }), + description: (context: NagContext) => { + const { formatMessage } = useVIntl() + return formatMessage( + defineMessage({ + id: 'nags.check-disclosures.description', + defaultMessage: + 'Make sure users are aware of any important details by filling in content disclosures that apply to your {type}.', + }), + { type: formatProjectTypeSentence(formatMessage, context.project.project_type) }, + ) + }, + status: 'suggestion', + shouldShow: () => true, + link: { + path: 'settings/disclosures', + title: defineMessage({ + id: 'nags.settings.disclosures.title', + defaultMessage: 'Visit disclosure settings', + }), + shouldShow: (context: NagContext) => + context.currentRoute !== 'type-project-settings-disclosures', + }, + }, ] diff --git a/packages/moderation/src/data/stages/disclosures.tsx b/packages/moderation/src/data/stages/disclosures.tsx new file mode 100644 index 0000000000..47a775ca1f --- /dev/null +++ b/packages/moderation/src/data/stages/disclosures.tsx @@ -0,0 +1,58 @@ +import { TriangleAlertIcon } from '@modrinth/assets' + +import { group, option, stage, toggle } from '../../types/node' + +export default function () { + 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') + .message('missing-disclosures/missing-disclosures-header') + .children( + group() + .title('Which content disclosures are missing?') + .children( + toggle('ai', 'AI Usage') + .suggestedStatus('flagged') + .message() + .children( + group() + .title('What kind of AI content is present?') + .children( + 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('ads', 'Advertisements').suggestedStatus('flagged').message(), + + toggle('paid-features', 'Paid Features').suggestedStatus('flagged').message(), + + toggle('telemetry', 'Telemetry').suggestedStatus('rejected').message(), + + toggle('derivative-content', 'Derivative Content') + .suggestedStatus('rejected') + .message(), + + toggle('photosensitivity', 'Photosensitivity') + .suggestedStatus('rejected') + .message(), + + toggle('system-interactions', 'System Interactions') + .suggestedStatus('rejected') + .message(), + + toggle('archive', 'Archive').message(), + ), + ) + .collect(undefined, 'missing-disclosures/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/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.')), ), ) } 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/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 } diff --git a/packages/moderation/src/utils.ts b/packages/moderation/src/utils.ts index 3df242bf55..d73cf8deac 100644 --- a/packages/moderation/src/utils.ts +++ b/packages/moderation/src/utils.ts @@ -115,6 +115,65 @@ export function flattenStaticVariables(): Record { const vars: Record = {} vars[`RULES`] = `[Modrinth's Content Rules](https://modrinth.com/legal/rules)` + vars[`R1`] = + `Per section 1 of [Modrinth's Content Rules](https://modrinth.com/legal/rules#prohibited-content)` + const rule1subs = 12 + for (let n = 1; n <= rule1subs; n++) { + vars[`R1.${n}`] = + `Per section 1.${n} of [Modrinth's Content Rules](https://modrinth.com/legal/rules#prohibited-content)` + } + vars[`R2`] = + `Per section 2 of [Modrinth's Content Rules](https://modrinth.com/legal/rules#clear-and-honest-function)` + vars[`R2.1`] = + `Per section 2.1 of [Modrinth's Content Rules](https://modrinth.com/legal/rules#general-expectations)` + const rule2sub1subs = 3 + for (let n = 1; n <= rule2sub1subs; n++) { + const l = String.fromCharCode(96 + n) + vars[`R2.1${l}`] = + `Per section 2.1${l} of [Modrinth's Content Rules](https://modrinth.com/legal/rules#general-expectations)` + } + vars[`R2.2`] = + `Per section 2.2 of [Modrinth's Content Rules](https://modrinth.com/legal/rules#accessibility)` + vars[`R3`] = + `Per section 3 of [Modrinth's Content Rules](https://modrinth.com/legal/rules#cheats-and-hacks)` + const rule3subs = 3 + for (let n = 1; n <= rule3subs; n++) { + vars[`R3.${n}`] = + `Per section 3.${n} of [Modrinth's Content Rules](https://modrinth.com/legal/rules#cheats-and-hacks)` + } + const rule3sub3subs = 6 + for (let n = 1; n <= rule3sub3subs; n++) { + const l = String.fromCharCode(96 + n) + vars[`R3.3${l}`] = + `Per section 3.3${l} of [Modrinth's Content Rules](https://modrinth.com/legal/rules#cheats-and-hacks)` + } + vars[`R4`] = + `Per section 4 of [Modrinth's Content Rules](https://modrinth.com/legal/rules#copyright-and-legality-of-content)` + vars[`R5`] = + `Per section 5 of [Modrinth's Content Rules](https://modrinth.com/legal/rules#miscellaneous)` + const rule5subs = 8 + for (let n = 1; n <= rule5subs; n++) { + vars[`R5.${n}`] = + `Per section 5.${n} of [Modrinth's Content Rules](https://modrinth.com/legal/rules#miscellaneous)` + } + vars[`R6`] = + `Per section 6 of [Modrinth's Content Rules](https://modrinth.com/legal/rules#generative-ai)` + vars[`R6.1`] = + `Per section 6.1 of [Modrinth's Content Rules](https://modrinth.com/legal/rules#disclosure-of-ai-generated-content)` + const rule6sub1subs = 2 + for (let n = 1; n <= rule6sub1subs; n++) { + const l = String.fromCharCode(96 + n) + vars[`R6.1${l}`] = + `Per section 6.1${l} of [Modrinth's Content Rules](https://modrinth.com/legal/rules#disclosure-of-ai-generated-content)` + } + vars[`R6.2`] = + `Per section 6.2 of [Modrinth's Content Rules](https://modrinth.com/legal/rules#prohibited-usage-of-ai)` + const rule6sub2subs = 4 + for (let n = 1; n <= rule6sub2subs; n++) { + const l = String.fromCharCode(96 + n) + vars[`R6.2${l}`] = + `Per section 6.2${l} of [Modrinth's Content Rules](https://modrinth.com/legal/rules#prohibited-usage-of-ai)` + } vars[`TOS`] = `[Terms of Use](https://modrinth.com/legal/terms)` vars[`COPYRIGHT_POLICY`] = `[Copyright Policy](https://modrinth.com/legal/copyright)` vars[`SUPPORT`] = @@ -246,6 +305,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`] = + `[Content Disclosures](https://modrinth.com/project/${project.id}/settings/disclosures)` return vars } diff --git a/packages/ui/src/components/base/FloatingActionBar.vue b/packages/ui/src/components/base/FloatingActionBar.vue index 6b69515363..3f50e745bc 100644 --- a/packages/ui/src/components/base/FloatingActionBar.vue +++ b/packages/ui/src/components/base/FloatingActionBar.vue @@ -225,7 +225,7 @@ defineOptions({ 'bar-compact': compact, 'floating-action-bar-attention': attentionRequested, }, - inline ? 'w-full' : 'mx-auto md:max-w-[60vw]', + inline ? 'w-full' : 'mx-auto md:max-w-[min(calc(100vw-120px),1050px)]', ]" @animationend="attentionRequested = false" > diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 17e6e41f9e..c610afec87 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -311,6 +311,9 @@ importers: '@vueuse/core': specifier: ^11.1.0 version: 11.3.0(vue@3.5.27(typescript@5.9.3)) + '@zip.js/zip.js': + specifier: ^2.8.34 + version: 2.8.34 ace-builds: specifier: ^1.36.2 version: 1.43.6 @@ -5240,6 +5243,10 @@ packages: '@yr/monotone-cubic-spline@1.0.3': resolution: {integrity: sha512-FQXkOta0XBSUPHndIKON2Y9JeQz5ZeMqLYZVVK93FliNBFm7LNMIZmY6FrMEB9XPcDbE2bekMbZD6kzDkxwYjA==} + '@zip.js/zip.js@2.8.34': + resolution: {integrity: sha512-+6a3lyqq69rpseLbvDPiVIWsZ/HdTGAAD6afFtug6ECPDGttb2dHnPC6cJgdPofYkzL9OvXizegq+DQVfL2rnA==} + engines: {bun: '>=0.7.0', deno: '>=1.0.0', node: '>=18.0.0'} + abbrev@2.0.0: resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -14940,6 +14947,8 @@ snapshots: '@yr/monotone-cubic-spline@1.0.3': {} + '@zip.js/zip.js@2.8.34': {} + abbrev@2.0.0: {} abbrev@3.0.1: {}