279d89b87a
Prefer IA_WEB_INTERNAL_URL or local HOST for AI tool requests while preserving public page links for users.
267 lines
19 KiB
Markdown
267 lines
19 KiB
Markdown
# 更新日志
|
||
|
||
## 0.2.16 - 2026-07-07
|
||
|
||
- 修复 AI 内置页面工具在配置了受保护公开地址时,请求 `/v1/web/pages` 命中 NetBird 鉴权页并返回 401 的问题。
|
||
- `create_web_page`、`create_markdown_preview`、`query_web_pages` 的内部 HTTP 请求现在优先使用 `IA_WEB_INTERNAL_URL` 或本地 `HOST`;返回给用户的页面链接仍优先使用 `IA_WEB_BASE_URL`。
|
||
- `query_api_docs` 同步优先使用内部地址查询 API 文档,避免内部工具调用被公开入口鉴权拦截。
|
||
- 无数据库结构变化;新增 `0.2.16` 升级日志记录,`ias-ai` 升级至 `0.1.6`,`ias-service` 升级至 `0.1.13`。
|
||
|
||
## 0.2.15 - 2026-07-07
|
||
|
||
- 新增 Markdown 预览页面能力:`page_type=markdown` 的动态页面公开路径为 `/md/{slug}`,React 前端按 Markdown/GFM 渲染标题、列表、表格、引用、链接和代码块。
|
||
- 新增内置 AI 工具 `create_markdown_preview`,模型可把长篇 Markdown、报告、代码说明或结构化答复创建成预览页,并只在聊天中发送简短摘要和链接,避免平台消息长度限制。
|
||
- `query_web_pages` 支持查询 `markdown` 页面类型,并会返回 `/md/{slug}` 链接;普通动态页面和邮件页面路径保持不变。
|
||
- API 文档补充 Markdown 动态页面说明;HTTP 模块仍只负责 JSON API 与静态资源托管,Markdown 渲染由 React 前端负责。
|
||
- 无数据库结构变化;新增 `0.2.15` 升级日志记录,`ias-ai` 升级至 `0.1.5`,`ias-http` 升级至 `0.1.9`,`ias-service` 升级至 `0.1.12`。
|
||
|
||
## 0.2.14 - 2026-07-07
|
||
|
||
- 新增 HTTP API 文档接口 `/v1/api-docs` 与 `/v1/api-docs/{id}`,支持按关键词、分组和接口 id 查询当前服务的结构化 API 文档。
|
||
- 新增内置 AI 工具 `query_api_docs`,模型可查询 API 路径、参数、请求体、响应示例和备注,并据此用中文回复用户。
|
||
- 新增内置 AI 工具 `query_web_pages`,模型可按页面类型和关键词查询已创建的动态页面,并把相关 `/web/...` 或 `/mail/...` 链接发给用户。
|
||
- 动态页面列表 API `GET /v1/web/pages` 新增 `q` 关键词搜索,可匹配标题、摘要、正文、来源和 metadata,便于查找已创建页面。
|
||
- API 文档覆盖健康检查、升级日志、动态页面、邮件、控制台工具、用户配置、长期记忆和上下文模拟器接口;HTTP 模块继续只负责 JSON API 与静态资源托管,页面展示仍由 React 前端负责。
|
||
- 无数据库结构变化;新增 `0.2.14` 升级日志记录,`ias-ai` 升级至 `0.1.4`,`ias-http` 升级至 `0.1.8`,`ias-service` 升级至 `0.1.11`。
|
||
|
||
## 0.2.13 - 2026-07-07
|
||
|
||
- 修复模型返回多个 `tool_calls` 时只执行第一个工具导致后续请求缺少 tool 消息的问题;现在会为每个 `tool_call_id` 生成对应工具结果。
|
||
- 服务队列新增批量工具结果处理,所有 tool 消息都写入上下文后才触发下一次 LLM 请求,避免中间态消息序列发送给模型。
|
||
- 上下文快照会过滤历史中不完整的 assistant/tool 调用片段,防止已存在的坏数据继续触发 `insufficient tool messages following tool_calls message`。
|
||
- 新增单元测试覆盖完整多工具调用保留、缺失工具结果过滤,以及 `/v1` API catch-all 路由构建。
|
||
- 无数据库结构变化;`ias-common` 升级至 `0.1.1`,`ias-ai` 升级至 `0.1.3`,`ias-context` 升级至 `0.1.2`,`ias-service` 升级至 `0.1.10`。
|
||
|
||
## 0.2.12 - 2026-07-07
|
||
|
||
- 修复 React SPA 静态资源托管的路径安全问题,改用 `tower-http` 静态文件服务,避免手写路径拼接读取 `web/dist` 之外的文件。
|
||
- React 新增动态内容页路由 `/web/{page_type}/{slug}` 与 `/mail/{slug}`,通过 `/v1/web/...` API 拉取数据并渲染,保持 `ias-http` 只负责 API 与静态资源托管的边界。
|
||
- 邮件详情页恢复 HTML 邮件的沙箱 iframe 渲染,纯文本邮件继续按文本展示。
|
||
- 修复上下文组装模拟器提交表单后首次查询仍使用旧 URL 参数的问题。
|
||
- 邮件详情 API 在自动标记已读成功后,会在响应中同步返回 `seen=true`。
|
||
- 无数据库结构变化;`ias-http` 升级至 `0.1.7`,`ias-mail` 升级至 `0.1.15`,`ias-service` 升级至 `0.1.9`。
|
||
|
||
## 0.2.11 - 2026-07-07
|
||
|
||
- 新增上下文组装模拟器页面(`/context`),可查询指定 scope 下的上下文数据,用于分析排错。
|
||
- 页面展示:活跃会话及其消息列表、组装后的系统上下文预览、历史会话表、长期记忆、会话摘要(上次会话 / 近一周)和可用工具列表。
|
||
- React 导航栏新增「上下文」入口;`ias-service` 新增 `context_simulator` 和 `context_simulator_data` 模块。
|
||
- 无数据库结构变化;`ias-service` 升级至 `0.1.8`,`ias-http` 升级至 `0.1.6`。
|
||
|
||
## 0.2.10 - 2026-07-07
|
||
|
||
- 修复邮件详情页自动标记已读后,下一轮 IMAP 轮询可能把本地已读状态回滚为未读的问题;本地已读状态现在不会被远端未读标记降级。
|
||
- 修复从筛选后的邮件列表进入详情页时丢失搜索、已读筛选和分页参数的问题;详情页返回列表、上一封和下一封会保留当前查询上下文。
|
||
- 说明:SMTP 只负责发信,不能设置收件箱邮件已读状态;已读同步需要 IMAP `\Seen` 标记或服务端本地状态维护。
|
||
- 无数据库结构变化;新增 `0.2.10` 升级日志记录,`ias-mail` 升级至 `0.1.14`。
|
||
|
||
## 0.2.9 - 2026-07-07
|
||
|
||
- HTTP 页面职责迁移到 React SPA:`ias-http` 保留 `/v1/updates`、`/v1/web/...` 等 JSON API,页面渲染由 `web/` 前端负责。
|
||
- 新增 React 前端工程,提供更新日志、邮件、工具、配置等页面入口。
|
||
- `ias-http` 删除旧的服务端 HTML shell 与字符串拼接页面渲染代码,新增 React 静态资源托管入口。
|
||
- 无数据库结构变化;新增 `0.2.9` 升级日志记录。
|
||
|
||
## 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/updates`(JSON)
|
||
- 新增页面列表接口 `/v1/web/pages`(GET)
|
||
- 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_BUILD` 和 `IA_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/messages`、`GET /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/messages`、`GET /v1/mail/messages/{id}` 和 `GET /v1/mail/search`,作为邮件查询 API 的新地址。
|
||
- 保留 `GET /mail-api/messages`、`GET /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` 作为邮件查询别名,便于客户端直接按查询语义调用。
|
||
- 邮件列表响应新增 `page`、`per_page` 和 `total` 字段,保留 `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-mail` 与 `cargo 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-` 前缀:`ai` → `ias-ai`、`common` → `ias-common`、`context` → `ias-context`、`mail` → `ias-mail`、`service` → `ias-service`、`wechat` → `ias-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.1` 和 `0.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` 的路由响应也能正常接受。
|
||
- 新增启动上线通知,服务恢复后向用户发送友好提示消息。
|
||
- 新增项目版本文件和更新日志,并记录每次代码变更必须升级版本和更新日志的规则。
|