Changelog

更新日志

记录网站从基础框架、静态展示页,到可维护内容系统的每一步调整。

帖子代码工程阅读器与 CMS 发布工作流

  • 为 Blog、Study 和 Projects 三类帖子增加统一的可选代码工程展示能力,普通帖子保持原有阅读版式。
  • CMS 新增“代码工程阅读器”配置,可启用阅读器、上传项目 ZIP、指定默认打开文件并设置阅读器标题。
  • 新增类似 VS Code 的只读代码阅读器,支持文件夹树、文件切换、语法高亮、复制代码、自动换行和明暗主题。
  • 阅读器使用 Monaco Editor,并通过动态加载保证普通帖子不会加载编辑器资源。
  • 移动端将文件目录改为可展开抽屉,代码区域继续支持横向滚动和自动换行。
  • 构建流程新增代码包预处理脚本,使用 fflate 解压 ZIP,并生成安全的文件清单与纯文本预览资源。
  • 代码包处理会限制压缩包、单文件、文件数量和解压后总体积,阻止路径穿越与压缩炸弹。
  • 自动过滤 .git、node_modules、dist 等无关目录,并拒绝 .env、私钥和证书等敏感文件。
  • 二进制文件会保留在文件树中但不提供内容预览;上传的代码只读展示,不会在网页中执行。
  • 新增代码包自动化测试,验证文本语言识别、二进制识别、目录过滤和敏感文件拒绝逻辑。
  • 新增“代码工程阅读器:在帖子中展示完整项目目录”项目技术记录,整理数据结构、CMS 操作、构建流程和安全边界。

Markdown 与 Typora 内容兼容升级

  • 将 Markdown 渲染流程统一到 Astro 官方 Unified/Remark 处理器,减少浏览器端二次渲染造成的不一致。
  • 接入 GFM、CJK 友好解析、软换行转硬换行和灵活标记扩展,改善从 Typora 复制复杂内容后的显示效果。
  • 数学公式改用 Remark Math Extended 与 Rehype KaTeX,在构建阶段直接生成公式 HTML。
  • 同时支持 `$...$`、`$$...$$`、`\(...\)` 和 `\[...\]` 公式写法,并为超长公式增加横向滚动保护。
  • 移除旧的浏览器端 MathJax 加载逻辑,降低公式闪烁并避免正文加载后再次修改页面结构。
  • 补充表格、任务列表、引用、脚注、详情折叠、键盘按键和代码块等 Markdown 内容样式。
  • 新增“Markdown 与 Typora 兼容:统一公式和正文渲染流程”项目技术记录,说明解析链路、公式写法和缓存处理。

洛谷刷题日志与公式渲染工作流

  • 新增 `npm run luogu:add` 本地命令,可按日期自动创建或更新每日洛谷刷题博客,并支持同题号覆盖旧记录。
  • 洛谷刷题日志会记录题号、题名、状态、语言、标签、题面原文、解题思路、代码和复盘,并统一打上“洛谷刷题”相关标签。
  • 脚本支持自动读取本地代码文件,默认语言调整为 Python,并兼容带引号的 Windows 绝对路径。
  • 新增洛谷题目页解析逻辑,尝试通过 content-only 数据、页面注入数据、XPath 和 HTML 标题块提取题面正文。
  • 新增洛谷题目标签自动读取逻辑,优先使用手动标签,其次读取结构化数据和题目页标签区域。
  • 优化题面 Markdown 转换,修复列表 `-` 粘连无法渲染的问题,并将题面内部小标题降级为 `####`。
  • 详情页接入 MathJax,支持 `$...$` 与 `$$...$$` 数学公式渲染,并为长公式增加横向滚动保护。
  • 更新浏览器标签页 favicon 为黑色背景、蓝色大写 K 的站点标识。
  • 新增“洛谷每日刷题日志工作流”项目技术记录,并补充 Node.js CLI、Fetch API、HTML Parsing、XPath、MathJax、Git Automation 等技术栈。
  • 尝试执行构建并同步到 GitHub;构建成功,但当前环境无权写入 `.git/index.lock`,因此提交与推送需在本地终端完成。

图片与媒体体验继续优化

  • 博客列表新增封面图预览,并将封面、标题简介和日期改为三列网格,保证标题起点对齐。
  • 博客详情页封面图改为独立样式,限制最大宽度和高度,避免竖图撑得过大。
  • 正文 Markdown 图片改为无边框、无背景框的小图展示,最大宽度和高度低于封面图。
  • 图片灯箱支持多图左右切换,点击箭头或键盘左右方向键都可以浏览上一张/下一张。
  • CMS 媒体图片字段改为支持多选图片,并关闭手动 URL 选择,尽量通过媒体库上传和选择。
  • CMS 媒体库 Copy Path 会自动把 public/uploads/ 或 uploads/ 规范为 /uploads/。
  • 构建前新增内容路径清理脚本,自动修正 Markdown 正文中的 public/uploads/ 与 uploads/ 图片路径,避免 Cloudflare 构建失败。

视觉系统分层与阅读体验优化

  • 减少全站玻璃卡片重复使用,让不同页面拥有不同视觉性格。
  • 列表页继续保留玻璃卡片,方便扫描内容入口。
  • 博客、笔记和项目更新详情页改为 reading-panel 阅读版式,正文背景更安静。
  • 优化详情页正文排版、代码块、引用、图片和媒体区样式,让技术文章更适合阅读。
  • Changelog 从玻璃卡片列表改为时间线结构,日期、节点和更新内容层级更清楚。

