mirror of
https://github.com/zhamao-robot/zhamao-framework.git
synced 2026-03-18 05:04:51 +08:00
321 lines
11 KiB
Markdown
321 lines
11 KiB
Markdown
# 更新日志(master 分支 commit)
|
||
|
||
此文档将显示非发布版的提交版本相关更新文档,可能与发布版的更新日志有重合,在此仅作更新记录。
|
||
|
||
同时此处将只使用 build 版本号进行区分。
|
||
|
||
## build 473 (2022-5-7)
|
||
|
||
- 修复 `server:stop` 命令下部分情况报错的问题
|
||
|
||
## build 472 (2022-5-6)
|
||
|
||
- 修复 Container 环境继承全局变量的问题
|
||
|
||
## build 471 (2022-5-5)
|
||
|
||
- 修复 `CQ::encode()` 无法传入 `int` 的强类型解析问题(#113)
|
||
- (内部)重构 CQ 类
|
||
- 新增启动命令参数 `--audit-mode`,用于单次审计模式
|
||
- 修复 `EventMapIterator` 对 PHP 8.1 的兼容性问题
|
||
- 修复 #95 中提到的无输入流时报错的问题
|
||
- 新增部分不可执行脚本的防呆退出功能
|
||
- 修复 `ZMServer` 中的 typo
|
||
|
||
## build 470 (2022-5-4)
|
||
|
||
- 重构帮助生成器,将帮助生成器重构为 `CommandInfoUtil` 类
|
||
|
||
## build 469 (2022-5-3)
|
||
|
||
- 新增 `@CommandArgument` 注解,可直接通过注解添加聊天机器人命令参数
|
||
- 修改默认 Hello 模块下随机数功能为采用 `@CommandArgument` 注解模式
|
||
- (内部)新增 `EventManager::$event_map`,用于补充对事件对象遍历的方式
|
||
- 新增 `EventMapIterator` 类,用于遍历注解事件对象
|
||
- 新增 `MessageUtil::checkArguments()` 方法,用于检查 `@CommandArgument` 注解
|
||
|
||
## build 468 (2022-4-30)
|
||
|
||
- 优化单元测试流程
|
||
- 优化上下文对象,在非协程环境下不再会抛出异常或返回 null
|
||
|
||
## build 467 (2022-4-29)
|
||
|
||
- 优化 `@RequestMapping` 注解事件的方法返回值处理,支持数组和字符串(数组自动转为 JSON 格式)
|
||
|
||
## build 466 (2022-4-29)
|
||
|
||
- 优化容器支持无名顺序参数的调用
|
||
- 优化静态路由,支持 64 以上长度的路由
|
||
|
||
## build 464 (2022-4-28)
|
||
|
||
- 重构全局方法 `match_pattern()`,优化性能以及解决部分字符串不能匹配的 Bug
|
||
|
||
## build 463 (2022-4-16)
|
||
|
||
- 新增链式调用全局方法 `chain()`
|
||
- 新增函数执行时间工具全局函数 `stopwatch()`
|
||
|
||
## build 462 (2022-4-15)
|
||
|
||
- 新增依赖注入、容器支持,目前对 Swoole 事件、机器人事件均支持使用依赖注入
|
||
- 新增全局容器方法 `container()`、`resolve()`、`app()`,用于获取容器参数等
|
||
- 新增相关容器测试
|
||
|
||
## build 461 (2022-4-11)
|
||
|
||
- 新增 AllBotsProxy、AllGroupsProxy 代理类,支持批量发送机器人动作
|
||
- 新增全局函数 `implode_when_necessary()`,用于将可能为数组的参数转换为字符串
|
||
|
||
## build 460 (2022-4-3)
|
||
|
||
- 优化代码到 phpstan-level-4
|
||
|
||
## build 459 (2022-4-3)
|
||
|
||
- 优化代码到 phpstan-level-2
|
||
|
||
## build 458 (2022-4-3)
|
||
|
||
- 优化代码到 phpstan-level-1
|
||
- 优化 `module:xxx` 类命令的有关实现代码
|
||
|
||
## build 457 (2022-4-2)
|
||
|
||
- 新增和优化测试用例(具体见文件)
|
||
- 部分文件以 PHPStan Level 2 进行规范化
|
||
|
||
## build 456 (2022-3-30)
|
||
|
||
- 重构 phpunit-swoole,使其可以正常使用
|
||
- 新增 `--private-mode` 参数,用于隐藏启动前的 MOTD 及敏感信息
|
||
- 修复 Composer extra 配置项 `zm.exclude-annotation-path` 不能正常工作的 Bug
|
||
- 优化注解事件加载器,防止 Master 进程中添加的事件在 Worker 中被覆盖的问题
|
||
- 修复 `DataProvider::isRelativePath()` 方法判断有误的 Bug
|
||
- 新增退出框架时支持以非 0 exit code 退出的功能
|
||
- 优化 `ZMUtil::getClassesPsr4()` 方法,排除不含类的文件
|
||
- 优化 PHP CS Fixer 的配置
|
||
- 新增测试用例(具体见文件)
|
||
|
||
## build 455 (2022-3-27)
|
||
|
||
- 修复前几个小版本无法收发消息的 Bug
|
||
- 新增 API Document 自动生成脚本
|
||
|
||
## build 454 (2022-3-27)
|
||
|
||
- 修复部分命令下无法杀掉进程的 Bug
|
||
- 新增 `@Cron` 注解
|
||
- 修复全局函数 `match_pattern` 无法正常工作的 Bug
|
||
|
||
## build 453 (2022-3-25)
|
||
|
||
- 新增 property 注解用于 IDE 识别
|
||
|
||
## build 452 (2022-3-25)
|
||
|
||
- 修复 OnSetup 注解无法使用 Attribute 解析的 Bug
|
||
- 修复 HelpGenerator 的 Alias 不工作的 Bug
|
||
|
||
## build 451 (2022-3-21)
|
||
|
||
- 重构全局函数,统一函数命名,并补全注释
|
||
|
||
## build 450 (2022-3-21)
|
||
|
||
- 新增命令帮助生成器
|
||
|
||
## build 449 (2022-3-21)
|
||
|
||
- 新增 Composer 模块加载和分发模式
|
||
|
||
## build 448 (2022-3-20)
|
||
|
||
- 加快 build 命令的执行速度,取消进度条和提升性能
|
||
|
||
## build 447 (2022-3-20)
|
||
|
||
- 发布 2.7.0 正式版
|
||
|
||
## build 446 (2022-3-20)
|
||
|
||
- 新增 `./zhamao server` 下的 `--no-state-check` 参数,关闭“启动框架前的运行状态检查”功能
|
||
|
||
## build 445 (2022-3-20)
|
||
|
||
- 新增配置项 `runtime`.`annotation_reader_ignore`:支持注解解析器忽略注解的自定义
|
||
|
||
## build 444 (2022-3-20)
|
||
|
||
- 更改 `extra`.`exclude_annotate` 为 `zm`.`exclude-annotation-path` 项
|
||
|
||
## build 443 (2022-3-20)
|
||
|
||
- 修复注释空格的样式
|
||
|
||
## build 442 (2022-3-20)
|
||
|
||
- 修复打包模块后 `files` 的 autoload 项不能被解压和引入的 Bug
|
||
|
||
## build 441 (2022-3-20)
|
||
|
||
- 修复打包模块时命名空间与实际不一致的 Bug
|
||
|
||
## build 440 (2022-3-20)
|
||
|
||
- 新增方法宏(Macroable)
|
||
|
||
## build 439 (2022-3-19)
|
||
|
||
- 新增 PHP 8 Attribute 与注解同时支持的特性
|
||
|
||
## build 438 (2022-3-18)
|
||
|
||
- 修复 Response 类在 PHP 8.1 环境下的报错
|
||
|
||
## build 437 (2022-3-17)
|
||
|
||
- 修复 `ctx()` 可能会返回 null 的 Bug
|
||
|
||
## build 436 (2022-3-15)
|
||
|
||
- 新增 PHPStan 和 PHP CS Fixer 并优化全局代码
|
||
|
||
## build 435 (2022-3-13)
|
||
|
||
- 优化分离 WorkerManager 与 ProcessManager 的职责
|
||
- 新增 Ctrl+C 一次无法停止框架时多次 Ctrl+C 后可强行杀掉所有进程的功能
|
||
- `./zhamao server:stop` 新增参数 `--force`,使用 `SIGKILL` 强行杀掉所有进程
|
||
- 新增 AnnotationParser 对 `autoload-dev` 项中的 `psr-4` 默认检索条件
|
||
- 新增框架启动状态检测功能,如果已经启动了同样目录的框架,则会报错
|
||
- 新增“强制启用轮询模式启动热更新”功能(参数 `--polling-watch`)
|
||
- 修复与 PHP 8.1 的兼容性
|
||
- 对 DaemonCommand 进行优化,与 ServerCommand 效果相同
|
||
- 修复 `autoload`.`psr-4` 不存在时报错的 Bug
|
||
- 新增框架停止时 Worker 退出回显状态码
|
||
- 新增 inotify 判断模式,如果使用 `--watch` 检测到没有安装 inotify,则自动使用轮询模式
|
||
|
||
## build 434 (2022-1-8)
|
||
|
||
- 修复框架在 PHP 8.1 下运行时的一些问题
|
||
- 新增 Console 日志输出到文件的功能
|
||
|
||
## build 433 (2021-12-28)
|
||
|
||
- 修复 OneBotV11 因 IDE 自动优化导致 API 接口发生变化的问题
|
||
|
||
## build 432 (2021-12-25)
|
||
|
||
- 新增 GoCqhttpAPI 包,用于支持额外的 OneBot Action(API)
|
||
- 修复 MySQL 查询器中 `fetchOne()` 方法无法正确返回值的 Bug
|
||
- 修复 Swoole Hook 因配置不当无法正确使用的 Bug
|
||
|
||
## build 431 (2021-12-22)
|
||
|
||
- 修复 Issue #50
|
||
- 新增 PhpStorm IDE 直接运行框架的脚本
|
||
|
||
## build 430 (2021-12-8)
|
||
|
||
- 删除调试信息
|
||
- 修复 #56 中关于数据库组件的 Bug
|
||
|
||
## build 429 (2021-12-7)
|
||
|
||
- 新增配置项 `onebot`.`message_command_policy`
|
||
- 新增 CQCommand 阻断策略的自定义配置功能
|
||
- 修复 CQAfter 无法正常使用的 bug #53
|
||
|
||
## build 428 (2021-11-16)
|
||
|
||
- 修复 `ctx()->waitMessage()` 在 array 消息模式下无法正确返回消息字符串的问题
|
||
- 新增 `ctx()->getArrayMessage()` 和 `ctx()->getStringMessage()` 两个方法
|
||
- 修复注解事件 `CQCommand` 和 `CQMessage` 在 array 消息模式下无法正确解析的 Bug
|
||
|
||
## build 427 (2021-11-16)
|
||
|
||
- 新增全局中间件,可在全局配置文件中设置
|
||
- 修复部分 Typo
|
||
- 新增指令 `server:status`、`server:reload`、`server:stop` 可用在新开终端中查看框架运行状态、重启和退出
|
||
- 新增支持 `array` 格式的消息
|
||
- 上下文 Context 对象新增 `getOriginMessage()` 用于获取原消息,`getMessage()` 如果在设置了转换后,将默认转换消息为字符串格式保持与旧模块兼容
|
||
- OneBot API 新增全局过滤器,可用作 Action 过滤重写等操作
|
||
- 配置文件新增 `runtime.reload_delay_time`,用于可配置重载 Worker 等待的时间(毫秒)
|
||
- 配置文件新增 `runtime.global_middleware_binding`,用于配置全局中间件
|
||
- 配置文件新增 `onebot.message_convert_string`,用于配置是否转换数组格式为字符串,保证与前版本的兼容性(默认为 true)
|
||
- MessageUtil 消息工具类新增方法:`strToArray($msg, bool $ignore_space = true, bool $trim_text = false)`
|
||
- MessageUtil 消息工具类新增方法:`arrayToStr(array $array)`
|
||
- 新增框架启动多次监测功能,无法使用同一个框架项目同时启动两个框架
|
||
|
||
## build 426 (2021-11-10)
|
||
|
||
- 修复 CQ 码的解析函数 Bug(#52)
|
||
|
||
## build 425 (2021-11-3)
|
||
|
||
- 删除未实际应用功能的配置参数
|
||
- 修复 reload 时会断开 WebSocket 连接且导致进程崩溃的 Bug
|
||
|
||
## build 424 (2021-11-2)
|
||
|
||
- 新增 InstantModule 类、ZMServer 类、ModuleBase 类
|
||
- 配置文件新增 `runtime.reload_kill_connect`、`runtime.global_middleware_binding` 选项
|
||
- 修复部分情况下闭包事件分发时崩溃的 bug
|
||
- 新增内部方法 `_zm_env_check`
|
||
- 调整默认的 OneBot 模块对应的等级从 99999 调整为 99
|
||
- 新增导出框架运行参数的列表功能
|
||
|
||
## build 423 (2021-10-17)
|
||
|
||
- 修复 PHP 7.2 ~ 7.3 下无法使用新版 MySQL 组件的 bug
|
||
|
||
## build 422 (2021-10-6)
|
||
|
||
- 修复 `script_` 前缀无法被排除加载模块的 bug
|
||
- 修复 MySQL 组件的依赖问题
|
||
|
||
## build 421 (2021-9-11)
|
||
|
||
- 删除多余的调试信息
|
||
|
||
## build 420 (2021-9-11)
|
||
|
||
- 修复 OneBot 事件无法响应的 bug
|
||
- 新增部分 EventDispatcher 触发的事件 debug 日志
|
||
|
||
## build 419 (2021-9-11)
|
||
|
||
- 修复 DB 模块在未连接数据库的时候抛出未知异常
|
||
- 修复部分情况下打包模块出现的错误
|
||
|
||
## build 418 (2021-9-10)
|
||
|
||
- 修复 ZMAtomic 在 test 环境下的 bug
|
||
- 修复 MessageUtil 的报错
|
||
|
||
## build 417 (2021-8-29)
|
||
|
||
- 新增 AnnotationException,统一框架内部的抛出异常的类型
|
||
- 新增 AnnotationParser 下的 `verifyMiddlewares()` 方法
|
||
- 私有化 CQAPI 类下的内部方法
|
||
- 将 WebSocket API 响应超时时间从 60 秒缩短为 30 秒
|
||
- 修复 DB 类不能使用旧查询器的 bug
|
||
- 统一 DB 类下抛出 Exception 的类型为 ZMException 的子类
|
||
- EventDispatcher 新增对 `middleware_error_policy` 的处理段
|
||
- 配置文件下 `runtime` 新增 `middleware_error_policy` 字段
|
||
- 将 LightCache 组件抛出的异常改为 LightCacheException
|
||
- ModuleManager 修复改配置的 `load_path` 不生效的 bug
|
||
- 修复打包时生成的 Phar Autoload 列表出错的 bug
|
||
- 将配置的 override 改为 overwrite
|
||
- 新增解包时忽略依赖的选项(`--ignore-depends`)
|
||
- 删除众多调试日志,修改部分调试日志为 debug 级别的输出
|
||
- 修改 `ZM\MySQL\MySQLManager` 下的 `getConnection()` 为 `getWrapper()`
|
||
- MySQLPool 对象新增 `getCount()` 方法
|
||
- 新增 MySQLQueryBuilder 类(`doctrine/dbal` 的 wrapper 类)
|
||
- 修复 MySQLStatement 封装原 dbal 组件时与连接池不兼容的 bug
|
||
- 新增 MySQLStatementWrapper 类
|
||
- 完善 MySQLWrapper 类,用作主要的查询对象控制类
|
||
- 编写外部插件加载方式(Phar 热加载功能)
|
||
- 修复 `ZMUtil::getClassesPsr4()` 方法在遇到空扩展名文件时的报错
|