TimOxO 发布于
>=2.22.1
🎉新年快乐!
此版本为测试版本,改动较大,使用时请务必备份数据库和附件!
✨ 新功能
- URL 引用自动替换 - 全新的引用替换系统,支持在文章、页面、评论、回复、用户资料、系统/主题/插件设置、瞬间、图库、
文档等所有内容类型中自动替换 URL 引用 - 断链一键替换 - 断链详情面板新增「替换为新 URL」功能,可将断链 URL 替换为有效链接,自动修改所有引用位置
- 重复文件删除时自动替换引用 - 删除重复附件时可选择自动将内容中的旧链接替换为保留附件的链接
- 批量处理自动替换引用 - 批量处理(压缩/格式转换/水印)导致文件名变化时,可自动更新内容中的旧链接
- URL 替换日志 - 记录每一处 URL 替换操作的详情(旧/新 URL、来源类型、内容名称、成功/失败状态),支持分页查询和清
- 内置中文水印字体 - 内置文泉驿微米黑字体,解决 Docker 等无中文字体环境下水印文字乱码问题
- 自定义水印字体 - 设置面板新增字体名称配置项,支持指定服务器已安装的字体
- 断链原因展示 - 断链结果新增显示断链原因(HTTP 404、连接失败等)和原始 URL
- 断链按原因筛选 - 断链列表新增原因过滤下拉框,可按 HTTP 404、连接失败等类型快速定位特定断链
- HTTP 代理支持 - 新增代理设置,断链检测和链接检查支持通过 HTTP 代理进行,适用于无法直接访问外网的服务器环境
- 重复文件引用信息展示 - 重复文件列表新增显示各文件在内容中的引用情况,辅助判断应保留哪个文件
🐛 问题修复
- 修复前端扫描状态不一致 - 统一前后端状态常量(
error→ERROR、scanning→SCANNING、completed→
COMPLETED) - 修复扫描错误回调静默失败 - 扫描错误时的 subscribe 回调增加错误处理,避免状态更新失败被吞掉
- 修复断链扫描状态残留 - 引用扫描失败时同步将断链扫描状态更新为 ERROR,避免断链扫描永远停留在 SCANNING
- 修复重复检测未排除分组/策略 - 重复文件扫描现在正确应用排除分组和排除策略过滤
- 修复批量处理文案错误 - 「将被可能会被会重命名」修正为「将会被重命名」
- 修复轮询定时器内存泄漏 - 分析面板各 Tab 组件卸载时正确清理轮询和防抖定时器,避免组件销毁后定时器继续运行
- 修复批量处理进度清除竞态 - 内存进度清除时机从处理中移至
doOnSuccess回调,避免处理完成前提前清除进度 - 修复日志统计性能问题 - 处理日志和清理日志的统计逻辑从 Endpoint 层全量加载内存聚合改为 Service 层使用 Extension
索引查询 - 修复断链白名单 API 路径错误 - 前端白名单接口地址修正为正确端点
- 修复白名单添加使用错误 URL - 白名单添加改为使用
originalUrl,与实际检测 URL 保持一致
🔧 改进优化
- 断链检测架构重构 - 断链检测逻辑从
ReferenceServiceImpl抽离为独立的BrokenLinkDetector和
LinkChecker,支持自定义 HTTP 检测超时和检测并发数 - 引用扫描上下文重构 - 新增
ReferenceScanContext统一管理扫描状态,取代散落的 ConcurrentHashMap - 内容更新处理器架构 - 新增
ContentUpdateHandler接口体系,各内容类型(Post/Page/Comment/ConfigMap/Plugin
等)独立处理 URL 替换 - 引用列表组件复用 - 新增
ReferenceList公共组件,断链/引用/重复三个 Tab 统一展示引用来源 - 水印字体多级回退 - 智能加载策略:用户指定字体 → 内置中文字体 → 系统默认字体
- Extension 索引优化 - ProcessingLog、CleanupLog 和 UrlReplaceLog 新增时间、状态、来源、文件名等索引,提升查询性
- 统一乐观锁重试 - 新增
RetryUtils统一重试策略,替换各处散落的重试代码 - 统一超时计算 - 新增
TimeoutUtils,连接超时自动取配置值的 1/3(上限 30s) - 推荐保留策略优化 - 重复文件推荐保留项改为选择最晚上传的(而非最早),推荐项不再禁用勾选
- 清理日志端点独立 - 清理日志 API 从
CleanupEndpoint拆分为独立的CleanupLogEndpoint - 处理来源和清理原因枚举化 -
ProcessingSource和CleanupReason从字符串改为枚举类型,提高类型安全 - 支持 DocTree 扫描 - 引用扫描新增对
doc.halo.run/v1alpha1/DocTree类型的支持 - 清理日志 UI 重构 - 统计卡片和表格样式更新
- API 路径规范化 - REST API 路径统一去除连字符(
batch-processing→batchprocessing、broken-links→
brokenlinks、cleanup/logs→cleanuplogs) - 移除 Overview 端点 - 移除不再使用的仪表盘概览端点,简化 API 结构
- URL 替换安全机制 - 新增
UrlReplacer工具类,基于正则的安全 URL 替换,避免替换完整 URL 内部的相对路径子串 - ContentScanner 路径匹配优化 - 相对路径匹配范围扩大,新增位置排除逻辑避免将完整 URL 内的子路径误匹配为相对路径
- 日志级别优化 - 常规操作日志从
info降为debug,可恢复错误从error降为warn,减少日志噪音 - 批量处理下载兼容性 - 下载请求添加
User-Agent和Referer请求头,提高与目标服务器的兼容性 - 角色模板权限调整 - displayName 从「存储工具箱查看」改为「存储工具箱管理」,更准确反映权限范围
- BrokenLinkScanStatus GVK 修正 - plural/singular 从
brokenlinkstatuses修正为brokenlinkscanstatuses - 前端筛选自动重置页码 - 处理日志筛选条件变更时自动重置到第一页
⚠️ 配置变更
- 设置分组
global重命名为basic(基础设置),升级后可能需要重新配置 - 重复检测配置独立为
duplicateScanning分组 - 断链检测配置独立为
brokenLink分组,新增 HTTP 超时(1-30秒)和并发数(1-20)配置 downloadTimeoutSeconds从批量处理设置移至基础设置(全局共用)- 最大文件大小默认值从 10MB 调整为 20MB
- 排除分组/排除策略的作用范围扩展至引用扫描、重复检测和断链检测
- 断链检测新增「检测外部链接」开关和「附件 URL 前缀」配置
- 新增代理设置组 -
proxy分组,包含代理开关、代理主机、代理端口三项配置 - 水印字体
fontName默认值从SansSerif改为空(空值时自动使用内置中文字体)
⚠️ 注意事项
[重要] 此版本为测试版本,改动较大,升级前请务必备份数据库和附件!
[重要] URL 引用替换为测试版功能,会直接修改文章/页面/评论/设置中的内容,请谨慎使用并做好备份!
[重要] 批量处理模式下,如选择"不保留原图",原文件将被删除,可能导致原有引用链接失效!请谨慎操作或选择"保留原图"模式。
[重要] 删除操作不可逆!删除重复文件或未引用文件前,请务必确认并做好备份。
[重要] 设置分组结构有调整(
global→basic),升级后请检查并重新配置相关选项。
[重要] REST API 路径有变更(去除连字符),如有外部集成或自定义脚本请注意更新接口地址。
Generated from v0.3.0-beta.2
资源下载
- plugin-storage-toolkit-0.3.0-beta.2.jar
