From 28358164c5130eb997fef9570cd138ad01b044a2 Mon Sep 17 00:00:00 2001 From: SepComet <202308010230@stu.csust.edu.cn> Date: Sat, 9 May 2026 15:21:15 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A9=E5=BC=80=E5=8F=91=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E8=83=BD=E6=8C=89=E9=A1=B9=E7=9B=AE=E4=B8=8E=E6=9C=88=E4=BB=BD?= =?UTF-8?q?=E5=BF=AB=E9=80=9F=E5=9B=9E=E7=9C=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 顺手统一 personal-homepage 相关日志与项目种子数据里的 repo 标识,避免筛选项和项目映射出现分裂。 Constraint: 保持 Astro 静态站点结构与最小改动范围 Rejected: URL query 持久化筛选 | 超出本次最小可用范围 Confidence: high Scope-risk: narrow Directive: 后续若补 URL 状态同步,应复用现有 data-repo/data-month 过滤语义 Tested: npm run build; ./scripts/deploy-homepage.sh Not-tested: 筛选状态刷新保留与分享链接能力 --- src/content/logs/homepage-design-system.md | 2 +- src/content/logs/homepage-landing-build.md | 2 +- src/content/logs/homepage-requirements.md | 2 +- src/content/projects/index.json | 2 +- src/pages/logs/index.astro | 121 ++++++++++++++++++++- src/styles/global.css | 51 +++++++++ 6 files changed, 173 insertions(+), 7 deletions(-) diff --git a/src/content/logs/homepage-design-system.md b/src/content/logs/homepage-design-system.md index 22fa1e1..eecdcf4 100644 --- a/src/content/logs/homepage-design-system.md +++ b/src/content/logs/homepage-design-system.md @@ -1,7 +1,7 @@ --- title: "首页设计系统落稿" date: 2026-05-03 -repo: "sepcomet/personal-homepage" +repo: "basil/personal-homepage" tags: ["design", "ui", "editorial"] summary: "确定工程编辑部风格:浅色编辑布局为主,局部保留终端式技术感。" commit: "draft" diff --git a/src/content/logs/homepage-landing-build.md b/src/content/logs/homepage-landing-build.md index c576fb7..2d87e5c 100644 --- a/src/content/logs/homepage-landing-build.md +++ b/src/content/logs/homepage-landing-build.md @@ -1,7 +1,7 @@ --- title: "首页首版落地" date: 2026-05-03 -repo: "sepcomet/personal-homepage" +repo: "basil/personal-homepage" tags: ["implementation", "homepage", "astro"] summary: "从零重建 Astro 首页骨架,补齐导航、内容卡片、活动面板和基础详情路由。" commit: "draft" diff --git a/src/content/logs/homepage-requirements.md b/src/content/logs/homepage-requirements.md index 771b7c3..0c62681 100644 --- a/src/content/logs/homepage-requirements.md +++ b/src/content/logs/homepage-requirements.md @@ -1,7 +1,7 @@ --- title: "个人主页需求梳理" date: 2026-05-03 -repo: "sepcomet/personal-homepage" +repo: "basil/personal-homepage" tags: ["planning", "astro", "content-model"] summary: "整理首页、日志、项目和分享页范围,确定内容由 Markdown 与 JSON 驱动。" commit: "draft" diff --git a/src/content/projects/index.json b/src/content/projects/index.json index f166560..44402eb 100644 --- a/src/content/projects/index.json +++ b/src/content/projects/index.json @@ -46,7 +46,7 @@ { "name": "几何塔防-基础", "description": "几何塔防的基础层,使用纯 C# 开发", - "gitea_repo": "basil/geometry-tower-defense-Bbase", + "gitea_repo": "basil/geometry-tower-defense-base", "cover_image": "/images/projects/geometry-tower-defense.png", "demo_video": "", "download_link": "", diff --git a/src/pages/logs/index.astro b/src/pages/logs/index.astro index fa53ed6..071f160 100644 --- a/src/pages/logs/index.astro +++ b/src/pages/logs/index.astro @@ -7,6 +7,29 @@ import { site } from '../../config'; const logs = (await getCollection('logs')).sort( (a, b) => b.data.date.getTime() - a.data.date.getTime(), ); + +const monthFormatter = new Intl.DateTimeFormat('zh-CN', { + timeZone: 'Asia/Shanghai', + year: 'numeric', + month: 'long', +}); + +function getMonthKey(date: Date) { + const parts = new Intl.DateTimeFormat('en-CA', { + timeZone: 'Asia/Shanghai', + year: 'numeric', + month: '2-digit', + }).formatToParts(date); + const year = parts.find((part) => part.type === 'year')?.value ?? ''; + const month = parts.find((part) => part.type === 'month')?.value ?? ''; + return `${year}-${month}`; +} + +const repoOptions = [...new Set(logs.map((log) => log.data.repo))].sort((a, b) => a.localeCompare(b)); +const monthOptions = [...new Set(logs.map((log) => getMonthKey(log.data.date)))].map((value) => ({ + value, + label: monthFormatter.format(new Date(`${value}-01T00:00:00+08:00`)), +})); ---
-
+
Logs

开发日志

-

这里承载由 Markdown 驱动的开发日志。当前先放入 3 条示例内容,后续可由外部系统继续写入。

+

这里承载由 Markdown 驱动的开发日志。现在可以按项目和月份快速筛选,方便回看不同阶段的开发记录。

+
+ +
+
+ + + +
+ +

共 {logs.length} 条日志

- {logs.map((log) => )} + { + logs.map((log) => ( +
+ +
+ )) + }
+ +
+ + diff --git a/src/styles/global.css b/src/styles/global.css index f70cace..9c530fd 100644 --- a/src/styles/global.css +++ b/src/styles/global.css @@ -456,6 +456,53 @@ main { gap: 1rem; } +.logs-filters { + display: grid; + gap: 1rem; + margin-bottom: 1rem; +} + +.logs-filters__controls { + display: flex; + flex-wrap: wrap; + gap: 0.9rem 1rem; +} + +.logs-filters__field { + display: grid; + gap: 0.45rem; + min-width: min(280px, 100%); +} + +.logs-filters__field span { + font-size: 0.88rem; + font-weight: 600; + color: var(--muted-strong); +} + +.logs-filters__field select { + width: 100%; + min-height: 2.9rem; + padding: 0.7rem 0.9rem; + border: 1px solid var(--border); + border-radius: 0.95rem; + background: var(--surface-strong); + color: var(--text); + font: inherit; +} + +.logs-filters__status { + margin: 0; + color: var(--muted); + font-size: 0.92rem; +} + +.logs-empty-state { + margin-top: 1rem; + color: var(--muted); + text-align: center; +} + .log-card { display: grid; gap: 1rem; @@ -833,6 +880,10 @@ main { align-items: stretch; } + .logs-filters__field { + min-width: 100%; + } + .log-card__meta-right { justify-content: flex-start; text-align: left;