42 Commits
Author SHA1 Message Date
胡绍康 d50f01663c feat: finalize pool registration flow and docs 2026-03-17 20:02:21 +08:00
胡绍康 01d1dc0874 feat: implement external API security architecture (public mode, IP whitelist, rate limit)
- Add ExternalApiGuard for IP whitelisting, rate limiting, and public mode enforcement
- Update wait-message to support async mode
- Fix bugs in verification code extraction (BUG-00014 to BUG-00017)
- Update documentation and architectural diagrams
2026-03-13 11:27:34 +08:00
胡绍康andCopilot a01b48a813 feat: PRD-00008 P1 公网模式安全层 — 守卫模块、设置 UI、321 测试全绿
- 新增 external_api_guard.py:IP 白名单、限流(SQLite 分钟桶)、高风险端点禁用
- DB v5→v6:新增 external_api_rate_limits 表 + 5 项 P1 默认设置
- 10 个外部 API 端点集成 @external_api_guards() 装饰器
- capabilities 端点增强:public_mode / restricted_features
- settings 控制器 + 前端 UI:公网模式开关、IP 白名单、限流、功能禁用
- 新增 18 个 P1 守卫测试(TC-GUARD-01~18),总计 321 测试全绿
- 更新 api.md:P1 错误码、配置文档
- 默认 public_mode=false,与 P0 行为完全兼容

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-11 22:18:40 +08:00
胡绍康 9673b3524d feat: add external api docs tests and verification updates 2026-03-09 15:07:18 +08:00
胡绍康 98febc798a fix: resolve copy logout and favicon regressions 2026-03-09 12:58:01 +08:00
胡绍康andCopilot 7f2f739c00 fix: widen poll interval range 10-86400s + add BUG-00008 analysis doc
D-3: Relax telegram poll interval constraints:
- Backend: 60-3600 → 10-86400 seconds
- Frontend: min/max attributes updated
- Scheduler: floor changed from 60 to 10 seconds
- Test T-29: adjusted boundary value (30→5)

BUG-00008: Comprehensive analysis comparing our implementation with
MailAggregator_Pro, covering cursor reset, tag UI, and interval limits.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-05 16:56:23 +08:00
胡绍康andCopilot 2326410067 feat: Telegram 实时推送功能(TODO-00007)
P0 核心功能:
- DB Schema v3→v4:accounts 表新增 telegram_push_enabled、telegram_last_checked_at 列
- Repository:toggle_telegram_push、update_telegram_cursor、get_telegram_push_accounts
- Service:telegram_push.py — Graph/IMAP 新邮件抓取 + Telegram Bot API 推送
- Scheduler:telegram_push_job 定时轮询(默认 600s,可配置 60-3600s)
- Controller/Route:POST /api/accounts/<id>/telegram-toggle、settings GET/PUT 扩展
- Frontend:账号卡片🔔推送开关、设置页 Telegram 配置区

P1 增强功能:
- POST /api/settings/telegram-test 发送测试消息端点
- 保存 telegram_poll_interval 时动态重调度(无需重启)
- accounts API 返回 telegram_push_enabled 字段

测试:33 项 Telegram 推送测试全部通过,202 项总测试零回归

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-05 09:23:04 +08:00
胡绍康andCopilot 973412d44c feat: 账号导入导出无缝迁移(PRD-00006/FD-00006)
- 新增 auto 智能混合导入模式:自动识别 Outlook/IMAP/GPTMail 行类型
- 域名推断 provider(gmail/qq/163/126/yahoo/aliyun/outlook)
- 自动按 provider 创建/复用分组
- 支持重复策略(skip/overwrite)和兜底 IMAP 设置
- 导出升级为 v2:头部元信息 + GPTMail 分段 + 时间戳文件名
- 前端导入模态框支持 auto 模式 UI 交互
- 新增 41 个单元测试(163 总测试全部通过)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-04 20:33:19 +08:00
胡绍康andClaude Opus 4.6 64d8a6c357 feat(multi-mailbox): 实现多邮箱统一管理功能(PRD-00005)
核心变更:
- 数据库:Schema v3,accounts 表新增 account_type/provider/imap_host/imap_port/imap_password 字段
- 后端:新增通用 IMAP 服务(imap_generic.py)与邮箱提供商配置(providers.py)
- 导入:支持 Outlook/QQ/163/Gmail/自定义 IMAP 多格式批量导入,兼容注释行与导出格式
- 导出:按邮箱类型分组导出,保留 provider 信息便于重新导入
- 邮件读取:IMAP 账号走通用 IMAP 服务,Outlook 保持原 Graph/XOAUTH2 链路
- 验证码提取:IMAP 账号通过 IMAP 获取邮件详情后提取
- 安全约束:IMAP 账号禁用远程删除,敏感字段(imap_password)加密存储
- 前端:新增邮箱类型下拉、自定义 IMAP 配置区、provider 标签显示
- 调度器:定时刷新仅处理 Outlook 账号(IMAP 无 OAuth token 刷新语义)
- 日志:配置 outlook_web 命名空间日志输出到 stderr