项目分区升级为技术档案

  • 项目分区页顶部新增 Technical Dossier 区域,让 Project 更像项目主页。
  • 项目档案展示项目简介、使用技术、最近更新时间、帖子数量和项目状态。
  • 项目状态支持“进行中 / 暂停 / 完成”,技术栈通过项目分区 frontmatter 管理。
  • 最近更新时间和帖子数量自动从该项目下的更新帖计算,不需要手动维护。
  • CMS 的项目分区表单新增“使用技术”和“项目状态”字段。
  • 个人网站搭建项目补充 Astro、TypeScript、Markdown、Decap CMS、Cloudflare Pages、CSS Scroll Snap、Scoped CSS 等技术栈。

首页门户与最近更新聚合

  • 首页从单屏欢迎页升级为“封面页 + 最近更新门户”的两屏结构。
  • 第一屏保留封面感,并调整欢迎描述,让站点入口更像个人内容空间。
  • 第二屏用三列列表聚合最近博客、在学内容和项目更新。
  • 学习内容和项目更新直接展示具体帖子标题,不再先展示分区名。
  • 首页列表项可直接跳转到对应详情页,分区内容通过 section slug 自动生成路径。
  • 新增 CSS Scroll Snap 的轻量翻页感,向下滑动时更接近卡片式翻页体验。

About 页面信息与活跃度展示升级

  • 将 About 左侧名片统一调整为中文信息,并更新头像、身份、所在地、联系邮箱和爱好内容。
  • 名片底部新增 Blog、GitHub、邮箱三个联系方式按钮,邮箱使用 mailto 链接。
  • 新增类似 GitHub 贡献日历的更新频率组件,按当前自然年统计 blog、note 更新帖和 project 更新帖。
  • 贡献日历左下角显示总 post 数,并提供少到多的颜色图例。
  • 调整贡献日历位置,使其位于联系方式按钮上方,月份横轴固定为 1 月到 12 月。
  • 优化 About 左右两栏布局,让左侧名片与右侧展示卡高度更加协调。

Note 与 Project 分区系统

  • 将 Notes 和 Projects 从单层帖子列表升级为“分区 -> 分区内更新帖”的结构。
  • 新增笔记分区和项目分区内容集合,用于先创建分区,再在对应分区下发布更新帖。
  • 新增两层访问路径:/study/分区/帖子/ 与 /projects/分区/帖子/。
  • CMS 后台新增“笔记分区、笔记更新、项目分区、项目更新”四类内容,并通过 relation 字段选择所属分区。
  • About 页面右侧改为自动展示最近更新的三个项目分区与三个笔记分区。
  • 分区卡片标题显示分区名,简介位置显示该分区最新一篇帖子的标题,右侧显示最后更新日期。

CMS 编辑体验与测试内容

  • CMS 中博客、分区和更新帖的日期字段改为新建时自动读取当前系统时间,并精确到分钟。
  • 为本地测试新增多个示例分区与帖子,用于验证分区首页、分区详情和 About 自动读取逻辑。
  • 测试内容包含 Astro 学习、数学建模、编程札记、个人网站系统、课程项目、站点设计等分区。
  • 确认每个测试分区都能生成对应页面,并且分区内帖子可以正常进入详情页。

CMS 与 Cloudflare 迁移整理完成

  • 将内容管理方式调整为 Git-based CMS,文章、笔记和项目内容会保存为仓库中的 Markdown 文件。
  • CMS 后台改为 Decap CMS,并接入 GitHub OAuth 与 Cloudflare Pages Functions 登录流程。
  • 网站部署目标从 Netlify 迁移到 Cloudflare Pages,保留静态站点构建方式。
  • 移除了 Netlify Identity、Git Gateway 以及一键发布 READY 草稿的后台功能。
  • 新增 CMS 返回主站按钮,并优化后台工作区,避免被主站导航栏遮挡。
  • 增强手机端 CMS 适配,让后台在小屏幕上更接近全屏编辑体验。

文章与媒体体验优化

  • 详情页图片支持点击查看大图,适用于正文图片和媒体区图片。
  • 新增图片灯箱关闭按钮、遮罩层和页面滚动锁定,查看原图时更稳定。
  • 确认 CMS 媒体资源通过上传保存到站点目录,不需要手动填写外部媒体 URL。
  • 通过 CMS 发布了第一篇博客,并验证博客详情页可以正常生成。

移动端导航可读性优化

  • 降低手机端汉堡菜单展开框的透明感,改成更接近实体的浮层背景。
  • 为浅色和深色模式分别增强菜单边框、阴影和背景遮挡。
  • 调整移动端菜单链接的悬停和当前页状态,让导航文字更清楚。

内容系统基础搭建

  • 新增 Astro Content Collections,用于统一管理 blog、study 和 projects 内容。
  • 新增内容读取工具,将 Markdown 内容接入列表页和详情页。
  • 整理 CMS 使用说明和发帖指南,记录草稿、发布、媒体上传和同步仓库的基本流程。

网站基础框架搭建

  • 搭建 Astro 静态网站项目结构,建立 layouts、pages、components、styles 等基础目录。
  • 新增全局 Layout,统一页面头部信息、主导航、页脚、阅读进度条和主题切换逻辑。
  • 完成首页框架,加入个人介绍、主要入口和站点内容导航。
  • 搭建 About 页面,并拆分 ProfileSection、AboutCard、ProjectList、SkillTags 等复用组件。
  • 建立 Blog、Study、Projects 三类内容列表页,以及对应的动态详情页路由。
  • 新增图片、视频、音频媒体展示页,为项目和文章的素材展示预留入口。
  • 新增 Contact 页面和 Changelog 页面入口,让站点具备完整的信息架构。
  • 完成全局视觉风格,包括玻璃质感面板、响应式布局、深浅色主题和移动端汉堡导航。