Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
235 changes: 159 additions & 76 deletions src/pages/milestone.astro
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,56 @@ const projectMeta: Record<ProjectKey, { labelZh: string; labelEn: string; accent
},
};

const sparkDownloadCheckpoints = [
{
id: 'spark-million-downloads',
dateZh: '2026.09.29',
dateEn: 'Sep 29, 2026',
datetime: '2026-09-29',
project: 'sparkllm',
icon: 'tabler:download',
titleZh: 'Spark-X2.5 累计下载突破百万',
titleEn: 'Spark-X2.5 passed one million downloads',
descriptionZh:
'SparkLLM Spark-X2.5 开源模型在各分发渠道的下载量,加上社区衍生模型(第三方量化 / 微调)的下载量,累计突破一百万。',
descriptionEn:
'Combined downloads of the open-source SparkLLM Spark-X2.5 model across distribution channels and its community derivatives (third-party quantizations and fine-tunes) passed one million.',
},
{
id: 'spark-3-5m-downloads',
dateZh: '2026.10.30',
dateEn: 'Oct 30, 2026',
datetime: '2026-10-30',
project: 'sparkllm',
icon: 'tabler:download',
titleZh: 'Spark-X2.5 和 Spark-X2.6 累计下载突破 350 万',
titleEn: 'Spark-X2.5 and Spark-X2.6 passed 3.5 million downloads',
descriptionZh:
'Spark-X2.5 和 Spark-X2.6 官方模型及社区衍生模型(第三方量化、微调和格式转换)在 Hugging Face 的累计下载量合计突破 350 万次。',
descriptionEn:
'Combined cumulative downloads of the official Spark-X2.5 and Spark-X2.6 models and their community derivatives (third-party quantizations, fine-tunes, and format conversions) on Hugging Face passed 3.5 million.',
},
{
id: 'spark-5m-downloads',
dateZh: '2026.11.09',
dateEn: 'Nov 9, 2026',
datetime: '2026-11-09T03:36:39+08:00',
project: 'sparkllm',
icon: 'tabler:download',
titleZh: 'Spark-X2.5 和 Spark-X2.6 累计下载 / 拉取突破 500 万',
titleEn: 'Spark-X2.5 and Spark-X2.6 passed 5M downloads / pulls',
descriptionZh:
'SparkLLM 于北京时间 2026 年 11 月 9 日 03:36 发布:Spark-X2.5 和 Spark-X2.6 在六个平台累计下载 / 拉取突破 500 万,包含 276 个社区衍生模型。此为跨平台累计口径,不是单一平台下载量或独立用户数。',
descriptionEn:
'Announced by SparkLLM on November 9, 2026 at 03:36 Beijing time: Spark-X2.5 and Spark-X2.6 passed 5M cumulative downloads / pulls across six platforms, including 276 community derivatives. This is a cross-platform total, not downloads on a single platform or unique users.',
link: {
href: 'https://x.com/SparkLLM/status/2119514456971485233',
zh: '查看官方公告',
en: 'View the official announcement',
},
},
];

const milestones: Array<{
id: string;
dateZh: string;
Expand Down Expand Up @@ -312,19 +362,18 @@ const milestones: Array<{
en: 'View on LFX Insights',
},
},

