TypeRenew v1.5.1 Release 现已正式发布,这是基于 v1.5.0 版本的迭代更新版。本次升级主要做了几件事:前端依赖整体翻新、后台 UI 主题令牌重构、安全防护补强、几处性能优化与历史 Bug 修复,继续把"轻量、稳定、安全"这件事做扎实。
核心更新内容
本次更新覆盖前端依赖升级、内核现代化、安全加固、后台 UI 重构、性能优化与历史 Bug 修复等多个维度,核心优化与修复内容如下:
底层内核兼容优化
- jQuery 从 2.1.1-rc2(停留在 2014 年的候选版)升级至官方最新稳定版 3.7.1,解决长期遗留的安全和兼容问题
- 同步将 jQuery UI 升级到 1.13.3,未采用官方完整包,仅保留项目实际使用的日期选择、滑块、高亮等组件重新打包,体积控制在 79KB 左右,与升级前基本持平
- 逐一修复 jQuery 3.x 破坏性变更带来的兼容问题,包括 iframe 加载事件绑定方式、$.trim、$.parseJSON 等已废弃 API
- 修复 timepicker 字段误显问题,补上 .ui_tpicker_unit_hide 隐藏规则
- 升级 IANA 时区系统,从固定 UTC 偏移量改为基于 "Asia/Shanghai" 这类地区标识,由系统按具体时间点动态计算偏移值,解决夏令时与历史时区变更场景下的时间失真问题,启动时自动完成旧配置到新体系的迁移
- 退役 plugins 种子的 serialize 序列化,改用 JSON 格式存储,读取时双格式自适应,新装与老站升级均兼容
- 重构 Box::render,将 extract($template) 改为按键显式赋值,避免污染局部作用域,主题契约保持不变
- 继续推进代码现代化,在 Feed、Router、Request 等类中以 match 表达式替换条件链,用 null-coalescing 简化 isset 模式
- 移除 Db、Client、Form 等未使用常量,删除 Plugin::__get 中一处多余赋值,清理 HyperDown 末尾的冗余注释
- 为 Widget 类补充 #[\AllowDynamicProperties] 属性,保留旧主题与插件对动态属性的依赖
- 后台 admin 目录统一改用短数组语法 [],保持代码风格一致
- 清理一批纯标签注释与复述型行内注释,保留非显然逻辑的说明
安全防护体系加固
- 重构客户端 IP 获取机制,默认仅信任不可伪造的 REMOTE_ADDR,管理员可显式配置需要信任的转发头,高安全场景支持配置可信代理白名单
- 修复前台输出转义不完整的问题,对 Contents::author、Archive::remember、Archive::keywords 等纯文本字段执行严格转义,需要保留 HTML 的字段维持原样,对现有主题完全透明
- 后台安全 token 改为基于当前请求 URL 生成,替代原先硬编码的 action 路径,统一管理多个后台页面的 token 生成
- 评论回复与编辑内容引入 DOMPurify 客户端净化,回复/编辑 UI 重构为 AJAX 内联处理
后台 UI 与交互体验优化
- 重构后台 UI 样式与主题令牌系统,引入 --tr-accent-rgb 及其衍生变量(语义色、pill 圆角、accent-soft/strong)、主题预设与平滑过渡类
- 配套调整 topbar、KPI 网格、流程图、表格列表溢出、移动端响应式规则、编辑器工具栏布局、popover 尺寸、阴影与间距等细节
- 优化 accent-picker 选择器样式,调整 .tr-accent-row、.tr-accent-dot 等组件视觉
- 针对移动端场景调整排版与界面适配逻辑,改善小屏下的操作体验
核心功能修复与体验优化
- 修复删除文章后孤儿标签从未被清理的 Bug,该问题自 Typecho 1.3.0 继承而来。问题根源是 clearTags 方法只定义在子类 Tag\Edit 中,而删除文章的路径经父类 Metas 调用,调用静默失败不报错。修复方式是将 clearTags 下沉到 Base\Metas 基类,两条调用路径均自动解析正确,无需改动调用方
- 解决分类与标签管理中的 N+1 查询问题,merge、refreshCountBatch、clearTags、scanTags 全部改为批量查询 + 内存处理,以刷新分类计数为例,10 个分类的 SQL 次数从 20 次降到约 4 次
- 列表页预加载分类、标签与自定义字段,同一作者多篇文章复用 Author 实例,减少重复查询
- 这些性能优化都基于 Typecho 原有查询构造器支持的 WHERE IN 和 GROUP BY 语法实现,方法签名保持不变,主题与插件不受影响
Full Changelog: https://github.com/Yangsh888/TypeRenew/compare/v1.5.0...v1.5.1
下载方式
延续 v1.5.0 版本的分发规则,本次默认仅发布 最小化版本(含程序主体 + 默认模板),如需安装各类官方拓展插件,请前往 TypeRenew 插件仓库下载安装。
正式安装包
默认版: TypeRenew-v1.5.1.zip
插件仓库地址: https://github.com/Yangsh888/TypeRenew-plugins
升级包(支持从 v1.5.0 正式版直接升级)
通用升级包: TypeRenew-upgrade-v1.5.0-to-v1.5.1.zip
升级包使用方式
- 升级前请先 完整备份程序文件与数据库,避免因升级异常导致数据丢失或无法恢复
- 登录网站管理后台,在左侧导航栏进入「升级」页面
- 点击「选择升级包」区域,上传已下载的 zip 格式升级包(支持直接拖拽文件至该区域)
- 确认升级信息后点击「上传升级包」,按照页面引导完成在线升级
- 升级完成后刷新页面,按照页面提示完成数据库结构升级,并核对后台显示的程序版本与数据库版本均为最新
提示:如需从原版 Typecho 迁移部署,请参考 README.md 中的相关指引完成操作
反馈方式
如需反馈问题或提出建议,请提交至 GitHub Issues 页面: https://github.com/Yangsh888/TypeRenew/issues
或加入官方 QQ 交流群: 1073739854
暂无评论