# Mew 版本更新记录

Mew 是原 CATO 应用的新名称；旧 `CATO_` 环境变量和旧数据库文件名只用于兼容已有服务器，新的部署统一使用 Mew 名称。本文件记录从本地原型到当前版本的主要变化。

## V3.0.1（2026-08-12）

### Mew 命名迁移

- 新部署统一使用 `mew` 服务、`/opt/mew` 程序目录、`mew` 运行账号、`MEW_*` 环境变量和 `data/mew.db` 数据库。
- 已有 V3.0.0 服务器可按发布指南安全迁移：旧 `cato.db` 会通过 SQLite 快照复制到新的 `mew.db`，原始数据库保留以便回退。
- 旧 `CATO_*` 配置仍可在启动时兼容读取，但新的示例配置、运行代码和部署样例不再以旧名称作为默认值。

## V3.0.0（2026-08-12）

### 连续助理基础

- 新增项目推进页：可以建立项目、设置项目状态，并在新建或编辑任务时把任务归属到项目；项目卡片实时显示已完成任务与总任务的进度。旧任务不会被强行归类。
- 任务底层新增可选项目关联与父任务关联，为后续 AI 自动拆解项目、子任务排期保留兼容数据结构。
- 角色设定新增最多 30 条版本历史：保存前自动保留旧版，可载入查看或一键恢复；恢复不会影响任务、记忆、模型配置或渠道。
- 新增渠道中心：网页显示最近对话来源、每个渠道是否可用，以及“最后在哪发消息就优先回哪里”的实际状态。
- 账号安全页新增个人数据导出，包含项目、任务、习惯、记忆与角色版本；严格排除 API 密钥、登录会话、渠道令牌、绑定标识和图片文件。

### 升级可靠性

- 数据库加入可追踪的 V3 迁移记录与 SQLite `user_version`；新表和新列均使用兼容方式创建，已有数据保持原样。
- 新增项目、任务层级与角色版本自动化测试，不改变现有飞书、企业微信、微信公众号或个人微信的投递边界。

## V2.29.6（2026-08-12）

### 角色设定与回复语气

- 「控制中心 → 角色设定」新增「想要的说话方式」与「一键生成草稿」：使用当前账户已配置的真实模型生成完整角色 Prompt，只填入编辑框，绝不自动保存或覆盖线上设定。
- 保存后网页会明确提示「下一条新消息」开始生效；角色 Prompt 原本就会进入网页、飞书、企业微信和个人微信的真实模型调用，本次补足了可验证、可回退的编辑流程。
- 默认猫设进一步要求按用户语气和场景切换表达：事实、工作与排障保持清楚专业；不把简短、烦躁或沉默擅自判定为某种情绪；信息并列时允许简短分行，避免为了纯文本而牺牲可读性。
- 新增角色草稿编辑器的底线测试；不改变数据库结构、账号、模型档案、任务规则或渠道投递逻辑。

## V2.29.5（2026-08-12）

### 聊天安全与回复体验

- 修复“我可以说‘明天 9 点提醒我看书’吗？”等引用示例被错误创建为任务的问题；示例、教程、假设和否定表达不会写入数据。
- 对本来没有提醒的任务取消提醒时，明确回复“没有改动”；对已设置提醒的任务，明确说明提醒已取消且任务仍保留。
- 当一句话同时包含故障与选择，例如“飞书打卡为什么不行，该选哪个方案”，优先按故障排查组织回答，而不是直接比较选项。
- 新增多场景聊天回归测试；不改变数据库结构、账号、AI 配置或渠道投递规则。

## V2.29.4（2026-08-12）

### 聊天任务表达修复

- 补全“完成看书”“做完看书”等自然说法，直接在本地匹配并完成已有任务，不再无意义地落入模型调用。
- 用户以「任务名」标注名称时，完成、删除、取消提醒和改时间会统一剥离引号后查询，避免误报找不到任务。
- 新增对应的聊天解析回归测试；不改变任务确认规则、数据库、AI 配置或任何渠道投递逻辑。

## V2.29.3（2026-08-12）

### 登录体验修复

- 修复未登录或登录会话过期时，后端错误返回 503「服务不可用」的问题；现统一返回标准 401，网页会立即弹出登录框，不再错误退回演示界面。
- 新增登录状态码回归测试，并以隔离数据完整模拟登录、建任务、完成任务、建习惯、打卡、聊天及完成后重建同名任务的用户流程。
- 不改变账号、数据库结构、任务/习惯规则、AI、飞书、企业微信、微信服务号或个人微信的配置与投递逻辑。

## V2.29.2（2026-08-12）

### 飞书卡片与代码维护

- 修复飞书任务提醒卡片：完成任务后立即替换为绿色完成状态，移除可重复点击的按钮；重复点击仍会安全提示，不会重复完成任务。
- 删除未使用的渠道导入和卡片回调局部变量，移除发布脚本中已不存在文件的排除规则。
- 统一网页、说明文档和健康检查的版本号；发布包只保留本次上传指南，历史指南仍保留在开发目录中。
- 不改变数据库结构、任务/习惯行为、AI 回复逻辑、账号、记忆或任一消息渠道的配置与路由规则。

## V2.29.0（2026-08-11）

### 以用户问题为中心的 AI 回复体验

- 新增「用户回答契约」层，不再只按关键词决定情绪和长度；系统会识别比较、排障、判断、操作指导、知识解释、情绪支持、执行和日常对话八类真实需求。
- 比较问题先给明确推荐与取舍；故障问题先给最可能原因和高成功率检查；判断问题给倾向与前提；操作问题先给最短路径；解释问题首句直接回答；情绪支持不替用户诊断。
- 每轮模型请求都会明确：用户优先需要答案、判断、真实结果或可执行下一步，而不是角色表演、过程播报、功能推销或固定收尾。
- 新增典型用户提问体验测试，自动化测试增至 79 项。

## V2.28.1（2026-08-11）

### AI 回复底层与对话质量

- 长期记忆从固定注入 30 条改为按当前问题关键词排序，最多注入 8 条和 1400 个字符；相关记忆优先，无关信息不再挤占模型上下文。
- 聊天历史改为固定字符预算，优先保留最近有效消息，不再仅按条数截取；硅基流动等较小上下文接口也能稳定保留用户的最新问题。
- 任务、打卡等真实操作后的二次自然语言生成现在同时接收「用户原话」和「服务器已验证结果」，减少语气脱离上下文，同时仍以事实校验兜底。
- 最终 AI 文本统一移除控制字符、相邻重复段和失控超长内容；超长时在自然断句处收束，并提示用户可继续展开。
- 运行时指令明确数据优先级：数据库/工具结果高于本轮需求，需求高于相关记忆与角色表达；历史、记忆和用户文本不能改写工具权限或诱导伪造执行结果。

### 使用体验调整

- 按用户要求，移除 V2.28.0 的登录失败锁定；输错密码仍只返回原有的账号或密码错误提示，不会短时封锁登录。
- 新增 3 项回复链路回归测试；自动化测试增至 77 项。

## V2.28.0（2026-08-11）

### 生产级可靠性与安全加固

