## 0.13.0 — 2026-10-26

把最近几次改动一起发出去。

- **收文件**：`file` 段不再被跳过——优先用 `url` 抓，没有就走 NapCat 的 `get_file`（file_id → base64），落到 `files/<时间戳>-原名`；取不下来的也会记一笔。
- **读卡片**：`json` 段不再显示成 `[json]`，改为从卡片里挖标题/描述/链接。
- **一键连接**：设置页顶部新增按钮，失败时会数 QQ 进程（总数 / 带 hook 数），三种实况给三种下一步。
- **攒批**：同一个人连发时等安静 8 秒再一起回，最长等 30 秒。
- **版本自检修正**：逐段比数字，本地比 npm 新时不误报。
## 0.12.2 — 2026-10-26

版本自检修好，也补回来了。

- **卡片回来了**：0.12 重构设置页时把「有新版本」卡片弄丢了，现在重新出在顶部；「以后再说」记住跳到哪个版本（localStorage），等 npm 上再出新版才再提醒。
- **判定改对了**：原来用 `最新 !== 本版`，本地比 npm 新也会报"有新版本"；现在逐段比数字，只有 npm 上的确实更新才提示。
## 0.12.1 — 2026-10-26

- 连不上时把实况摆出来：数 QQ 进程总数 + 带 `NapCatWinBootHook.dll` 的个数，分三种情况给不同的下一步；`/state` 带上 `qqProcess`。
## 0.12.0 — 2026-10-26

- 设置页加「一键连接」：只在没连上时跟缺口提示一起出现，点了静默拉起 NapCat 并探活最多 60 秒。**不自动杀 QQ 进程**（会连主号一起关掉）。
## 0.11.0 — 2026-10-26

- 收文件：对方发来的文件落到 `<DSH_HOME>/qq-moony/files/`。
## 0.10.0 — 2026-10-26

私聊不再"一条一回"——他会连发，她会等。

- **攒批**：同一个人连着发时，逐条进桶，每来一条把计时器往后推；安静 `mergeWaitSec` 秒（默认 8）算说完，再把这一批整理成一段话，**一次答完**，不是一条一条对应着回。
- **上限**：`mergeMaxWaitSec`（默认 30 秒）兜底，对方慢慢打字也不会一直不开口。
- **群聊不变**，还是原来那套"有机会才插话"。
- 设置页「一句一句说」里多了这两格数值。
## 0.9.4 — 2026-10-25

文档追上代码（0.3.0 之后一直没同步过）。

- 工具表补 `qq_tag_sticker` / `qq_pick_sticker` / `qq_qzone_history`
- 自动能力补"一句一句说"（标点断句、太短并入上一句、一轮最多 4 条）和"表情包自攒自配"
- 防封改成两本账：小时/天按轮、每分钟按条（`sent.log` + `rounds.log`），并写明「不限条数」是个没有闸的后门
- 已知限制加一条：**QQ 空间只能发不能读**（NapCat 不给读动态/点赞/评论的接口）
- 开头不再写死版本号，指向 `package.json` 与 `CHANGELOG.md`
## 0.9.3 — 2026-10-25

- **面板渲染兜底**：整块包进 try/catch，出异常时显示"面板渲染出错：…"，不再是一片空白。
- **版本自检**：`GET /api/qq-moony/version` 对比本地版本与 npm 最新版；设置页顶部出「有新版本」卡片，只提醒、不自动更新，带「以后再说」。

**已知**：空白那个问题在本地用真数据模拟复现不出来，这层是兜底不是根治。
## 0.9.2 — 2026-10-25

- **新增 `qq_qzone_history`**：发过的说说记在本地账本 `<DSH_HOME>/qq-moony/qzone.jsonl`（时间 / tid / 正文），可以按条数翻。不读空间接口。
- 为什么只记账不读空间：NapCat 只提供「发说说 / 删说说」两个接口，读动态、点赞、评论一律"不支持的 Api"。要真读，得另扫码登空间网页版，那条通道脆且容易触风控。
# CHANGELOG

