相册全面图床化:9 个相册统一 imgbedFolder 动态加载,photos 静态列表废弃
更新日志
记录博客项目的功能迭代、问题修复与重要变更
架构重构、页面过渡优化、门户区白条修复、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.html、sakura.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-wrapperclass - 在
<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.__postBreadcrumbInitedguard 防重复初始化- 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.__mobileDockInitedguard - 防止 Swup 导航导致事件监听器累积
- 添加
首页背景动态切换#
- 使用
import.meta.glob构建时扫描public/assets/images/backgrounds/desktop/和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_URL、PUBLIC_IMAGEBED_AUTH_CODE、PUBLIC_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批量压缩脚本 - 支持压缩
sjtapi、mobile-bg、home三个目录 - 压缩率约 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.css的top: 5.5rem规则
音乐页面优化#
- 移除音乐页面主题切换逻辑(进入时强制暗色、离开时恢复),提升页面加载速度
- 移除
<html>上的is-navigating-to-music和dark类的 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 格式识别
- 支持
name、link、avatar、descr关键字 - 兼容原有格式,两种格式均可识别
技术实现#
- 使用 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.js的remaining逻辑 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-fancybox和data-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.astro中createCard()函数创建标签时使用<span>元素而非<a>链接 - 改为创建
<a href="/archive/?tag=...">元素,与置顶页面和 MomentCard 组件行为一致
说说页面切换闪烁优化#
- 优化从置顶页面返回说说页面时的样式闪烁问题
- 原因:两个页面各自有
<style is:global>块定义卡片样式,Swup 的updateHead在切换时先移除旧样式再添加新样式,导致短暂无样式状态 - 将共享的卡片样式提取到
src/styles/features/moments.css持久 CSS 文件中,通过main.css加载 - 从
moments.astro和pinned.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-fancybox和data-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,影响播放体验。本地文件模式更稳定可靠。
如果你喜欢,那么欢迎来到我的世界!
了解更多音乐
暂未播放
- 博客指南
- 使用 PagesCMS 给静态博客接入后台2026-08-07
- 使用 hexo-circle-of-friends 搭建博客朋友圈2026-07-13
- 足迹页面使用指南:地图与数据格式2026-07-11
- Gist 数据迁移工具使用指南2026-06-30
- AI摘要实现原理解析2026-06-05
- 博客导航栏模块完整构建方案2026-05-29
- 影视封面一键下载与博客导入教程2026-05-18
- M4A音乐自动提取歌词与封面教程2026-05-16
- 微信读书 × Obsidian × Astro 博客:阅读数据与笔记的完美集成方案2026-05-09
- AI摘要打字机使用指南2026-05-07
- Obsidian 笔记同步指南2026-04-21
- 博客使用指南2026-04-18
- 技术分享
- Obsidian 插件:Category Autofill——自动维护文章分类2026-08-15
- Obsidian 插件:Slash Menu——写作时输入 / 就好2026-08-15
- CloudFlare-ImgBed系列-随机图API使用指南2026-08-13
- AstrBot 使用踩坑记录2026-08-12
- 把博客后台搬进微信:随手一条消息就能发动态、笔记、足迹2026-08-11
- 手把手教你用 EdgeOne 加速 Vercel 部署的项目(源站域名分离法)2026-08-10
- CloudFlare-ImgBed 系列:WebDAV + WinSCP 本地备份 Telegram 图片2026-08-08
- 手把手教你用 EdgeOne 加速 Cloudflare 图床,国内访问从 8 秒降到 0.15 秒2026-07-31
- 说说评论系统全面升级:每条说说独立评论区2026-07-27
- Waline 评论系统自动备份到 GitHub2026-07-27
- Waline 部署教程:云服务器篇2026-07-27
- Meting-API-使用指南2026-07-26
- Meting-API 部署服务器指南2026-07-26
- 使用宝塔面板部署 AstrBot 与 NapCat 实现 QQ 机器人2026-07-25
- 网站ICO 图标管理脚本使用指南2026-07-12
- 博客命令行工具箱2026-05-20
- CloudFlare-ImgBed + Telegram 图床 + PicGo + Obsidian 自动上传全流程教程2026-05-12
- 记录博客文件的最佳存储方式2026-05-10
- ZeppLife刷步数全教程2026-04-24
- 网络教室脱离控制方法2025-11-18
- 开发工具
- Git的命令学习记录2026-08-15
- 微信阅读插件主题模板2026-08-15
- 羊毛分享
- 35 块钱的 AI 编程订阅,我从早用到晚,进度条都不带动一下2026-08-08
- 已弃用
- 用 GitHub Gist 做博客数据存储2026-06-12
- 英语学习方法2026-03-11
- 英语词根2026-03-01
- 英语词缀2026-03-01
- 计算机专用英语2026-02-25
- 资源整理
- 软件下载2026-04-14
- ai使用
- DeepSeek 没有图片识别功能?自己给它加一个2026-08-10
- OpenCode Go 接入 CC Switch:Claude Code 原生 API 格式配置教程2026-08-08
- Claude Code Skills 介绍:我正在使用的 18 个实用技能2026-07-15
- Claude Code 常用命令2026-06-09
- english笔记本
- 48个音标2026-08-15
- 48个音标2026-03-01
- java笔记本
- java菜鸟
- IO流2026-03-11
- Java 反射2026-03-11
- Java 网络编程2026-03-11
- Java动态代理2026-03-11
- 多线程2026-03-11
- 常用类2026-03-11
- 泛型2026-03-11
- 集合2026-03-11
- 枚举、注解、异常2026-03-03
- 面向对象2026-03-02
- 面向对象(高级)2026-03-02
- Java基础2026-02-06
- Java基础2026-02-06
- javawebai
- 后端基础
- 日志技术2026-05-22
- 开发规范与工程搭建2026-05-21
- 部门新增功能2026-05-21
- 部门删除功能2026-05-21
- 部门修改功能2026-05-21
- 部门查询功能2026-05-21
- JDBC介绍与连接2026-05-19
- JDBC增删改操作2026-05-19
- JDBC查询操作2026-05-19
- Mybatis基础2026-05-19
- SpringBoot配置文件2026-05-19
- 数据库基础概念2026-05-18
- MySQL数据模型2026-05-18
- MySQL安装与连接2026-05-18
- SQL-DDL语句2026-05-18
- SQL-DML语句2026-05-18
- SQL-DQL语句2026-05-18
- SpringBootWeb入门2026-05-17
- HTTP协议概述2026-05-17
- HTTP请求与响应2026-05-17
- SpringBootWeb案例2026-05-17
- 三层架构与分层解耦2026-05-17
- IOC与DI2026-05-17
- Maven概述与核心作用2026-05-16
- Maven模型与仓库2026-05-16
- Maven安装配置与常见问题2026-05-16
- Maven坐标与依赖管理2026-05-16
- Maven生命周期2026-05-16
- 单元测试与JUnit2026-05-16
- 前端基础
- JS对象与JSON2026-05-15
- JS变量与常量2026-05-15
- JS数据类型2026-05-15
- JS函数2026-05-15
- JS事件监听2026-05-15
- Vue框架概述2026-05-15
- Vue指令-v-for2026-05-15
- Vue指令-v-bind2026-05-15
- Vue指令-v-if与v-show2026-05-15
- Vue指令-v-model2026-05-15
- Vue指令-v-on2026-05-15
- Axios库使用2026-05-15
- Ajax与异步编程2026-05-15
- Vue生命周期2026-05-15
- Web标准与浏览器内核2026-05-14
- HTML基础2026-05-14
- HTML媒体标签2026-05-14
- HTML表格与表单2026-05-14
- CSS布局2026-05-14
- CSS核心2026-05-14
- mysql数据库
- MySQL常用命令2026-04-14
- python
- Python3学习笔记2026-08-15
- Python 基础教程 | 菜鸟教程2026-07-20