- 登录新增按客户端来源和账号名双维度的内存限流：十分钟内连续失败五次会短时锁定，并返回标准 `Retry-After`；成功登录立即清除对应失败记录。
- HTTP 长连接中的 `ContextVar` 用户、渠道和目标状态现在每个请求都会重置，杜绝线程复用时上一请求身份或投递上下文泄漏到下一请求。
- 请求体会拒绝不支持的分块传输，并检测 `Content-Length` 与实际读取长度是否一致；截断请求不再继续解析或执行。
- 模型地址校验禁止普通账号将请求发往 localhost、`.local`、私网或保留 IP。确实部署本机模型时，只有管理员在服务器 `.env` 显式设置 `CATO_ALLOW_LOCAL_MODEL_ENDPOINTS=1` 才可保存本机地址。
- POST、PUT、PATCH、DELETE 与飞书回调的异常响应统一使用脱敏、可行动的错误提示；内部日志不再把异常细节直接返回浏览器或平台。
- SQLite 连接显式设置 10 秒忙等待，降低多渠道消息、提醒线程和网页同时写入时短暂锁冲突的失败概率。

### 验证

- 新增登录锁定、模型私网地址、截断/分块请求体等回归测试；自动化测试增至 75 项。

## V2.27.1（2026-08-11）

### Mew 人格与回复体验

- 重写默认角色 Prompt：Mew 的核心从「每句都像猫」调整为「可靠、有观察力、能把事情接住的猫猫伙伴」；保留咪与老大的亲密感，但不再强制句句称呼、卖萌或描写动作。
- 增加事实边界与对话节奏：默认先回应用户真正的意图，再补充必要行动或解释；明确区分事实、推测、情绪判断与实际执行结果，不再用固定客服式收尾。
- 为每次模型调用补充稳定的人格执行准则，降低模型重复颜文字、重复句式、机械追问和夸张猫设的概率，同时遵守网页的简洁/详细回复偏好。
- 已有用户在网页保存的自定义角色 Prompt 完全保留；希望采用新版猫设时，可在「角色设定」中主动恢复默认设置。

## V2.27.0（2026-08-11）

### 全渠道稳定性巡检

- 飞书、企业微信、微信公众号与个人微信在入站回调确认后立即写入“最后发言渠道”；模型还在处理时遇到任务提醒，也会准确投递到最新平台，飞书群聊会保留群聊目标。
- 微信公众号明确限定为消息窗口内的对话回复，停止被当作可长期主动投递的提醒渠道；个人微信仍使用用户设定的本地窗口及飞书/企业微信后备渠道。
- 企业微信和微信公众号的中文长文本按 UTF-8 字节上限安全裁切；公共 HTTP 客户端统一将渠道超时转化为可理解的错误信息。
- 习惯提醒文案不再假定所有渠道都有飞书卡片；网页消息轮询增加防重入保护，避免慢网络时重复拉取和重复渲染。

### 验证

- 新增入站飞书来源、微信公众号主动提醒边界、UTF-8 字节截断与渠道超时测试；自动化测试增至 71 项。

## V2.26.6（2026-08-11）

### 飞书卡片最小响应

- 卡片点击成功后只返回官方支持的 Toast，不再在同步回调内替换卡片 JSON；打卡、完成和删除的数据库操作与幂等保护不变。
- 此改动消除了新版回调中替换卡片数据格式不兼容所引发的客户端交互错误风险。

## V2.26.5（2026-08-11）

### 飞书回调格式诊断

- 所有飞书回调（包括未被识别为卡片动作的回调）都会即时记录事件类型、动作字段位置和按钮标识；不再只能看到 HTTP 200。
- 卡片动作的事件类型兼容从 `header`、顶层或 `event` 内读取，避免因飞书投递格式差异被误判为普通事件。

## V2.26.4（2026-08-11）

### 飞书回调即时日志

- 飞书卡片事件、路由失败、未知按钮与处理异常日志改为强制即时输出，使用 `journalctl -f` 点击卡片时可立即看到实际处理分支。

## V2.26.3（2026-08-11）

### 飞书卡片回调可诊断性

- 飞书卡片点击到达服务器后会记录事件类型、按钮动作和操作者标识；共享账号无法匹配用户时返回明确的重新绑定提示，不再静默返回空成功响应。
- 未知按钮动作也会写入日志，方便从服务器输出精确定位卡片格式问题。

## V2.26.2（2026-08-11）

### 重复任务的时间隔离

- 明确的单条提醒改为优先使用本地时间解析与创建；同名已完成任务、旧聊天记录或旧失败计划中的过期时间不会再被复用。
- 新建任务没有在本轮给出时间时，模型被明确要求留空或追问，不能复制历史时间。

## V2.26.1（2026-08-11）

### 外部渠道路由与飞书打卡

- 主动陪伴、任务提醒和习惯提醒改为优先投递至用户最后发言的飞书或企业微信，不再被较早的微信上下文抢占。
- 只有最后发言来自个人微信时才检查微信本地上下文窗口；窗口失效后才按用户设定改投飞书或企业微信。
- 飞书打卡卡片回调新增服务端异常兜底与可检索日志；操作失败会返回明确 toast，不再只显示平台错误码。
- 飞书配置指南补充 Code 200080 排查：仅订阅新版 `card.action.trigger`、使用开发者服务器回调并重新发布应用。

## V2.26.0（2026-08-11）

### 个人微信窗口与外部续航

- 个人微信 ClawBot 的本地上下文窗口改为每位用户可在网页选择 1、6、12、24、48 或 72 小时，并可选择提前 5、15、30 或 60 分钟提醒。
- 每个微信上下文只会在到期前发送一次「咪要暂时从微信退下啦；再发一条消息就能把咪叫回来。」；用户随后在微信发来任意新消息，即刻刷新窗口并可重新投递。
- 微信窗口失效后，任务提醒、习惯提醒和主动陪伴会严格改发到用户在网页选定的飞书或企业微信，不再按服务器默认顺序猜测渠道。

### 表情包

- 默认表情资源更新为 21 个命名候选变体；AI 回复按表情类别随机选择一个可用变体，仍保留旧类别文件以兼容已有设置和上传覆盖。

## V2.25.1（2026-08-10）

### 两阶段计划校验深化

- 新增复杂请求判定原因：条件依赖、上下文指代、多意图、多时段、顺序步骤和长请求会优先交给模型形成结构化计划；本地关键词解析继续只处理单一明确快捷操作与安全护栏。
- 模型计划在任何写入前生成只读校验报告，逐步检查过期时间、任务目标是否真实存在、15 分钟内冲突、计划内重复和追杀提醒参数。
- 过期时间、缺失目标等阻塞问题会停止整个计划并一次列完；冲突和疑似重复只显示提示，不会擅自改变 AI 对用户意图的理解。
- 多项操作预览会保存校验结果；用户回复「确认执行」后再次校验目标和时间。预览期间任务被删除或状态改变时，剩余步骤也不会误执行。

### 场景化回复与去重

