## 新增 - 插件系统:`config.blade.php` 为默认情况下配置视图文件名 - 插件系统:支持自动注册服务容器(Service Provider) - 插件系统:新增 Filters API - 支持以 `php artisan plugin:enable {name}` 的方式开启插件 - 支持以 `php artisan plugin:disable {name}` 的方式关闭插件 - 允许通过 `php artisan options:cache` 命令缓存站点选项 - 支持指定多个插件目录(在 .env 文件中以逗号分隔) - 新增「运行状态」页面 - 支持自定义 UI 文本 - 西班牙语支持(感谢 [@poopingpenis](https://github.com/poopingpenis)) - 全新的站点配色设置 - 自动识别插件的说明文件 - 增加管理员专有的「STAFF」badge - 在材质详情页中显示上传者的 badge - 在错误页面增加指向 FAQ 页面的链接 - 第三方登录(目前仅支持 GitHub 和 Microsoft Live) - 角色名支持字符「§」(需开启「CJK」模式) - 新的密码哈希算法:Argon2i - 将材质应用到角色时可进行搜索 - 支持自定义材质存储目录 - 角色页面可进行搜索 - 新增 Blessing Skin Shell - 支持单独指定邮件发件人的地址和名称 - 3D 皮肤预览现在是带背景的 - 可通过上传压缩包来安装插件 - 可通过提交 URL 来安装插件 - 皮肤库中可通过点击上传者昵称来查看该用户的其它上传 - 增加 `php artisan update` 命令以便通过命令行进行升级数据库 - 支持自定义 fallback locale ## 调整 - 修改 GuzzleHttp 库获取 CA 证书的策略 - 重构用户系统 - PHP 版本最低要求为 7.2.5 - 使用 `install.lock` 文件来检测安装状态 - 插件系统:自动从 `lang/front-end.yml` 中加载前端多语言 - AdminLTE 升级到 v3 - 将 `ip` 字段的长度增加到 39 以支持 IPv6 - 优化角色名校验的性能 - 修改获取 IP 地址的方法 - MySQL/MariaDB 使用 `utf8mb4` 编码 - 响应未格式化过的 Profile JSON 以节省流量 - 使用新的 PHP 材质渲染器 - 将材质应用到角色时显示角色的 3D 头像 - 新的「插件管理」页面 - 衣柜中未选择材质时点击「应用到角色」不弹出「选择角色」对话框 - 使 "CSRF token mismatched" 的错误提示变得友好 - 减少发送验证邮件的次数 - 更换皮肤预览器的「行走/奔跑」按钮图标 - 更改获取角色的 API - 头像和预览图的格式改为 WebP - 减少不必要的 SQL 查询语句 - 改进邮箱地址输入框 - 延长 `locale` Cookie 的有效时间 ## 修复 - 管理面板的列表中某些字段不应是可排序的 - 补充部分缺失的语言文本 - 重置皮肤预览后,皮肤模型也被重置的问题 - AJAX 出现错误时,堆栈中不显示来自插件的部分 - 当使用了不支持的密码加密算法时,错误页面没有正确显示的问题 - 修复不能针对未知语言进行降级的问题 - 与 PHP 7.4 的兼容问题 - 材质名过长时的显示问题 - 下载插件前不检查依赖和冲突的问题 - 修复皮肤库中从 query string 获取搜索关键字的问题 - 修复未能正确设置 HTML 的 `lang` 属性的问题 - 修复获取不存在的用户的头像时,未能正确设置尺寸的问题 - 修复同一材质文件但模型不同被认为不同材质的问题 - 修复上传重复材质时没有提示用户的问题 - 「材质上传」页面的积分消耗没有计算衣柜收藏所需的积分 - 修复管理员不能添加私有材质到衣柜的问题 - 修复未登录的用户在浏览皮肤库时出现「我的上传」按钮问题 - 修复可能的「Invalid Signature」问题 - 修复在管理面板中修改角色名时不检测角色名是否重复的问题 - 修复普通管理员可设置其他用户为管理员的问题 - 修复处理举报中删除材质时不删除材质文件的问题 - 修复「材质上传」页面的积分计算与后端不一致的问题 - 修复重命名材质时不对新名称进行检查的问题 - 修复移除衣柜物品后不更新角色的问题 - 修复管理面板的图表中标签显示为小数的问题 ## 移除 - 移除 Artisan 命令:`php artisan key:random` - 移除为 v3 迁移到 v4 而编写的 Artisan 命令 - 放弃对 IIS 的支持 - 移除扩展包 `swiggles/memcache` - 从全局变量 `blessing` 中移除 `commit` 属性 - 移除 Element UI - 移除对材质名和用户昵称的要求 - 移除「IP 获取方法」的设置 - 移除「第三方评论」功能,如有需要请安装独立插件 - 移除通过 UI 来开启或关闭 Redis 的功能 - 移除「传统皮肤加载方式」(如有需要,请安装插件) - 移除 Universal Skin API(如有需要,请安装插件) - 移除自动更新检查 - 移除对 Profile JSON 的缓存 - 移除对角色存在与否的缓存 - 移除「对不存在的角色返回 204」的选项(如有需要,请安装插件) - 移除皮肤库右上角的 breadcrumb ## 内部更改 - Laravel 升级到 v7 - 使用 Twig 重写大部分 Blade 模板 - 使用 React 重写前端