mirror of
https://github.com/modrinth/code.git
synced 2026-08-29 02:54:51 +00:00
Compare commits
5
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cdb9ac5663 | ||
|
|
5eced2a9c2 | ||
|
|
e79d925047 | ||
|
|
3ed7ed1bf9 | ||
|
|
1be5a0a355 |
@@ -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
|
||||
|
||||
@@ -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`
|
||||
|
||||
@@ -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',
|
||||
|
||||
+67
@@ -0,0 +1,67 @@
|
||||
<script setup lang="ts">
|
||||
import { BrainCircuitIcon } from '@modrinth/assets'
|
||||
import {
|
||||
commonMessages,
|
||||
defineMessages,
|
||||
SettingsFormGroup,
|
||||
StyledInput,
|
||||
useVIntl,
|
||||
} from '@modrinth/ui'
|
||||
|
||||
import DisclosureToggleCard from './DisclosureToggleCard.vue'
|
||||
import type { DisclosureCardMetaProps, DisclosureLockStatus, NoteDisclosure } from './types'
|
||||
|
||||
const model = defineModel<NoteDisclosure>({ required: true })
|
||||
|
||||
const props = defineProps<DisclosureCardMetaProps>()
|
||||
|
||||
const emit = defineEmits<{
|
||||
setLockStatus: [status: DisclosureLockStatus]
|
||||
}>()
|
||||
|
||||
const { formatMessage } = useVIntl()
|
||||
|
||||
const messages = defineMessages({
|
||||
title: {
|
||||
id: 'project.settings.disclosures.ai-functionality.title',
|
||||
defaultMessage: 'Contains generative AI functionality',
|
||||
},
|
||||
description: {
|
||||
id: 'project.settings.disclosures.ai-functionality.description',
|
||||
defaultMessage: 'Placeholder',
|
||||
},
|
||||
notePlaceholder: {
|
||||
id: 'project.settings.disclosures.ai-functionality.note-placeholder',
|
||||
defaultMessage: 'e.g. The in-game assistant uses generative AI to generate dialogue.',
|
||||
},
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<DisclosureToggleCard
|
||||
v-bind="props"
|
||||
v-model="model.enabled"
|
||||
:icon="BrainCircuitIcon"
|
||||
:title="formatMessage(messages.title)"
|
||||
:description="formatMessage(messages.description)"
|
||||
@set-lock-status="emit('setLockStatus', $event)"
|
||||
>
|
||||
<template #expanded>
|
||||
<SettingsFormGroup
|
||||
:title="formatMessage(commonMessages.explanationLabel)"
|
||||
title-for="ai-functionality-disclosure-note"
|
||||
optional
|
||||
>
|
||||
<StyledInput
|
||||
id="ai-functionality-disclosure-note"
|
||||
v-model="model.note"
|
||||
multiline
|
||||
:rows="3"
|
||||
class="max-w-[40rem]"
|
||||
:disabled="disabled"
|
||||
:placeholder="formatMessage(messages.notePlaceholder)"
|
||||
/>
|
||||
</SettingsFormGroup>
|
||||
</template>
|
||||
</DisclosureToggleCard>
|
||||
</template>
|
||||
@@ -22,7 +22,7 @@ function findDisclosure<T extends DisclosureType>(
|
||||
return disclosures.find((disclosure): disclosure is DisclosureOf<T> => 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'))
|
||||
}
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -44,6 +44,7 @@ export type DerivativeDisclosure = {
|
||||
|
||||
export type DisclosureFormState = {
|
||||
ai: AiDisclosure
|
||||
aiFunctionality: NoteDisclosure
|
||||
advertising: NoteDisclosure
|
||||
paidFeatures: PaidFeaturesDisclosure
|
||||
telemetry: TelemetryDisclosure
|
||||
|
||||
@@ -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 <rules>Modrinth's Content Rules</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."
|
||||
|
||||
@@ -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)
|
||||
"
|
||||
/>
|
||||
<AiFunctionalityDisclosureCard
|
||||
v-if="isDisclosureVisible('ai_functionality')"
|
||||
v-model="current.aiFunctionality"
|
||||
v-bind="disclosureUpdateProps('ai_functionality')"
|
||||
@set-lock-status="
|
||||
(status: DisclosureLockStatus) => setDisclosureLockStatus('ai_functionality', status)
|
||||
"
|
||||
/>
|
||||
<AdvertisingDisclosureCard
|
||||
v-if="isDisclosureVisible('advertisements')"
|
||||
v-model="current.advertising"
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
INSERT INTO project_disclosures (project_id, type, metadata, updated_at, updated_by, set_by_moderator, deleted_at, lock_status)
|
||||
SELECT
|
||||
project_id,
|
||||
'ai_functionality',
|
||||
'{"note":null}'::jsonb,
|
||||
now(),
|
||||
0,
|
||||
set_by_moderator,
|
||||
deleted_at,
|
||||
lock_status
|
||||
FROM project_disclosures
|
||||
WHERE type = 'ai_content'
|
||||
AND metadata -> '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';
|
||||
@@ -18,6 +18,9 @@ pub enum ProjectDisclosure {
|
||||
note: Option<String>,
|
||||
uses: BTreeSet<AiUsages>,
|
||||
},
|
||||
AiFunctionality {
|
||||
note: Option<String>,
|
||||
},
|
||||
Advertisements {
|
||||
note: Option<String>,
|
||||
},
|
||||
@@ -161,7 +164,6 @@ pub enum AiUsages {
|
||||
Code,
|
||||
Assets,
|
||||
Text,
|
||||
Functionality,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, ToSchema, IntoStaticStr)]
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
<!-- @license lucide-static v0.562.0 - ISC -->
|
||||
<svg
|
||||
class="lucide lucide-brain-circuit"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z" />
|
||||
<path d="M9 13a4.5 4.5 0 0 0 3-4" />
|
||||
<path d="M6.003 5.125A3 3 0 0 0 6.401 6.5" />
|
||||
<path d="M3.477 10.896a4 4 0 0 1 .585-.396" />
|
||||
<path d="M6 18a4 4 0 0 1-1.967-.516" />
|
||||
<path d="M12 13h4" />
|
||||
<path d="M12 18h6a2 2 0 0 1 2 2v1" />
|
||||
<path d="M12 8h8" />
|
||||
<path d="M16 8V5a2 2 0 0 1 2-2" />
|
||||
<circle cx="16" cy="13" r=".5" />
|
||||
<circle cx="18" cy="3" r=".5" />
|
||||
<circle cx="20" cy="21" r=".5" />
|
||||
<circle cx="20" cy="8" r=".5" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 837 B |
@@ -38,6 +38,17 @@
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="aiFunctionalityDisclosure">
|
||||
<BrainCircuitIcon aria-hidden="true" />
|
||||
<div class="flex flex-col gap-1">
|
||||
<span>
|
||||
{{ capitalizeString(formatMessage(messages.aiFunctionalityTitle)) }}
|
||||
</span>
|
||||
<span v-if="aiFunctionalityDisclosure.note" class="text-sm text-secondary">
|
||||
<BasicMarkdownText :text="aiFunctionalityDisclosure.note" :target="linkTarget" />
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="advertisingDisclosure">
|
||||
<MegaphoneIcon aria-hidden="true" />
|
||||
<div class="flex flex-col gap-1">
|
||||
@@ -226,6 +237,7 @@
|
||||
import type { Labrinth } from '@modrinth/api-client'
|
||||
import {
|
||||
BookTextIcon,
|
||||
BrainCircuitIcon,
|
||||
CalendarIcon,
|
||||
CircleDollarSignIcon,
|
||||
CircuitBoardIcon,
|
||||
@@ -263,7 +275,7 @@ const formatDateTime = useFormatDateTime({
|
||||
dateStyle: 'long',
|
||||
})
|
||||
|
||||
const AI_USE_ORDER: Labrinth.Projects.v3.AiUsage[] = ['code', 'assets', 'text', 'functionality']
|
||||
const AI_USE_ORDER: Labrinth.Projects.v3.AiUsage[] = ['code', 'assets', 'text']
|
||||
|
||||
const props = defineProps<{
|
||||
project: Labrinth.Projects.v2.Project
|
||||
@@ -304,6 +316,10 @@ const messages = defineMessages({
|
||||
id: 'project.disclosure.ai-generated-content.title',
|
||||
defaultMessage: 'Contains AI-generated {types}',
|
||||
},
|
||||
aiFunctionalityTitle: {
|
||||
id: 'project.disclosure.ai-functionality.title',
|
||||
defaultMessage: 'Generative AI functionality',
|
||||
},
|
||||
derivativeWork: {
|
||||
id: 'project.disclosure.derivative-work.title',
|
||||
defaultMessage: 'This is a derivative work of:',
|
||||
@@ -346,6 +362,7 @@ function findDisclosure<T extends Labrinth.Projects.v3.ProjectDisclosureType>(ty
|
||||
}
|
||||
|
||||
const aiDisclosure = computed(() => findDisclosure('ai_content'))
|
||||
const aiFunctionalityDisclosure = computed(() => findDisclosure('ai_functionality'))
|
||||
const advertisingDisclosure = computed(() => findDisclosure('advertisements'))
|
||||
const paidFeaturesDisclosure = computed(() => findDisclosure('paid_features'))
|
||||
const telemetryDisclosure = computed(() => findDisclosure('telemetry'))
|
||||
@@ -388,10 +405,6 @@ const aiUseLabels = {
|
||||
id: 'project.disclosure.ai-generated-content.use.text',
|
||||
defaultMessage: 'text',
|
||||
}),
|
||||
functionality: defineMessage({
|
||||
id: 'project.disclosure.ai-generated-content.use.functionality',
|
||||
defaultMessage: 'functionality',
|
||||
}),
|
||||
content: defineMessage({
|
||||
id: 'project.disclosure.ai-generated-content.use.content',
|
||||
defaultMessage: 'content',
|
||||
|
||||
@@ -3458,9 +3458,6 @@
|
||||
"project.disclosure.ai-generated-content.use.content": {
|
||||
"defaultMessage": "e Inhalte"
|
||||
},
|
||||
"project.disclosure.ai-generated-content.use.functionality": {
|
||||
"defaultMessage": "e Funktionen"
|
||||
},
|
||||
"project.disclosure.ai-generated-content.use.text": {
|
||||
"defaultMessage": "en Text"
|
||||
},
|
||||
@@ -3854,9 +3851,6 @@
|
||||
"project.settings.disclosures.ai.types-code": {
|
||||
"defaultMessage": "Code"
|
||||
},
|
||||
"project.settings.disclosures.ai.types-functionality": {
|
||||
"defaultMessage": "Funktionen"
|
||||
},
|
||||
"project.settings.disclosures.ai.types-text": {
|
||||
"defaultMessage": "Text"
|
||||
},
|
||||
|
||||
@@ -3458,9 +3458,6 @@
|
||||
"project.disclosure.ai-generated-content.use.content": {
|
||||
"defaultMessage": "e Inhalte"
|
||||
},
|
||||
"project.disclosure.ai-generated-content.use.functionality": {
|
||||
"defaultMessage": "e Funktionen"
|
||||
},
|
||||
"project.disclosure.ai-generated-content.use.text": {
|
||||
"defaultMessage": "en Text"
|
||||
},
|
||||
@@ -3854,9 +3851,6 @@
|
||||
"project.settings.disclosures.ai.types-code": {
|
||||
"defaultMessage": "Code"
|
||||
},
|
||||
"project.settings.disclosures.ai.types-functionality": {
|
||||
"defaultMessage": "Funktionen"
|
||||
},
|
||||
"project.settings.disclosures.ai.types-text": {
|
||||
"defaultMessage": "Text"
|
||||
},
|
||||
|
||||
@@ -3446,6 +3446,9 @@
|
||||
"project.disclosure.advertising.title": {
|
||||
"defaultMessage": "Contains advertising"
|
||||
},
|
||||
"project.disclosure.ai-functionality.title": {
|
||||
"defaultMessage": "Generative AI functionality"
|
||||
},
|
||||
"project.disclosure.ai-generated-content.title": {
|
||||
"defaultMessage": "Contains AI-generated {types}"
|
||||
},
|
||||
@@ -3458,9 +3461,6 @@
|
||||
"project.disclosure.ai-generated-content.use.content": {
|
||||
"defaultMessage": "content"
|
||||
},
|
||||
"project.disclosure.ai-generated-content.use.functionality": {
|
||||
"defaultMessage": "functionality"
|
||||
},
|
||||
"project.disclosure.ai-generated-content.use.text": {
|
||||
"defaultMessage": "text"
|
||||
},
|
||||
@@ -3854,9 +3854,6 @@
|
||||
"project.settings.disclosures.ai.types-code": {
|
||||
"defaultMessage": "Code"
|
||||
},
|
||||
"project.settings.disclosures.ai.types-functionality": {
|
||||
"defaultMessage": "Functionality"
|
||||
},
|
||||
"project.settings.disclosures.ai.types-text": {
|
||||
"defaultMessage": "Text"
|
||||
},
|
||||
@@ -4199,6 +4196,9 @@
|
||||
"search.filter_type.advanced.disclosure.ai_content.usage": {
|
||||
"defaultMessage": "AI {usage}"
|
||||
},
|
||||
"search.filter_type.advanced.disclosure.ai_functionality": {
|
||||
"defaultMessage": "Generative AI functionality"
|
||||
},
|
||||
"search.filter_type.advanced.disclosure.archived": {
|
||||
"defaultMessage": "Archived"
|
||||
},
|
||||
|
||||
@@ -3458,9 +3458,6 @@
|
||||
"project.disclosure.ai-generated-content.use.content": {
|
||||
"defaultMessage": "contenido"
|
||||
},
|
||||
"project.disclosure.ai-generated-content.use.functionality": {
|
||||
"defaultMessage": "funciones"
|
||||
},
|
||||
"project.disclosure.ai-generated-content.use.text": {
|
||||
"defaultMessage": "texto"
|
||||
},
|
||||
@@ -3854,9 +3851,6 @@
|
||||
"project.settings.disclosures.ai.types-code": {
|
||||
"defaultMessage": "Código"
|
||||
},
|
||||
"project.settings.disclosures.ai.types-functionality": {
|
||||
"defaultMessage": "Funciones"
|
||||
},
|
||||
"project.settings.disclosures.ai.types-text": {
|
||||
"defaultMessage": "Texto"
|
||||
},
|
||||
|
||||
@@ -3407,9 +3407,6 @@
|
||||
"project.disclosure.ai-generated-content.use.content": {
|
||||
"defaultMessage": "contenido"
|
||||
},
|
||||
"project.disclosure.ai-generated-content.use.functionality": {
|
||||
"defaultMessage": "funcionalidad"
|
||||
},
|
||||
"project.disclosure.ai-generated-content.use.text": {
|
||||
"defaultMessage": "texto"
|
||||
},
|
||||
@@ -3791,9 +3788,6 @@
|
||||
"project.settings.disclosures.ai.types-code": {
|
||||
"defaultMessage": "Código"
|
||||
},
|
||||
"project.settings.disclosures.ai.types-functionality": {
|
||||
"defaultMessage": "Funcionalidad"
|
||||
},
|
||||
"project.settings.disclosures.ai.types-text": {
|
||||
"defaultMessage": "Texto"
|
||||
},
|
||||
|
||||
@@ -2996,9 +2996,6 @@
|
||||
"project.disclosure.ai-generated-content.use.content": {
|
||||
"defaultMessage": "tartalmat"
|
||||
},
|
||||
"project.disclosure.ai-generated-content.use.functionality": {
|
||||
"defaultMessage": "funkciókat"
|
||||
},
|
||||
"project.disclosure.ai-generated-content.use.text": {
|
||||
"defaultMessage": "szöveget"
|
||||
},
|
||||
@@ -3356,9 +3353,6 @@
|
||||
"project.settings.disclosures.ai.types-code": {
|
||||
"defaultMessage": "Kód"
|
||||
},
|
||||
"project.settings.disclosures.ai.types-functionality": {
|
||||
"defaultMessage": "Funkciók"
|
||||
},
|
||||
"project.settings.disclosures.ai.types-text": {
|
||||
"defaultMessage": "Szöveg"
|
||||
},
|
||||
|
||||
@@ -3401,9 +3401,6 @@
|
||||
"project.disclosure.ai-generated-content.use.content": {
|
||||
"defaultMessage": "contenuti generati"
|
||||
},
|
||||
"project.disclosure.ai-generated-content.use.functionality": {
|
||||
"defaultMessage": "funzionalità generate"
|
||||
},
|
||||
"project.disclosure.ai-generated-content.use.text": {
|
||||
"defaultMessage": "testo generato"
|
||||
},
|
||||
@@ -3797,9 +3794,6 @@
|
||||
"project.settings.disclosures.ai.types-code": {
|
||||
"defaultMessage": "Codice"
|
||||
},
|
||||
"project.settings.disclosures.ai.types-functionality": {
|
||||
"defaultMessage": "Funzionalità"
|
||||
},
|
||||
"project.settings.disclosures.ai.types-text": {
|
||||
"defaultMessage": "Testo"
|
||||
},
|
||||
|
||||
@@ -3284,9 +3284,6 @@
|
||||
"project.disclosure.ai-generated-content.use.content": {
|
||||
"defaultMessage": "콘텐츠"
|
||||
},
|
||||
"project.disclosure.ai-generated-content.use.functionality": {
|
||||
"defaultMessage": "기능"
|
||||
},
|
||||
"project.disclosure.ai-generated-content.use.text": {
|
||||
"defaultMessage": "텍스트"
|
||||
},
|
||||
@@ -3668,9 +3665,6 @@
|
||||
"project.settings.disclosures.ai.types-code": {
|
||||
"defaultMessage": "코드"
|
||||
},
|
||||
"project.settings.disclosures.ai.types-functionality": {
|
||||
"defaultMessage": "기능"
|
||||
},
|
||||
"project.settings.disclosures.ai.types-text": {
|
||||
"defaultMessage": "텍스트"
|
||||
},
|
||||
|
||||
@@ -3398,9 +3398,6 @@
|
||||
"project.disclosure.ai-generated-content.use.content": {
|
||||
"defaultMessage": "zawartość wygenerowaną"
|
||||
},
|
||||
"project.disclosure.ai-generated-content.use.functionality": {
|
||||
"defaultMessage": "funkcjonalność wygenerowaną"
|
||||
},
|
||||
"project.disclosure.ai-generated-content.use.text": {
|
||||
"defaultMessage": "tekst wygenerowany"
|
||||
},
|
||||
@@ -3782,9 +3779,6 @@
|
||||
"project.settings.disclosures.ai.types-code": {
|
||||
"defaultMessage": "Kod"
|
||||
},
|
||||
"project.settings.disclosures.ai.types-functionality": {
|
||||
"defaultMessage": "Funkcjonalność"
|
||||
},
|
||||
"project.settings.disclosures.ai.types-text": {
|
||||
"defaultMessage": "Tekst"
|
||||
},
|
||||
|
||||
@@ -3344,9 +3344,6 @@
|
||||
"project.disclosure.ai-generated-content.use.content": {
|
||||
"defaultMessage": "conteúdo"
|
||||
},
|
||||
"project.disclosure.ai-generated-content.use.functionality": {
|
||||
"defaultMessage": "recurso"
|
||||
},
|
||||
"project.disclosure.ai-generated-content.use.text": {
|
||||
"defaultMessage": "texto"
|
||||
},
|
||||
@@ -3740,9 +3737,6 @@
|
||||
"project.settings.disclosures.ai.types-code": {
|
||||
"defaultMessage": "Código"
|
||||
},
|
||||
"project.settings.disclosures.ai.types-functionality": {
|
||||
"defaultMessage": "Recursos"
|
||||
},
|
||||
"project.settings.disclosures.ai.types-text": {
|
||||
"defaultMessage": "Texto"
|
||||
},
|
||||
@@ -6429,4 +6423,3 @@
|
||||
"defaultMessage": "Tipo"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3371,9 +3371,6 @@
|
||||
"project.disclosure.ai-generated-content.use.content": {
|
||||
"defaultMessage": "контент"
|
||||
},
|
||||
"project.disclosure.ai-generated-content.use.functionality": {
|
||||
"defaultMessage": "функциональность"
|
||||
},
|
||||
"project.disclosure.ai-generated-content.use.text": {
|
||||
"defaultMessage": "текст"
|
||||
},
|
||||
@@ -3764,9 +3761,6 @@
|
||||
"project.settings.disclosures.ai.types-code": {
|
||||
"defaultMessage": "Код"
|
||||
},
|
||||
"project.settings.disclosures.ai.types-functionality": {
|
||||
"defaultMessage": "Функциональность"
|
||||
},
|
||||
"project.settings.disclosures.ai.types-text": {
|
||||
"defaultMessage": "Текст"
|
||||
},
|
||||
|
||||
@@ -3143,9 +3143,6 @@
|
||||
"project.disclosure.ai-generated-content.use.content": {
|
||||
"defaultMessage": "innehåll"
|
||||
},
|
||||
"project.disclosure.ai-generated-content.use.functionality": {
|
||||
"defaultMessage": "funktionalitet"
|
||||
},
|
||||
"project.disclosure.ai-generated-content.use.text": {
|
||||
"defaultMessage": "text"
|
||||
},
|
||||
@@ -3533,9 +3530,6 @@
|
||||
"project.settings.disclosures.ai.types-code": {
|
||||
"defaultMessage": "Kod"
|
||||
},
|
||||
"project.settings.disclosures.ai.types-functionality": {
|
||||
"defaultMessage": "Funktion"
|
||||
},
|
||||
"project.settings.disclosures.ai.types-text": {
|
||||
"defaultMessage": "Text"
|
||||
},
|
||||
|
||||
@@ -3335,9 +3335,6 @@
|
||||
"project.disclosure.ai-generated-content.use.content": {
|
||||
"defaultMessage": "içerik"
|
||||
},
|
||||
"project.disclosure.ai-generated-content.use.functionality": {
|
||||
"defaultMessage": "işlevsellik"
|
||||
},
|
||||
"project.disclosure.ai-generated-content.use.text": {
|
||||
"defaultMessage": "metin"
|
||||
},
|
||||
@@ -3707,9 +3704,6 @@
|
||||
"project.settings.disclosures.ai.types-code": {
|
||||
"defaultMessage": "Kod"
|
||||
},
|
||||
"project.settings.disclosures.ai.types-functionality": {
|
||||
"defaultMessage": "İşlevsellik"
|
||||
},
|
||||
"project.settings.disclosures.ai.types-text": {
|
||||
"defaultMessage": "Metin"
|
||||
},
|
||||
|
||||
@@ -3305,9 +3305,6 @@
|
||||
"project.disclosure.ai-generated-content.use.content": {
|
||||
"defaultMessage": "вміст"
|
||||
},
|
||||
"project.disclosure.ai-generated-content.use.functionality": {
|
||||
"defaultMessage": "функціонал"
|
||||
},
|
||||
"project.disclosure.ai-generated-content.use.text": {
|
||||
"defaultMessage": "текст"
|
||||
},
|
||||
@@ -3701,9 +3698,6 @@
|
||||
"project.settings.disclosures.ai.types-code": {
|
||||
"defaultMessage": "Код"
|
||||
},
|
||||
"project.settings.disclosures.ai.types-functionality": {
|
||||
"defaultMessage": "Функціонал"
|
||||
},
|
||||
"project.settings.disclosures.ai.types-text": {
|
||||
"defaultMessage": "Текст"
|
||||
},
|
||||
|
||||
@@ -3458,9 +3458,6 @@
|
||||
"project.disclosure.ai-generated-content.use.content": {
|
||||
"defaultMessage": "内容"
|
||||
},
|
||||
"project.disclosure.ai-generated-content.use.functionality": {
|
||||
"defaultMessage": "功能"
|
||||
},
|
||||
"project.disclosure.ai-generated-content.use.text": {
|
||||
"defaultMessage": "文本"
|
||||
},
|
||||
@@ -3854,9 +3851,6 @@
|
||||
"project.settings.disclosures.ai.types-code": {
|
||||
"defaultMessage": "代码"
|
||||
},
|
||||
"project.settings.disclosures.ai.types-functionality": {
|
||||
"defaultMessage": "功能"
|
||||
},
|
||||
"project.settings.disclosures.ai.types-text": {
|
||||
"defaultMessage": "文本(如翻译)"
|
||||
},
|
||||
|
||||
@@ -3458,9 +3458,6 @@
|
||||
"project.disclosure.ai-generated-content.use.content": {
|
||||
"defaultMessage": "內容"
|
||||
},
|
||||
"project.disclosure.ai-generated-content.use.functionality": {
|
||||
"defaultMessage": "功能"
|
||||
},
|
||||
"project.disclosure.ai-generated-content.use.text": {
|
||||
"defaultMessage": "文字"
|
||||
},
|
||||
@@ -3854,9 +3851,6 @@
|
||||
"project.settings.disclosures.ai.types-code": {
|
||||
"defaultMessage": "程式碼"
|
||||
},
|
||||
"project.settings.disclosures.ai.types-functionality": {
|
||||
"defaultMessage": "功能"
|
||||
},
|
||||
"project.settings.disclosures.ai.types-text": {
|
||||
"defaultMessage": "文字"
|
||||
},
|
||||
|
||||
@@ -1240,10 +1240,6 @@ export const disclosureAiUsageMessages = defineMessages({
|
||||
id: 'project.settings.disclosures.ai.types-text',
|
||||
defaultMessage: 'Text',
|
||||
},
|
||||
functionality: {
|
||||
id: 'project.settings.disclosures.ai.types-functionality',
|
||||
defaultMessage: 'Functionality',
|
||||
},
|
||||
})
|
||||
|
||||
export const disclosureTelemetryConsentMessages = defineMessages({
|
||||
|
||||
@@ -2,6 +2,7 @@ import type { Labrinth } from '@modrinth/api-client'
|
||||
|
||||
export const PROJECT_DISCLOSURE_TYPES = [
|
||||
'ai_content',
|
||||
'ai_functionality',
|
||||
'advertisements',
|
||||
'epilepsy_triggers',
|
||||
'system_interactions',
|
||||
@@ -15,7 +16,6 @@ export const AI_USAGE_TYPES = [
|
||||
'code',
|
||||
'assets',
|
||||
'text',
|
||||
'functionality',
|
||||
] as const satisfies readonly Labrinth.Projects.v3.AiUsage[]
|
||||
|
||||
export const TELEMETRY_CONSENT_TYPES = [
|
||||
@@ -39,6 +39,7 @@ export const DISCLOSURE_SUPPORTED_PROJECT_TYPES: Record<
|
||||
readonly (typeof ALL_CONTENT_PROJECT_TYPES)[number][]
|
||||
> = {
|
||||
ai_content: ALL_CONTENT_PROJECT_TYPES,
|
||||
ai_functionality: ALL_CONTENT_PROJECT_TYPES,
|
||||
advertisements: ALL_CONTENT_PROJECT_TYPES,
|
||||
epilepsy_triggers: ALL_CONTENT_PROJECT_TYPES,
|
||||
derivative_work: ALL_CONTENT_PROJECT_TYPES,
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import type { Labrinth } from '@modrinth/api-client'
|
||||
import {
|
||||
ArchiveIcon,
|
||||
BrainCircuitIcon,
|
||||
CircleDollarSignIcon,
|
||||
CircuitBoardIcon,
|
||||
ClientIcon,
|
||||
@@ -224,6 +225,7 @@ export type DisclosureTypeFilter = Labrinth.Projects.v3.ProjectDisclosureType
|
||||
|
||||
const DISCLOSURE_TYPE_ICONS: Record<DisclosureTypeFilter, Component> = {
|
||||
ai_content: SparklesIcon,
|
||||
ai_functionality: BrainCircuitIcon,
|
||||
advertisements: MegaphoneIcon,
|
||||
epilepsy_triggers: EyeIcon,
|
||||
system_interactions: CircuitBoardIcon,
|
||||
@@ -254,6 +256,13 @@ export function formatDisclosureTypeLabel(
|
||||
defaultMessage: 'AI-generated content',
|
||||
}),
|
||||
)
|
||||
case 'ai_functionality':
|
||||
return formatMessage(
|
||||
defineMessage({
|
||||
id: 'search.filter_type.advanced.disclosure.ai_functionality',
|
||||
defaultMessage: 'Generative AI functionality',
|
||||
}),
|
||||
)
|
||||
case 'advertisements':
|
||||
return formatMessage(
|
||||
defineMessage({
|
||||
|
||||
Reference in New Issue
Block a user