更新日志

更新日志

记录博客项目的功能迭代、问题修复与重要变更

架构重构、页面过渡优化、门户区白条修复、VFX 动画即时显示

架构重构#

  • Layout.astro 从 1492 行精简至 555 行,提取 8 个独立控制器模块
  • 新增 swup-lifecycle-controller.ts — Swup 生命周期管理(5 个钩子)
  • 新增 scroll-handler.ts — 滚动处理(back-to-top、TOC、navbar 隐藏)
  • 新增 grid-layout-utils.ts — 网格布局管理
  • 新增 sidebar-utils.ts — 侧边栏可见性控制
  • 新增 banner-utils.ts — Banner 工具函数
  • 新增 panel-utils.ts — 面板点击外部关闭
  • 新增 scrollbar-utils.ts — KaTeX 滚动容器
  • 新增 tab-title-controller.ts — 标签页标题交互

死代码清理#

  • 删除 19 个无用文件:WallpaperSwitch、DisplaySettings、DisplaySettingsIntegrated、LayoutSwitchButton、FloatingControls、WelcomeCard、WelcomeToast、DomeGallery、GuestbookDetailModal、HomePortal、ActivityHeatmap、CompareCard、MiniLineChart、RingProgress、sakura-manager、categoryLinks、folderIconConfig、projectsConfig、SpineModel/Live2DWidget 重复副本
  • 删除空目录:src/components/life/src/components/album/src/components/daily/
  • 删除未使用的公共文件:china-map.json(582KB)、skull-preview.htmlsakura.png
  • 清理 config/index.ts 中的死导出

壁纸系统移除#

  • 移除壁纸模式切换功能(overlay/none 模式)
  • 保留标准 banner 模式(mode: “none”,不渲染背景图)
  • 清理 Layout.astro、MainGridLayout.astro、setting-utils.ts 中的壁纸逻辑
  • 清理 5 个 i18n 语言文件中的壁纸翻译键

Danmaku 弹幕移除#

  • 删除 src/components/guestbook/Danmaku.astro
  • 删除 danmu 内容集合定义
  • 清理 life/guestbook.astro 中的弹幕渲染

TypeScript 错误修复#

  • 从 52 个错误降至 0 个
  • 修复未使用导入、未使用变量、null 安全、getStaticPaths 类型推断
  • 修复 bangumi.astro 类型断言

内存泄漏修复#

  • SpineModel:setInterval 在 cleanup 中 clearInterval
  • Live2DWidget:resize 监听器先移除再注册
  • SakuraEffect:Swup 导航时停止 requestAnimationFrame
  • BackToTop:改为单例模式,防止 scroll 监听器累积
  • TypewriterText:Swup 钩子注册加 guard 防重复

页面过渡优化#

  • 移除离开动画的 translateY 位移,改为纯 opacity 淡出
  • 移除进入动画的 translateY 位移,改为纯 opacity 淡入
  • 过渡时间从 350ms 缩短至 200ms
  • onload-animation 改为即时显示(opacity: 1,无动画)
  • 进度条时长从 8 秒缩短至 3 秒
  • 修复 Svelte 组件重初始化的 200ms setTimeout 竞态
  • Swup scrollTo 改为 behavior: “auto” 避免抖动

门户区白条修复#

  • 首页父容器添加 home-main-grid-wrapper class
  • <head> 中内联关键 CSS,首屏移除父级 max-width 限制
  • html 元素添加 overflow-x: hidden 防止 100vw 溢出

首页优化#

  • 关闭 PageLoader 加载动画(所有情况直接显示)
  • 移除 GSAP 入口动画,首页元素直接可见
  • 背景图由服务端构建时随机选择,不再客户端切换 src(消除闪烁和白条)
  • VFX 马赛克效果移除 1500ms 延迟,立即显示

其他修复#

  • FancyboxManager 添加 MutationObserver 处理懒水合组件
  • PageLoader 条件触发改为仅首页桌面端显示
  • 修复 icon-loader 动态导入无 catch 的问题
  • 修复 visit URL 解析无 try-catch 的问题
  • Vue 特性标志从 Vite 配置中移除
  • i18n 补全:en.ts 添加 9 个 changelog 键,zh_TW/ja/ru 各添加 23 个缺失键

CLAUDE.md 规范#

  • 从零重写,572 行,18 个章节
  • 覆盖架构控制器模块、Swup 生命周期管理、事件监听器规范、单例模式、内存泄漏检查清单、PageLoader 集成规范、功能模块自注册模式、操作清单、反模式清单
  • 记录已关闭功能的恢复方法

文章页改造、移动端底部菜单、首页背景动态切换、字体配置、代码审查修复