{
id: 'spark-million-downloads',
dateZh: '2026.09.29',
dateEn: 'Sep 29, 2026',
id: 'spark-downloads',
dateZh: '2026.09.29—2026.11.09',
dateEn: 'Sep 29—Nov 9, 2026',
datetime: '2026-09-29',
project: 'sparkllm',
icon: 'tabler:download',
titleZh: 'Spark-X2.5 累计下载突破百万',
titleEn: 'Spark-X2.5 passed one million downloads',
descriptionZh:
'SparkLLM Spark-X2.5 开源模型在各分发渠道的下载量,加上社区衍生模型(第三方量化 / 微调)的下载量,累计突破一百万。',
descriptionEn:
'Combined downloads of the open-source SparkLLM Spark-X2.5 model across distribution channels and its community derivatives (third-party quantizations and fine-tunes) passed one million.',
titleZh: 'SparkLLM 下载量突破',
titleEn: 'SparkLLM download milestones',
descriptionZh: sparkDownloadCheckpoints.map((point) => `${point.dateZh}:${point.descriptionZh}`).join(' '),
descriptionEn: sparkDownloadCheckpoints.map((point) => `${point.dateEn}: ${point.descriptionEn}`).join(' '),
},
{
id: 'spark-pocketpal',
Expand All @@ -341,20 +390,7 @@ const milestones: Array<{
'In the PocketPal Agentic Web Search evaluation, Spark-X2.5-4B and Spark-X2.5-1.7B appear first and third in the table, with Fresh accuracy of 89% and 87%, respectively. Both are marked on the accuracy-versus-model-size Pareto frontier, with Q4_K_M weights of 2.6 GB and 1.1 GB. Positions refer to table order; the leading group has overlapping 90% confidence intervals.',
link: { href: 'https://pocketpal.dev/evals/web-search', zh: 'PocketPal 评测', en: 'PocketPal evaluation' },
},
{
id: 'spark-3-5m-downloads',
dateZh: '2026.10.30',
dateEn: 'Oct 30, 2026',
datetime: '2026-10-30',
project: 'sparkllm',
icon: 'tabler:download',
titleZh: 'Spark-X2.5 和 Spark-X2.6 累计下载突破 350 万',
titleEn: 'Spark-X2.5 and Spark-X2.6 passed 3.5 million downloads',
descriptionZh:
'Spark-X2.5 和 Spark-X2.6 官方模型及社区衍生模型(第三方量化、微调和格式转换)在 Hugging Face 的累计下载量合计突破 350 万次。',
descriptionEn:
'Combined cumulative downloads of the official Spark-X2.5 and Spark-X2.6 models and their community derivatives (third-party quantizations, fine-tunes, and format conversions) on Hugging Face passed 3.5 million.',
},

{
id: 'agent-shanghai-award',
dateZh: '2026.10.30',
Expand Down Expand Up @@ -383,30 +419,12 @@ const milestones: Array<{
descriptionEn:
'Astron Agent’s 2026 OSCAR Open Source+ Peak Practice recognition is scheduled for November 10, 2026.',
},
{
id: 'spark-5m-downloads',
dateZh: '2026.11.09',
dateEn: 'Nov 9, 2026',
datetime: '2026-11-09T03:36:39+08:00',
project: 'sparkllm',
icon: 'tabler:download',
titleZh: 'Spark-X2.5 和 Spark-X2.6 累计下载 / 拉取突破 500 万',
titleEn: 'Spark-X2.5 and Spark-X2.6 passed 5M downloads / pulls',
descriptionZh:
'SparkLLM 于北京时间 2026 年 11 月 9 日 03:36 发布:Spark-X2.5 和 Spark-X2.6 在六个平台累计下载 / 拉取突破 500 万,包含 276 个社区衍生模型。此为跨平台累计口径,不是单一平台下载量或独立用户数。',
descriptionEn:
'Announced by SparkLLM on November 9, 2026 at 03:36 Beijing time: Spark-X2.5 and Spark-X2.6 passed 5M cumulative downloads / pulls across six platforms, including 276 community derivatives. This is a cross-platform total, not downloads on a single platform or unique users.',
link: {
href: 'https://x.com/SparkLLM/status/2119514456971485233',
zh: '查看官方公告',
en: 'View the official announcement',
},
},
];

type GanttItem = {
sourceId: string;
kind: 'range' | 'point';
kind: 'range' | 'point' | 'checkpoints';
checkpoints?: typeof sparkDownloadCheckpoints;
start: number;
end?: number;
titleZh: string;
Expand Down Expand Up @@ -671,16 +689,19 @@ const ganttGroups: Array<{ project: ProjectKey; items: GanttItem[] }> = [
barZh: '奖项 · 09.11',
barEn: 'Award · Sep 11',
},

{
sourceId: 'spark-million-downloads',
kind: 'point',
sourceId: 'spark-downloads',
kind: 'checkpoints',
start: 13,
titleZh: 'Spark-X2.5 累计下载突破百万',
titleEn: 'Spark-X2.5 passed 1M downloads',
dateZh: '2026.09.29',
dateEn: 'Sep 29, 2026',
barZh: '百万下载 · 09.29',
barEn: '1M downloads · Sep 29',
end: 15,
titleZh: 'SparkLLM 下载量突破',
titleEn: 'SparkLLM download milestones',
dateZh: '2026.09.29—2026.11.09',
dateEn: 'Sep 29—Nov 9, 2026',
barZh: '100 万 → 350 万 → 500 万',
barEn: '1M → 3.5M → 5M',
checkpoints: sparkDownloadCheckpoints,
},
{
sourceId: 'spark-pocketpal',
Expand All @@ -693,28 +714,6 @@ const ganttGroups: Array<{ project: ProjectKey; items: GanttItem[] }> = [
barZh: '#1 & #3 · 10.05',
barEn: '#1 & #3 · Oct 5',
},
{
sourceId: 'spark-3-5m-downloads',
kind: 'point',
start: 14,
titleZh: 'Spark-X2.5 和 Spark-X2.6 累计下载突破 350 万',
titleEn: 'Spark-X2.5 and Spark-X2.6 passed 3.5M downloads',
dateZh: '2026.10.30',
dateEn: 'Oct 30, 2026',
barZh: '350 万下载 · 10.30',
barEn: '3.5M downloads · Oct 30',
},
{
sourceId: 'spark-5m-downloads',
kind: 'point',
start: 15,
titleZh: 'Spark-X2.5 和 Spark-X2.6 累计下载 / 拉取突破 500 万',
titleEn: 'Spark-X2.5 and Spark-X2.6 passed 5M downloads / pulls',
dateZh: '2026.11.09',
dateEn: 'Nov 9, 2026',
barZh: '500 万下载 / 拉取 · 11.09',
barEn: '5M downloads / pulls · Nov 9',
},
],
},
{
Expand Down Expand Up @@ -774,7 +773,10 @@ for (const milestone of milestones) {
}
}

const ganttSignalCount = ganttGroups.reduce((total, group) => total + group.items.length, 0);
const ganttSignalCount = ganttGroups.reduce(
(total, group) => total + group.items.reduce((count, item) => count + (item.checkpoints?.length ?? 1), 0),
0
);

const stats = [
{
Expand Down Expand Up @@ -1036,7 +1038,10 @@ const periodEn = 'Sep 2025 — Nov 2026';
</div>

<div
class="milestone-gantt__track milestone-gantt__track--item"
class:list={[
'milestone-gantt__track milestone-gantt__track--item',
item.kind === 'checkpoints' && 'milestone-gantt__track--checkpoints',
]}
role="cell"
aria-labelledby={titleId}
aria-describedby={descriptionId}
Expand All @@ -1049,7 +1054,46 @@ const periodEn = 'Sep 2025 — Nov 2026';
<span class:list={['milestone-gantt__grid-line', index === 4 && 'is-current']} />
))}
</div>
{item.kind === 'range' ? (
{item.kind === 'checkpoints' ? (
item.checkpoints?.map((point, index) => (
<div
class="milestone-gantt__checkpoint"
style={`grid-column:${item.start + index};grid-row:${index + 1}`}
>
<span
class="milestone-gantt__point"
style={'--milestone-accent:' + project.accent}
aria-hidden="true"
/>
<span class="milestone-gantt__checkpoint-copy">
<time
datetime={point.datetime}
data-lang-zh={point.dateZh}
data-lang-en={point.dateEn}
>
{point.dateZh}
</time>
<strong
data-lang-zh={['100 万下载', '350 万下载', '500 万下载 / 拉取'][index]}
data-lang-en={['1M downloads', '3.5M downloads', '5M downloads / pulls'][index]}
>
{['100 万下载', '350 万下载', '500 万下载 / 拉取'][index]}
</strong>
{point.link && (
<a
href={point.link.href}
target="_blank"
rel="noopener noreferrer"
data-lang-zh={point.link.zh}
data-lang-en={point.link.en}
>
{point.link.zh}
</a>
)}
</span>
</div>
))
) : item.kind === 'range' ? (
<div
class="milestone-gantt__range"
style={`--milestone-accent:${project.accent};grid-column:${item.start} / ${gridEnd}`}
Expand Down Expand Up @@ -1995,4 +2039,43 @@ const periodEn = 'Sep 2025 — Nov 2026';
min-height: 6.5rem;
}
}

.milestone-gantt__track--checkpoints {
grid-template-rows: repeat(3, minmax(4rem, auto));
padding-block: 0.75rem;
}

.milestone-gantt__checkpoint {
position: relative;
display: flex;
align-items: center;
justify-content: center;
gap: 0.5rem;
min-width: 0;
}

.milestone-gantt__checkpoint > .milestone-gantt__point {
left: 50%;
}

.milestone-gantt__checkpoint-copy {
position: absolute;
right: calc(50% + 1rem);
display: grid;
width: max-content;
max-width: 15rem;
gap: 0.2rem;
text-align: right;
font-size: 0.75rem;
line-height: 1.4;
}

.milestone-gantt__checkpoint-copy time {
color: var(--rc-text-faint);
}

.milestone-gantt__checkpoint-copy a {
color: var(--rc-blue);
text-decoration: underline;
}
</style>
Loading