feat: add trusted mirror update source

Version checks and downloads previously depended on GitHub Release. About & Updates now offers GitHub or a validated mirror source, keeps the selector beneath the startup-check switch, and disables it when startup checks are off.

The website resolves platform downloads from a bounded OSS release index with a GitHub fallback. Tagged releases publish and verify immutable OSS assets through OIDC before switching the latest-version index; deployment requires the configured Alibaba Cloud environment variables and role.

Release note: “关于与更新”新增 GitHub 与镜像节点选择,启动检查、手动检查和下载页使用同一可信来源;官网下载也可按系统、架构和安装包类型直接选择。
This commit is contained in:
mesalogo
2026-08-17 17:20:24 +08:00
parent ce15e7021c
commit dc8f86ff3e
32 changed files with 1680 additions and 66 deletions
+96 -8
View File
@@ -1258,6 +1258,39 @@ p {
font-size: 0.75rem;
}
.download-options {
display: grid;
grid-column: 1 / -1;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: var(--space-3);
}
.download-options label {
display: grid;
gap: var(--space-2);
color: var(--text-muted);
font-size: var(--font-caption);
font-weight: 680;
}
.download-options select {
width: 100%;
min-height: 40px;
padding: 0 var(--space-3);
border: 1px solid var(--border-control);
border-radius: var(--radius-control);
background: var(--surface-subtle);
color: var(--text-primary);
font: inherit;
font-size: 0.75rem;
}
.download-options select:focus-visible {
border-color: var(--accent);
outline: 2px solid color-mix(in srgb, var(--accent) 28%, transparent);
outline-offset: 2px;
}
.platform-icon {
display: grid;
width: 48px;
@@ -1278,14 +1311,66 @@ p {
stroke-width: 1.3;
}
.download-card:nth-child(3) .platform-icon svg {
fill: none;
.platform-icon img {
width: 28px;
height: 28px;
object-fit: contain;
}
[data-theme="dark"] .platform-icon img {
filter: invert(1);
}
.button--download {
grid-column: 1 / -1;
width: 100%;
width: fit-content;
min-height: 40px;
justify-content: flex-start;
justify-self: start;
padding: var(--space-2) 0;
margin-top: var(--space-2);
border: 0;
background: transparent;
color: var(--accent);
overflow-wrap: anywhere;
text-align: left;
text-decoration: underline;
text-decoration-color: transparent;
text-underline-offset: 4px;
}
.button--download:not(.is-disabled):hover {
color: var(--accent-hover);
text-decoration-color: currentColor;
transform: translateX(2px);
}
.download-meta {
grid-column: 1 / -1;
min-height: 18px;
text-align: left;
}
.download-release-status {
padding: var(--space-3) var(--space-4);
margin-top: var(--space-4);
border: 1px solid var(--border-default);
border-radius: var(--radius-control);
background: var(--surface-subtle);
color: var(--text-secondary);
font-size: 0.75rem;
text-align: center;
}
.download-release-status.is-ready {
border-color: color-mix(in srgb, var(--success) 34%, var(--border-default));
background: var(--success-subtle);
color: var(--success);
}
.download-release-status.is-fallback {
border-color: color-mix(in srgb, var(--warning) 34%, var(--border-default));
color: var(--text-secondary);
}
.domestic-support {
@@ -1601,7 +1686,7 @@ p {
}
.download-card {
grid-template-columns: auto 1fr auto;
grid-template-columns: auto 1fr;
align-items: center;
}
@@ -1610,9 +1695,8 @@ p {
}
.button--download {
grid-column: auto;
width: auto;
margin-top: 0;
grid-column: 1 / -1;
width: fit-content;
}
.assistant-grid {
@@ -1802,9 +1886,13 @@ p {
grid-template-columns: auto 1fr;
}
.download-options {
grid-template-columns: 1fr;
}
.button--download {
grid-column: 1 / -1;
width: 100%;
width: fit-content;
}
.domestic-support {