feat:移除了弹窗,服务器添加sls

This commit is contained in:
2026-09-08 22:39:45 +08:00
commit 6a295f9a7a
4082 changed files with 1322534 additions and 0 deletions

View File

@ -0,0 +1,389 @@
<script setup lang="ts">
import { CalendarIcon, HistoryIcon } from '@modrinth/assets'
import Accordion from '@modrinth/ui/src/components/base/Accordion.vue'
import ButtonStyled from '@modrinth/ui/src/components/base/ButtonStyled.vue'
import TagItem from '@modrinth/ui/src/components/base/TagItem.vue'
import { defineMessages, useVIntl } from '@modrinth/ui/src/composables/i18n.ts'
type AnnouncementLocale = 'en-US' | 'zh-CN'
type AnnouncementChangeType = 'added' | 'changed' | 'deprecated' | 'removed' | 'fixed' | 'security'
type LocalizedAnnouncementText = Record<AnnouncementLocale, string>
type LauncherAnnouncement = {
id: string
version: string
publishedAt: string
title: LocalizedAnnouncementText
changes: Partial<Record<AnnouncementChangeType, LocalizedAnnouncementText[]>>
notes?: LocalizedAnnouncementText
externalUrl?: string
}
type AnnouncementCatalog = {
updated_at: string
announcements: LauncherAnnouncement[]
}
// 每次用户访问时从客户端实时拉取。数据来自 app 前端的公告 catalog
// apps/app-frontend/src/announcements/catalog.ts由发布 CI 导出并经
// Release metadata is served by the website endpoint and does not require a
// direct browser request to the GitHub API.
const CATALOG_URL = '/api/releases/catalog'
const CHANGE_TYPES: readonly AnnouncementChangeType[] = [
'added',
'changed',
'deprecated',
'removed',
'fixed',
'security',
]
const { formatMessage, locale } = useVIntl()
const messages = defineMessages({
seoTitle: {
id: 'axolotl-site.changelog.seo.title',
defaultMessage: 'Changelog - Axolotl Launcher',
},
seoDescription: {
id: 'axolotl-site.changelog.seo.description',
defaultMessage: 'See what changed in each public Axolotl Launcher release.',
},
eyebrow: { id: 'axolotl-site.changelog.eyebrow', defaultMessage: 'Release history' },
title: { id: 'axolotl-site.changelog.title', defaultMessage: 'Changelog' },
description: {
id: 'axolotl-site.changelog.description',
defaultMessage: 'Browse features, changes, and fixes in every public release.',
},
loading: {
id: 'axolotl-site.changelog.loading',
defaultMessage: 'Checking published releases…',
},
errorTitle: {
id: 'axolotl-site.changelog.error.title',
defaultMessage: 'Changelog is temporarily unavailable',
},
errorDescription: {
id: 'axolotl-site.changelog.error.description',
defaultMessage:
'We could not fetch the release history. Your network may be unavailable, or the data source is temporarily unreachable.',
},
retry: { id: 'axolotl-site.changelog.retry', defaultMessage: 'Retry' },
empty: {
id: 'axolotl-site.changelog.empty',
defaultMessage: 'No public release notes are available yet.',
},
noReleaseNotes: {
id: 'axolotl-site.changelog.no-release-notes',
defaultMessage: 'No release notes were provided for this version.',
},
added: { id: 'axolotl-site.changelog.category.added', defaultMessage: 'Added' },
changed: { id: 'axolotl-site.changelog.category.changed', defaultMessage: 'Changed' },
deprecated: {
id: 'axolotl-site.changelog.category.deprecated',
defaultMessage: 'Deprecated',
},
removed: { id: 'axolotl-site.changelog.category.removed', defaultMessage: 'Removed' },
fixed: { id: 'axolotl-site.changelog.category.fixed', defaultMessage: 'Fixed' },
security: { id: 'axolotl-site.changelog.category.security', defaultMessage: 'Security' },
})
const categoryClasses: Record<AnnouncementChangeType, string> = {
added: 'bg-brand-green',
changed: 'bg-brand-blue',
deprecated: 'bg-brand-orange',
removed: 'bg-brand-red',
fixed: 'bg-brand-purple',
security: 'bg-brand-orange',
}
function getLocalizedText(text: LocalizedAnnouncementText): string {
return text[locale.value === 'zh-CN' ? 'zh-CN' : 'en-US']
}
function getAnnouncementChangeTypes(announcement: LauncherAnnouncement): AnnouncementChangeType[] {
return CHANGE_TYPES.filter((type) => announcement.changes?.[type]?.length)
}
const {
data: announcements,
error,
status,
refresh,
} = await useAsyncData(
'axolotl-release-catalog',
async () => {
const catalog = await $fetch<AnnouncementCatalog>(CATALOG_URL, { timeout: 8000 })
return catalog.announcements
},
{ server: false },
)
const isLoading = computed(() => status.value === 'idle' || status.value === 'pending')
const seoTitle = computed(() => formatMessage(messages.seoTitle))
const seoDescription = computed(() => formatMessage(messages.seoDescription))
useSeoMeta({
title: () => seoTitle.value,
description: () => seoDescription.value,
ogTitle: () => seoTitle.value,
ogDescription: () => seoDescription.value,
ogType: 'website',
ogUrl: 'https://axlmc.org/changelog',
robots: 'index, follow',
})
useHead({
link: [{ rel: 'canonical', href: 'https://axlmc.org/changelog' }],
})
</script>
<template>
<section class="changelog-page">
<header class="changelog-header">
<span class="section-eyebrow">{{ formatMessage(messages.eyebrow) }}</span>
<h1>{{ formatMessage(messages.title) }}</h1>
<p>{{ formatMessage(messages.description) }}</p>
</header>
<div
v-if="isLoading"
class="status-panel m-0 flex items-center justify-center gap-3 rounded-lg border border-surface-5 bg-surface-4 p-8 text-center text-[var(--color-secondary)]"
role="status"
>
<div class="loading-indicator" aria-hidden="true" />
{{ formatMessage(messages.loading) }}
</div>
<div
v-else-if="error"
class="status-panel error-panel m-0 flex items-center justify-center justify-between gap-3 rounded-lg border border-surface-5 bg-surface-4 p-8 text-left text-center text-[var(--color-secondary)]"
role="alert"
>
<div>
<h2>{{ formatMessage(messages.errorTitle) }}</h2>
<p>{{ formatMessage(messages.errorDescription) }}</p>
</div>
<ButtonStyled color="brand" type="outlined">
<button type="button" @click="refresh()">{{ formatMessage(messages.retry) }}</button>
</ButtonStyled>
</div>
<p
v-else-if="!announcements?.length"
class="status-panel m-0 flex items-center justify-center gap-3 rounded-lg border border-surface-5 bg-surface-4 p-8 text-center text-[var(--color-secondary)]"
>
{{ formatMessage(messages.empty) }}
</p>
<div v-else class="flex flex-col gap-3">
<Accordion
v-for="(announcement, index) in announcements"
:key="announcement.id"
:open-by-default="index === 0"
class="overflow-hidden rounded-lg border border-surface-5 bg-surface-4"
button-class="group flex w-full cursor-pointer items-center gap-4 border-0 bg-transparent px-5 py-4 text-left"
>
<template #title>
<div class="announcement-heading flex min-w-0 flex-1 items-center justify-between gap-4">
<div class="flex min-w-0 items-center gap-3">
<h2>{{ getLocalizedText(announcement.title) }}</h2>
<TagItem>{{ announcement.version }}</TagItem>
</div>
<div
class="flex shrink-0 items-center gap-[0.35rem] text-[0.8125rem] text-[var(--color-secondary)]"
>
<CalendarIcon aria-hidden="true" />
<time :datetime="announcement.publishedAt">
{{ announcement.publishedAt }}
</time>
</div>
</div>
</template>
<div class="border-t border-surface-5 bg-surface-3 px-[1.25rem] pb-2">
<p
v-if="
!announcement.changes ||
CHANGE_TYPES.every((type) => !announcement.changes?.[type]?.length)
"
class="m-0 pb-2 pt-4 leading-[1.6] text-[var(--color-secondary)]"
>
{{ formatMessage(messages.noReleaseNotes) }}
</p>
<section
v-for="(type, typeIndex) in getAnnouncementChangeTypes(announcement)"
:key="type"
class="change-group"
:class="{ 'first-change-group': typeIndex === 0 }"
>
<h3>
<span :class="categoryClasses[type]" aria-hidden="true" />
{{ formatMessage(messages[type]) }}
</h3>
<ul>
<li v-for="change in announcement.changes[type]" :key="change">
{{ getLocalizedText(change) }}
</li>
</ul>
</section>
</div>
</Accordion>
</div>
<div class="mt-8 flex items-center justify-center gap-2 text-sm text-[var(--color-secondary)]">
<HistoryIcon aria-hidden="true" />
<a href="https://github.com/Mystic-Stars/Axolotl/releases" target="_blank" rel="noopener">
GitHub Releases
</a>
</div>
</section>
</template>
<style scoped lang="scss">
.changelog-page {
width: min(52rem, calc(100% - 2rem));
margin: 0 auto;
padding: 4rem 0 5rem;
}
.changelog-header {
max-width: 40rem;
margin-bottom: 2.5rem;
h1 {
margin: 0.5rem 0 0;
color: var(--color-contrast);
font-size: 2.25rem;
line-height: 1.15;
}
p {
margin: 1rem 0 0;
color: var(--color-secondary);
line-height: 1.65;
}
}
.announcement-title-row {
h2 {
margin: 0;
overflow: hidden;
color: var(--color-contrast);
font-size: 1rem;
font-weight: 600;
text-overflow: ellipsis;
white-space: nowrap;
}
}
.announcement-date {
svg {
width: 1rem;
height: 1rem;
}
}
.change-group {
display: grid;
grid-template-columns: 7rem minmax(0, 1fr);
gap: 1.25rem;
padding: 1rem 0;
border-top: 1px solid var(--surface-5);
&.first-change-group {
border-top: 0;
}
h3 {
display: flex;
align-items: center;
gap: 0.5rem;
margin: 0;
color: var(--color-secondary);
font-size: 0.875rem;
font-weight: 600;
span {
width: 0.5rem;
height: 0.5rem;
border-radius: 50%;
}
}
ul {
display: flex;
flex-direction: column;
gap: 0.5rem;
margin: 0;
padding-left: 1.25rem;
color: var(--color-base);
line-height: 1.6;
overflow-wrap: anywhere;
}
}
.error-panel {
h2,
p {
margin: 0;
}
h2 {
color: var(--color-contrast);
font-size: 1rem;
}
p {
margin-top: 0.25rem;
}
}
.loading-indicator {
width: 1rem;
height: 1rem;
border: 2px solid var(--surface-5);
border-top-color: var(--color-brand);
border-radius: 50%;
animation: spin 700ms linear infinite;
}
.changelog-footer {
svg {
width: 1rem;
height: 1rem;
}
a {
color: inherit;
}
}
@keyframes spin {
to {
transform: rotate(1turn);
}
}
@media (max-width: 600px) {
.changelog-page {
padding: 2.5rem 0 3rem;
}
.changelog-header h1 {
font-size: 1.875rem;
}
.announcement-heading,
.error-panel,
.change-group {
align-items: flex-start;
flex-direction: column;
}
.change-group {
grid-template-columns: 1fr;
gap: 0.5rem;
}
}
</style>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,288 @@
<script setup lang="ts">
import { useVIntl } from '@modrinth/ui/src/composables/i18n.ts'
import LegalDocument from '~/components/ui/LegalDocument.vue'
const { locale } = useVIntl()
const isChinese = computed(() => locale.value === 'zh-CN')
const seoTitle = computed(() =>
isChinese.value ? '隐私政策 - Axolotl Launcher' : 'Privacy Policy - Axolotl Launcher',
)
const seoDescription = computed(() =>
isChinese.value
? '了解 Axolotl Launcher 官方网站和桌面应用如何处理数据。'
: 'Learn how the Axolotl Launcher official website and desktop application handle data.',
)
useSeoMeta({
title: () => seoTitle.value,
description: () => seoDescription.value,
ogTitle: () => seoTitle.value,
ogDescription: () => seoDescription.value,
ogType: 'website',
ogUrl: 'https://axlmc.org/privacy',
robots: 'index, follow',
})
useHead({
link: [{ rel: 'canonical', href: 'https://axlmc.org/privacy' }],
})
</script>
<template>
<LegalDocument
v-if="isChinese"
:key="`zh-${locale}`"
eyebrow="隐私政策"
title="隐私政策"
description="本政策说明 Axolotl Launcher 官方网站和桌面应用处理数据的方式,以及第三方服务可能接收的信息。"
updated-at="2026 8 14 "
>
<h2>1. 适用范围</h2>
<p>
本政策适用于 www.axlmc.org 官方网站和 Axolotl Launcher
桌面应用通过启动器访问的第三方网站API认证服务服务器及内容下载地址适用对应第三方自己的隐私政策
</p>
<h2>2. 官方网站处理的数据</h2>
<p>网站无需注册账户为保存你的显示和下载偏好浏览器会在本地保存</p>
<ul>
<li>语言偏好 Cookie<code>locale</code></li>
<li>主题高级渲染减少动态效果和外部链接打开方式</li>
<li>下载源选择自动Update Server GitHub</li>
</ul>
<p>
这些偏好主要保存在 Cookie 或浏览器 localStorage 你可通过浏览器设置清除网站不使用广告
Cookie网站接入<a href="https://howxm.com" target="_blank" rel="noopener">浩客Howxm</a>
作为第三方用户体验分析和反馈收集服务其可根据服务配置处理与网站访问交互设备或浏览器及网络请求相关的信息以展示问卷收集评价和改进网站体验
</p>
<p>
网站托管和网络基础设施提供者可能为保障访问安全和故障排查而处理常规请求信息例如 IP
地址访问时间请求路径User-Agent 和错误日志此类处理受对应提供者政策约束
</p>
<h2>3. 桌面应用处理的数据</h2>
<p>启动器会在你的设备本地处理并保存运行所需的数据包括</p>
<ul>
<li>应用设置界面偏好和下载配置</li>
<li>Minecraft 实例游戏版本模组及其他内容的元数据</li>
<li>账户资料登录会话离线账户信息和自定义认证服务地址</li>
<li>游戏日志崩溃信息缓存下载记录及更新状态</li>
</ul>
<p>
这些数据用于登录启动游戏管理内容诊断故障和提供你主动使用的功能启动器会在首次运行或功能升级后询问是否允许匿名遥测未确认或关闭时不会发送遥测允许后启动器每天最多发送一次匿名活跃信号用于统计选择加入遥测的匿名安装量DAUWAUMAU不会自动上传完整的启动器日志或 Minecraft
令牌账户凭据或原始随机安装标识
</p>
<p>
遥测使用本地生成的随机安装标识服务端仅保存经密钥 HMAC-SHA256
处理后的不可逆标识你可随时在隐私与安全中关闭遥测关闭后会停止后续采集并清空本地待发送队列但已经上传的数据仍按下述保留周期清理Discord
Rich Presence 是独立的本地开关不属于遥测
</p>
<h2>4. 与第三方共享和传输</h2>
<p>
当你使用登录搜索下载更新皮肤或联机等功能时启动器会按你的操作直接连接第三方服务请求可能包含服务完成操作所需的账户令牌用户标识项目或文件标识IP
地址设备和网络请求信息可能涉及的服务包括
</p>
<ul>
<li>Microsoft Minecraft 的登录资料及游戏服务</li>
<li>你选择的第三方 Yggdrasil 认证服务</li>
<li>ModrinthCurseForge 及内容作者提供的 API 和下载地址</li>
<li>Update ServerGitHub 及其他用于版本检查更新或文件分发的服务</li>
<li>用于官网用户体验分析和反馈收集的浩客Howxm</li>
<li>用于接收和保存选择加入的匿名遥测数据的 Cloudflare Workers D1</li>
<li>你主动连接的 Minecraft 服务器或其他外部链接</li>
</ul>
<p>项目维护者不会出售你的个人信息第三方如何保存和使用请求数据由其各自的隐私政策决定</p>
<h2>5. 数据保存与删除</h2>
<p>
网站偏好保存在你的浏览器中启动器数据主要保存在你的设备中你可以清除浏览器站点数据或在启动器内移除账户实例和缓存卸载应用不一定自动删除全部数据目录请在确认备份需求后手动清理残留文件
</p>
<p>
遥测中的匿名日活记录保留 35 每日汇总和匿名安装哈希会长期保留用于历史趋势和累计安装统计项目不会在遥测数据库中保存请求
IPCloudflare
作为基础设施提供者仍可能按其自身政策处理网络请求所必需的信息
</p>
<p>
第三方服务保存的数据须通过对应服务的账户设置或隐私渠道管理项目维护者无法代你访问导出或删除第三方持有的数据
</p>
<h2>6. 数据安全</h2>
<p>
我们通过开源审查系统权限和安全更新等方式降低风险但无法保证绝对安全请从官方渠道下载软件及时更新保护系统账户不要公开登录令牌完整日志或包含个人信息的截图
</p>
<h2>7. 未成年人</h2>
<p>
未成年人应在监护人指导下使用本项目并遵守所在地区的年龄要求及 MinecraftMicrosoft
和其他相关服务的规则请勿通过公开反馈渠道提交不必要的个人信息
</p>
<h2>8. 政策变更</h2>
<p>
本政策可能因功能第三方服务或法律要求变化而更新新版本将在本页面发布并标明最后更新日期重大变化会尽量通过官方网站GitHub
仓库或版本说明告知
</p>
<h2>9. 联系方式</h2>
<p>
如有隐私问题或发现安全风险请通过
<a href="https://github.com/Mystic-Stars/Axolotl/issues" target="_blank" rel="noopener"
>GitHub Issues</a
>
联系项目维护者请勿在公开 Issue 中提交账户令牌密码完整日志或其他敏感信息也可加入官方 QQ
737601250 咨询一般问题
</p>
</LegalDocument>
<LegalDocument
v-else
:key="`en-${locale}`"
eyebrow="Privacy Policy"
title="Privacy Policy"
description="This policy explains how the Axolotl Launcher official website and desktop application handle data, and what information third-party services may receive."
updated-at="August 14, 2026"
>
<h2>1. Scope</h2>
<p>
This policy applies to the www.axlmc.org official website and the Axolotl Launcher desktop
application. Third-party websites, APIs, authentication services, servers, and content
download addresses accessed through the launcher are governed by their own privacy policies.
</p>
<h2>2. Data Processed by the Official Website</h2>
<p>
The website does not require an account. To remember your display and download preferences,
your browser stores locally:
</p>
<ul>
<li>A language preference cookie (<code>locale</code>);</li>
<li>Theme, advanced rendering, reduced motion, and external-link behavior;</li>
<li>Your download-source selection (automatic, Update Server, or GitHub).</li>
</ul>
<p>
These preferences are mainly stored in cookies or browser localStorage and can be cleared
through your browser settings. The website uses no advertising cookies. It integrates
<a href="https://howxm.com" target="_blank" rel="noopener">Howxm</a> as a third-party
user-experience analytics and feedback collection service. Depending on its service
configuration, Howxm may process information related to website visits, interactions, devices
or browsers, and network requests to display surveys, collect ratings, and improve the website
experience.
</p>
<p>
Website hosting and network infrastructure providers may process routine request information
such as IP addresses, access times, request paths, User-Agent strings, and error logs to
ensure availability, security, and troubleshooting. Such processing is subject to the
corresponding providers' policies.
</p>
<h2>3. Data Processed by the Desktop Application</h2>
<p>
The launcher processes and stores the data needed to run locally on your device, including:
</p>
<ul>
<li>Application settings, interface preferences, and download configuration;</li>
<li>Metadata for Minecraft instances, game versions, mods, and other content;</li>
<li>
Account profiles, login sessions, offline account information, and custom authentication
service addresses;
</li>
<li>Game logs, crash information, caches, download records, and update status.</li>
</ul>
<p>
This data is used for signing in, launching the game, managing content, diagnosing faults, and
providing features you actively use. The launcher asks whether to allow anonymous telemetry on
first use or after a relevant consent update. No telemetry is sent before confirmation or
while it is disabled. When enabled, the launcher sends at most one anonymous daily activity
signal. This is used to count opted-in anonymous installations, DAU, WAU, and MAU. Full
launcher or Minecraft logs, Minecraft tokens, account credentials, and the original random
installation identifier are not uploaded automatically.
</p>
<p>
Telemetry uses a random installation identifier generated locally; the service stores only an
irreversible HMAC-SHA256 value produced with a server secret. You can disable telemetry at any time
under Privacy & security. Disabling it stops future collection and clears the local pending
queue, while previously uploaded records are deleted under the retention periods below.
Discord Rich Presence is an independent local setting and is not telemetry.
</p>
<h2>4. Sharing and Transfers with Third Parties</h2>
<p>
When you use features such as sign-in, search, download, update, skins, or multiplayer, the
launcher connects directly to third-party services based on your actions. Requests may include
the account tokens, user identifiers, project or file identifiers, IP addresses, device, and
network request information needed to complete the operation. Services that may be involved
include:
</p>
<ul>
<li>Microsoft and Minecraft sign-in, profile, and game services;</li>
<li>Third-party Yggdrasil authentication services you choose;</li>
<li>APIs and download addresses provided by Modrinth, CurseForge, and content authors;</li>
<li>
Update Server, GitHub, and other services used for version checks, updates, or file
distribution;
</li>
<li>Howxm for official-website user-experience analytics and feedback collection;</li>
<li>
Cloudflare Workers and D1 for opted-in anonymous telemetry ingestion and storage;
</li>
<li>Minecraft servers or other external links you connect to.</li>
</ul>
<p>
The project maintainers do not sell your personal information. How third parties store and use
request data is determined by their respective privacy policies.
</p>
<h2>5. Data Retention and Deletion</h2>
<p>
Website preferences are stored in your browser; launcher data is mainly stored on your device.
You can clear browser site data or remove accounts, instances, and caches inside the launcher.
Uninstalling the application does not necessarily delete all data directories automatically;
after confirming your backup needs, manually clean up any leftover files.
</p>
<p>
Anonymous daily-active records are retained for 35 days; daily totals and anonymous installation hashes are retained long-term for
historical trends and cumulative installation counts. The project does not store request IP
addresses in the telemetry database. Cloudflare, as the infrastructure provider, may still process information
required to deliver network requests under its own policies.
</p>
<p>
Data stored by third-party services must be managed through the corresponding service's
account settings or privacy channels. The project maintainers cannot access, export, or delete
data held by third parties on your behalf.
</p>
<h2>6. Data Security</h2>
<p>
We reduce risk through open-source review, system permissions, and security updates, but
cannot guarantee absolute security. Download software from official channels, update
regularly, protect your system accounts, and do not publicly share login tokens, full logs, or
screenshots containing personal information.
</p>
<h2>7. Minors</h2>
<p>
Minors should use this project under the guidance of a guardian and comply with the age
requirements of their region as well as the rules of Minecraft, Microsoft, and other related
services. Do not submit unnecessary personal information through public feedback channels.
</p>
<h2>8. Changes to This Policy</h2>
<p>
This policy may be updated as features, third-party services, or legal requirements change.
New versions will be published on this page with a last-updated date. Significant changes will
be announced through the official website, the GitHub repository, or release notes when
possible.
</p>
<h2>9. Contact</h2>
<p>
For privacy questions or security concerns, contact the project maintainers via
<a href="https://github.com/Mystic-Stars/Axolotl/issues" target="_blank" rel="noopener"
>GitHub Issues</a
>. Do not submit account tokens, passwords, full logs, or other sensitive information in
public issues. You may also join the official QQ group 737601250 for general questions.
</p>
</LegalDocument>
</template>