技术细节:
- 保持 Outlook 旧格式完全兼容(四段式:email----password----client_id----refresh_token)
- IMAP 账号使用空字符串占位 client_id/refresh_token(满足 DB NOT NULL 约束)
- 支持导出格式智能识别(5 段 custom、3 段 provider、2 段配合输入框)
- 前端 DOMPurify 未加载时回退为基本 HTML 过滤(CDN 不可达场景)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 22:54:39 +08:00
胡绍康andCopilot 4df3d5fecd feat(accounts): add Outlook register button and auto-fill token
Add a '🔑 注册' button to account panel header; show only when a non-temp group selected; on successful OAuth exchange auto-open Add Account modal and pre-fill client_id + refresh_token.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-03 22:53:16 +08:00
胡绍康andClaude Opus 4.6 f36d84c1b1 feat: 在前端侧边栏添加 GitHub 仓库链接
- 在侧边栏底部添加 GitHub 图标按钮
- 点击后在新标签页打开项目仓库
- 添加蓝色主题样式,与界面风格统一
- 支持响应式设计,移动端适配

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 21:41:24 +08:00
胡绍康andClaude Opus 4.6 ba83ca3bf6 chore: 准备开源发布 - 只保留源代码
移除所有非源代码文件:
- 删除 docs/ 目录(所有内部文档)
- 删除 tests/ 目录(所有测试文件)
- 删除 .github/ 目录(CI/CD 配置)
- 删除 .kiro/ 目录(IDE 配置)
- 删除 CONTRIBUTING.md, SECURITY.md

更新项目文件:
- 重写 README.md,简洁清晰(从 1600+ 行压缩到 237 行)
- 更新 .gitignore,忽略所有非源代码文件
- 使用 ASCII art 展示界面布局
- 添加 Shields.io 徽章美化项目

保留的文件:
- 源代码:outlook_web/, static/, templates/
- 入口文件:web_outlook_app.py, start.py, outlook_mail_reader.py
- 配置文件:requirements.txt, Dockerfile, .dockerignore, .env.example
- 项目文档:README.md, LICENSE, .gitignore

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 21:11:55 +08:00
胡绍康andClaude Opus 4.6 39854520e6 chore: 准备开源发布 - 清理项目文件
- 更新 .gitignore,忽略所有文档和临时文件
- 删除迁移痕迹文件(AI提示词、PRD文档等)
- 更新 README.md,移除截图引用
- 只保留源代码用于开源发布

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 20:41:51 +08:00
胡绍康 20aa93be22 chore(release): v1.1.0 2026-02-27 17:04:20 +08:00
胡绍康andClaude Opus 4.6 0ab50db85f feat: 实现可调整布局系统
- 新增布局管理器支持拖拽调整面板宽度
- 新增状态管理器实现布局持久化
- 重构前端页面结构优化四栏式布局
- 新增 Jest 测试框架和完整测试用例
- 完善项目文档(PRD/FD/TDD/TODO/LOG)
- 清理 Python 缓存文件并更新 .gitignore

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 14:49:36 +08:00
胡绍康andClaude Opus 4.6 66d9b9749b feat: 批量操作与自动化增强 - 全选/复制验证码/自动轮询
功能实现:
- 全选功能:跨分组保持选中状态,使用全局 Set 存储
- 验证码提取:支持 Graph API → IMAP 回退策略
- 自动轮询:新邮件通知、红点提示、连续错误自动停止