## 0.9.1 — 2026-10-25

- **每小时 / 每天的额度一律按「轮」算**，不再看拆条开关。一轮 = 一次回复（可能拆成几条），只占一份额度。
- 每分钟上限仍然按真实条数算，不受影响——它是防封兜底。
- 设置页文案同步：「每小时上限」→「一小时内最多回几轮」；状态栏改成"今天回了 N 轮（M 条）"。
## 0.9.0 — 2026-10-25

一句一句地说，额度按"轮"算。

- **拆条发送**：`qq_send` 收到一段话会按句末标点拆开、逐条发，中间隔 1–3 秒。太短的（"哦。""！"）会并进上一句；一轮最多 `maxMessagesPerRound` 条（默认 4），多的并到最后一条。
- **额度改按轮计**：`perHour` / `perDay` 现在数的是"轮"，一轮只占一份——人本来也不是按条说话的。
- **技术限速不松**：`perMinute`（默认 6）永远按真实条数算，它是防封的兜底，不跟"轮"妥协。
- **主动说话改短**：提示词明写"一句就够，短到一个词、一个感叹号、一个颜文字都行"，并且"别每次都同一句"。
- 设置页新增「一句一句说」卡片：开关 + 一轮最多几条 + 每分钟上限。
## 0.8.1 — 2026-10-25

- **新增表情库上限** `stickerLimit`（默认 200，设置页可改）。超了淘汰最旧的记录，原图文件不删——库要干净，硬盘不用替它心疼。
## 0.8.0 — 2026-10-25

表情包会自己攒、自己配了；上限多了一个"不限"。

- **新增 `qq_tag_sticker` / `qq_pick_sticker`**：收到图会先看一眼，值得收才收进库，打两个标签（mood 情绪 / use 用途 / note 一句描述）；回话时按情绪用途挑一张，挑不到就不配。
- **去重**：按文件 sha1 指纹判断，同一张图转十遍只存一份。
- **配表情包开关**：`stickerOnReply`（默认开）。关掉就只发字。
- **自动收录开关**：`autoTagStickers`（默认开）。关掉就不看图、不花那份 token。
- **不限条数开关**：`limitsUnlimited`（默认关）。开了就绕过每小时/每天上限——给"确实需要"的人留的口子，页面上写着警告。

**成本提醒**：自动收录要"看一张图"，每条带图的来信都会多一次读图；配表情包也要多一轮工具调用。嫌贵就把这两个开关关掉。
## 0.7.0 — 2026-10-25

把"我自己的东西"从包里拿掉——别人装的是插件，不是我。

- **修：包里的 patch 不再写死我的 token / 小号号 / 人设。** 之前 `cordis.patch.yml` 里带着作者自己的 `token` 和 `uin`，别人装上会直接拿它去连——连不上还算好的，连上了更糟。现在一律留空，由各人在 `config.json` 里填。
- **新增：`persona`（人设）配置项，默认空。** 留空时，自动回复的会话只被告知"你替这个账号主人在 DSH 里收发消息"——中性的，不会变成别人的角色。填了才用你写的人设。设置页里也加了一块文本框。
- **措辞中性化**：提示词里原来写死的"你是溟月""主人"改成"账号主人"，不再把我的身份塞给别人。

**升级提醒**：已经装过的人重新装一次即可；如果之前在 `config.json` 里填过端口和 token，这次会真正生效（0.6.0 修了优先级）。
## 0.6.0 — 2026-10-25

有人报告"装上了但一直连不上、还反复自己重启"，根因是两个 bug 叠在一起：

- **修：配置优先级反了。** README 写的是"本地 config.json 优先"，代码里却是包的 patch 排在最后、压掉了本地文件——用户改的端口和 token 从来没生效过。现在顺序是 `默认 < patch < 本地文件`。
- **修：端口被别的服务占着时白折腾。** 原来只看"请求通不通"，有人机器上 3000 早被别的网页服务占了（回的是 `{"code":90004,"message":"资源不存在"}`），插件误判成 NapCat 挂了，于是反复拉起、每次白等一分钟。现在探活区分三种：`ok` / `foreign`（端口被占）/ `down`，被占时不自动拉起，设置页直接说"3000 被别的服务占了，换个端口或者把它挪开"。