- 新增统一回复场景：闲聊、安慰、严格督促、任务请求、任务结果、任务变更、完成庆祝、查询、计划预览、澄清、解释和错误恢复。
- 每个场景都有独立情绪、目标长度和表达结构；用户的简洁、详细、自动偏好会继续调整场景策略，但不能覆盖数据库事实。
- 创建、完成、删除、修改、空列表和任务查询等可靠兜底回复改为多模板轮换，并按最近回复相似度选择，不再随机撞回刚用过的句式。
- 开头去重从完全相同升级为近似文本相似度比较；只替换表达开场，任务名称、时间、数量和失败信息保持不变。
- 普通图片表情冷却延长为 180 秒，并检查最近三次使用；完成、打卡等重要结果仍可轮换同类表情。

### 验证

- 新增复杂路由、过期与目标校验、冲突提示、确认前二次校验、场景策略、模板轮换和近似句式去重测试；完整自动化测试增至 58 项。

## V2.25.0（2026-08-10）

### P1 两阶段任务理解

- 模型的工具调用现在先形成结构化计划，后端统一规范化并校验操作类型、任务标题、时间、范围、序号、追杀间隔和用户归属；校验通过后才进入预览或执行。
- 复杂自然语言继续交给模型决定合理颗粒度，关键词规则只保留否定、举例、过去时间、破坏性操作等安全护栏以及明确快捷指令。
- 计划存在多个缺项时不再边执行边失败，也不会连续多轮每次只问一项；服务器会在一条消息中列出全部阻塞问题。
- 用药安排会同时检查药品名称和全部服药时段。例如「明天吃三次药，帮我安排」会一次询问药名与三个时间，不会猜药或擅自创建泛称任务。

### 智能命名与自然表达

- 任务标题进入独立规范化步骤，自动移除日期时间、追杀词、「帮我」「提醒我」等控制语，并保留动作与对象。
- 补全「论文」为「阅读论文」、「实验记录」为「整理实验记录」等常见名词型任务；拒绝只有「处理」「安排」「提醒」的空泛标题。
- 主回复会参考最近五条助手消息，模型被明确要求避开相同开头、收尾、猫系动作和整句模板。
- 若可靠兜底回复仍与最近句式重复，服务器只更换开场，不改动已验证的任务名称、时间、数量和失败事实。
- 图片表情增加短时冷却：普通对话连续重复时暂不发图，完成、打卡、建任务等重要场景自动轮换同类表情，不再连续刷同一张。

### 验证

- 新增 P1 计划规范化、组合追问、用药缺项、智能标题、回复去重和表情冷却测试；完整自动化测试增至 52 项。

## V2.24.0（2026-08-10）

### P0 安全操作闭环

- 多项创建、批量完成、批量删除等复杂写操作先展示逐项预览，只有用户回复「确认执行」后才写入数据库；支持「取消操作」。
- 网页聊天在待确认状态下显示「确认执行」「取消」按钮，飞书、微信与企业微信仍可直接用自然语言确认。
- 为任务写操作增加最近 30 次操作历史，支持聊天说「撤销上一步」，也可在任务看板点击「撤销上一步」。
- 撤销前校验当前任务状态；如果操作之后数据又被修改，会拒绝覆盖新数据并提示手动处理。
- 网页新建、编辑、删除和恢复任务也进入同一撤销历史，不再只覆盖聊天操作。

### 上下文指代与投递审计

- 支持「完成前两个」「删除最后三个」「删除刚才那个」「完成这些」「删除剩下的」等上下文指代。
- 任务列表和操作结果会保存最近引用对象；多项完成及所有删除仍需预览确认，避免把「它们」理解错后直接修改。
- 新增独立「投递记录」页面，按用户记录网页、飞书、微信公众号、企业微信和个人微信的成功/失败状态、内容摘要、时间与安全错误。
- 任务提醒、习惯提醒、主动陪伴和渠道聊天回复接入投递审计；失败的任务、习惯与陪伴消息可在网页重新发送。
- 投递错误会自动隐藏 Bearer 令牌、API Key、Secret 和常见密钥格式，普通用户只能看到自己的记录。

### 数据与验证

- SQLite 自动新增 `operation_history`、`user_reference_state` 和 `delivery_logs`，现有任务、聊天、配置和渠道绑定无需手工迁移。
- 新增 P0 预览确认、上下文指代、撤销冲突和投递脱敏测试；全部 45 项自动化测试通过。

## V2.23.0（2026-08-10）

### 回复逻辑与表达方式

- 重构工具执行结果处理：一次回复包含多个操作时逐项执行，某一项失败不会抹掉已成功写入数据库的任务或打卡。
- 模型润色后的回复必须覆盖真实任务名称、提醒时间、数量、重复状态、待确认状态和失败项；缺少关键事实时自动退回可靠的确定性回复。
- 「没有找到任务」「这个时段已经打过卡」等零命中或重复结果不能再被模型改写成成功操作。
- 默认回复按场景变化：问候保持一至两句，单项操作先说结果，多项操作逐行列出，解释类问题先给结论再补原因。
- 清理重复的助手名前缀、Markdown 痕迹和「有什么需要随时叫咪」式客服收尾，同时保留真正需要用户回答的澄清问题。
- 角色化回复会参考最近几条助手消息，主动避开连续相同的开头和结尾。

### 个性化与错误恢复

- 每位用户新增「回复详细程度」设置，支持自动、简洁和详细三档，保存在数据库中并在重启后继续生效。
- 支持在聊天中直接说「以后回复简洁一点」「以后回复详细一点」或「回复改成自动」。
- 模型认证、限流、超时、网络和工具错误改为可执行的中文提示，并明确本次是否继续操作。
- 用户可见错误会过滤 API 密钥、Secret、Bearer 令牌和带凭证的网址。
- 网页、飞书、微信公众号、企业微信和个人微信统一使用同一套安全错误说明。
- 新增回复事实覆盖、部分成功、零命中、聊天切换与密钥脱敏测试；自动化测试增至 40 项。

## V2.22.0（2026-08-10）

### 模型回复兼容与自动恢复

- 兼容 Kimi、Qwen、硅基流动及其他 OpenAI 兼容接口返回的字符串、文本片段数组和嵌套 `text.value`，不再把真实正文误判为「模型没有返回文本」。
- 严格忽略 reasoning、thinking 等内部推理字段，只向用户显示最终答案。
- 模型无工具调用且正文为空时，在任何工具执行前自动关闭思考参数、提高输出上限并安全重试一次；不会重复创建任务、重复打卡或重复删除。
- 连续两次为空时显示非敏感的结束原因，便于判断是模型兼容、输出长度还是思考模式问题。
- 模型网络超时、无效 JSON、响应过大和错误数据结构提供更明确的提示。

### 连续对话与角色体验

- 同一用户从网页、飞书、微信公众号、企业微信或个人微信连续发送的消息按顺序处理，避免两条消息抢同一段上下文；不同用户仍可并行使用。
- 默认角色增加「先理解结果、再决定工具」原则：背景说明不误拆为任务，只有独立动作或独立时间点才拆分。
- 安全且容易修改的细节允许合理推断，只有日期、对象、破坏性操作或用药信息存在实质歧义时才追问。
- 成功回复在保证数据库事实准确的前提下增加多种自然表达，减少「记好了」「勾选成功」等固定开头。