BUG 修复 (BUG-001 ~ BUG-008):
- Toast 通知位置移至右下角
- 切换分组时保持全选状态
- 添加批量删除邮箱功能
- 验证码提取支持 IMAP 回退
- 修复轮询开关类型不一致 (boolean vs string)
- 完善轮询通知内容与红点位置
- 轮询次数校验改为 0-100 (0 表示持续)
- 复制按钮添加加载状态与反馈

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 21:03:53 +08:00
胡绍康andClaude Opus 4.6 192240436d refactor: 模块化架构重构 & 完善测试与文档体系
- 架构重构:拆分为 routes/services/repositories/security 分层结构
- 新增测试:添加完整的单元测试套件(烟雾测试/核心功能/错误处理等)
- 完善文档:添加开发者指南、运行验证、回归清单、性能基线等文档
- 前后端分离:静态资源独立,模板组件化
- CI/CD:添加 GitHub Actions 自动化测试
- Docker 优化:添加健康检查,修复调度器启动问题
- 配置增强:支持 SCHEDULER_AUTOSTART 环境变量

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 18:54:16 +08:00
assast 3d8f2157b9 feat: 分组代理支持 & API优先级回退 & 详细错误弹框
- 分组管理新增 proxy_url 字段,支持 HTTP/SOCKS5 代理
- Graph API 请求(获取邮件/详情/刷新Token/删除)均支持走分组代理
- 获取邮件/删除邮件按 Graph API → IMAP(新) → IMAP(旧) 优先级自动回退
- ProxyError 时跳过 IMAP 回退,避免无意义重试
- 所有方式失败时弹框逐一展示每种 API 的中文失败原因
- 更新 README 文档说明 API 优先级、代理支持、IMAP 删除限制
2026-02-18 21:39:47 +08:00
assast 932634dcbc 移动分组+导出bug修复 2026-02-08 08:47:35 +08:00
assast 8104d64b73 删除邮件功能 2026-01-31 18:29:19 +08:00
assast d61847b521 标签 2026-01-31 17:16:45 +08:00
assast de39d17c75 标签 2026-01-31 16:13:11 +08:00
assast 89b01f423a 新增邮箱标签,备注支持多行 2026-01-31 15:08:22 +08:00
assast c7446720db 邮件列表加缓存,加信任邮件功能 2026-01-29 09:14:55 +08:00
assast 6ac5734c0f 样式调整 2026-01-27 23:49:25 +08:00
assast 7142948dcf 样式调整 2026-01-27 23:43:03 +08:00
assast 873c660ee2 导出问题修复 2026-01-26 22:10:42 +08:00
assast d259630f59 修复安全漏洞 2026-01-26 21:58:43 +08:00
assast 6e13afacb7 完整报错前端可查 2026-01-26 12:43:42 +08:00
assast 224bf97e36 修复按钮有时候无法点击的BUG 2026-01-26 11:36:26 +08:00
assast 1b36f74abc 新增备注展示功能 2026-01-25 22:46:33 +08:00
assast dd3c42fee7 添加定时刷新token保活功能 2026-01-25 19:22:58 +08:00
assast ffe06f6ad1 加全局搜索
加编号
加点击当前邮箱复制
2026-01-24 20:07:46 +08:00
assast b8cb87e180 bugfix 2026-01-23 18:30:44 +08:00
assast e459d440aa fix bug 2026-01-23 18:00:03 +08:00
assast 0f8030cdf5 支持全屏模式查看邮件 2026-01-23 16:29:03 +08:00
assast c98268e0c0 修复长邮件展示不全问题 2026-01-23 15:45:44 +08:00
assast 212f4778ef 全量刷新所有账号 Token,实时进度展示,防止 90 天过期(⭐ 2026-01-23 新增) 2026-01-23 14:37:30 +08:00
assast 0d8c306000 新增查看垃圾箱,界面获取refresh token 功能 2026-01-22 20:16:42 +08:00
luekongbai 9bd31c3820 增加临时邮箱功能 2026-01-13 22:19:12 +08:00
luekongbai 821b4bfd4f 优化布局,增加快捷删除、停用 2026-01-13 21:35:06 +08:00
luekongbai 34c8131069 初始化 2026-01-13 20:23:55 +08:00