2.13.0-RC 包含:

- 支持使用短信验证码进行设备锁验证
- 支持查看和修改好友分组
- 支持查询和修改群员头衔等活跃数据
- Core 模拟测试框架
- Console 下载进度条
- 一些问题修复

## mirai-core

### 不兼容变更

- `mirai-core-api` 去除了对 `kotlinx-coroutines-jdk8` 的依赖.

### 新特性

- 支持使用短信验证码进行设备锁验证 (#717, #2109, #2216)
- `nextEvent` 和 `nextEventOrNull` 新增 `intercept` 参数, 可在满足条件时拦截事件 (#1668, #2177 by @Nambers)
- 支持查看和修改好友分组 (#1390, #1243, #2113 by @Nambers)
  > 好友分组定名为 `FriendGroup`.
    - 新增 `Friend.friendGroup` 获取该好友所属分组.
    - 新增 `Bot.friendGroups` 获取好友分组列表并操作分组.
- 支持查询和修改群员头衔等活跃数据 (#2204, #2086, #2115 by @cssxsh)
    - 新增 `Group.active` 获取群的活跃数据.
    - 新增 `Member.active` 获取该成员的活跃数据.
- 新增 `AbstractExternalResource.input` 的默认实现
  > 在实现自定义 `ExternalResource` 时可能有帮助

### 优化和修复

- 更新 `ANDROID_WATCH` 和 `MACOS` 的协议信息 (#2228 by @cssxsh)
- 修复网络层的异常处理流程, 优化重连逻辑
    - 修复断线重连时, 日志快速不断输出同一个异常, 之后无法恢复连接的问题 (#2148)
    - 修复离线时大量打印 `HeartbeatFailedException` 的问题 (#2175)
- 优化由网络层抛出的异常的堆栈信息
  > 现在不再有循环引用, 而且更简洁  
  > `CancellationException` 将会被替换为真实原因
- 修复在 Android 上遇到 'Duplicate class' 的问题 (#2248)
- 修复合并转发内容中用户昵称错误的问题 (#2187)
  > 此修复也包含在 2.12.3
- 优化各平台的 ECDH 实现 (#2161 by @AdoptOSS)
- 修复使用静态序列化器时无法编译的问题 (#2230)
  > 自 2.13.0-M1
- 在发送群公告失败时抛出有正确信息的异常而不是序列化错误 (#2069)
- 修复日志中无法获得调试信息的问题 (#2097)
- 提升一些已弃用的 API 的弃用等级 (#2213)

## mirai-console

### 新特性

- 在下载时展示进度条 (2133, #2140)
  > 也公开了进度条 API 供插件使用. 见 `MiraiConsole.newProcessProgress()`.
- 在 `/login` 登录时使用可用的自动登录配置 (#2209 by @cssxsh)
- 增加了 Console 前端实现的基础模块 `mirai-console-frontend-base`

### 优化和修复

- 优化文档细节 (#2207)
- 优化日志系统 (#2196)
    - Console 现在总是使用 core 的 `MiraiLogger.Factory` API 创建日志
    - 禁止插件修改日志系统
    - 允许通过 classpath 修改日志系统
    - 在保存日志到文件时不包含颜色符号 (#2218)
- 在欢迎时打印 Mirai Console 字符画
  > 以帮助区分 mirai-console 和 mirai-console-loader

## mirai-core-mock

新增 Core 模拟测试框架 `mirai-core-mock`. 版本号与 `mirai-core` 相同. [相关文档](https://github.com/mamoe/mirai/blob/dev/docs/mocking/Mocking.md) (#1304, #1521)

使用模拟测试框架可以构造虚拟 Bot, 模拟收到各种事件.

## IDEA

- 在创建插件项目时自动从 Maven Central 获取 mirai 使用的 Kotlin 版本 (#2240, #2244 by @MrXiaoM)