### 网页可靠性与移动端体验

- 网页把账号、聊天、任务、习惯等核心数据与渠道配置、主动陪伴等附加模块分级加载；单个渠道异常不再导致整个网站不可用。
- 修复快速添加连点时可能重复建任务、首页完成任务后看板不同步、编辑失败后按钮错误显示「添加任务」等问题。
- 今日已完成的习惯按钮会自动禁用，避免重复打卡；任务与习惯显示其提醒渠道，失败重试中的任务显示「待重试」。
- 首页任务按未完成优先和到期时间排序，错误提示停留时间随内容长度调整。
- 手机任务看板改为单列阅读，长文本自动换行，并支持系统「减少动态效果」设置。
- 新增模型返回格式、内部推理隔离和嵌套文本解析测试，全部 34 项自动化测试通过。

## V2.21.0（2026-08-10）

### 消息渠道固定与防串台

- 修复个人微信回复窗口过期后，后续任务或习惯提醒自动跳到企业微信；以及飞书创建的提醒被其他已绑定渠道截走的问题。
- 新任务和新习惯会保存创建时的渠道、目标会话与目标类型：个人微信、微信公众号、企业微信、飞书单聊或飞书群聊互不串台。
- 猫猫主动陪伴跟随用户最近一次主动联系 Mew 的渠道；该渠道暂时不可用时仅保留网页记录，不会偷偷改发其他平台。
- 个人微信五分钟短时回复窗口失效时明确记为该渠道不可用，不再降级到企业微信或飞书。
- 升级前的旧任务没有来源信息，会在首次发送时按当时可用渠道解析一次并固定，之后不再重新选路。
- 新增渠道亲和测试，覆盖飞书群目标、个人微信习惯和「个人微信失效但企业微信可用」三种关键串台场景；全部 32 项测试通过。

## V2.20.1（2026-07-28）

### 微信表情显示修复

- 修复任务提醒、习惯提醒和主动陪伴通过个人微信短时上下文发送时，将内部 `[emoji:checkin]` 等控制标记显示在正文中的问题。
- 所有短时个人微信出站消息先统一拆分为「纯文字正文 + 表情用途」，正文不再包含内部标记。
- 表情用途存在时，在纯文字之后发送对应图片；用户上传的同用途自定义图片仍优先于默认图片。
- 图片发送失败不会把已经成功送达的文字提醒标记为失败，也不会造成提醒重复发送。

## V2.20.0（2026-07-28）

### 个人微信图片表情

- 按腾讯微信 ClawBot/iLink 官方媒体协议实现图片发送：申请 CDN 上传地址、AES-128-ECB 加密、上传密文并发送图片消息。
- 文字回复成功后，可根据对话语气和任务动作继续发送一张合适的图片表情；文字与图片使用独立唯一消息 ID。
- 网页上传的用户自定义表情会覆盖同用途默认表情，并同步用于个人微信，不需要重复配置。
- 图片限定在 5 MB 内，严格校验微信 CDN HTTPS 域名；登录令牌、AES 密钥和上传参数不会返回浏览器。
- 图片属于附加表达：即使 CDN 临时失败，已经成功的文字回复仍然保留，不会重复发送错误消息。
- 服务器继续保持无第三方 Python 包依赖，使用系统 OpenSSL 完成媒体加密。

## V2.19.2（2026-07-28）

### 个人微信连续回复

- 每条个人微信下行消息生成唯一 `client_id`，避免腾讯侧把后续空 ID 消息识别为重复消息，修复「网页有回复、微信只有第一句」。
- 个人微信发送失败会写入连接状态，便于直接在网页查看真实故障原因。
- 最近五分钟内活跃的个人微信成为任务、习惯和主动陪伴的优先短时渠道；上下文失效后自动回退企业微信或飞书。
- 保留个人微信能力边界：任意未来时间的可靠主动提醒仍需飞书或企业微信。

## V2.19.1（2026-07-28）

### 个人微信扫码修复

- 修正将腾讯 `qrcode_img_content` 登录链接误当作远程图片下载的问题；服务器现在把一次性登录链接编码为真正的 PNG 二维码。
- 正常的二维码状态长轮询超时会继续等待，不再错误显示为「暂时无法连接微信 ClawBot 服务」。
- 手机端增加「在微信中打开」备用入口；服务器缺少二维码组件时不再显示破损图片。

## V2.19.0（2026-07-28）

### Mew 品牌

- 应用对外名称由 CATO 更新为 Mew，网页标题、导航、登录页、默认角色和机器人提示同步更新。
- 保留 `CATO_` 环境变量、`cato.service`、`cato.db` 和原部署目录，旧服务器无需重写配置。

### 个人微信 ClawBot

- 新增腾讯微信 ClawBot/iLink 实验渠道，不需要部署完整 OpenClaw。
- 每位 Mew 用户可以在网页控制中心生成二维码，用微信扫码确认并连接自己的个人微信。
- 支持扫码状态、节点跳转、数字验证码、二维码过期、重新认证和安全断开。
- 服务器为每个已连接用户独立运行长轮询，收到文字后复用现有角色、记忆、任务、习惯和工具调用能力回复。
- 登录令牌和消息上下文只保存在服务器数据库，读取接口仅返回掩码、状态和时间，不回传完整凭证。
- 严格校验腾讯服务域名、二维码图片域名、消息发送结果、用户身份和消息 ID，避免 SSRF、串号与重复执行。

### 能力边界

- V2.19.0 当时仅可靠支持「收到消息后的文字回复」；图片能力已在 V2.20.0 补充，卡片和任意时刻主动发消息仍受 iLink 上下文限制。
- 猫猫主动陪伴只会在最近收到微信消息后的五分钟上下文窗口内尝试走个人微信；窗口失效时转为网页记录，飞书与企业微信仍是可靠主动推送渠道。

## V2.18.0（2026-07-28）

### 猫猫主动陪伴

- 新增每用户独立的主动陪伴开关，默认关闭，不影响原有任务和习惯提醒。
- 网页控制中心新增「主动陪伴」分区，可分别设置久未聊天关心、晚安、允许时段、晚安时间、沉默阈值与每日上限。
- 聊天中可直接说「开启主动陪伴」「关闭主动陪伴」或「查看主动陪伴设置」。
- 主动文案结合用户角色、长期记忆和未完成任务，由当前模型生成；模型不可用时自动使用自然的猫系兜底文案。
- 外部发送优先企业微信，其次飞书；没有可用外部渠道时消息仍会进入网页聊天历史。

### 安全与可靠性

- 每天最多发送两条，同一日期同一类型不会重复，并遵守久未聊天阈值和用户允许时段。
- 主动陪伴使用独立调度线程，单个用户生成或发送失败不会阻塞任务提醒和其他用户。
- 进程异常中断时会释放未完成的陪伴投递占位，避免消息永久卡在处理中。
- 文案规则禁止捏造用户近况、制造焦虑或主动推销功能。

## V2.17.2（2026-07-28）

### 企业微信响应提速

