## mirai-core ### 优化和修复 - 修复取消发送 `FriendMessage` 却显示 'cancelled by GroupMessagePreSendEvent' 的问题 (#1851) - 优化日志性能 (#1880 by @AdoptOSS) - 为生产的 IMEI 增加校验位 (#1855 by @cssxsh) - 完善 `RoamingMessages` 文档 - 修复文档错别字 (#1902 by @Moyulingjiu) - 补充文档错别字 (#1908 by @LaoLittle) ## mirai-console ### 不兼容变更 - (仅影响前端实现) 调整了 `MiraiConsoleImplementation` 内部实现策略. `MiraiConsoleImplementation.Companion.getInstance` 现在不会返回前端实现的对象, 而会返回 MiraiConsoleImplementationBridge. (https://github.com/mamoe/mirai/commit/2ebd017786cdb912715821f9fd4ba193829089b1) ### 重大变更 - 重写扩展组件系统 (#1888, #1889): - 现在注册的 `Extension` 会通过其 `priority` 属性排序, 越高越先弃用. - 在遇到 `priority` 相同时将会选用最先提供的, 而不会再询问用户选择. - 移除一些 `ExtensionPoint` 的 `builtinImplementations`, 在 Console 启动第一时间初始化内置实现. - Console 内置的 `Extension` 的 `priority` 为 `-1`. 用户自定义的 `Extension` 的默认为 `0`. - 弃用了 `SingletonExtension`, `SingletonExtensionPoint` , `AbstractSingletonExtensionPoint`. - 部分扩展的 companion object 的父类由 `AbstractSingletonExtensionPoint` 变为 `AbstractInstanceExtensionPoint`. (ABI 不兼容变更, 但对用户的影响应该极小) - 修复 `contributeCommandCallParser` 无效的问题 (#1860) - 重写插件加载系统 (#1842) - 修复插件没有隔离导致 class 冲突的问题 (#1815) - 修复 mirai-console-gradle 插件打包排除默认依赖不完全的问题 (#1814) - 支持不打包单独 JAR 的 JVM 插件加载方式 (#1809) - 自动从仓库下载插件的依赖并自动共享依赖以减小体积 - 修复使用第三方依赖后,插件报错 `java.lang.ClassNotFoundException` 的问题 (#1802) - 调整插件类加载策略: 优先加载自己 JAR, 再从全局搜索; 让插件 JAR 携带除 mirai 外所有运行时依赖 (#1800) - 以前插件 class 没有隔离, 不定义依赖也可以引用外部 class. 但这种行为在隔离后将不再允许. 目前会通过日志警告, 将来会禁止. ### 新特性 - 将控制台日志完整保存到文件 (#1844, #1874) - 为默认的指令解析器支持转义和带空格的参数 (#1897 by @strear) - 在 AutoLogin 配置中增加 `heartbeatStrategy`, 可选值与 mirai-core 一致 (`"STAT_HB" / "REGISTER" / "NONE"`). (#1867, #1903 by @Nambers) ### 优化和修复 - 修复插件依赖检查 (#1859 by @cssxsh) - 仅在 Console 实例已经初始化之后才在 JVM 关闭时停止 Console 实例 - 在取消权限指令中给出更多提示 (#1843 by @cssxsh) - 优化在指令匹配群成员时的性能 - 修复文档错别字 (#1912 by @Colerar) - 补全 AutoLogin 配置中对 `protocol` 的注释 (#1891 by @Stardust-minus) ## miria-console-terminal ### 新特性 - 新增启动参数 `--no-logging`, 用于关闭日志