Files
iAs/CHANGELOG.md
T
wunianxiao 3d77733e11 feat: 邮件已读/未读状态持久化与 Web 页面增强 (0.2.8)
- 邮件列表/详情页显示已读/未读状态,支持按状态筛选
- 邮件 API GET /v1/mail/messages 支持 seen 过滤
- 数据库 ias_mail_messages 新增 seen 字段
- 新增邮件查询 YAML 工具 query_mail_messages
- 新增 /tools 和 /configs Web 页面
- 新增 ias-http shell 和 ias-service console 模块
- 补充历史版本升级日志迁移 SQL
2026-07-07 09:54:42 +08:00

13 KiB
Raw Blame History

更新日志

0.2.8 - 2026-07-07

  • 新增邮件已读/未读状态持久化,保存 IMAP \Seen 标记到 ias_mail_messages.seen
  • 邮件列表页面新增状态筛选,支持查看全部、未读或已读邮件。
  • 邮件列表卡片和详情页显示已读/未读状态,未读邮件在列表中使用更醒目的样式。
  • 邮件 API GET /v1/mail/messages 支持 seen=true/false 过滤,并在返回的邮件对象中包含 seen 字段。
  • 数据库新增 ias_mail_messages.seen 字段;已有历史邮件默认标记为未读,后续拉取最近邮件时会刷新为 IMAP 当前状态。

0.2.7 - 2026-07-07

  • 修复 multipart/alternative 邮件详情页只展示纯文本 fallback 的问题;现在详情页优先保存和渲染 HTML 邮件体。
  • 邮件列表摘要、搜索预览和微信通知继续使用纯文本正文;没有纯文本正文时会从 HTML 中提取简要文本,避免标签污染摘要。
  • 邮件轮询或手动拉取遇到已缓存的重复邮件时,会刷新缓存正文和摘要,使最近抓取范围内的旧纯文本缓存可自动更新为 HTML 正文。
  • 邮件详情 iframe 继续禁止脚本和表单,但允许加载 http/https 图片,使 Facebook 等 HTML 邮件更接近邮箱客户端渲染效果。
  • 无数据库结构变化;不在最近抓取范围内的旧邮件仍需要扩大抓取范围或重新入库后才能显示 HTML 版本。