- 将等待动作与正式回复的默认最小间隔从 2.5 秒缩短为 1 秒。
- 仍允许通过 `CATO_WECOM_WAIT_GAP_SECONDS` 在 0.8 至 10 秒之间自行调整。
- AI 计算超过 1 秒时不会再额外等待。

## V2.17.1（2026-07-28）

### 企业微信异步回复修复

- 修复等待动作和 AI 正式回复过快到达、在企业微信客户端中看起来像同时出现的问题。
- 等待动作发送成功后，AI 仍会立即开始计算，但正式回复最早在 2.5 秒后发送；模型本身耗时更久时不会重复等待。
- 新增 `CATO_WECOM_WAIT_GAP_SECONDS` 环境变量，可把最小可见间隔调整为 0.8 至 10 秒。
- 等待动作发送失败时不会强行延迟错误处理或正式回复。

## V2.17.0（2026-07-28）

### 模型配置档案

- 新增管理员全局模型档案。管理员可分别保存硅基流动、Kimi、通义千问、DeepSeek、OpenAI 和其他 OpenAI 兼容服务的模型、API 地址与密钥。
- 新增用户个人模型档案。每位用户可以继承管理员默认，也可以保存只属于自己的供应商配置。
- 每个供应商独立保存，切换供应商不会再覆盖上一套模型、地址或密钥。
- 旧版单一用户模型配置会在首次启动时自动迁移为个人档案，不覆盖现有 `.env` 或数据库。

### 密钥安全

- 完整 API 密钥只保存在服务器数据库，从不回传浏览器。
- 用户自己的密钥保存后显示首尾掩码；管理员维护全局默认时可看到全局密钥掩码。
- 普通用户使用管理员默认配置时只看到“管理员已安全配置”，不会看到管理员密钥的任何字符。
- 支持单独清除当前供应商档案的密钥，且清除前需要确认。

### 网页体验

- 模型设置页新增“配置来源”“供应商”和当前生效状态。
- 普通用户查看管理员默认配置时，模型字段为只读；切换到个人配置后可独立编辑并保存。
- 测试连接会先保存并启用当前档案，再使用实际生效配置测试。

## V2.16.0（2026-07-28）

### 新增

- 新增企业微信自建应用渠道，支持安全回调校验、AES 解密、双向文字消息与主动发送。
- 新增企业微信一次性绑定码和自定义绑定码，每位企业成员映射到独立的 CATO 用户空间。
- 新增企业微信等待动作：先快速确认收到消息，再异步发送 AI 与工具执行后的正式回复。
- 新增企业微信任务和习惯提醒，以及网页端配置、测试、绑定与解绑。

### 设置页优化

- 控制中心拆分为七个独立分区，一次只显示当前分区。
- 消息渠道统一管理飞书、微信服务号和企业微信。

### 安全与可靠性

- 企业微信敏感配置不会通过读取接口回显。
- 回调验证签名、CorpID、PKCS#7 填充与事件去重。
- 同时绑定多个渠道时优先企业微信，避免相同提醒重复推送。

## V2.15.1 · 提醒可靠性与移动端体验（2026-07-28）

- 修复习惯提醒在飞书发送失败前已被记为成功、导致后续永不补发的问题。
- 习惯提醒新增处理中、成功、待重试状态，失败后最多重试 5 次；同一提醒重试时不会重复写入网页聊天。
- 服务启动时自动恢复意外中断的提醒，并清理 180 天前的习惯提醒日志及 30 天前的渠道事件去重记录。
- 管理员系统自检新增提醒重试队列状态，便于发现渠道临时故障。
- 微信服务号配置新增「测试连接」，会验证 AppID 与 AppSecret，但不会显示或回传凭证。
- 微信配置新增一键复制回调地址；角色设置中的等待动作说明同时覆盖飞书与微信。
- 控制中心新增横向快捷导航，可快速跳到个人绑定、模型、角色、飞书、微信及管理员区域。
- 移动端侧栏新增遮罩、点击外部关闭与 Escape 关闭，避免菜单打开后遮挡页面却难以退出。
- 加强移动端标题、说明文字、卡片边框、焦点状态和表单按钮的可读性，同时保持伊布／皮卡丘暖色主题。
- 新增习惯提醒故障恢复与微信凭证缓存自动化测试，当前共 8 项模块与可靠性测试通过。

## V2.15.0 · 微信服务号第一阶段（2026-07-28）

- 正式新增微信服务号渠道，不使用非官方个人微信机器人协议。
- 管理员可在网页保存 AppID、AppSecret、Token 和 EncodingAESKey，并获得不可预测的独立回调网址。
- 完成微信 GET 服务器验证、POST 明文消息验签、XML 解析、事件去重、关注和取消关注处理。
- 每位用户可在个人信息中生成随机或自定义的一次性微信绑定码；发送给服务号后自动把公众号 OpenID 绑定到对应 CATO 账号。
- 修复自定义微信绑定码大小写标准化后被错误拒绝的问题，`young`、`YOUNG` 等输入现在按同一绑定码处理。
- 微信文字消息进入现有聊天、任务、习惯、记忆和上下文系统，不复制第二套业务数据。
- 微信收到文字后立即被动回复猫系等待动作；AI 完成后通过客服消息接口发送正式结果。
- 网页新增微信绑定状态、生成绑定码、复制绑定码、解绑，以及管理员服务号配置区域。
- 管理员系统自检新增微信服务号启用状态，但不读取或回显任何微信密钥。
- 当前明确只支持明文模式和文字消息；AES 安全模式、图片、菜单和微信主动提醒不会伪装成已实现。
- 开始渐进式拆分后端：新增 `cato_app` 启动配置、通用 HTTP、模型传输模块，以及 `channels` 消息渠道接口。
- 把飞书令牌、文本消息、消息编辑、交互卡片和图片上传下沉到独立渠道适配器；原有 API、数据库和用户绑定保持兼容。
- 新增微信服务号独立适配器、渠道能力声明、模块边界测试及完整接入配置指南。
- 完成 6 项模块测试、隔离数据库绑定流程测试，以及 215 个网页控件 ID / 203 个脚本引用检查。

## V2.14.0 · 系统自检与体验焕新（2026-07-27）

- 飞书即时等待动作从 4 条扩充为 18 条自然猫系动作，每次收到消息时随机选择，减少重复感。
- 旧数据库如果仍使用原来的 4 条默认动作，会在升级时自动迁移到新版；用户自己写过的内容保持不变。
- 控制中心显示等待动作实时计数，并提供「补充推荐动作」，可保留自定义内容后补齐缺少的推荐句。
- 新增管理员「系统自检」，检查数据库、数据目录写入、管理员保护、AI 模型、公开网址、飞书提醒和静态文件安全，不读取或显示密钥。
- 服务器补齐标准 HEAD 请求，Nginx、监控和 `curl -I` 访问主页与健康接口均返回正确状态。
- 新增 CATO 独立站点图标，消除浏览器反复请求不存在 favicon 的日志。
- 页面视觉统一为暖电系伊布／皮卡丘配色，强化卡片层级、聊天气泡、输入焦点、按钮反馈、移动端表单和诊断状态，同时保持已有功能位置不变。
- 完成静态 DOM 引用检查：180 个脚本引用控件全部存在、页面无重复 ID、无空点击处理器。
- 完成隔离数据库迁移、权限接口、敏感文件白名单、桌面交互与视觉回归测试。