文章详情页改造#

  • 新增 PostBreadcrumb.astro — 面包屑导航组件(首页 › 分类下拉 › 此文章)
    • 分类下拉支持键盘导航(Enter/Space/ArrowUp/Down/Escape)
    • window.__postBreadcrumbInited guard 防重复初始化
    • Swup 导航后自动关闭下拉
  • 重构 [...slug].astro 顶部区域:
    • 居中标题 + 紧凑 Meta 行(日期·分类·标签·字数·访问量·分享)
    • 新增简介卡(AI 摘要 / 人工编写,带图标和标签)
    • 移除封面图渲染(保留 posterCoverUrl 用于分享海报)
    • 移除旧的 PostMeta 组件、AiSummary 组件
  • 新增 post-hero.css — 文章页 Hero + 面包屑 + 简介卡样式(通过 main.css 导入)
  • 移动端访问量 + 分享按钮独立一行,桌面端同行显示
  • 正文区域 padding 加宽(px-3 md:px-6 lg:px-10

移动端底部菜单(Apple 风格)#

  • 新增 MobileMenuSheet.astro — Bottom Sheet 菜单组件
    • 顶部 MENU 标题 + “Explore your world” 副标题
    • 4×4 功能网格,19 个入口(与 navBarConfig 对齐)
    • 每项独立圆角方块,图标 + 名称
    • 毛玻璃背景(blur(40px)),圆角 24px
    • 右上角关闭按钮(内联 SVG,避免 symbol 引用失败)
    • 拖拽指示条(纯装饰)
    • Waline 评论数动态获取
  • 新增 mobile-menu-sheet.css — Apple HIG 风格样式
  • 修改 MobileDock.astro — 中间按钮改为触发 Bottom Sheet
    • 添加 data-swup-ignore-script + window.__mobileDockInited guard
    • 防止 Swup 导航导致事件监听器累积

首页背景动态切换#

  • 使用 import.meta.glob 构建时扫描 public/assets/images/desktop-bg/mobile-bg/
  • 客户端 is:inline 脚本每次刷新随机选一张
  • homeConfig.ts 新增 backgroundImagePool / backgroundImageMobilePool 属性
  • backgroundWallpaper.ts 同步更新,新增图片无需改代码

字体配置#

  • 新增霞鹜文楷(LXGW WenKai)字体 — ZeoSeven CDN(fontsapi.zeoseven.com/292
  • 删除 25 MB 本地 TTF 文件(改用 CDN WOFF2 按需加载)

Loading 动画#

  • PageLoader loading 动画已关闭(立即隐藏 + 派发 LOADER_HIDDEN_EVENT)
  • 加载图片从 GIF 转换为 WebP(147.6 KB → 88.2 KB,节省 40%)
  • page-loader.css 添加暗色主题背景、.page-loader--visible

代码审查修复#

  • 移除 mobile-menu-sheet.css 中 6 个违反规范的 !important
  • 移除 page-loader.css 中移动端 display: none !important
  • .gitignore 新增 10 个开发工具/临时目录排除

未使用图片审计#

  • 项目共 152 张图片,17 张未被引用(5 个表情包 GIF、3 个备份/变体、2 个旧版背景等)
  • 暂不删除,留待用户确认

说说评论弹窗组件、详情页评论区优化、加载动画、留言板风格 UI

说说评论弹窗组件#

  • 新增 CommentModal.svelte 可复用评论弹窗组件
  • 点击说说卡片评论按钮弹出苹果风格卡片,居中显示
  • 使用 Waline REST API 自定义聊天 UI,不依赖 Waline 内置渲染
  • 支持评论列表展示、回复引用、发送评论
  • 用户信息(昵称、邮箱、网址)保存到 localStorage
  • 有网址的用户昵称显示为绿色,无网址显示为黑色
  • 输入框支持昵称、邮箱(方便接收回复消息)、网址(可选)

留言板风格聊天 UI#

  • 消息气泡使用留言板样式:深色背景白色文字
  • 站长消息右对齐,白色背景深色文字,显示「站长」徽章
  • 回复引用使用留言板的左边框样式,显示被回复内容预览
  • 日期在消息上方居中显示
  • 卡片整体 92% 透明度,背景遮罩 25% 黑 + 6px 模糊

说说详情页优化#

  • 详情页卡片宽度与列表页一致(去掉 max-width 限制)
  • 卡片圆角与列表页一致(桌面 0.75rem,移动 0.625rem)
  • 加载动画缩小为 200×80px,居中显示
  • 加载时评论区收缩,加载完成后展开(grid-template-rows 动画)
  • 加载动画最低显示 2 秒

加载动画#

  • 赛车动画使用 var(--deep-text) 颜色,适配深色/浅色主题
  • 详情页:独立区域居中显示,加载完成后收起 + 评论区展开
  • 评论弹窗:覆盖在消息区上方,加载完成后淡出

移动端优化#

  • 评论弹窗移动端:底部弹出,高度 72vh,只顶部圆角
  • 输入框字段垂直排列
  • 消息气泡 max-width 80%

修复#

  • 修复 Waline API 返回结构解析(双层 data 嵌套)
  • 修复评论时间字段(time 替代 insertedAt)
  • 修复嵌套回复展示(展平评论树 + 缩进)
  • 修复评论按钮失效问题(client 替代 client

说说/足迹后台图片自动上传到图床、相册图床集成与瀑布流重设计、多页面 UI 统一、同步脚本修复

后台图片自动上传到图床#

  • 说说后台(/admin/moments/)新增 📤 上传图片按钮,支持选择文件直接上传到 CloudFlare ImgBed
  • 足迹后台(/admin/places/)同样新增上传功能
  • 支持多文件批量选择,实时显示上传进度
  • 上传前自动查重,已有同名文件直接复用,避免重复上传
  • 需配置 PUBLIC_IMAGEBED_URLPUBLIC_IMAGEBED_AUTH_CODEPUBLIC_IMAGEBED_API_TOKEN

相册图床集成#

  • 相册新增 imgbedFolder 字段,支持从图床文件夹动态加载图片
  • 创建相册只需指定图床目录,无需手动维护 photos 列表
  • 列表页自动拉取前 4 张图作为卡片预览,显示 ☁️ 图床标识

相册展示重设计#

  • 替换 DomeGallery 3D 球面照片墙为瀑布流布局(3 列,移动端 2 列)
  • 新增灯箱查看器:点击全屏查看,支持键盘左右切换、触屏滑动、Escape 关闭
  • 图片分批加载(每批 9 张,约 3 行),滚动到底部自动加载下一批
  • Hero 头部设计:首图作为背景,渐变遮罩,白色标题和胶囊标签
  • 底部加载动画为胶囊样式

多页面 UI 统一#

  • 统一以下页面的头部图标风格和周边距离:
    • 相册列表/详情、笔记本列表/详情、分类标签、更新日志、足迹地图
    • 应用导航、关于、友链、赞助、书籍、影视游戏
  • 图标统一为 text-[1.875rem] 直接显示风格(去掉方形背景包裹)
  • 标题 text-3xl font-bold,副标题 text-base text-neutral-600
  • 内容区域统一 padding 为 px-4 py-6 md:px-9

同步脚本去重修复#

  • 修复说说同步脚本同一天发布多条说说时,后续条目被误跳过并从 Gist 删除的问题
  • 修复足迹同步脚本同一天同一城市多个足迹被误跳过的问题
  • 去重逻辑从日期改为唯一标识(id),写入 frontmatter

说说自定义时间修复#

  • 修复自定义时间因 toISOString() 转 UTC 导致的 8 小时偏移
  • 修复 datetime-local 输入值缺少秒数导致构建报错

足迹后台优化#

  • 经纬度输入区域添加高德地图坐标拾取器链接
  • 获取坐标时详细地址自动覆盖城市字段

敏感信息迁移到环境变量、跑马灯优化、首页背景图无闪烁切换、评论系统修复、足迹页面优化、图片压缩

敏感信息迁移到环境变量#

  • 所有硬编码的 Key/Token/密码迁移到 .env 文件管理
  • 支持的环境变量:高德地图 Key、Umami 统计、Waline 评论、后台密码哈希
  • .env 已加入 .gitignore,不会上传到 GitHub
  • 创建 .env.example 模板文件
  • 部署平台(EdgeOne Pages/GitHub Pages)设置对应环境变量即可

跑马灯优化#

  • DOM 数量从 4 份减少到 3 份,降低内存占用
  • 移除 JS 动态计算宽度逻辑,改为纯 CSS 动画控制
  • 删除 initHomeTicker() 函数
  • 滚动速度提升一倍(30s → 15s)

首页背景图无闪烁切换#

  • 桌面端和移动端背景图都改为预加载后无缝切换
  • 初始 src 为空,随机图片预加载完成后才设置
  • 同时预加载背景图和装饰图,全部加载完成后一起切换
  • 彻底消除切换时的灰色闪烁和 home1/home.webp 闪烁

评论系统修复#

  • 删除 moments.astro 中重复的评论脚本,只保留 Layout.astro 中的
  • 修复 walineServerURL 变量作用域问题(移入 define:vars 块内)
  • 修复从首页进入说说页面评论加载失败的问题
  • 修复刷新页面后评论按钮无响应的问题

足迹页面优化#

  • 地图分类筛选栏改为默认收起,点击箭头展开
  • 移除下方地点列表区域,只保留地图展示
  • 添加 Waline 评论区

图片压缩#

  • 新增 pnpm compress-images 批量压缩脚本
  • 支持压缩 sjtapimobile-bghome 三个目录
  • 压缩率约 78%(64MB → 14MB)
  • 支持 --dry-run 预览、--quality 自定义质量、--dir 指定目录

Gist 数据图片备份#

  • 同步说说数据时自动下载图片到 F:\电脑备份文件夹\CloudFlare-ImgBed\telegram\手机uu
  • 同步影视数据时自动下载封面图到 F:\电脑备份文件夹\CloudFlare-ImgBed\telegram\anime
  • 已存在的图片自动跳过,不影响主流程

其他改进#

  • 个人资料小组件背景图改为静态图片
  • 恋爱小组件标题显示总天数
  • 关闭桌面端主页雨滴特效
  • 移动端加载动画硬超时缩短到 800ms

主页背景随机方案、无限滚动加载、封面图随机化、评论系统修复、移动端加载优化

主页背景图片随机方案#

  • 主页桌面端背景图支持多方案随机展示(home1/home2/home3/home4…)
  • 每个方案包含背景图(home.webp)和装饰图(home2.webp),作为一套使用
  • 自动扫描 public/assets/images/home/ 文件夹,新增方案无需改代码
  • 使用秒数轮转确保连续刷新不会重复显示同一方案
  • 移动端背景图独立随机,使用 localStorage 确保每次刷新都不同
  • 移动端背景图切换时添加淡入效果,避免闪烁

无限滚动加载#

  • 说说页面和更新日志页面添加无限滚动加载功能
  • 初始只显示前 5 条内容,滚动到底部自动加载下一批
  • 使用 IntersectionObserver 实现,支持降级方案
  • 添加加载动画指示器
  • 修复 Swup 导航后无限滚动失效的问题

文章封面图随机化#

  • 文章列表卡片封面图每次刷新页面都会随机切换
  • 服务端使用 Math.random() 实现,无需客户端 JavaScript
  • 支持 62 张随机封面图

评论系统修复#

  • 修复从其他页面导航到说说页面后评论按钮失效的问题
  • 评论事件监听器移到 Layout.astro(Swup 容器外部),保证始终执行
  • 使用事件委托处理所有评论按钮点击

说说页面优化#

  • 移除外部说说功能,简化页面结构
  • 添加无限滚动加载,提升页面性能

加载动画优化#

  • 移动端加载动画硬超时从 2 秒缩短到 800 毫秒
  • 桌面端加载动画硬超时从 2 秒缩短到 1.5 秒
  • Swup 导航时强制隐藏 PageLoader,防止阻挡其他页面点击

随机封面图脚本#

  • 新增 pnpm rename-images 命令,自动重命名图片为数字形式并更新配置
  • 新增 pnpm import-wallpapers 命令,从 Hao Wallpaper 导入壁纸

其他改进#

  • 个人资料小组件背景图改为静态图片
  • 恋爱小组件标题显示总天数
  • 关闭桌面端主页雨滴特效

分类页面卡片统一、音乐页面优化、移动端导航改进、应用展示页面、说说独立评论、更新日志展开、侧边栏组件升级

分类页面重构#

  • 分类页面文章卡片从 PostCard.astro 替换为 ArticleVirtualList.svelte,与文章列表页保持一致
  • 支持 list/grid 模式切换(骷髅开关)
  • 支持封面图隐藏开关(data-hide-covers
  • 标签区域改为折叠展开,默认显示前 8 个高频标签
  • 面包屑导航与标签筛选合并为一个卡片,减少多余间距

移动端文章页修复#

  • 修复移动端文章阅读页面顶部 ~88px 空白区域
  • 提升 mobile-dock.css.no-banner-layout 选择器特异性,覆盖 layout-styles.csstop: 5.5rem 规则

音乐页面优化#

  • 移除音乐页面主题切换逻辑(进入时强制暗色、离开时恢复),提升页面加载速度
  • 移除 <html> 上的 is-navigating-to-musicdark 类的 SSR 注入
  • 移除 Capture 阶段点击音乐链接时的暗色模式切换
  • 移除 Swup content:replace 中离开音乐页时的主题恢复逻辑
  • 音乐播放器添加返回首页按钮(home-outline-rounded 图标,位于下一首按钮右侧)

移动端播放器布局#

  • 音乐播放器控制区从横向三列改为上下三层布局
  • 第 1 行:歌曲信息(封面 + 名称 + 歌手)
  • 第 2 行:进度条
  • 第 3 行:控制按钮(居中显示,包含音量按钮)
  • 移动端音量按钮不再隐藏

应用展示页面#

  • 新增 /apps/ 页面,展示使用过的应用和工具
  • 复用友链卡片手绘风格,保留悬浮高度扩展动画(应用描述较长)
  • 支持标签筛选和分页
  • 在”关于”菜单下添加”应用展示”导航链接

友链卡片优化#

  • 友链卡片悬浮时去掉介绍框高度变化(2.2rem → 7.5rem),只保留阴影和圆角翻转动画

移动端导航栏优化#

  • Dock 工具按钮替换为暗亮模式切换按钮(太阳/月亮图标)
  • 滚动隐藏 Dock 时,右下角显示浮动工具按钮
  • 工具 Sheet 中新增”后台管理”入口(链接到 /admin/
  • 侧边栏菜单顺序调整:主页 → 网站导航 → 文章 → 动态 → 记录 → 关于

Swup 过渡修复#

  • 修复从分类页面导航到文章列表页面后布局错乱的问题
  • Swup content:replace 后派发 swup:content:replaced 事件
  • ArticleVirtualList 监听事件重新初始化 grid 列数和移动端检测

说说独立评论#

  • 每条说说卡片底部添加评论按钮,点击后展开独立评论区
  • 评论路径按 moment.id 独立存储(如 /moments/2026-06-30/
  • 使用 Waline 动态加载,首次展开时才加载 CSS/JS
  • 展开动画使用 grid-template-rows: 0fr → 1fr 丝滑过渡
  • 加载时显示骨架屏(闪光动画),Waline 渲染完成后淡入替换
  • 评论区上方分隔线改为虚线
  • 移除页面底部全局评论区
  • 移除桌面端 FloatingDock 和移动端 MobileDock 中的评论按钮

应用展示页面优化#

  • 应用卡片点击不再跳转外部链接,只播放悬浮动画
  • <a> 标签改为 <div> 标签

更新日志页面#

  • 点击更新卡片可在卡片内展开详细 Markdown 内容
  • 使用 grid-template-rows: 0fr → 1fr 丝滑展开动画
  • 内容样式使用 :global() 确保动态渲染元素正确显示
  • 展开时显示虚线分隔线

分类页面优化#

  • 去掉控制栏(骷髅开关 + 分类/归档按钮),页面更简洁
  • 优化标签区域与文章列表之间的间距(2rem → 1rem)
  • 分类页面 ECharts 图表(玫瑰图 + 标签图谱)改为懒加载,提升页面性能

侧边栏小组件升级#

  • 所有 WidgetLayout 组件添加圆角边框(10px)、朦胧阴影、hover 效果
  • 个人资料卡片重建:视频背景(亮色/暗色分别对应不同视频)、圆形头像、社交图标
  • 新增抖音热搜组件(DouyinHot):自动获取热搜数据,前 3 名红色高亮,5 分钟缓存
  • 新增天气组件(Weather):自动 IP 定位,显示温度、天气、AQI、最高/最低温,气象预警轮播显示
  • 恋爱小组件优化:头像间图标替换为 GIF,标题竖杠替换为 GIF,年月日分色显示
  • 移除站点访问量组件(首页已有统计)

移动端导航栏优化#

  • 移除浮动按钮的桌面端溢出 bug(添加 window.innerWidth 检测)
  • 浮动按钮组添加边框和毛玻璃效果

说说页面修复#

  • 修复 Swup 导航后评论按钮失效的 bug(添加防重复初始化机制)

新增朋友圈页面,展示好友最新文章动态;后台友链管理支持更多格式

朋友圈页面#

  • 新增 /circle/ 页面,自动抓取并展示好友最新文章
  • 数据来源:hexo-circle-of-friends Simple Mode,通过 EdgeOne 托管的 JSON 文件
  • 4 列响应式网格布局,支持无限滚动加载
  • 统计栏显示友链总数、活跃数、文章数

卡片设计#

  • 标题左上角,博主名称左下角胶囊标签
  • 头像右下角半透明水印,悬浮时放大变清晰
  • 日期覆盖在头像图层上方
  • 卡片悬浮上浮效果

动态通知条#

  • 从最新 6 篇文章中随机展示一条
  • 点击刷新按钮显示「钓鱼中…」动画后切换新文章
  • 博主名称橙色可点击,文章标题红色可点击

AI 摘要图标#

  • AI 摘要图标改为 OpenAI logo
  • 亮色模式显示黑色图标,暗色模式显示白色图标

后台友链管理#

  • 添加友链支持新的 YAML 格式识别
  • 支持 namelinkavatardescr 关键字
  • 兼容原有格式,两种格式均可识别

技术实现#

  • 使用 hexo-circle-of-friends 项目抓取好友文章
  • EdgeOne Pages 托管 data.json,配置 CORS 跨域
  • 自定义 Firefly 主题 CSS 选择器规则
  • Astro 组件样式使用独立 CSS 文件解决 scoped 失效问题
  • Swup 兼容:astro 事件 + 初始化标记重置

后台登录页全面改造,夜空背景、角色入场动画、表情交互系统

登录页夜空背景#

  • Canvas 绘制 120 颗闪烁星星,alpha 在 0.2~1 之间循环呼吸
  • 流星从右上角随机出现,每 2~7 秒一条,带白色头部光晕,滑向左下角

角色入场动画#

  • 紫色:变成正方块从左边页面外顺时针翻滚 360° 进来,落地后恢复原样
  • 蓝色:从上面页面外用边缘翻跟头下来,带 scaleY 压扁变形效果
  • 橙色:从左侧页面外小圆球形态一蹦一跳进来,弹跳间距递减
  • 黄色:从下方页面外地底先探出小脑袋,再逐渐钻出来
  • 四个角色依次入场,各有不同延迟

角色表情交互系统#

  • 默认状态:眼睛、嘴巴、身体全部跟随鼠标 3D 移动(faceX/faceY/bodySkew)
  • 开始输入密码:紫色前倾 + 蓝色靠拢互相看(0.8 秒),眼睛容器偏移
  • 隐藏密码输入中:紫色偷看键盘,蓝色靠拢,眼睛强制看向键盘方向,身体变高
  • 密码可见:所有身体转正,眼睛看向左上角假装不看,紫色每隔 2~5 秒偷瞄一次

角色造型调整#

  • 黑色小人改为蓝色 #3b82f6(夜空背景下可见)
  • 四个小人嘴巴各不相同:紫色微笑弧线、蓝色平线、橙色圆嘴、黄色大笑
  • 嘴巴跟随鼠标微微移动,增强 3D 效果

登录表单优化#

  • 新增用户名输入框,默认填充 dumplingandecake
  • 密码框右侧添加显示/隐藏切换按钮(👁/🙈)
  • 切换密码可见时角色会转头不看,眼睛偷偷瞄回来
  • 标题改为 “Welcome back!“,副标题改为 “输入密码以进入团子的后台”
  • 移除右下角主题切换按钮

相册页面优化#

  • 预览照片数量从 5 张改为 4 张
  • hover 摊开间隔从 80px 缩小到 30px

修复 Swup 客户端导航后页面不加载的问题,批量修正 19 个组件的事件名

朋友圈页面修复#

  • <script></MainGridLayout> 外移到内部,确保在 Swup 容器内
  • Swup 导航时脚本会被正确替换并重新执行
  • 添加 DOM 元素空值保护,避免脚本执行时元素未就绪
  • 添加 50ms 延迟确保 DOM 完全解析

Swup 事件名批量修复#

19 个组件的 Swup 事件名从 swup:contentReplaced 修正为 swup:content:replaced

  • 控件类:BackToHome、FloatingControls、FloatingDock、CategoryTools
  • 功能类:TypewriterText、GuestbookDetailModal
  • 布局类:CategoryBar、DropdownMenu、NavMenuPanel
  • 页面类:bangumi/TabNav、bangumi/FilterControls
  • 组件类:Calendar、Categories、CategoryRose、PostDirectoryList、SidebarTOC、SiteStats、TagGraph
  • 页面:changelog、projects

问题根因#

  • Swup 客户端导航只替换容器内的内容和脚本
  • 脚本放在 </MainGridLayout> 外面会被浏览器执行,但不在 Swup 容器内
  • 事件名错误导致页面切换后组件状态不更新

后台管理 UI 全面改造,极简克制风格,双栏布局,足迹迁移脚本

后台管理 UI 改造#

  • 全新后台管理界面,零外部依赖,纯 CSS 手写
  • 统一顶栏:横跨整个页面宽度,显示页面标题 + 博客品牌名
  • 深色侧边栏#0f0f14 深色背景,带微紫光晕,左侧 3px 紫色指示条标识当前页
  • 侧边栏图标:每个导航项前有图标(◉ 仪表盘、✎ 说说、▤ 笔记、⚭ 友链、▶ 影视、◎ 足迹)
  • 暗色模式:侧边栏始终深色不受影响,主内容区跟随切换
  • 移动端适配:侧边栏隐藏,顶栏显示汉堡按钮,点击下拉展开导航菜单

后台架构重构#

  • 新增 AdminLayout.astro 布局组件,所有后台页面共用
  • 登录页独立(无侧边栏),登录后所有页面共享侧边栏
  • 新增 /admin/dashboard/ 仪表盘页面,Token 统一在此管理
  • 子页面不再各自管理 Token,统一从 localStorage 读取
  • 移除子页面的 Token 输入栏和连接状态栏

双栏布局改造#

  • 说说、友链、影视、足迹管理页面统一改为双栏布局
  • 左栏:编辑/表单区
  • 右栏:列表/数据区
  • 桌面端左右各占一半,移动端自动堆叠
  • 笔记管理保持全宽(编辑器需要宽度)

迁移脚本修复#

  • gist-migrate 新增 places(足迹)迁移支持
  • 修复 .env 文件读取:脚本现在自动加载 .env 中的 GITHUB_TOKEN
  • 修复 readExistingIds 正则 bug:^# id: 改为 ^id:
  • 足迹迁移格式统一:文件名只用日期,用 date + city 组合去重
  • 数字标签自动加引号("2026" 而非 2026

CLI 更新#

  • pnpm cli gist-migrate 新增 places 选项
  • 帮助文本同步更新

分类标签页面 ECharts 图表改造,首页玻璃雨珠特效,网站导航管理脚本

构建错误修复#

  • 问题npm run build 报错 NoAdapterInstalled,无法构建
  • 根本原因src/pages/api/place.ts 声明了 prerender = false(需要 SSR),但项目未配置 SSR adapter
  • 分析:该 API 的 CRUD 功能实际未被使用(后台通过 GitHub Gist 存储数据),仅地理编码功能被调用
  • 修复:删除 api/place.ts,将地理编码改为前端直接调用高德 API

迁移脚本修复#

  • 修复 scripts/MigrationFootprint/index.jsremaining 逻辑 bug:无日期、重复、写入失败的条目现在始终保留在 Gist 中,避免默认模式下误清全部数据
  • 新增 --token=ghp_xxx 命令行参数支持,优先级:命令行 > 环境变量 > .env 文件 > config 文件
  • 修复 YAML 序列化:数组元素(tags 等)统一加引号,避免纯数字值(如 "2025")被解析为 number 类型导致 schema 校验失败

首页标题彩虹着色#

  • “Dumpling” 标题改为逐字母 <span> 渲染,每个字母独立着色
  • 颜色方案:D 深红 → u 珊瑚橙 → m 琥珀金 → p/l 浅金 → i 翡翠绿 → n 蓝色 → g 紫色
  • 逐字弹入动画:back.out(1.4) 弹性效果,0.04s 间隔依次入场
  • 修复 HatchEffect 铅笔线条效果:originalColor: true 保留字母原色,不再覆盖为白色
  • VFX canvas zIndex 降低为 10,避免遮挡弹窗等高层级元素

首页磨砂玻璃移除#

  • 移除人物图片(home2.webp)背后的 .home-hero__art-window 磨砂玻璃卡片(display: none
  • 原因:新更换的人物图实际为 PNG RGBA 格式(带透明通道),透明区域露出了下方的 backdrop-filter 效果

友链页面手绘风格改造#

  • 新增 FriendCard.astro 组件:垂直卡片布局,顶部胶带标签 + 头像 + 名字 + 介绍框
  • 手绘风格设计:稿纸横线背景、不规则圆角(255px 14px 225px 14px)、硬阴影偏移
  • 涂鸦头像 fallback:加载失败/超时时显示手绘脸(头发 + 眼睛 + 腮红 + 微笑),带眨眼动画
  • 介绍框悬停扩展:默认1行,hover 时扩展到6行,所有卡片统一高度
  • 标签筛选改为胶囊按钮 + 滑动指示器(ease-[cubic-bezier(0.4,0,0.2,1)]
  • 新增分页功能:每页9个友链,带页码导航
  • 头像按需加载:卡片可见时才注入 src 触发请求,解决 Swup 导航后 loading=lazy 不生效的问题
  • Gist 外部友链适配新卡片结构
  • 修复 Swup 导航后布局错乱:双帧 requestAnimationFrame 延迟定位指示器

分类标签页面改造#

  • 新增 CategoryRose.astro 组件:ECharts 玫瑰图(roseType: "area")展示分类分布,右侧分类列表支持 hover 放大
  • 新增 TagGraph.astro 组件:ECharts 力导向图展示标签共现关系,节点大小按文章数缩放,连线粗细按共现次数缩放
  • 新增 tag-graph-data.ts 工具函数:构建标签共现图谱数据(nodes + links),支持配置共现阈值
  • 标签图谱支持拖拽、缩放、平移,hover 高亮相邻节点(emphasis: adjacency
  • 图表动态加载 ECharts CDN,支持暗色主题实时切换
  • 点击图表节点/列表项跳转对应分类/标签页

首页玻璃雨珠特效#

  • 新增 Canvas 2D 雨珠系统:竖向水痕 + 底部圆点高光,模拟镜头玻璃上的雨水
  • 撞击迸溅:雨滴碰到聊天框(.home-hero__speech)和装饰角标顶边时生成扇形水花粒子
  • 底部迸溅:雨滴落到底部同样产生水花
  • 性能控制:雨滴数量 ~20-60 个,水花上限 90 个,移动端和减弱动效模式自动禁用
  • 雨珠固定白色,不随主题切换

网站导航管理脚本#

  • 新增 scripts/add-daohang/index.js:交互式添加网站导航条目
  • 自动获取 ICO 图标(调用 xxapi.cn 免费 API)
  • URL 查重:检测网址是否已存在,支持编辑模式(预填原值)和新建模式
  • 编辑模式:所有字段预填原值,回车保留,自动重新获取 ICO 以修复失效图标
  • 智能分类:预设分类 + 已有文件分类自动合并,支持创建新分类
  • 颜色选择:9 种预设颜色 + 自定义色值
  • 自动排序:新条目自动分配 order 值
  • 注册到 CLI 菜单:pnpm cli nav
  • 新增使用文档文章:《网站导航管理脚本使用指南》

新增足迹管理后台、Gist 暂存机制与本地迁移脚本,修复足迹地图 Swup 导航加载问题

足迹管理后台#

  • 新增 /admin/places/ 后台页面,支持在出门在外时通过浏览器快速创建足迹
  • 表单包含省份、城市、详细地址、日期、到访次数、体验描述、标签、照片等字段
  • 坐标获取:填写地址后一键调用高德地图地理编码 API(含 POI 搜索 fallback),自动填充经纬度
  • Token 输入框置于页面顶部,与说说、笔记本等后台保持一致的 UI 风格
  • 支持编辑、删除已有足迹条目

Gist 暂存机制#

  • 后台添加的足迹数据直接保存到 GitHub Gist(暂存库),不写入本地文件
  • 博客足迹页面只展示本地 Markdown 数据,与 Gist 暂存数据完全隔离
  • 数据格式与本地 frontmatter 字段一一对应,便于后续迁移

足迹迁移脚本#

  • 新增 scripts/MigrationFootprint/index.js,一键将 Gist 中的暂存足迹迁移为本地 Markdown 文件
  • 支持 --dry-run(仅预览)和 --keep-gist(迁移后保留 Gist 数据)参数
  • 自动按日期+省份+城市去重,同名文件追加序号

足迹地图 Swup 导航修复#

  • 问题:从首页导航栏点击跳转到足迹页面时地图不显示,需手动刷新才能加载
  • 根本原因:项目使用 Swup 进行页面切换,只替换 #swup-container 内容,不重新执行外部脚本;原脚本放在 #swup-container 外部,导航时不会执行
  • 修复:将初始化脚本通过 slot="head" 移入 <head>,利用 @swup/head-plugin 在导航时自动重新执行脚本

新增 Gist 数据迁移工具,支持将 GitHub Gist 中的说说、友链、影视、笔记本数据迁移到本地 Content Collection,迁移后自动清空 Gist 避免前端重复渲染;影视封面图自动下载并重写为自定义图床地址

修复音乐页面过渡闪现、侧边栏消失、浮动音乐播放器无数据源等问题

音乐页面 Swup 过渡闪现修复#

修复从其他页面导航到音乐页面时,侧边栏组件(个人卡片、日历、恋爱计时器等)短暂闪现并挤压页面内容的问题。

  • 根本原因:音乐页面使用 Layout.astro,其他页面使用 MainGridLayout.astro,两者 DOM 结构完全不同。Swup 只替换 5 个容器(#swup-container#left-sidebar-dynamic 等),但 #left-sidebar-wrapper#right-sidebar-static#main-grid 等非 Swup 容器会从旧页面残留
  • 修复方案:在 Swup visit:start 钩子中检测进出音乐页面时强制整页加载,绕过 Swup 的部分更新机制
  • 同时修复离开音乐页面后其他页面侧边栏消失的问题
  • 同时修复首次进入音乐页面时音乐资源不加载的问题(Svelte 组件和内联脚本需要完整页面加载才能正确初始化)

CSS 选择器修复#

  • 修复 music-visualizer.css#main-grid-wrapper(不存在的 ID)改为正确的 #left-sidebar-wrapper#right-sidebar-static 等选择器
  • 补充缺失的 #mobile-bottom-sidebar 选择器

浮动音乐播放器数据源修复#

修复右下角浮动控制栏(FloatingDock)打开音乐播放器后没有音乐源的问题。

  • 根本原因MusicManager 初始化时使用空的 localPlaylist(配置中为空数组),而浮动播放器的 MusicPlayer 依赖外部注入播放列表。由于脚本执行时序问题,MusicPlayer 可能在 MusicManager 创建单例之前执行,导致播放列表永远不被加载
  • 修复方案:让 MusicManager 在构建时从 bangumi 集合自动加载音乐播放列表并内置 Meting API 解析逻辑,不再依赖 MusicPlayer 的外部注入
  • 音乐页面和浮动播放器现在共享同一数据源,保持一致

新增后台影视管理功能 + 搜索聚合 + 多端数据同步

后台影视管理#

  • 新增后台影视管理页面(/admin/bangumi/),支持搜索并添加影视记录
  • 三源搜索聚合:同时搜索 TMDB、豆瓣、Bangumi,点击结果自动填充表单
  • 搜索结果显示封面缩略图、标题、年份、来源标签
  • 自动填充:标题、中文名、封面 URL、类型、标签
  • 支持手动调整:类型(动漫/电影/电视剧/纪录片/游戏)、状态、评分、标签、备注、时间
  • 封面预览功能
  • 编辑功能:已有数据支持修改所有字段
  • 删除功能
  • 影视数据存储在独立 GitHub Gist 中(bangumi.json

影视页面数据合并#

  • 影视游戏页面(/movies-games/)自动从 Gist 加载外部影视数据
  • 外部数据与本地数据按时间排序混合显示,不分离
  • 外部数据自动匹配对应分类 Tab(动漫/电影/电视剧/纪录片/游戏)
  • Tab 计数和筛选按钮计数(看过/在看/想看等)自动包含后台数据
  • 修复筛选按钮在本地无对应状态数据时被隐藏的问题
  • 修复抛弃状态数据不显示的问题
  • 修复首次进入页面数据重复插入的问题

最近更新组件同步#

  • 最近更新组件自动加载影视 Gist 数据,与本地数据合并显示
  • 数据按时间排序,不与本地数据分离

首页跑马灯同步#

  • 首页跑马灯公告自动统计影视 Gist 中最近 3 天更新的数据
  • [更新] 部分追加影视更新数量,与本地数据合并显示

影视脚本多源降级#

  • fetch-media 脚本新增多源降级策略:TMDB → 豆瓣 → Bangumi → 手动模式
  • 解决国内影视、动漫、纪录片在 TMDB 搜不到的问题
  • 下载函数添加 User-Agent 和 Referer 头,防止被服务器拒绝

新增后台友链管理功能 + 主题切换修复 + 多项样式修复

后台友链管理#

  • 新增后台友链管理页面(/admin/friends/),支持通过粘贴文本自动解析并添加友链
  • 支持格式:站点名称: xxx / 站点描述: xxx / 站点链接: xxx / 头像链接: xxx
  • 实时预览功能,输入时自动显示友链卡片预览
  • 友链数据存储在独立的 GitHub Gist 中(friends.json
  • 友链页面自动从 Gist 加载外部友链,与本地友链合并显示
  • 后台首页添加友链管理入口

主题切换修复#

  • 修复从其他页面进入说说页面后,导航栏亮暗色切换按钮点击无反应的问题
  • 原因:FloatingDock 使用模块脚本,Swup 替换内容后事件监听器丢失
  • 将主题切换改为 document 级别事件委托,不受 Swup DOM 替换影响

置顶说说页面修复#

  • 修复置顶页面图片无法点击放大的问题:添加 data-fancyboxdata-src 属性
  • 修复暗色模式下说说文字不可见的问题:var(--text-color) 改为 var(--deep-text)
  • 修复暗色模式下”置顶说说”标题不可见的问题

首页导航栏遮挡修复#

  • 修复首页 “Dumpling” 文字 VFX 特效遮挡导航栏的问题
  • 将 VFX canvas 挂载目标从 document.body 改为 hero 元素内部

影视游戏页面按钮样式改版#

  • Tab 切换和筛选按钮改为与更新日志一致的胶囊风格
  • 添加滑动指示器动画效果
  • 修复切换 Tab 时筛选指示器未初始化的问题

友链页面暗色模式修复#

  • 修复暗色模式下标签筛选按钮选中后背景为白色、文字也为白色导致看不清的问题
  • 按钮激活态添加 dark:text-neutral-900 确保暗色模式下文字为深色

修复 Swup 导航、页面按钮失效、样式问题等多个 bug

Swup 导航修复#

  • 修复后台管理页面之间切换时布局样式瞬间丢失、只显示文字的问题
  • 原因:后台页面使用 data-swup-ignore(Swup v3 属性),而 Swup v4 实际识别的是 data-no-swup
  • src/pages/admin/ 下 3 个文件共 9 处 data-swup-ignore 替换为 data-no-swup

Gist 数据首次加载失败修复#

修复多个页面首次访问时 Gist 数据不显示、需要刷新才能加载的问题。根本原因相同:脚本被放在 <MainGridLayout> 组件标签外部,Astro 将其渲染到 </body></html> 之后,导致 Swup 导航时脚本无法被正确执行。

  • 置顶说说页面 (/moments/pinned/):将脚本移入 <MainGridLayout> 内部
  • 笔记本索引页面 (/life/notebooks/[slug]):将远程笔记加载脚本移入 <MainGridLayout> 内部
  • 云端笔记页面 (/life/notebooks/remote-entry/):将笔记内容加载脚本移入 <MainGridLayout> 内部

说说页面标签不可点击修复#

  • 修复说说页面外部 Gist 数据的标签点击后无反应的问题
  • 原因:MainGridLayout.astrocreateCard() 函数创建标签时使用 <span> 元素而非 <a> 链接
  • 改为创建 <a href="/archive/?tag=..."> 元素,与置顶页面和 MomentCard 组件行为一致

说说页面切换闪烁优化#

  • 优化从置顶页面返回说说页面时的样式闪烁问题
  • 原因:两个页面各自有 <style is:global> 块定义卡片样式,Swup 的 updateHead 在切换时先移除旧样式再添加新样式,导致短暂无样式状态
  • 将共享的卡片样式提取到 src/styles/features/moments.css 持久 CSS 文件中,通过 main.css 加载
  • moments.astropinned.astro 中移除重复的 <style is:global>

多个页面按钮首次访问失效修复#

修复文章列表、更新日志、影视游戏页面首次访问时按钮点击无反应的问题,原因相同:脚本在 </MainGridLayout> 外部。

  • 文章列表页面 (/posts/):将布局切换脚本从模块脚本改为 <script is:inline>
  • 更新日志页面 (/changelog/):将筛选脚本移入 <MainGridLayout> 内部
  • 影视游戏页面 (/movies-games/):将交互脚本移入 <MainGridLayout> 内部

影视游戏页面按钮样式改版#

  • 将 Tab 切换和筛选按钮从 Tailwind 类名切换风格改为与更新日志页面一致的胶囊风格(.tools-tab-pill
  • 添加滑动指示器动画效果
  • 修复切换 Tab 时筛选指示器未初始化的问题

笔记本预览样式优化#

  • 修复远程 Gist 笔记预览显示标题而非内容的问题,改为与本地笔记一致只显示日期和内容预览
  • 为远程笔记预览添加 Markdown 格式渲染(粗体、斜体、行内代码、链接、换行)
  • 修复本地笔记预览丢失换行效果的问题,保留 <br> 换行标签而非去除所有 HTML
  • 本地和远程笔记预览现在都支持 Markdown 格式和换行显示

首页导航栏遮挡修复#

  • 修复首页 “Dumpling” 文字的 VFX 特效 canvas 遮挡导航栏的问题
  • 原因:VFX 库创建的 canvas 使用 position: fixed + z-index: 9999,覆盖在导航栏之上
  • 将 VFX canvas 的挂载目标从 document.body 改为 hero 元素内部,使用 position: absolute 使其跟随滚动

置顶说说页面修复#

  • 修复置顶说说页面图片无法点击放大的问题:为动态创建的图片添加 data-fancyboxdata-src 属性
  • 修复暗色模式下说说文字不可见的问题:将不存在的 var(--text-color) 改为 var(--deep-text)

音乐页面重设计 + 导航栏重组 + 分页修复 + 友链按钮

音乐页面重设计#

  • 全新沉浸式黑胶唱片播放器 UI(旋转唱片 + 唱针臂动画)
  • 桌面端左侧播放器 + 右侧歌词并排布局
  • 移动端播放器 + 歌词 + 播放列表纵向堆叠
  • 歌词 3D 景深效果(当前行放大高亮,上下行渐变模糊)
  • 亮色模式白色背景适配博客主题风格
  • 暗色模式深色沉浸式背景 + 封面模糊光晕
  • 播放列表带封面缩略图 + EQ 动画指示器
  • 播放按钮暗色模式图标改为深色(解决白色不可见问题)
  • 修复 MusicManager 未初始化时按钮无响应的问题(轮询等待机制)
  • 修复歌词行样式因 Astro scoped CSS 不匹配动态元素的问题

导航栏重组#

  • 「文章列表」「分类」「归档」合并为「文章」下拉菜单
  • 导航栏结构更简洁

分页修复#

  • 修复文章列表分页 /2/ 显示 404 的问题
  • Pagination 组件根据当前路径自动推断基础路径

首页跑马灯#

  • 统一摘要项之间的间距(组内和组间使用相同间隔)
  • 移除单独的分隔符元素,间隔直接嵌入文本内容

友链页面#

  • 右上角新增黑色背景「添加友链」按钮
  • 点击平滑滚动到评论区

笔记后端系统 + 骷髅封面开关 + 太阳月亮主题切换 + 欢迎卡片改造 + 远程数据合并

笔记后端系统(GitHub Gist)#

  • 新增 externalNotebooksConfig 配置,每个笔记本对应独立 Gist 仓库
  • 新增 /admin/notebooks/ 笔记本管理页面(选笔记本 → 写 Markdown → 存 Gist)
  • 新增 /admin/notebooks/detail/ 笔记编辑页面(Markdown 编辑器 + 实时预览)
  • 新增 /life/notebooks/remote-entry/ 远程笔记阅读页(样式与本地笔记一致)
  • 前端笔记本页面自动合并显示远程笔记(通过 Gist Raw URL 获取,无需 API 认证)
  • 笔记编辑器支持工具栏快捷插入(加粗、斜体、代码块、链接、图片、引用、列表)
  • 6 个快速笔记模板(每日总结、日记、读书笔记、灵感、待办、空白),可在配置文件中自定义

主题切换改造#

  • 导航栏骷髅头主题切换改为太阳/月亮图标按钮(旋转 + 透明度过渡动画)
  • 首页封面图开关从笑脸拨动开关改为骷髅头滑块样式
  • 骷髅头滑块支持二态切换(封面开启/关闭)

首页样式调整#

  • 封面关闭时文章卡片显示 2.5px 黑线框(暗色模式为白线框)
  • 分类/归档按钮边框同步调整为 2.5px + var(—deep-text) 颜色
  • 骷髅头按钮左边缘与文章卡片黑线对齐
  • 导航栏按钮 hover 时不再显示背景色

欢迎卡片改造#

  • 翻转逻辑从拖拽点击改为「查看详情」按钮翻转
  • 背面新增「返回」按钮翻回正面
  • 按钮下方显示「↕ 拖拽弹射」提示文字
  • 移除卡片显示时的背景暗化效果(遮罩层改为透明)
  • 正面摘要和背面列表自动合并远程说说和笔记数据

最近更新小组件#

  • 侧边栏最近更新小组件自动获取远程说说和笔记数据
  • 使用 Gist Raw URL 获取数据(Secret Gist 也能访问)
  • 整体条数限制为 10 条(本地 + 远程合并)
  • 远程数据最多显示 3 条,其余留给本地数据
  • 支持桌面端和移动端两个实例同时更新

暗色模式全面修复 + 样式架构重构 + 首页工具栏改造 + 导航栏骷髅主题开关

暗色模式色调修复#

  • 修复导航栏链接在暗色模式下不可见的问题(btn-plain 文字色)
  • 修复文章目录(侧边栏 + 浮动目录)暗色模式文字不可见
  • 修复 PostMeta 日期/分类/标签/浏览量暗色模式不可见
  • 修复 text-50、text-30、text-75 等文字透明度工具类暗色模式失效
  • 修复今日一言小组件使用不存在的 --text-color 变量
  • 修复笔记本详情页硬编码背景色(#fff/#1a1a1a)改用设计令牌
  • 修复音乐播放按钮暗色模式图标不可见
  • 修复分类小组件徽章数字暗色模式不可见
  • 修复所有 bg-(--primary) text-white 按钮暗色模式白底白字

设计令牌调整#

  • 暗色模式 --primary 从 oklch(0.85) 改为 oklch(0.98)(更白)
  • 暗色模式 --title-active 从 oklch(0.70) 改为 oklch(0.80)

样式架构重构#

  • variables.styl 迁移为纯 CSS(tokens/colors.css、breakpoints.css、animation.css、z-index.css)
  • main.css(938行)拆分为 17 个模块文件(base/components/features/layout/transitions/vendor)
  • markdown-extend.styl 迁移为 CSS
  • 4 个组件的 Stylus 样式迁移为纯 CSS
  • 建立 CSS Cascade Layers 分层架构

Swup 过渡修复#

  • 修复子元素 onload-animation 与容器双重 opacity 冲突
  • 修复过渡期间 Banner 高度跳动
  • 修复隐藏侧边栏容器动画期间闪烁
  • 将 lg 类切换从 visit 移到 content

首页工具栏改造#

  • 移除顶部 CategoryBar 分类导航栏
  • 新增 CategoryTools 组件(封面图开关 + 分类气泡菜单)
  • 封面图开关采用拨动开关样式(:) / :( 表情)
  • 分类按钮采用 BubbleMenu 样式(药丸形状、奇偶交替旋转、弹入动画)
  • 工具栏仅在首页显示

侧边栏调整#

  • 左侧边栏关闭:公告、音乐、分类、标签、生活统计
  • 右侧边栏日历和站点统计移到左侧边栏底部
  • 站点统计合并影视/书籍/游戏/音乐/足迹/日常规划为「记录次数」

导航栏改造#

  • 主题切换按钮从右下角浮动栏移到导航栏登录按钮左侧
  • 采用 an.md 骷髅开关样式(原版 CSS + scale 缩放适配)
  • 封面图开关默认为隐藏状态

修复管理员页面 CSS 泄漏导致文章阅读页主题色被覆盖为紫色的 bug;将管理员页面 style 从 is:global 改为 is:inline 防止全局污染

修复相册页面样式问题:亮色模式白色背景+白色模糊,暗色模式黑色背景+黑色模糊;修复图片放大查看不居中、长图被裁剪的 bug

右下角浮动坞功能扩充与移动端清理:浮动坞新增分类按钮(folder-outline 图标,展开抽屉展示分类列表及文章数)和公告按钮(campaign-outline-rounded 图标,展开抽屉展示公告内容与链接);音乐小组件与浮动坞音乐源统一为 bangumi 收藏数据,不再使用硬编码播放列表;移动端底部移除分类、标签、站点访问量小组件(已迁移至浮动坞);移动端底部关闭音乐与公告组件(已由浮动坞按钮替代);AI 摘要夜间模式字体颜色修复(改用 --deep-text 而非未定义的 --text-color);导航栏站点 Logo 去掉 hover/click 阴影;新增首次访问欢迎提示(浮动坞上方三条独立消息:中文化地理位置、时段问候、功能引导,点击空白处关闭,关闭后 24h 内不重复弹出,带滑入/滑出动效)

导航栏重构:去除玻璃模糊毛玻璃效果改为纯色背景,向下滚动自动隐藏、向上滚动自动显示,滚动收缩后保持直角边框

全局优化与修复:赞助页面去掉 ko-fi 与爱发电;站点总访问量小组件上线并仅限非文章页显示;侧边栏组件 Swup 导航后空白修复(改为客户端显隐控制);文章页目录彻底从左侧移至右侧;今日一言去掉 ✨ 装饰;影视游戏页面 Tab / 筛选按钮首次点击无反应修复(改为事件委托);右下角浮动坞添加文章页文章/目录入口;导航栏去毛玻璃改为滚动显隐;多处暗色模式适配(相册、书架、更新日志、规划、足迹、恋爱计时、最近更新、留言板卡片堆叠、说说页缩略图)

全局 UI 美化:相册页面瀑布流重设计(预加载尺寸防跳变、Lightbox 跨页滑动修复、暗色模式适配)、留言板暗色模式卡片堆叠优化、说说页面视觉分隔增强(移除分页、强制正方形缩略图、超出9张可滑动查看)、工具导航页复刻胶囊动画 Tab、书架页面暗色修复与新图标、更新日志时间线重设计、规划与足迹页面简化、恋爱计时与最近更新小组件暗色适配、右下角浮动坞新增全部文章/目录入口、文章页目录从左侧移至右侧、导航栏去除毛玻璃改为滚动显隐

笔记本系统全面重构:封面 Hero 区域、Markdown 渲染详情页、等大卡片网格、多图支持、评论组件、相关阅读排序优化、页脚装饰图、导航栏笔记本入口、最近更新日记显示优化、樱花特效改为苍蝇飘落并支持一键开关

优化右下角快捷按钮:移除文章切换与附近文章入口,新增全站文章目录与移动端快捷入口,并修复 Swup 页面切换后标签、目录等按钮失效的问题

FAB 三点菜单新增文章切换功能:横向展开展开上一篇/下一篇快捷按钮,中间按钮支持选择附近文章快速跳转

FAB 三点菜单多项增强:新增全站标签面板、文章列表封面图一键隐藏开关、目录面板定位优化、项目导航页改为分类筛选模式

修复 Swup 页面过渡失效及移动端导航下拉菜单在页面切换后无法展开的问题

文章新增 order 排序字段,同日期文章可按指定顺序排列展示,不再随机乱序

新增影视封面下载脚本 fetch-media.py,支持 TMDB 搜索、海报下载、自动生成 bangumi md;影视卡片点击改为跳转详情页

新功能:fetch-media.py 影视脚本 + 影视卡片交互优化#

新增:

  • scripts/fetch-media.py:输入影视名称即可通过 TMDB API 搜索影视信息,自动下载海报封面到本地,生成符合博客 bangumi 格式的 Markdown 文件
  • 支持快速模式(-y)和交互模式,TMDB 搜不到自动降级为手动填写
  • 封面图自动保存在 scripts/img-anime/,MD 文件输出到 src/content/bangumi/anime/

变更:

  • 影视与游戏页面卡片点击行为改为跳转站内 /bangumi/{slug}/ 详情页,不再跳转外部 Douban 链接

新增更新日志页面,时间轴展示功能迭代、问题修复等变更记录,支持按类型筛选

精简随机封面图列表并修复刷新页面封面随机切换的问题

封面图系统优化#

变更内容:

  • 精简 re.tsh520.cn 封面图 API 列表,从 96 个删减至 33 个
  • 新增 ph.0824.uk 封面图源,补充 72 个横屏封面
  • 修复刷新页面时封面图随机切换的问题:客户端优先使用服务端基于文章 seed 确定的图片,不再每次随机覆盖

修复音乐页面歌词滚动容器过小导致当前行无法居中;修复移动端首页浏览量显示为--的问题

fetch-lrc.py 合并搜索下载模式,支持直接搜歌名下载音频+封面+歌词+生成md;文件名自动清理空格与特殊符号

新增 fetch-lrc.py 脚本,支持从 M4A 提取内嵌封面、通过 Meting API 下载同步歌词、自动生成博客音乐 md 文件

自建 Meting API 服务并部署至腾讯云服务器,支持网易云/QQ音乐/酷狗等平台音乐搜索与音频获取

音乐系统回归本地模式,移除 Meting API 依赖

音乐系统回归本地模式#

将博客音乐播放器从 Meting API 动态获取切换回本地音乐文件模式。

变更内容:

  • musicConfig.ts 模式切换为 mode: "local"
  • 保留三首本地歌曲:知我、女孩、爱得起
  • 歌曲文件托管于 re.tsh520.cn/music/

原因: Meting API 对部分热门歌曲(如周杰伦)存在版权限制,音频地址返回 404,影响播放体验。本地文件模式更稳定可靠。

加载中...
[ 公告 ]

如果你喜欢,那么欢迎来到我的世界!

了解更多
[ 音乐 ]
封面

音乐

暂未播放

0:000:00
暂无歌词
找不到相关结果。
[ contents ]
[ 全部文章 ]
工具