project disclosures frontend (#6955)

* begin project disclosures

* new project settings header

* begin disclosure settings, edit content rules

* togglecards

* update phrasing of the rules, prepr

* more disclosure settings structuring

* add functionality toggle

* implement functionality with staging api

* improve project settings head titles

* feat(labrinth): project disclosures model

* feat(labrinth): project disclosures database model

* feat(labrinth): project disclosures get endpoint

* feat(labrinth): censor user ids if set by moderator

* feat(labrinth): wrap disclosures in struct

* feat(labrinth): edit project disclosures endpoint

* style(labrinth): cargo fmt

* style(labrinth): fix typo

* feat(labrinth): add fields for ai content disclosure

* fix(labrinth): field typo

* chore(labrinth): update query cache

* feat(labrinth): index disclosures in search

* refactor(labrinth): use enum instead of bools

* feat(labrinth): trigger incremental index on disclosure change

* feat(labrinth): change archived status to disclosure

* feat(labrinth): use disclosure for archival status

* fix(labrinth): error type for deserialization

* fix(labrinth): migration timestamp

* fix(labrinth): add disclosures to elasticsearch schema

* disclosures in search

* update photosensitivity warning copy

* update archiving, move general project settings to v3 (start redesign there), use project id lookups for stable cache keys, advanced in server search

* blue archive banner

* display AI use types

* improve labels

* add modrinth to link

* add placeholder missing disclosure report type

* add AI metadata checking to block image uploads with notice

* update copy

* update section 4 of rules

* Update rule 6 layout

* fix(labrinth): don't remove archival disclosure when changing status via v3 api

* feat(labrinth): derive str for ai usages and telemtry consent

* feat(labrinth): include ai usages and telemetry consent in disclosure types

* Update moderation checklist (#7056)

* fix: missing delphi severity (#7054)

* Utils nav, new disclosures stage, ai button in rules

* add prefix to collect

* Finish up new disclosures stage

* update r4 messages

* new r4 msg, update showcase clarity message

* fix: version upload failing to detect mrpack loader (#7063)

* fix: mrpack exporting with zip64 (#7064)

* fix: action bar max width (#7048)

* fix: action bar max width

* fix: width

* changelog

* Rule placeholders with subsections & anchors, update messages.

* update new messages to account for new rule and placeholder layout

* Add nag for content disclosures

---------

Co-authored-by: ThatGravyBoat <gravy@thatgravyboat.tech>
Co-authored-by: chyzman <chyzalt@gmail.com>
Co-authored-by: Truman Gao <106889354+tdgao@users.noreply.github.com>
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>

* prepr

* refactor(labrinth): move disclosure parsing to document creation

* fix(labrinth): prevent removing moderator added archival disclosures

* fix(labrinth): dedupe ai usages

* fix(labrinth): auth logic on archived disclosure removal

* feat(labrinth): add interactions field

* style(labrinth): cargo fmt

* feat(labrinth): granular disclosure locking

* add 5.8, move 5.9, update messages and placeholders accordingly.

* move disclosures stage earlier

* include consent model info in telemetry disclosure msgs

* prepr + update date

* typo

* qa pass

* search suboptions

* add empty state

* checkboxes in column

* persistent advanced filters

* blog draft

* prepr

* support soft deletion

* reload instead of optimistically updating

* update blog

* TOS update + minor verbiage adjustment

* 45 day grace

---------

Co-authored-by: sychic <47618543+Sychic@users.noreply.github.com>
Co-authored-by: coolbot <76798835+coolbot100s@users.noreply.github.com>
Co-authored-by: ThatGravyBoat <gravy@thatgravyboat.tech>
Co-authored-by: chyzman <chyzalt@gmail.com>
Co-authored-by: Truman Gao <106889354+tdgao@users.noreply.github.com>
This commit is contained in:
Prospector
2026-08-13 09:01:18 -07:00
committed by GitHub
co-authored by ThatGravyBoat chyzman Truman Gao sychic coolbot
parent 06b7c44dcc
commit 755825b09a
230 changed files with 5802 additions and 1268 deletions
@@ -2,6 +2,7 @@
import { type Component, computed } from 'vue'
import PrideCollectionWidget from './PrideCollectionWidget.vue'
import Rule6Widget from './Rule6Widget.vue'
import SparkLiveWidget from './SparkLiveWidget.vue'
import SparkLiveWidgetEmbed from './SparkLiveWidgetEmbed.vue'
@@ -9,6 +10,7 @@ const ARTICLE_WIDGETS: Record<string, Component> = {
'spark-live-widget': SparkLiveWidget,
'spark-live-widget-embed': SparkLiveWidgetEmbed,
'pride-collection-widget': PrideCollectionWidget,
'rule-6': Rule6Widget,
}
type ArticleBodyPart = { type: 'html'; content: string } | { type: 'widget'; id: string }
@@ -0,0 +1,71 @@
<template>
<div
id="rule-6"
class="rounded-2xl border border-solid border-surface-4 bg-surface-3 markdown-body p-4"
>
<nuxt-link to="/legal/rules#generative-ai" target="_blank">
<h2 class="!mt-0">6. Usage of Generative "AI"</h2>
</nuxt-link>
<p>
Projects must be forthright and honest about the usage of generative AI in their production,
publication, and within the project itself. Projects cannot be entirely or primarily comprised
of content created or derived from generative AI output.
</p>
<h3 id="disclosure-of-ai-generated-content">6.1. Disclosure of AI generated content</h3>
<p>You must apply the appropriate Contains AI-generated content content disclosure when:</p>
<ol type="a">
<li>a substantial portion of the project's code is a product of AI output.</li>
<li>
the project includes any assets that are primarily or entirely a product of AI output.
</li>
<li>the project's design or functionality relies on the use of generative AI.</li>
<li>
any element of the project's page such as description or publishing relies on generative AI.
</li>
</ol>
<h3 id="prohibited-usage-of-ai">6.2. Prohibited AI generated content</h3>
<ol type="a">
<li>
No images uploaded to a gallery, icon, description, or any other part of a project page may
be created or derived from generative AI output. Any such images may be removed.
</li>
<li>
Projects may not be published publicly if the contents are primarily or entirely a product
of AI output.
</li>
</ol>
</div>
</template>
<style scoped>
.markdown-body h2 {
@apply mb-3 mt-5 pb-1 pt-0 text-xl font-semibold text-contrast;
}
.markdown-body h3 {
@apply mb-1 mt-5 p-0 text-lg font-semibold text-contrast;
}
.markdown-body a {
@apply !font-semibold !text-brand !no-underline hover:!text-brand hover:!underline;
}
.markdown-body p {
@apply leading-normal;
}
.markdown-body ol {
@apply mb-3;
}
.markdown-body ol ol {
@apply mb-2;
}
.markdown-body li {
@apply mb-1;
}
</style>