V1.0.1 更新

修复 visitor-stats 插件一次大量读取导致统计服务429报错问题

1、修复 visitor-stats 插件的,使用 /total 来一次获取全部数据,使用 localStorage 来缓存数据。

流程:

  • 访问 /total 接口,获取全部数据
  • 缓存数据到 localStorage 中
  • 从 localStorage 中读取数据,避免重复请求(TTL 为 5 分钟,过期后重新请求)。

2、修复了其他一些小问题,如路由缓存策略、URL 规范等。


统一路由尾斜杠格式

在进行页面切换时发现了多次重复请求预取的问题,导致页面流量异常,经排查为预取请求与 Canonical URL 不一致造成的。将前端路由的缓存策略与托管平台(Cloudflare Pages)的 URL 规范严格对齐,现在已修复。

V1.0.2 更新

新增文章相对链接构建时自动转换功能

此前文章互链需手动写死完整 URL 或依赖拼音 slug,现支持在构建时自动转换相对链接。

示例:

markdown
1234
[文件](./MarkDown元数据说明.md)
[文件内链接](./添加自定义图标.md/#为什么硬编码图标)
[图片](../images/logo.webp)
[不存在文件](../images/logo.md)

文件
文件内链接
图片

注意:若链接不可用,预取时会返回 404 错误(不影响页面正常显示),但构建过程会输出警告提醒,请及时检查并修正。

派生数据不再进行版本控制

派生数据lqips.json和post-index.json会自动生成和更新,统一生成放入主目录.generated中,并取消对该文件夹的版本控制,保持代码库的整洁。

提示:派生数据只影响构建时间,不影响构建完整性。

V1.0.3 更新

评论系统插拔化

目前适配 utterances 评论系统,支持自定义评论插件。详情请查看项目对于插件的使用规则文档,项目路径为下 src\comments\使用规则.md。

站点配置加载方式修改(重要)

从原先的yaml改为ts,项目路径为下 src\site.config.ts。

旧版更新请重新配置站点配置文件,否则会报错

V1.0.4 更新

添加自动更新更新时间脚本

现在可以自动根据文章修改时间自动更新, src\site.config.ts 中的 autoUpdatePostUpdated 字段默认开启自动更新。

注意:

  • format-post-meta 自动为元数据排版脚本仍为手动,需要手动执行,建议先排版后执行构建。
  • 建议先 build 再提交 commit 。

V1.0.5 更新

V1.0.5 样式修改

  • 分页组件上下按钮增加背景颜色,取消第一页和最后一页的上下按钮背景颜色透明。
  • markdown 文章标题(h1-h6)增加随层级递减的左侧主题色条。
  • 修复提示容器 details 样式问题,增加了折叠 / 展开动画。
  • 归档页新增置顶分区,置顶文章单独分组展示;其余文章仍按年份分组展示。

V1.0.5 BUG 修复

  • 修复了无上一页 / 无下一页时预取返回 404 报错的问题

V1.0.5 其他

  • 代码块的复制按钮的 [复制] 、 [已复制] 和右侧按钮的 [回到顶部] 和目录的 [脚注] 添加了 i18n 文本。
  • 脚注自定义前缀,前缀由默认的 user-content- 自定义为 post- 。
  • autoUpdatePostUpdated 自动更新文章更新时间功能改为关闭状态。
  • 合并构建后脚本:inject-modulepreloads 与 minify-inline-scripts 合并为单一的 postbuild.js,并在构建后并行执行 pagefind 搜索索引生成。

V1.0.6 更新

V1.0.6 新增功能

  • 音乐播放器组件,默认关闭状态。(仅有flac、mp3和url格式的音乐进行过验证)

music-component

V1.0.6 修复问题

  • 运行时间改为实时计算(根据客户端的时区进行计算,因为文章的发布时间不含时区,所以会有偏差)
  • 上下一页按钮禁用态统一
  • 文章页和列表卡片的标签圆角统一
  • 删除无用css
  • generate-lqips.js 改用 Node 原生createRequire(import.meta.url) 直接require('sharp') ,完全绕开 Vite module runner 。无论 dev server 处于启动、重启还是关闭状态都能稳定加载。

V1.0.6 其他

  • 新增二次开发文档到 posts/ 目录下的 all 文件夹中,需要手动修改的请参考相关文档。

V1.0.7 更新

V1.0.7 新增功能

  • 增加暗夜模式切换动画,电脑端为扩散动画,移动端为向上滑入动画。
  • 增加页面切换淡入淡出动画。
  • 增加返回按钮显示和消失动画。
  • 增加搜索模态框关闭动画。
  • 增加内部锚点跳转动画,点击锚点后切换页面然后从顶部平滑滚动到对应位置。

V1.0.7 修复问题

  • 修复了标签和分类页面搜索显示数量未变化的问题。

V1.0.8 更新

V1.0.8 新增功能

  • 搜索支持章节级结果展示与跳转,单篇最多 3 个子结果。
  • 文章页新增侧边目录折叠按钮,正文滚动加入淡入动效。
  • 右侧悬浮菜单改为向左弹出,并补充音乐组件动画。

V1.0.8 修复问题

  • 统一全站日期处理为 UTC 时区,避免文章生成/修改时间、网站运行时间偏移。

V1.0.8 其他

  • 重构右侧菜单:返回顶部、搜索、主题切换、目录整合为弹出式菜单,并加入展开收起动画。
  • 返回顶部改为常驻,移除显隐逻辑。
  • 更新相关文档说明,调整部分文档格式显示。

V1.0.9 更新

V1.0.9 新增功能

  • 重构顶部导航栏:导航项新增图标,悬停 / 当前页时背景板滑入、图标切换为文字,并移除原有的下划线高亮。
  • 新增鼠标划过网格背景的轨迹特效,移动端无鼠标,故不会生效。
  • 个人名片新增数码管时钟,可通过开关按钮在时钟与个人简介之间切换。
  • 个人名片与文章卡片新增鼠标指针预览方窗。
  • 顶部导航支持在 src/site.config.ts 中通过 nav 数组自定义显示项与顺序,未显示的页面构建时依然会构建。

V1.0.9 修复问题

  • 修复顶部导航栏在英文和日文下文字溢出、背景板错位的问题:按最宽词条自动统一缩小字号,并将导航项固定为 60px 宽使背景板无缝相贴,仅对非中文生效,中文显示不受影响。
  • 修复文章卡片与文章页的系列标识在浅色模式下对比度不足的无障碍问题。

V1.0.9 其他

  • 个人名片从首页移入全局布局,仅在首页显示,页面切换时带有进入/离开动画。
  • 名片社交按钮尺寸从 28×28 调整为 42×42,并重构社交按钮与时钟开关的布局。
  • 更新相关文档说明。

V1.0.9 PS

本次更新后后续将会对整个代码结构进行重构优化,部分文档也会进行调整,版本将会变成 V1.1.0 。

V1.1.0 将会是一次 破坏性 的更新!建议对比变更内容,确认无误后再更新。

V1.1.0 更新

V1.1.0 代码结构重构(破坏性)

这次主要是把[一个文件干所有事]拆开,功能没变,但目录和文件位置动了不少,二次开发里引用过旧路径的记得跟着改。

  • 页面组件目录 src/components/pages/ 改名为 src/components/views/。
  • BaseLayout.astro 瘦身:原来内联在布局里的客户端脚本全部搬到 src/lib/client/,按职责拆成启动入口 index.ts、Swup 钩子与锚点 swupBindings.ts、页面级绑定 pageBindings.ts,以及网格轨迹 gridTrail.ts、名片动画 profileCardAnim.ts。
  • PostPage.astro 从 810 行拆到 367 行:系列目录、上下篇拆成 SeriesToc.astro / PostNav.astro,客户端逻辑拆到 lib/postToc.ts、lib/postActions.ts、lib/postContent.ts、lib/photoswipe.ts。
  • MusicPlayer.astro 从 611 行拆开:播放状态机在 lib/player.ts,界面与 DOM 操作在 lib/musicUi.ts,播放列表在 lib/musicPlaylist.ts。
  • ProfileCard.astro 瘦身:数码管时钟独立成 DigitalClock.astro,指针预览方窗合并到 lib/pointerPreview.ts,名片与文章卡片共用一套实现。
  • 分类页和标签页本来就是同一套逻辑、只差数据源,合并成一个 TaxonomyPage.astro,CategoriesPage.astro / TagsPage.astro 删除。
  • URL 相关规则集中到 src/lib/url.ts(localePath / isAssetUrl / shouldIgnoreSwup),astro.config.mjs 里 Swup 的 ignore 直接引用同一个函数。

V1.1.0 新增功能

  • 新增左下角宠物挂件,默认开启(siteConfig.pet.enabled):方格描边造型加两只方块眼睛,视线跟着鼠标走、会自动眨眼、闲置 5 秒打瞌睡,滚动滚轮或手机上手指划动时会从框里滑出去再滑回来。
  • 宠物支持长按 550ms 弹出[请去休息]气泡,点[关闭]它就散成一块块方格消失(方格消解),24 小时内不再出现;想提前叫回来,点首页名片社交条上的[唤回宠物],它会以方格聚合的方式重新拼回来。
  • 构建后新增产物统计:每次 pnpm build 会打印 dist/ 总量、_astro/ 体积和最大的 5 个文件;超过 60 MiB 只告警,不中断构建。
  • 新增两个校验脚本:pnpm check-i18n 检查 zh / ja / en 三份语言包的键是否对得上,pnpm check-swup-ignore 检查 shouldIgnoreSwup 里的正则与 url.ts 里的常量是否逐字一致。

V1.1.0 修复问题

  • 修复 siteConfig.nav 漏写或类型写错时构建直接崩溃的问题:现在会先过一遍兜底校验(lib/siteConfigGuard.ts),缺项给默认值并打印告警。
  • 修复锚点链接判断失效的问题:shouldIgnoreSwup 改为自包含写法,不再依赖外部常量,避免 Swup 序列化函数时把依赖一起丢掉。
  • 修复全局链接样式压过工具类的问题:a 规则收进 @layer base,text-accent 之类的类名能正常覆盖。
  • 修复文章页系列目录[当前篇]在浅色模式下对比度不足。
  • 修复 generate-lqips.js 加载 sharp 不稳定的问题:改用 createRequire(fileURLToPath(import.meta.url)) 直接从项目目录解析,dev server 开着也能正常跑。
  • 修复统计请求和首屏渲染抢主线程的问题:统计刷新改到浏览器空闲时执行(requestIdleCallback,不支持的浏览器退回 200ms 定时)。

V1.1.0 优化与其他

  • 正文里真的出现公式时,文章页才动态加载 KaTeX 官方样式;构建后顺手删掉 dist/_astro 里 KaTeX 的 ttf / woff(约 250 KiB),只留 woff2,因为现代浏览器只用得到它。
  • 文章页灯箱(PhotoSwipe)样式改为按需加载,不再每页都带上。
  • 顶部导航项宽度从写死的 60px 改成 --nav-window 变量,字号计算也读这个变量,调整宽度只需改一处;同时把选择器收窄到 header nav .nav-label,避免误伤。
  • i18n 文案 key 有了类型:src/i18n/ui.ts 从 zh.json 递归推导出点路径联合类型 MessageKey,t() 里键名写错在 pnpm check / pnpm type-check 阶段就会报错。为此 src/env.d.ts 去掉了 declare module '*.json' 那条宽松声明。
  • Vite 监听忽略 .pnpm-store 与 dist,避免监听器被无关文件刷爆。
  • posts/all/ 下的二次开发文档已按新结构同步更新。

V1.1.0 PS

本次是破坏性更新,目录改名与文件拆分都涉及路径变更,建议对比变更内容、确认无误后再更新。