## 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`, 用于关闭日志