TypeRenew v1.6.1 Release 现已正式发布,这是基于 v1.6.0 版本的维护优化版。本次升级聚焦多语言体验完善、历史兼容补强、安全边界收紧与后台细节修复,持续夯实「轻量、稳定、安全」的核心特性。
核心更新内容
本次更新覆盖底层兼容优化、安全防护加固、后台交互体验、国际化完善、核心功能修复与代码质量优化等多个维度,累计修改 76 个文件,核心优化与修复内容如下:
底层内核兼容优化
- 密码校验补回 phpass(
$P$)算法支持,兼容 phpass 格式的旧密码哈希 - 恢复主题与插件依赖的兼容类别名,补全插件异常类、表单元素类等历史映射
- 修正主题配置初始化逻辑,仅在主题 functions 文件存在且定义了 themeConfig 时加载,避免无配置主题报错
- PDO MySQL 适配器改为动态解析属性常量,兼容带命名空间的 PDO MySQL 类,解决部分环境下缓冲查询属性读取失败的问题
- 结构同步时新增 JSON 转义修复,统一处理选项、附件文本与自定义字段中的 Unicode 转义内容
- 结构同步时规范化插件句柄,将旧版句柄名转换为现行写法,合并重复回调并回写配置
- JSON 输出默认保留 Unicode 原文(JSON_UNESCAPED_UNICODE),避免中文被转义为 \uXXXX
- 统一插件回调参数,起始与结束钩子均可获取上一步的处理结果
- 补全 Archive 组件属性默认值,currentPage、feed 地址、archiveSlug 等属性初始化后再使用
- HTTP 客户端限定仅允许 http / https 协议,响应体改用流式读取并从流元数据中解析响应头,及时关闭流避免资源泄漏
安全防护体系加固
- 哈希校验统一采用恒定时间比较,避免校验耗时差异泄露信息
- 缓存写入增加安全校验,收紧 Redis 反序列化处理;遇到不支持的缓存驱动时明确报错并自动停用
- 加固登录延迟校验与上传权限判断
- HTTP 客户端新增 SSRF 防护,请求前校验目标主机,拦截内网等非安全地址
- 备份恢复新增导入上限,分别限制导入文件体积、记录数、字段长度与插件载荷大小,校验文件头格式与结束偏移,异常文件直接拒绝
- 备份文件名中的主机标识做字符消毒,随机部分改用安全随机字节生成
- 备份恢复完成后不再尝试自动重新登录,直接清除登录 Cookie 与会话,操作人仅按管理员身份解析
- 备份恢复更新评论 ID 时,对分片数值消毒后再写入查询
- 升级清单新增格式校验,文件条目、构建信息、哈希值与允许安装标识均按类型校验
- 修正后台、Service、密码重置链接的规范地址生成,统一以站点设置地址为准
- 权限提示类信息仅对管理员展示,文章编辑链接仅编辑及文章作者可见;头像与昵称输出统一 HTML 转义
- 结构升级时自动将旧版 v1 加密的 Redis、SMTP 密码重新加密为现行 v2 格式
- 二进制元数据解析补充边界校验,规避畸形输入
- 在线升级包的允许安装标识改为显式布尔解析
- 修正请求头与 URI 解析,避免服务器变量查找错误与畸形请求路径
后台 UI 与交互体验优化
- 日期选择器时间输入框改为整行宽度并统一盒模型,对齐显示
- 媒体管理列表新增图片缩略图展示,优化标签输入处理
- 修复深色主题下警告提示、强调标签与主要按钮的样式回归,调整侧边栏溢出行为
- 规范命令面板注册数据,调整后台底部脚本初始化顺序,修复「扩展」子菜单合并后标题显示异常
- 完善深色主题提示样式选择器,宽表格支持横向滚动包裹,调整布局对齐
- 后台键盘事件处理兼容 e.key 为空的场景,避免脚本报错
- 发送失败邮件列表表格支持横向滚动;非嵌入状态下不再触发取消预览
- 提示条新增高亮状态存储与读取
- 元素查找新增
mid-<id>回退,兼容 Typecho 的备用 ID 格式 - 修复跨目标表单提交按钮被误禁用的问题,备份等操作正常提交;提示内容改用安全 HTML 文档消毒
- 基本设置页在未配置
__TYPECHO_TRUST_PROXY__时显示提示,说明其他客户端 IP 来源不会生效 - 邮件设置页补充模板占位符说明,标注
{_:文本}固定文案翻译与{lang}当前语言代码的用法
国际化与多语言完善
- 新增官方英文(en_US)语言包,覆盖核心程序、默认主题与邮件模板
- 校验后台配置的语言值与语言文件路径,缺失译文时回退到最后一条可用翻译
- 修复复数形式解析与空表头缓存初始化,语言目录加载更可靠
- 修正复数翻译回退,数值为 1 时按单数处理;多域加载命中首个可用翻译后立即返回
- 安装页、错误页与通知邮件按当前语言显示,邮件模板支持翻译占位
- 后台登录流程、服务器错误提示、上传组件、安装与升级页面中的硬编码文案改为翻译调用
- Feed 语言跟随站点语言设置,不再固定为 zh-CN
- 翻译模板同步至 1.6.1,切换语言后强制重新加载;修正零偏移译文被跳过的问题
.mo文件加载前校验元数据与表偏移,文件损坏或截断时安全跳过,避免加载异常
核心功能修复与体验优化
- 最新评论组件关联文章数据查询,排除加密文章与未发布文章下的评论
- 已发布内容判断统一以状态为准,不再依赖创建时间;草稿发布时补全创建时间,分类与标签计数同步反映实际发布状态
- 重构附件处理逻辑,按 cid 逐个校验并重新归属附件、保持附件顺序;删除草稿前先将其附件归属到正式文章或页面
- AJAX 返回的时间改用站点设置的日期时间格式输出
- 页面排序携带当前父级 ID,后端校验待排序页面归属同一父级后再执行,防止页面跨分组移动
- 保留自定义字段重名报错路径,写入前先检查字段是否已存在
- 标签写入前先从数据库查找已有标签,避免重复创建
- 作者归档页改为读取完整用户行后移除密码与 authCode 字段,避免敏感字段输出
- 修复 HTML 标题二次编码问题,htmlspecialchars 关闭双重编码
- 评论表单不再自动输出隐藏令牌,简化评论是否要求网址的判断
- 首页类型归档与 index 按相同规则选择主题模板,移除多余的首页重置调用
- 上传处理新增 beforeModifyHandle、beforeUploadHandle 插件钩子,支持插件在主处理前执行
文档与生态更新
- README 全面修订,补充完整英文文档区块,更新多语言、备份升级说明与常见问题
代码清理与质量优化
- 精简 HyperDown 解析器,移除定义链接规范化逻辑,文本规范化合并为单次替换
- 整理初始化类别名映射表,合并重复与过时的别名条目
- 附件处理移除 attachUnattached 与旧 cid 分支,逻辑统一
- 主题函数加载收敛为单一开关判断
Full Changelog: https://github.com/Yangsh888/TypeRenew/compare/v1.6.0...v1.6.1
下载方式
延续 v1.6.0 版本的分发规则,本次默认仅发布最小化版本(含程序主体 + 默认模板),如需安装各类官方拓展插件,请前往 TypeRenew 插件仓库下载安装。
正式安装包
默认版:TypeRenew-v1.6.1.zip
插件仓库地址:https://github.com/Yangsh888/TypeRenew-plugins
升级包(支持从 v1.6.0 正式版直接升级)
通用升级包:TypeRenew-upgrade-v1.6.0-to-v1.6.1.zip
语言包说明
本次提供的正式安装包与升级包均不包含 usr/langs/ 目录下的语言文件。简体中文为内置语言,无需额外文件;如需使用英文或其他语言,请参照 README「多语言(i18n)」部分,从仓库 usr/langs/ 目录下载所需语言包(如英文 en_US.mo),手动放置到站点的 usr/langs/ 目录,再到后台「设置」-「基本」中切换语言。
语言包目录:https://github.com/Yangsh888/TypeRenew/tree/main/usr/langs
升级包使用方式
- 升级前请先 完整备份程序文件与数据库,避免因升级异常导致数据丢失或无法恢复
- 登录网站管理后台,在左侧导航栏进入「升级」页面
- 点击「选择升级包」区域,上传已下载的 zip 格式升级包(支持直接拖拽文件至该区域)
- 确认升级信息后点击「上传升级包」,按照页面引导完成在线升级
- 升级完成后刷新页面,按照页面提示完成数据库结构升级,并核对后台显示的程序版本与数据库版本均为最新
提示:如需从原版 Typecho 迁移部署,请参考 README.md 中的相关指引完成操作
反馈方式
如需反馈问题或提出建议,请提交至 GitHub Issues 页面: https://github.com/Yangsh888/TypeRenew/issues
或加入官方 QQ 交流群: 1073739854
暂无评论