## V2.13.0 · 完整管理员账户管理（2026-07-27）

- 管理员可以创建普通用户或管理员账户。
- 账号列表新增独立管理窗口，可修改用户名、显示名称、登录状态和管理员权限。
- 管理员可以为任意账户重置密码；修改后该账户现有登录会话立即失效。
- 停用账户会保留全部数据但禁止继续登录，管理员之后可以重新启用。
- 永久删除前必须再次输入目标用户名，删除后同步清理该账户的任务、聊天、习惯与打卡、记忆、模型密钥、图片表情、飞书绑定和登录会话。
- 当前登录管理员不能取消自己的管理员权限、停用自己或删除自己。
- 后端强制至少保留一位启用状态的管理员，非管理员调用管理接口会返回 403。
- 账号列表继续提供为指定用户设置一次性飞书绑定码的入口。

## V2.12.0 · 共享飞书机器人与一次性绑定码（2026-07-27）

- 管理员只需维护一套开启外部用户单聊的飞书应用机器人，普通用户不再需要分别填写 App ID、App Secret、Verification Token 或事件回调。
- 用户可以在「昵称与头像」中生成 10 分钟有效的随机绑定码，也可以设置 24 小时有效的自定义绑定码；绑定码成功使用后立即失效。
- 管理员可以在用户列表中为指定用户设置自定义绑定码，例如给 A 用户分配 `young`。
- 未使用且仍有效的绑定码会显示在对应用户的个人信息中，便于复制；服务器数据库只允许服务账号读取，并在绑定、过期或重新生成后清理。
- 外部用户开启与机器人单聊后发送绑定码，服务器会把飞书 `open_id`、租户标识与 CATO 用户绑定，后续聊天、任务、打卡卡片、图片表情和主动提醒都按绑定用户隔离。
- 未绑定用户只会收到绑定说明，不会进入管理员对话空间，也不会读取或修改任何用户数据。
- 增加解除绑定和重新绑定；同一飞书账号重新绑定时会自动解除它在同一共享机器人下的旧关联。
- 保留旧版每用户独立飞书应用配置，不覆盖现有 App Secret、事件回调、任务、聊天或提醒数据。
- 数据库启动时自动增加共享绑定字段和绑定码表，无需手动执行 SQL。

## V2.11.1 · 静态文件安全白名单（2026-07-27）

- 修复隐藏文件和不存在路径错误返回首页并显示 200 的问题；`/.env`、`/.env.local` 和 `/.env.production` 现在明确返回 404。
- 静态文件改为严格白名单，只公开网页所需 HTML、CSS、JavaScript、更新日志、公开指南和图片素材。
- 后端源码、数据库、`.env`、Docker／systemd／Nginx 配置、README 与 Agent 内部说明均禁止通过 HTTP 下载。
- 保留 `/api/health`、网页、公开文档和表情素材正常访问，未知路径统一返回 404。
- 新增本地 HTTP 安全回归测试，逐项验证敏感路径无法访问。

## V2.11.0 · AI 理解与可靠执行重新分工（2026-07-27）

- 调整核心架构：复杂自然语言由模型负责理解、拆分和选择工具，规则层不再抢先把整句话压成单个任务。
- 多动作、多对象、多个明确时间点，以及「拆分／规划步骤／分别提醒」等表达，会交给模型生成多个独立任务并一次落库。
- 用户已经明确给出多项内容与时间时可以直接创建；只有系统提出了尚未确定的时间方案时才等待确认。
- 简单、明确的查询、完成、删除、修改和打卡仍保留确定性快速路径，后端继续校验用户隔离、任务范围、时间、重复与真实执行结果。
- 兼容接口执行工具后，会把真实工具结果交回角色模型生成最终回复；不再长期重复「记好了／勾选成功」模板。
- 确定性快速路径也可调用角色模型改写表达，失败时自动回退到可靠模板，不影响真实操作结果。
- OpenAI Responses 接口补充函数工具定义、工具调用解析和执行后角色回复。
- 复杂的多个删除、完成或取消操作不再一律要求拆成多条消息；真实模型可逐项理解，批量删除仍由回收站与二次确认保护。
- 修复「分别提醒我」中的「别」被错误识别成否定词，导致整个请求被忽略的问题。
- 新增混合规划回归测试，验证复杂三步骤工作会建立三个任务，并验证第二次模型调用只负责表达已执行结果。

## V2.10.1 · 指令识别安全与防误操作（2026-07-27）

- 增加服务端「是否允许执行」判断层：举例、引用、假设、元问题和故障询问只作回答，不写入任务、习惯、记忆或打卡数据。
- 加强否定识别：「不要在明天三点提醒我」「不用删除」等长距离表达不会误执行，同时保留「不要忘了提醒我」的正向含义。
- 过去时间的描述不会自动滚动到未来；明确指定「今天」但时间已经过去时，会要求用户改正日期。
- 支持「十分钟后」「半小时以后」等中文相对时间；一句话出现多个钟点时不再合并成一个错误任务。
- 支持「完成第二个任务」「完成最后一个任务」以及「取消第一个任务的提醒」等序号指令。
- 否定完成和完成状态询问不再改变任务，例如「并不是所有任务都完成了」「第二个任务完成了吗」。
- 防止「我叫你 CATO」误改用户昵称；只有「叫我……」「我的名字是……」等指向用户本人的表达才保存。
- 一句话同时包含多个完成、删除或取消操作时要求拆分，避免批量破坏性操作范围不清。
- 修复按任务名称修改时间或取消提醒时，已经找到任务却没有返回结果的问题。
- 新增独立回归测试，覆盖否定、举例、引用、假设、过去时间、序号与复合破坏性命令。

## V2.10.0 · 可恢复、可编辑的智能任务中心（2026-07-18）

- 删除任务改为软删除：Web 提供回收站、单项恢复和全部恢复，聊天支持「撤销删除」。
- 批量删除不再立即执行，会列出目标并要求确认；Web 使用确认对话框，飞书发送带「确认删除／取消」按钮的交互卡片。
- Web 任务卡新增编辑入口，可修改名称、分类、状态、时间、提醒模式和追杀间隔。
- 聊天支持「把第二个任务改到明天上午」等按当前列表序号修改。
- 新增创建与修改检查：15 分钟内时间冲突、缺少提醒时间、少于 30 秒的追杀间隔和过短标题。
- 只说「吃药／服药」时先询问药品名称；只协助记录已经确定的安排，不判断剂量。
- 所有提醒扫描、任务列表与查改删操作都会排除回收站数据；旧数据库自动增加迁移字段。

## V2.9.1 · 智能任务命名与可靠删除（2026-07-18）

