Releases: mibgb65-cloud/OmniMail
Releases · mibgb65-cloud/OmniMail
Release list
OmniMail v0.2.5
新增
- 新增完整的邮箱地址管理:普通邮箱可以启用、停用、设为主邮箱或经二次确认后删除。
- 删除邮箱时先立即隐藏地址,再由 Cloudflare Workflow 分批永久清理对应邮件、草稿、
附件和主存储对象;主邮箱不能删除,清理任务启动失败时会恢复原状态。 - 快速生成邮箱支持输入自定义前缀;管理员可以配置随机邮箱固定前缀,网页应用和
OmniMail Float 会共享该设置。
改进
- 随机邮箱地址统一使用 12 位十六进制随机字符;固定前缀默认留空,不再强制使用
omni-,可在系统设置中配置最多 20 个字符的前缀。 - 新增版本化发布说明目录与模板,GitHub Release 会直接使用与 Tag 同名的 Markdown
文件,缺失或空文件会阻止发布。
测试
- 新增邮箱主地址切换、删除与异步清理、随机前缀配置和地址格式校验的单元测试。
- 新增自定义邮箱创建、设为主邮箱与删除旧地址的端到端测试,并更新扩展 smoke 测试。
升级说明
- 无需新增 D1 迁移、环境变量或 Secret;部署仍需现有
CLEANUP_WORKFLOW绑定。
发布
- 网页应用与 OmniMail Float 扩展版本统一为
0.2.5,GitHub Release 包含扩展 ZIP。
OmniMail v0.2.4
- 2026-08-14
新增
- 内置 Chrome Web Store 正式版 OmniMail Float 的固定扩展 ID,主管理员可在
系统设置 → 官方浏览器扩展 中直接开启或关闭,无需配置APP_ORIGINS。 - 新增全局扩展开关 API 与中英文设置卡片;开发版和其他扩展 ID 仍可继续通过
APP_ORIGINS精确配置。
安全
- 官方扩展默认关闭;关闭时同时拒绝固定来源的 CORS、授权码签发、授权码兑换和
后续 API 请求。 - 即使固定商店来源被重复写入
APP_ORIGINS,也不能绕过主管理员的全局开关。
测试
- 新增官方扩展来源、授权流程、公开配置及主管理员权限的回归测试。
- 完整单元测试、Worker 类型检查、前端生产构建及发布门禁均覆盖该功能。
发布
- 网页应用版本升级为
0.2.4;Chrome Web Store 的 OmniMail Float 保持
0.2.1,本次不发布新的扩展包。
OmniMail v0.2.3
修复
- 修复从
v0.1.0至v0.1.4直接升级时,旧版 D1 数据库没有
d1_migrations表而导致 Worker 返回500的问题。 - 对已知旧版结构安全补记 Wrangler 迁移基线,并按顺序执行
0015至0020。 - 修复先前迁移失败留下空
d1_migrations表后仍无法恢复的问题。 npm run db:migrate现在会先引导旧库,并通过 D1 文件导入事务执行远程迁移;
手动部署不会再从0001错误重放,也不会被 Trigger 的远程 Query 解析阻断。- 无法识别的数据库结构仍会安全停止,不会被错误标记为已迁移。
升级说明
从正式版本升级可继续使用原有 Cloudflare Builds 或 npm run deploy 流程,
不需要手动修改 D1 表。建议升级前保留常规 D1 备份。
OmniMail 网页应用与 OmniMail Float 扩展版本均为 0.2.3。
OmniMail v0.2.2
OmniMail v0.2.2
修复
- 修复通过 Cloudflare Builds 更新时可能绕过 D1 迁移、导致新版 Worker 因缺少
0020_device_token_scopes.sql而返回500的问题;Worker 会安全补齐并登记该迁移。
安全
- 为设备会话增加持久化 Scope;现有桌面令牌保持完整权限,OmniMail Float 新令牌仅
能读取域名与邮箱、创建邮箱、读取邮件及标记已读,访问管理、发信、删除和账户
设置接口时返回403。 - Refresh Token 轮换会继承原会话 Scope,不能通过刷新扩大权限;设备列表与令牌
响应会返回当前 Scope。 - 服务端强制
SETUP_TOKEN至少为 32 个 UTF-8 字节,并对首次初始化实行每 IP 与
全局 15 分钟限速,超限返回429和Retry-After。 - 初始化完成后,公开的
/api/config不再返回SUPER_ADMIN_EMAIL。
测试
- 新增 Cloudflare Workers Vitest 集成测试,在 workerd/Miniflare 中应用全部 D1 迁移,
操作真实 D1、R2 与 Queue 绑定,并验证扩展 Scope、令牌刷新及初始化安全边界。 - CI 新增
npm run test:worker,与现有 Node 单测、构建、E2E 和 Wrangler dry-run
共同作为发布门禁。
发布
- 网页应用与 OmniMail Float 扩展版本统一为
0.2.2。 - 下方
omnimail-float-0.2.2.zip为从v0.2.2标签源码构建并通过 Smoke 测试的
Chrome 扩展安装包。
OmniMail v0.2.1
[0.2.1] - 2026-08-13
新增
- 发布 OmniMail Float 浏览器扩展:支持在普通网页悬浮生成邮箱、自动填入邮箱输入框、
查看收件箱与邮件详情,并接收新邮件通知。 - 新增网站授权扩展流程,使用 Chrome Identity、一次性授权码与 PKCE S256;设备令牌
可撤销,密码和 MFA 始终只在 OmniMail 网站中处理。 - 新增扩展自定义邮箱、随机邮箱、最近邮件自动刷新、右侧停靠与布局恢复。
- 新增 Chrome Web Store 隐私声明、商店素材、真实 Chromium smoke 测试及独立发布
会话脚本。 - 新增 Deploy to Cloudflare 配置,覆盖 D1、R2、Queue、Workflow、Workers AI 与静态
资源绑定。 - 新增邮件搜索、消息列表索引和数据库基线迁移,改善大型邮箱的数据查询与升级流程。
修复
- 修复 Linux DO 登录后丢失扩展授权页路径与查询参数的问题。
- 修复扩展令牌刷新遇到临时网络或服务端错误时错误清除登录状态的问题;仅在刷新令牌
被明确拒绝时退出登录。 - 修复快速切换邮箱时较早请求覆盖当前邮件列表的竞态问题。
- 修复扩展 smoke 测试默认覆盖 Chrome Web Store 正式图片素材的问题。
- 加强扩展来源校验、授权回调验证、会话过期处理和邮件 HTML 隔离。
发布
- 网页应用与 OmniMail Float 扩展版本统一为
0.2.1。 - Chrome Web Store 条目
fpeecjailboemocpmpcbjaghpkpcaihf已提交0.2.1审核,
审核通过后自动公开发布。
OmniMail v0.1.4
更新内容
多 Resend 账户与 Webhook
- 发件统一使用
RESEND_DOMAIN_CONFIGS,按发件域名精确选择对应的 Resend API Key;单域名和多域名 JSON 均受支持。 - 同时兼容
apiKey与apikey字段。 - 新增
RESEND_WEBHOOK_SECRETS,可让多个 Resend 账户共用一个 Webhook 地址;旧的RESEND_WEBHOOK_SECRET可继续用于迁移。 - 更新部署检查、示例配置、文档及自动化测试。
快速回复附件
- 快速回复窗口现可添加、查看和移除图片或文档附件,并适配窄屏布局。
- 与新邮件共用限制:最多 5 个附件,单个不超过 5 MiB,合计不超过 10 MiB。
- 回复通过 multipart 上传,附件直接持久化到 R2 后随队列发送;写入失败会清理已保存对象并释放配额。
- SendFlare 暂不支持附件;存在同域名 Resend 配置时自动回退,否则明确提示配置要求。
升级提示
RESEND_API_KEY已不再使用,可从 Worker 配置中删除;请改用RESEND_DOMAIN_CONFIGS。SUPER_ADMIN_EMAIL仍是必需配置,请保留。- Webhook 已使用多个 Resend 账户时,请把各账户的 Signing Secret 合并到
RESEND_WEBHOOK_SECRETSJSON 数组。
验证
- 63 个 Vitest 测试文件、279 项测试通过。
- GitHub Actions CI(类型检查、生产构建、端到端测试及 Wrangler dry-run)通过。
OmniMail v0.1.3
新功能
- 支持按发件域名配置独立的 Resend API Key,并保留原有全局 Resend 配置作为回退。
- 新增 SendFlare 发件服务,支持全局及按域名配置,覆盖新邮件、回复和草稿发送。
- 新增多草稿箱和发件附件:默认保留最近 5 封,可按用户级别设置 1–20 封;每封最多 5 个附件。
- 新增主管理员全站邮件管理,可筛选、查看、下载、移入垃圾箱、恢复和永久删除邮件,并记录审计日志。
体验与修复
- 草稿改为在右侧主区域内联编辑,减少弹窗遮挡和重复加载闪动。
- 优化发件人下拉框,并修复草稿异步加载覆盖刚输入的主题、收件人或正文。
- 修复快速切换星标邮件与收件箱时,较旧请求覆盖当前邮件列表的问题。
- 修复多草稿数据库迁移未触发导致的线上请求失败。
- 兼容 Cloudflare 当前 D1 导出轮询和嵌套下载地址格式。
部署说明
- 现有
RESEND_API_KEY/RESEND_FROM配置无需修改;多域名配置和 SendFlare 均为可选。 - 数据库会自动执行多草稿结构升级,草稿附件计入用户存储配额。
- SendFlare 当前不支持附件;含附件邮件会在存在可用 Resend 配置时自动回退到 Resend。
- D1 备份使用的
D1_REST_API_TOKEN需要目标账户的 D1 Edit 权限。
OmniMail v0.1.2
新功能
- 新增按需邮件 AI 翻译,支持语言识别、HTML 结构保留、长内容分段和译文缓存。
- 新增翻译权限控制,管理员可管理普通用户、临时用户和邀请的翻译权限。
- 新增主管理员一键更新,可按 GitHub Release Tag 的精确提交触发 Cloudflare Workers Builds。
体验改进
- 优化原文与译文切换,减少网页邮件白色闪动和布局跳动。
- 滚动条默认隐藏并在滚动时显示。
- 修复翻译过程中 HTML 结构和未翻译片段丢失的问题。
部署说明
- 数据库结构会自动升级,新增译文缓存和用户翻译权限字段。
- 一键更新为可选功能;未配置 Cloudflare Builds 的部署仍可查看发布说明并手动更新。
OmniMail v0.1.1
OmniMail v0.1.1 是一个聚焦邮件显示与附件体验的错误修复版本。
修复
- 邮件正文不再等待缓慢的远程图片完成加载,正文与布局会先显示。
- 自动将旧邮件中的 HTTP 图片地址安全升级为 HTTPS,改善 Vodafone、VOXI 等邮件图片无法显示的问题。
- 修复复杂 HTML 邮件在暗色界面中的布局、缩放和远程图片加载表现。
附件预览
- PDF、PNG、JPEG、GIF、WebP 和 AVIF 附件现在可以在站内弹窗预览,并保留下载入口。
- SVG、HTML、Office 文档和压缩包等主动或不支持的内容仍仅允许下载。
- 预览接口增加 MIME 白名单、用户归属校验、
nosniff和同源嵌入限制。
验证
- 222 项单元与 Worker 测试通过。
- 34 项浏览器 E2E 通过。
- 类型检查、生产构建和 Wrangler 部署预检通过。
完整变更:v0.1.0...v0.1.1
OmniMail v0.1.0
OmniMail 的首个公开版本:基于 Cloudflare Workers、D1、R2、Queues、Workflows 和 Email Routing 的自托管多域名 Webmail。
主要功能
- 多域名与多用户邮箱管理,支持管理员、普通用户和临时用户权限模型
- 收件、全文搜索、线程、附件、批量操作、草稿、主动发件和回复
- Resend 投递状态、失败重试,以及管理员可配置的用户级发信限速
- 登录、设备令牌、Linux DO Connect、Turnstile、管理员 TOTP 与操作审计
- D1/R2 备份、保留策略、配额、恢复演练和部署自检
- 中英文、明暗主题及桌面/移动端响应式界面
- 系统版本显示与 GitHub Release 更新提示
部署
请按照 README 的“快速部署”和“首次初始化”章节配置 Cloudflare Worker 资源、Email Routing 以及必要的 Variables & Secrets。
验证
- 216 项单元与 Worker 测试通过
- 32 项浏览器 E2E 通过
- 生产构建、类型检查、14 个 D1 迁移和 Wrangler dry-run 通过
已知边界
- 当前为 0.x 首发版本,API 仍使用
/api/* - OmniMail 不是传统 IMAP/SMTP 服务器
- Email Routing、DNS 与外部邮件服务仍需部署者在各自平台完成配置