View File

@ -0,0 +1,323 @@
<script setup lang="ts">
import { useVIntl } from '@modrinth/ui/src/composables/i18n.ts'
import LegalDocument from '~/components/ui/LegalDocument.vue'
const { locale } = useVIntl()
const isChinese = computed(() => locale.value === 'zh-CN')
const seoTitle = computed(() =>
isChinese.value ? '服务条款 - Axolotl Launcher' : 'Terms of Service - Axolotl Launcher',
)
const seoDescription = computed(() =>
isChinese.value
? '使用 Axolotl Launcher 官方网站及桌面应用前,请阅读本服务条款。'
: 'Read these terms of service before using the Axolotl Launcher website and desktop application.',
)
useSeoMeta({
title: () => seoTitle.value,
description: () => seoDescription.value,
ogTitle: () => seoTitle.value,
ogDescription: () => seoDescription.value,
ogType: 'website',
ogUrl: 'https://axlmc.org/terms',
robots: 'index, follow',
})
useHead({
link: [{ rel: 'canonical', href: 'https://axlmc.org/terms' }],
})
</script>
<template>
<LegalDocument
v-if="isChinese"
:key="`zh-${locale}`"
eyebrow="服务条款"
title="服务条款"
description="本条款说明 Axolotl Launcher 各部分适用的开源许可证、官方服务规则及第三方权利边界。"
updated-at="2026 8 2 "
>
<h2>1. 适用范围与文件效力</h2>
<p>
本条款适用于 Axolotl Launcher
官方网站官方发布的桌面应用及项目维护者提供的相关服务软件的复制修改分发和网络部署以仓库中对应文件的许可证与复制声明为准本页面只是中文说明不替代修改或限制原始许可证
</p>
<p>
根据 GPL-3.0
AGPL-3.0仅接收或运行未经修改的软件副本不要求你接受许可证只有在复制修改传播分发软件或以适用
AGPL 的修改版本向网络用户提供服务时许可证中的对应条件才适用
</p>
<h2>2. 仓库采用的许可证</h2>
<p>本仓库没有一份覆盖全部文件的统一许可证不同部分采用不同许可</p>
<ul>
<li>
官方网站源代码采用
<a
href="https://github.com/Mystic-Stars/Axolotl/blob/main/apps/website/LICENSE"
target="_blank"
rel="noopener"
>GNU Affero General Public License Version 3 onlyAGPL-3.0-only</a
>
</li>
<li>
桌面应用相关 package 采用
<a
href="https://github.com/Mystic-Stars/Axolotl/blob/main/apps/app-frontend/LICENSE"
target="_blank"
rel="noopener"
>GNU General Public License Version 3 onlyGPL-3.0-only</a
>
</li>
<li>
其他 package 保留各自的上游许可证应查看对应目录中的 <code>LICENSE</code><code
>COPYING.md</code
>
和源码声明
</li>
<li>
第三方代码数据图标图片商标及其他素材可能采用单独许可不因被收录在本仓库中而自动改用
GPL AGPL
</li>
</ul>
<h2>3. 你的开源软件权利</h2>
<p>
在遵守适用许可证的前提下你可以运行研究复制修改和再分发受 GPL-3.0-only AGPL-3.0-only
保护的代码也可以收费分发项目维护者不会通过本服务条款对这些许可证已经授予的权利增加限制
</p>
<p>
复制或分发时通常需要保留版权许可证和无担保声明分发修改版本时需要明确标注修改及日期并按对应许可证向接收者提供完整许可权利与相应源代码分发目标代码时应按许可证规定提供可机器读取的对应源代码不得对接收者行使许可证权利增加额外限制
</p>
<p>
若你修改采用 AGPL-3.0-only 的网站代码并让用户通过网络与修改版本交互应按 AGPL 13
条向这些用户显著提供免费获取该版本对应源代码的机会具体义务以许可证原文为准
</p>
<h2>4. 品牌商标与受限素材</h2>
<p>
开源软件许可证不自动授予商标权Axolotl Launcher 是独立的非官方项目
MojangMicrosoftRinth, Inc.ModrinthCurseForge MinecraftSearch
不存在隶属认可或背书关系相关名称和商标归各自权利人所有
</p>
<p>
Modrinth 商标徽标封面和其他受限品牌素材不属于 Axolotl Launcher 品牌网站复制声明列出的
Modrinth 品牌元素未经 Rinth, Inc.
明确书面许可不得使用外部徽标须遵守各权利人的品牌规范使用或再分发其他第三方图片图标数据和素材前也应核对对应声明
</p>
<h2>5. 特别归属与第三方许可</h2>
<p>
桌面启动器的中文内容搜索包含来自 Plain Craft Launcher 的未修改
<code>WikiEntries.txt</code> 快照该文件采用 PCL Limited Distribution License并包含由 MC
百科贡献的中文项目名称信息种子地图功能还包含 MIT 许可的 cubiomes以及权利归
MinecraftSearchMojang 或各素材创作者所有的图像它们不适用 Axolotl 桌面代码的 GPL-3.0-only
授权具体范围以仓库复制声明为准
</p>
<h2>6. 官方网站与服务的使用</h2>
<p>
使用项目维护者运营的官方网站下载源反馈渠道或其他基础设施时你应遵守适用法律及对应第三方平台规则不得攻击干扰滥用基础设施不得实施欺诈或侵害他人权利这些服务规则只约束官方服务的使用不限制
GPL AGPL 授予你对软件副本的权利
</p>
<p>
启动器会按你的操作连接 MicrosoftMinecraftModrinthCurseForgeGitHubUpdate
Server自定义 Yggdrasil
服务及内容作者提供的下载地址第三方服务游戏内容和文件受其各自条款隐私政策许可证可用性及地区限制约束项目维护者不替第三方提供担保
</p>
<h2>7. 无担保</h2>
<p>
按照 GPL-3.0 AGPL-3.0 15
在适用法律允许的范围内软件按现状提供不附带任何明示或默示担保包括适销性和特定用途适用性的默示担保软件质量与性能风险由使用者承担软件存在缺陷时必要的维护修复或更正费用由使用者承担除非另有书面约定
</p>
<h2>8. 责任限制</h2>
<p>
按照 GPL-3.0 AGPL-3.0 16
除适用法律要求或另有书面约定外版权人以及依许可证修改或分发软件的其他主体不对因使用或无法使用软件产生的一般特殊附带或后果性损害负责包括数据丢失数据不准确第三方损失或软件无法与其他程序协同工作若当地法律不允许完整排除责任则按许可证第
17 条及当地法律处理
</p>
<h2>9. 条款与许可证更新</h2>
<p>
本服务条款可随官方服务第三方平台或法律要求更新更新不会追溯撤销已经依适用开源许可证授予的权利也不会把标注为Version
3
only的代码自动改为后续许可证版本任何代码许可变更必须由相应权利人依法作出并体现在仓库文件中
</p>
<h2>10. 联系与完整文本</h2>
<p>
许可范围存在疑问时请先查看仓库根目录及对应 package <code>COPYING.md</code><code
>LICENSE</code
>
和源码声明如需进一步确认请通过
<a href="https://github.com/Mystic-Stars/Axolotl/issues" target="_blank" rel="noopener"
>GitHub Issues</a
>
联系项目维护者或加入官方 QQ 737601250本页面不是法律意见
</p>
</LegalDocument>
<LegalDocument
v-else
:key="`en-${locale}`"
eyebrow="Terms of Service"
title="Terms of Service"
description="These terms explain the open-source licenses that apply to each part of Axolotl Launcher, the rules for official services, and the boundaries of third-party rights."
updated-at="August 2, 2026"
>
<h2>1. Scope and Effect of This Document</h2>
<p>
These terms apply to the official Axolotl Launcher website, the officially published desktop
application, and related services operated by the project maintainers. Copying, modification,
distribution, and network deployment of the software are governed by the licenses and copying
notices in the corresponding files of the repository; this page is a plain-language
explanation and does not replace, modify, or restrict the original licenses.
</p>
<p>
Under GPL-3.0 and AGPL-3.0, merely receiving or running an unmodified copy of the software
does not require you to accept the license. The relevant conditions of the license apply only
when you copy, modify, propagate, or distribute the software, or when you provide a modified
version governed by the AGPL to users over a network.
</p>
<h2>2. Licenses Used in This Repository</h2>
<p>
This repository has no single license covering all files. Different parts use different
licenses:
</p>
<ul>
<li>
The official website source code is licensed under the
<a
href="https://github.com/Mystic-Stars/Axolotl/blob/main/apps/website/LICENSE"
target="_blank"
rel="noopener"
>GNU Affero General Public License Version 3 only (AGPL-3.0-only)</a
>;
</li>
<li>
The desktop application packages are licensed under the
<a
href="https://github.com/Mystic-Stars/Axolotl/blob/main/apps/app-frontend/LICENSE"
target="_blank"
rel="noopener"
>GNU General Public License Version 3 only (GPL-3.0-only)</a
>;
</li>
<li>
Other packages retain their upstream licenses; check the <code>LICENSE</code>,
<code>COPYING.md</code>, and source-code notices in the corresponding directories;
</li>
<li>
Third-party code, data, icons, images, trademarks, and other assets may use separate
licenses and do not automatically become GPL or AGPL by being included in this repository.
</li>
</ul>
<h2>3. Your Rights Under the Open-Source Licenses</h2>
<p>
Subject to the applicable license, you may run, study, copy, modify, and redistribute code
protected by GPL-3.0-only or AGPL-3.0-only, including for a fee. These terms do not add
restrictions to the rights already granted by those licenses.
</p>
<p>
When copying or distributing, you usually need to retain copyright, license, and no-warranty
notices; when distributing modified versions, you must clearly mark the modifications and
their dates and provide recipients with the full license rights and corresponding source code
under the applicable license. When distributing object code, provide the corresponding
machine-readable source code as required by the license. You may not impose additional
restrictions on recipients' exercise of their license rights.
</p>
<p>
If you modify the AGPL-3.0-only website code and let users interact with the modified version
over a network, you must offer those users prominent access to the corresponding source code
of that version free of charge, as required by Section 13 of the AGPL. The license text takes
precedence over this summary.
</p>
<h2>4. Branding, Trademarks, and Restricted Assets</h2>
<p>
Open-source licenses do not automatically grant trademark rights. Axolotl Launcher is an
independent, unofficial project with no affiliation, endorsement, or sponsorship from Mojang,
Microsoft, Rinth, Inc., Modrinth, CurseForge, or MinecraftSearch. The related names and
trademarks belong to their respective owners.
</p>
<p>
Modrinth trademarks, logos, covers, and other restricted brand assets are not part of the
Axolotl Launcher brand. Modrinth brand elements listed in the repository's copying notices
must not be used without the explicit written permission of Rinth, Inc. External logos must
follow each owner's brand guidelines. Before using or redistributing other third-party images,
icons, data, and assets, check the corresponding notices.
</p>
<h2>5. Specific Attributions and Third-Party Licenses</h2>
<p>
The desktop launcher's Chinese content search includes an unmodified
<code>WikiEntries.txt</code> snapshot from Plain Craft Launcher, distributed under the PCL
Limited Distribution License and containing Chinese project-name information contributed by MC
Wiki. The seed-map feature also includes MIT-licensed cubiomes and images owned by
MinecraftSearch, Mojang, or the respective asset creators. These are not covered by the
GPL-3.0-only license of Axolotl's desktop code; the exact scope is defined by the repository's
copying notices.
</p>
<h2>6. Use of the Official Website and Services</h2>
<p>
When using the official website, download sources, feedback channels, or other infrastructure
operated by the project maintainers, you must comply with applicable law and the rules of the
corresponding third-party platforms, and must not attack, interfere with, or abuse the
infrastructure, commit fraud, or infringe the rights of others. These service rules only
govern the use of official services and do not limit the rights granted to you under GPL or
AGPL.
</p>
<p>
The launcher connects to Microsoft, Minecraft, Modrinth, CurseForge, GitHub, the Update
Server, custom Yggdrasil services, and download addresses provided by content authors based on
your actions. Third-party services, game content, and files are subject to their own terms,
privacy policies, licenses, availability, and regional restrictions; the project maintainers
do not warrant third parties.
</p>
<h2>7. No Warranty</h2>
<p>
Under Section 15 of GPL-3.0 and AGPL-3.0, to the extent permitted by applicable law, the
software is provided "as is" without any express or implied warranty, including implied
warranties of merchantability and fitness for a particular purpose. You assume the risk of the
software's quality and performance; if the software proves defective, you assume the cost of
all necessary servicing, repair, or correction, unless otherwise agreed in writing.
</p>
<h2>8. Limitation of Liability</h2>
<p>
Under Section 16 of GPL-3.0 and AGPL-3.0, except as required by applicable law or agreed in
writing, copyright holders and other parties who modify or distribute the software under the
license are not liable for general, special, incidental, or consequential damages arising from
the use or inability to use the software, including data loss, inaccurate data, third-party
losses, or the software failing to interoperate with other programs. If local law does not
allow the complete exclusion of liability, it is handled under Section 17 of the license and
local law.
</p>
<h2>9. Updates to These Terms and Licenses</h2>
<p>
These terms may be updated as official services, third-party platforms, or legal requirements
change. Updates do not retroactively revoke rights already granted under the applicable
open-source licenses, and do not automatically upgrade code marked "Version 3 only" to later
license versions. Any license change must be made lawfully by the appropriate rights holder
and reflected in the repository files.
</p>
<h2>10. Contact and Full Texts</h2>
<p>
If you have questions about license scope, first check the <code>COPYING.md</code>,
<code>LICENSE</code>, and source-code notices in the repository root and the corresponding
packages. For further confirmation, contact the project maintainers via
<a href="https://github.com/Mystic-Stars/Axolotl/issues" target="_blank" rel="noopener"
>GitHub Issues</a
>, or join the official QQ group 737601250. This page is not legal advice.
</p>
</LegalDocument>
</template>