- 批量同名任务自动按时段区分，例如「早上服药」「下午服药」「晚上服药」，确切时间继续保存在任务时间字段中。
- 任务标题统一清理无意义的指令前缀并限制可读长度，同时保留「动作 + 对象」等关键信息。
- 修复「删除目前所有任务」被误当成标题「目前所有」而找不到任务的问题。
- 支持在网页或飞书聊天中按序号删除：「删除第一个任务」「删除第 2 项待办」「删除最后一个任务」。
- 支持「删除所有喝水任务」等按关键词批量删除，并与「删除所有任务」严格区分，避免范围误判。
- 模糊关键词命中多个任务时不再偷偷删除第一项，而是列出候选并要求用户确认完整名称或序号。
- 用户只说「删除任务」时返回当前任务候选并询问具体范围，不再交给模型猜测。
- 模型调用前由服务器注入实时未完成任务及其顺序，网页与飞书使用一致的数据库上下文。
- 批量任务先全部验证再开始写入，降低参数中途出错导致只保存半批任务的风险。
- 相同名称和相同提醒时间的未完成任务不会重复创建，可避免重复确认或网络重试产生重复提醒。

## V2.9.0 · 多会话历史与上下文清理（2026-07-18）

- 新增真正的多会话数据库结构：每位用户可拥有多段互相独立的聊天上下文。
- 网页新增「历史对话」页面，可打开旧对话、重命名、删除和手动开始新对话；手机端同样可用。
- 在网页或飞书发送「清理上下文」「清空上下文」「重置上下文」「开始新对话」时，会创建一段干净的新会话，旧聊天仍完整保留。
- 网页与飞书共享当前会话；切换后，两端后续消息使用同一段上下文。
- 升级前没有会话编号的旧消息会自动归档到「历史对话」，不会在数据库迁移中丢失。
- 模型上下文改为由服务器按当前会话读取，避免浏览器提交缺失、串线或篡改的历史内容。
- 所有会话查询、切换、重命名和删除操作均校验用户归属，防止跨用户访问。
- 修正网页轮询：只拉取当前会话的新消息，切换会话时同步重置消息游标。
- 原聊天页「清空」按钮改为「新对话」，避免误删整段历史。

## V2.8.0 · 智能安排与任务确认（2026-07-18）

- 新增 `create_task_batch`：AI 面对「一天三次」「三餐后」等多时段安排时，先提出具体时间方案，等待用户确认后再一次写入数据库。
- 批量任务中已经早于当前时间的日内时段自动顺延到下一次有效日期，避免保存后立即补发过期提醒。
- 飞书任务提醒新增「完成任务」按钮；点击后原卡片更新为绿色完成状态，并立即停止普通或追杀提醒。
- 管理员可在网页控制中心配置公开网址。配置保存到 SQLite 数据库，`.env` 的 `CATO_PUBLIC_URL` 保留为后备值；普通用户无权修改。
- 公网网址强制使用 HTTPS，并拒绝账号信息、查询参数和页面片段。
- 飞书表情由全宽图片消息改成窄列图片卡片；新上传表情自动压缩到最长边 180 像素。
- 整体配色从粉色改为伊布 × 皮卡丘的奶油、焦糖、暖黄与深棕组合。

## V2.7.1 · 稳定性自查修订（2026-07-18）

- 修复未配置 `CATO_PUBLIC_URL` 时，「查看任务」「查看习惯」等普通查询被误判成网址请求的问题。
- 网址识别只响应明确的官网、指南、链接、地址和「在哪里」类提问，不再抢占任务与习惯查询。
- 当前模型拒绝 `enable_thinking` 或 `reasoning` 参数时自动去掉不兼容字段重试，并明确提示本次已自动兼容。
- 修复飞书模型调用或记忆删除指令失败后，占位消息可能一直停留在思考状态的问题；现在会原地更新为可读错误提示。
- 修复网页任务时间未转义的潜在持久型脚本注入风险，并规范追杀间隔的数字显示。
- 改进聊天错误分类：记忆匹配不明确等输入错误直接显示具体原因，不再统一误报为 API 连接失败。
- 改进聊天链接结尾标点处理，避免中文句号被包含进可点击网址。

## V2.7.0 · 思考模式与智能导航（2026-07-18）

- 新增每用户「自动、开启、关闭」三档思考模式，可在控制中心保存，也可在聊天中直接切换。
- OpenAI Responses 使用 `reasoning.effort`，兼容 Chat Completions 使用 `enable_thinking`；固定思考模型可能无法关闭。
- 只展示最终答案，不向网页或飞书输出模型的内部推理过程。
- 新增 `CATO_PUBLIC_URL`，可以直接回答官网、指南和各功能位置并发送对应网址。
- 网站支持 `#tasks`、`#memories` 等页面定位，聊天中的网址会显示为可点击链接。
- 聊天记忆指令扩展为增、删、查，支持「查看记忆库」「删除记忆：……」「忘记……」和明确的「清空记忆库」。
- 模型处于演示模式时，思考模式、站内导航和记忆等确定性指令仍由后端执行。

## V2.6.0 · 个性资料与长期记忆（2026-07-18）

- 修复飞书打卡按钮错误码 200672：新版 `card.action.trigger` 现在使用官方要求的 `card.type=raw` 与 `card.data` 响应结构。
- 点击「完成打卡」后仍由本地数据库立即写入，并原地替换为绿色已完成卡片、移除按钮；不调用 AI。
- 新增每用户昵称与头像设置；静态头像在浏览器裁切压缩为 320×320 WebP 后保存到各自上传目录。
- 新增独立「AI 记忆库」页面，支持分类、添加、编辑和删除；全部记录按用户隔离。
- 支持在聊天中发送「记住：……」或「以后要记得：……」直接写入长期记忆库。
- 普通 AI 对话自动注入最近更新的长期记忆，只在相关场景中使用，不影响任务和打卡快速路径。
- 全站改为更柔和的奶油、蜜桃和猫爪点缀主题，统一圆润中文字体、卡片、按钮、聊天气泡和登录页风格。
- 完成桌面端与 390px 手机端视觉检查，记忆库和控制中心均无横向溢出。

## V2.5.3 · 主页与版本中心（2026-07-18）

- 在侧边栏 CATO 名称、主页焦点区和更新日志标题旁显示当前版本号；版本号由后端健康检查同步，避免前后端显示不一致。
- 新增网页「更新日志」页面，可直接查看从 V1.x 到当前版本的完整记录，也可以下载 Markdown 原文。
- 主页移除虚假的固定「连续专注 7 天」，改为真实的今日习惯打卡次数与总目标。
- 主页新增「接下来做什么」，自动显示优先任务、下一习惯时段及今日进度。
- 主页主按钮保留 AI 对话入口，同时增加直接新建任务入口，减少操作层级。
- 优化桌面端和手机端主页密度、信息层级、按钮布局与更新日志排版。

## V2.5.2 · 打卡卡片状态更新（2026-07-18）

- 点击飞书「完成打卡」后，回调除写入数据库和显示提示外，还会原地更新提醒卡片。
- 已完成卡片改为绿色标题，显示具体习惯、时段和今日进度，并移除可重复点击的按钮。
- 旧卡片首次在新版本上点击时也会更新；数据库继续使用唯一约束防止重复计数。

## V2.5.1 · 飞书配置提示与表情尺寸修复（2026-07-18）