**给改装的人**：如果 3000 上有别的东西，改 `baseUrl`（比如 `http://127.0.0.1:3010`），同时把 NapCat 的 OneBot HTTP 端口也改成一�样。
## 0.5.2 — 2026-10-25

- 拉起 NapCat 时不再弹黑窗口：改成生成 VBS、用 `wscript` 静默执行（`windowsHide` 对批处理无效）
- README 补一句：自启是静默的，不用留一个控制台窗口在那儿

## 0.5.1 — 2026-10-25

- 修：点「保存更改」之后设置页会空白——草稿被清空、新值还没回来那一瞬没有可显示的值
- 现在每个字段都有兜底：草稿为空就用服务端返回的值

## 0.5.0 — 2026-10-25

装完之后不再一片红：缺什么会自己说出来。

**新增**
- 体检：设置页顶部检查三件事——QQ NT 装没装、NapCat 找不找得到、能不能连上；缺哪样就列出来，写清去哪儿下、哪几步
- 状态接口多返回 `qqnt` / `napcat` 两个字段

**为什么不能一条命令全装**
QQ NT 是几百兆的客户端（要管理员权限），NapCat 要往 QQ 进程里注入（要匹配版本）——npm 包装不下这两样。插件能做的是：缺东西的时候说清楚缺什么，而不是让人装完盯着一片红发呆。

## 0.4.0 — 2026-10-25

群聊从"只回 @"变成"会参与聊天"。

**新增**
- 群聊「参与聊天」：每群记最近 30 条现场，隔 8–20 分钟给一次插话机会；冷场 5 分钟不开口
- 群聊拆成两个开关：接消息（只回 @）/ 参与聊天（会自己插话）
- 群聊参数全部可在设置页调：窗口条数、机会间隔、冷场窗口、同群冷却、日额、群号白名单
- 设置页对「参与聊天」标注 token 成本警告
- README 增加「群聊的额外一条」：放进熟人群之前的判断

**修复**
- 群聊白名单为空时不再误判为"已开启"

## 0.3.0 — 2026-10-25

这一版把"能发能收"变成"能自己活着"。

**新增**
- 收消息自检：90 秒没有任何帧（NapCat 每 30 秒心跳）就主动重连；连接/断开/触发都写日志
- 群聊接话（默认关）：白名单 + 只接被 @ 的 + 同群冷却 10 分钟 + 全群日额 20
- 主动说话：随机间隔（区间内抽），到点给它一次"想说就说"的机会
- QQ 空间自动发说说：开关 + 自由提示词 + 随机间隔
- 打开 DSH 自动拉起 NapCat（`-q` 快速登录，免扫码）
- 设置页：连接状态、四个开关、间隔与额度、空间提示词，带「保存更改」

**修复**
- 配置文件带 BOM 时整份配置被忽略（读取时剥 BOM，写入改用无 BOM）
- webServer 未就绪导致接口挂不上（改 `ctx.inject` 等它出现）
- 15 秒轮询会覆盖正在输入的数字（改草稿态 + 显式保存）
- 图片消息先只记 `[image]`，现在会下载到本地并记路径

## 0.2.0 — 2026-10-25

- `qq_send` 支持图片（`file:///` + 正斜杠）
- `qq_stickers` 列出攒下来的图
- 收消息内置 WebSocket，不再需要外部监听脚本
- 自动回复改走 `sessionController.prompt`（不再用 agent 内部方法）
- 自动回复附记忆片段（MEMORY.md 末尾 + 当天日记）

## 0.1.0 — 2026-10-25

- 第一个能跑起来的版本：`qq_status` / `qq_send` / `qq_read` / `qq_qzone`
- 限速防封（随机 2–7 秒、20/时、60/天）
- 配置走 `<DSH_HOME>/qq-moony/config.json`