0.2.6 - 2026-07-07

  • 新增工具列表 HTTP 页面 /tools,展示内置工具和 tools/*.yaml 工具定义。
  • 新增工具列表 API GET /v1/tools,返回内置工具、YAML 工具、参数、环境变量名和工具目录加载告警。
  • 新增用户配置列表 HTTP 页面 /configs,展示微信渠道账号和邮件账户配置。
  • 新增用户配置列表 API GET /v1/user-configs,返回脱敏后的微信与邮件配置,不暴露微信 token、更新游标和邮件密码明文。
  • 顶部导航新增“工具”和“配置”入口;无数据库结构变化,新增 0.2.6 升级日志记录。

0.2.5 - 2026-07-07

  • 修复新增 SQL 迁移文件后后台服务可能继续使用旧二进制迁移列表的问题。
  • ias-service 新增 build.rs,显式监听 migrations 目录和 SQL 文件变化,确保 sqlx::migrate! 重新嵌入最新迁移。
  • 无数据库结构变化;新增 0.2.5 升级日志记录。

0.2.4 - 2026-07-07

  • 新增 YAML 配置的邮件查询 HTTP 工具 query_mail_messages,通过 /v1/mail/messages 查询或搜索邮件列表。
  • 工具支持关键词、邮箱目录、来源、页码和每页数量参数,返回分页信息和当前页邮件 JSON 列表。
  • 无数据库结构变化;新增 0.2.4 升级日志记录。

0.2.3 - 2026-07-07

  • 修复邮件自动通知漏发:后台轮询现在会对所有新入库邮件发送通知,不再因为 IMAP \Seen 已读标记跳过通知。
  • 邮件轮询现在尊重账户配置的 fetch_limit,不再固定只检查最近 20 封邮件。
  • 邮件轮询启动日志新增 fetch_limit,便于确认实际加载的抓取范围。
  • 新增单元测试覆盖已读新邮件仍会被自动轮询处理,以及不同抓取上限下的 IMAP 序列范围计算。

0.2.2 - 2026-07-06

  • 修复邮件详情页预览链接的 HTML 属性转义,避免异常 URL 破坏页面结构或注入属性。
  • 修复长中文或 Emoji 邮件内容、Message-ID 截断时可能因 UTF-8 非字符边界切片导致的页面错误。
  • 收紧 HTML 邮件 iframe 沙箱:移除同源权限,并通过 CSP 默认禁止外部资源、表单提交和脚本加载。
  • 修复 Web 动态页面 404/500 错误页的响应类型,确保浏览器按 HTML 页面渲染。
  • 补齐 0.2.0 数据库升级日志记录,并新增本版本升级日志记录。
  • 新增针对邮件 HTML 安全渲染、Unicode 截断和 Web 错误页响应类型的单元测试。

0.2.1 - 2026-07-06

  • 回滚为服务端渲染架构:恢复 HTML 页面渲染,移除独立 React 前端项目
  • 全面采用 Tailwind CSS:通过 CDN 引入,统一所有页面样式
    • 更新日志列表/详情:卡片布局,蓝色点缀
    • 邮件列表:支持筛选表单、分页、Hover 高亮
    • 邮件详情:详细信息折叠面板、键盘左右键导航
    • Web 页面/Mail 提醒页面:元数据网格展示
  • 提取公共 shell 模块:统一 HTML 布局、导航栏和 Tailwind CDN 引入
  • 保留 JSON API 端点(/v1/*),供内部调用
  • 首页 / 重定向到更新日志

0.2.0 - 2026-07-06

  • 重大架构调整:前后端分离,将 HTML 服务端渲染改为 RESTful JSON API + React 前端
  • 新增 ias-web 前端项目,基于 Vite + React + TypeScript 构建
  • 后端 API 路由调整:
    • 更新日志接口改为 /v1/updatesJSON
    • 新增页面列表接口 /v1/web/pagesGET
    • Web 页面查看接口改为 /v1/web/pages/{type}/{slug}JSON
    • 邮件页面查看接口改为 /v1/web/mail/{slug}JSON
    • 移除所有 HTML 渲染端点(/updates/mail/web/{type}/{slug} 等)
  • 后端添加 CORS 支持(tower-http
  • 后端集成前端静态文件托管,cargo build 自动构建前端并嵌入服务
  • 新增 build.rs:前端源文件变更自动触发 npm build,无变更时零开销跳过
  • 支持 SKIP_FRONTEND_BUILDIA_STATIC_DIR 环境变量
  • React 前端支持页面:首页、更新日志列表/详情、邮件列表/详情、通知页面
  • 前端开发代理配置自动转发 /v1 API 请求到后端

0.1.15 - 2026-07-06

  • 邮件预览页面全新设计:现代化卡片布局,顶部展示发件人、时间和来源等关键信息。
  • 新增上一封/下一封快速导航,无需返回列表即可连续浏览邮件。
  • 详细信息折叠面板,UID 和 Message-ID 支持一键复制。
  • HTML 邮件自动检测并在沙箱 iframe 中渲染,纯文本邮件保持原有展示方式。
  • 新增 find_adjacent_ids 仓库方法,按 ID 查询相邻邮件记录。
  • 无数据库结构变化;新增 0.1.15 升级日志记录。

0.1.14 - 2026-07-06

  • 删除旧邮件查询兼容路由 GET /mail-api/messagesGET /mail-api/messages/{id}GET /mail-api/search
  • 所有 JSON API 统一使用 /v1/...:邮件、上下文记忆、动态页面创建和健康检查接口均迁移到新地址。
  • 页面路由继续保持非 /v1 地址:/mail/mail/messages/{id}/mail/{slug}/web/{page_type}/{slug}/updates
  • AI 内部工具调用同步改用 /v1/web/pages/v1/context/memories...
  • 无数据库结构变化;新增 0.1.14 升级日志记录。

0.1.13 - 2026-07-06

  • 新增 GET /v1/mail/messagesGET /v1/mail/messages/{id}GET /v1/mail/search,作为邮件查询 API 的新地址。
  • 保留 GET /mail-api/messagesGET /mail-api/messages/{id}GET /mail-api/search 兼容旧调用。
  • 新增 GET /mail 邮件列表页面,支持关键词、账户、邮箱目录、来源和分页查询。
  • 新增 GET /mail/messages/{id} 邮件预览页面,可查看邮件正文、元信息和原始头信息。
  • 无数据库结构变化;新增 0.1.13 升级日志记录。

0.1.12 - 2026-07-06

  • 增强邮件 HTTP 查询服务:GET /mail-api/messages 支持关键词、账户、邮箱目录、来源和分页查询。
  • 新增 GET /mail-api/search 作为邮件查询别名,便于客户端直接按查询语义调用。
  • 邮件列表响应新增 pageper_pagetotal 字段,保留 limit 参数的兼容行为。
  • 查询关键词 q 会匹配发件人、主题、摘要、正文和 Message-ID
  • 无数据库结构变化;新增 0.1.12 升级日志记录。

0.1.11 - 2026-07-06

  • 修正 ias mail pull [id] 的手动拉取语义:现在会抓取最近 20 封邮件并入库,不再只处理未读邮件。
  • ias mail pull 输出新增扫描数量,便于确认 IMAP 确实返回了最近邮件;同时继续显示其中未读、新增和已存在数量。
  • 后台邮件轮询保持只处理未读邮件并发送微信提醒,手动拉取不发送微信提醒。
  • 无数据库结构变化;新增 0.1.11 升级日志记录。

0.1.10 - 2026-07-06

  • 新增 ias mail pull [id] 命令,可手动拉取最近 20 封中的未读邮件;不传 id 时拉取所有启用邮件账户,传 id 时拉取指定账户。
  • 手动拉取会复用后台轮询的解析、去重、入库和邮件预览页生成逻辑,并输出本次未读、新增和已存在数量。
  • 修复服务启动和版本更新通知使用 ias-service crate 版本的问题,改为读取根目录 VERSION 作为整体项目版本。
  • 修复版本更新通知可能链接到不存在的 /updates/0.1.0 页面的问题;本版本通知会指向 /updates/0.1.10
  • 无数据库结构变化;新增 0.1.10 升级日志记录。

0.1.9 - 2026-07-06

  • 调整邮件轮询逻辑:每轮固定读取邮箱最近 20 封邮件,而不是仅搜索 UNSEEN 集合。
  • 读取最近邮件时同步获取 FLAGS,只对未包含 \Seen 标记的邮件入库、生成预览页并发送微信提醒。
  • 邮件正文抓取改用 BODY.PEEK[],避免检查最近邮件时把未读邮件隐式标记为已读。
  • 新增最近 20 封 sequence range 的单元测试,并通过 cargo test -p ias-mailcargo check 验证。
  • 无数据库结构变化;新增 0.1.9 升级日志记录。

0.1.8 - 2026-07-06

  • 新增 ias mail edit <id> 命令,可交互式修改已保存的 IMAP 邮件账户配置,密码留空时保留原值。
  • 新增 ias mail check <id> 命令,可使用已保存配置检查 IMAP 服务器连通性和邮箱目录可访问性。
  • 邮件账户检查成功会更新 last_checked_at 并清空 last_error,失败会记录错误信息。
  • 复用新增账户时的 IMAP 连接测试逻辑,TLS 证书错误仍支持交互式选择接受无效证书后重试。
  • 无数据库结构变化;新增 0.1.8 升级日志记录。

0.1.7 - 2026-07-06

  • 所有 Rust crate 统一加 ias- 前缀:aiias-aicommonias-commoncontextias-contextmailias-mailserviceias-servicewechatias-wechat
  • 内部依赖和所有 use 语句同步更新。
  • 新增 IA_WEB_INTERNAL_URL 环境变量,用于配置内网可访问的基础 URL。
  • 新增 internal_url_for_path() 函数,版本更新通知同时发送公网和内网地址的 Markdown 链接。
  • 将已有升级日志的 title、description、changes 翻译为中文。
  • 持久化 0.1.7 升级记录。

0.1.6 - 2026-07-06

  • 新增 HTTP 渲染的更新日志页面,路由为 /updates/updates/{version}
  • 新增服务版本一次性启动通知,包含更新的版本号和 HTTP 更新日志链接。
  • 新增持久化的版本通知状态,避免普通重启后重复通知用户。
  • 持久化 0.1.6 升级记录。

0.1.5 - 2026-07-06

  • 新增基于数据库的邮件账号配置,通过 ias mail auth 引导命令完成。
  • 新增 ias_mail_accounts 表,并将缓存的邮件消息关联到对应配置账号。
  • 扩展邮件缓存,在 ias_mail_messages 中持久化完整解析后的邮件内容和原始头信息。
  • 更新邮件轮询逻辑,优先从数据库加载启用的邮件账号,同时保留环境变量配置作为回退方案。
  • 新增 ias mail list 命令查看邮件账号列表。
  • 持久化 0.1.5 升级记录。

0.1.4 - 2026-07-06

  • 新增独立的 Rust mail 模块,实现 IMAP 邮箱轮询、邮件解析、数据库去重、预览页面创建和用户通知。
  • 新增独立的 Rust ias-http 模块,提供 HTTP 服务、健康检查和可复用的网页预览页面。
  • 将现有的网页预览路由从 service 迁移至 ias-http
  • 新增 /mail-api/messages/mail-api/messages/{id} 接口,用于查看存储的邮件记录。
  • 新增 ias_mail_messages 数据库表,持久化 0.1.4 升级记录。
  • 新增通过 IA_MAIL_* 环境变量配置邮件轮询;未配置邮箱时轮询保持禁用。

0.1.3 - 2026-07-06

  • 修复后台服务启动问题,使 ias service start/restart 能将子服务进程与调用命令的会话分离。
  • 新增版本 0.1.3 的数据库升级日志迁移。
  • 重启后通过 ias service status 验证服务健康状态。

0.1.2 - 2026-07-06

  • 新增 ias_upgrade_logs 数据库表,用于持久化升级记录。
  • 新增迁移种子数据,写入 0.1.10.1.2 的升级记录。
  • 更新 AGENTS.md 中的 Codex 项目规则,使版本升级同步更新 VERSION、crate 版本、CHANGELOG.md 和数据库升级记录。
  • 明确项目规则应写在 Codex 实际读取的 AGENTS.md 文件中。

0.1.1 - 2026-07-06

  • 新增独立的 Rust context 模块,支持长期记忆、会话上下文、会话摘要和近一周摘要。
  • 新增带时间戳的记忆记录和上下文 API,支持查询、创建、更新和删除记忆。
  • 新增上下文窗口切换规则,涵盖 /new 命令、两小时不活跃和 token 上限阈值。
  • 新增开启新上下文时自动生成会话摘要。
  • 新增记忆工具,使助手在对话中可以查询和更新用户记忆。
  • 修复 LLM 响应解析,使不带 service_tier 的路由响应也能正常接受。
  • 新增启动上线通知,服务恢复后向用户发送友好提示消息。
  • 新增项目版本文件和更新日志,并记录每次代码变更必须升级版本和更新日志的规则。