- 明确飞书现有 Webhook 部署必须继续选择「发送至开发者服务器」，不能改成长连接。
- 网页聊天表情缩小为桌面端最长边 120px、手机端最长边 104px。
- 默认图片资源缩小为 360×360，降低飞书图片消息的视觉尺寸与上传体积。
- 用户新上传的 PNG、JPEG 和 WebP 会在浏览器端自动缩至最长边 360px；GIF 保留原尺寸以避免动画丢失。

## V2.5 · 打卡交互与编辑器修复版（2026-07-18）

### 飞书与打卡

- 习惯到点后发送带「完成打卡」按钮的飞书卡片，点击即可直接写入数据库。
- 支持新版 `card.action.trigger` 与旧版卡片动作结构，按钮回调在本地数据库完成，不调用 AI。
- 「喝水打卡」「完成打卡」等明确指令改为快速路径，不再等待模型或先发送思考占位消息。
- 只说「完成打卡」时，如果只有一个待打卡习惯会自动识别；多个候选时明确询问。

### 表情与语气

- 任务创建、完成、打卡、安慰和督促等场景由后端自动补充合适图片表情，普通闲聊提高表情出现概率。
- 文本情绪符号统一改为猫系颜文字，移除回复和表情库占位中的彩色 emoji。

### 网页交互

- 修复任务与习惯弹窗关闭按钮、取消按钮和提交事件冲突。
- 保存失败时在弹窗内持续显示具体错误，保存期间禁用按钮，避免重复提交。
- 任务提醒新增「今天稍后」「明早 9 点」「明天下午 3 点」「不提醒」快捷选项，同时保留精确时间。
- 习惯新增喝水、三餐、学习快捷方案，以及开始时间、结束时间、间隔自动生成器；仍可手动调整全部时段。
- 优化手机端弹窗宽度、滚动、底部操作栏和时段预览。

## V2.4 · 文档与维护版（2026-07-18）

### 新增

- 新增独立的「飞书配置说明」网页，从控制中心的「飞书主动提醒」卡片直接进入。
- 新增这份持续维护的版本更新记录，并保留「待发布」区供后续版本使用。
- 配置说明页面可直接下载唯一权威的 Markdown 原文。

### 调整

- 飞书指南只维护 `docs/CATO飞书打卡使用指南.md` 一个内容源，网页实时读取它。
- 默认发布流程不再生成 PDF；只有用户明确需要时才按当前 Markdown 生成并校对 PDF。
- 历史部署包和旧说明移入 `outputs/archive/`，项目根目录只保留当前升级包。
- 移除控制中心底部重复的指南预览，减少页面堆叠。

### 保持兼容

- 不修改用户数据库结构，不覆盖 `.env`、账号、任务、习惯、聊天、API 密钥或飞书配置。
- 原有飞书事件回调地址继续有效。

## V2.3 · 原创表情包版（2026-07-18）

- 新增 12 张原创 CATO 雷电猫表情：开心、督促、安慰、震惊、得意、难过、休息、思考、专注、打卡、连续坚持和默认问候。
- 每位用户可以在网页单独替换或恢复内置表情。
- AI 可通过 `[emoji:触发词]` 选择表情，网页显示图片，飞书自动上传并发送图片消息。
- 飞书图片 `image_key` 自动缓存，更换图片或飞书应用后自动刷新。
- 表情上传增加格式、文件头和大小校验，避免伪装文件进入服务器。

## V2.2 · 飞书交互与多模型版（2026-07-18）

- 飞书收到消息后立即回复随机猫猫动作，避免等待模型时没有反馈。
- AI 返回后编辑同一条飞书文本消息；编辑失败时改为发送新消息兜底。
- 每位用户可以修改自己的等待动作候选文案。
- 增加 Kimi、通义千问 Qwen、DeepSeek 和自定义 OpenAI 兼容接口预设。
- 模型密钥只保存在服务器，设置接口不回显明文。
- 增加飞书打卡与主动提醒使用指南。

## V2.1 · 习惯打卡与飞书双向沟通版（2026-07-18）

- 新增习惯、固定时段、打卡记录和防重复打卡。
- 新增网页习惯面板，显示今日进度、已完成数和下一个时段。
- 飞书消息可以真实建立习惯、打卡和查询进度。
- 打卡成功返回飞书卡片，任务和习惯到点后可主动推送。
- 每位用户拥有独立飞书 App ID、App Secret、Verification Token、回调地址和接收人。
- 支持来自不同飞书企业的用户分别连接自己的企业自建应用。

## V2.0 · 多用户与安全版（2026-07-18）

- 从单一访问口令升级为多用户账号体系。
- 密码使用 PBKDF2 哈希保存，登录会话使用 HttpOnly Cookie，可选择保持登录。
- 管理员可创建用户；每位用户的任务、聊天、角色、模型和飞书配置相互隔离。
- 未自行配置模型的普通用户继承管理员默认模型与 API，但无法读取密钥。
- 旧版数据升级时自动归入首个管理员账号。

## V1.x · 真实后端与任务提醒阶段（2026-07-17 至 2026-07-18）

- 从静态网页演示升级为 Python 后端和 SQLite 持久化。
- 接入硅基流动及 OpenAI 兼容模型 API，密钥可由服务器 `.env` 提供。
- 聊天记录、任务和设置开始真正写入服务器，而不是只存在浏览器。
- 增加任务创建、查询、完成、删除、改期和取消提醒等真实数据库操作。
- 增加中文绝对时间与相对时间解析，包括「10 秒后」「5 分钟后」等。
- 增加单次提醒和按任务开启的追杀提醒；完成、删除或取消后停止追杀。
- 修复「所有任务已完成」被误识别为新任务、修改任务时重复创建等问题。
- 增加网页聊天中的到期消息、浏览器通知、AI 猫设提醒文案和固定兜底文案。
- 增加 Nginx、systemd、Docker Compose 部署样例和服务器安全说明。

## V0.x · 本地网页原型阶段（2026-07-17）

- 建立 CATO 的桌面端与手机端响应式界面。
- 完成今日概览、聊天、任务看板、控制中心和表情库的最初视觉原型。
- 支持回车发送消息、手动新增任务和本地演示回复。
- 数据最初保存在浏览器 `localStorage`；只有通过 `127.0.0.1` 启动后端后才进入真实服务模式。
- 确立核心角色设定：自称「咪」、称呼用户「老大」、正常陪伴和追杀场景切换、纯文本回复与工具边界。

## 后续版本维护规则

1. 开始开发时，把计划写进「待发布」。
2. 完成代码后同步更新 `README.md`、`agent.md` 和受影响的使用指南。
3. 版本号只在功能与测试完成后递增，健康检查返回值必须与更新记录一致。
4. 每个服务器升级包不得包含 `.env`、`data/`、数据库、缓存或用户上传内容。
5. 默认只维护 Markdown，不自动生成 PDF；收到明确需求后才生成 PDF。
6. 发布前至少检查 Python 语法、前端 JavaScript 语法、健康接口、登录、任务写入和飞书回调兼容性。
7. 升级前备份服务器 `.env` 与 `data/cato.db`，升级后保留可回滚的上一版备份。
