LanQin_
|
8cbcc22a74
|
refactor(permissions): 精简默认权限组初始化逻辑
- 将固定默认权限组收敛为基础组,并新增对历史默认权限组的清理流程。
- 兼容保留已被用户引用的旧权限组,避免误删现有授权关系。
- 更新测试以覆盖新权限组创建与旧权限组迁移场景。
|
2026-06-22 14:34:57 +08:00 |
|
LanQin_
|
31435c1e97
|
feat(admin): 引入细粒度权限组管理
- 新增权限目录、系统权限组与用户权限组分配,后台路由改为按权限粒度控制。
- 支持创建、编辑、查看和删除自定义权限组,并为用户绑定权限组。
- 前端后台界面按权限动态展示菜单与操作项,补充用户/权限组相关类型与交互。
|
2026-06-22 14:31:10 +08:00 |
|
LanQin_
|
e35b0985ee
|
ci(.github/workflows): 扩展 AI PR Review 触发方式
- 新增 `issue_comment` 和 `workflow_dispatch` 触发入口,支持通过评论或手动指定 PR 运行审查。
- 调整并发键与权限配置,兼容多事件场景并补充 `issues: write`。
- 收紧执行条件,仅在仓库内 PR、手动触发或授权评论指令下执行,并按事件类型动态注入 `PR_NUMBER` 与 `PR_HEAD_SHA`。
|
2026-06-22 14:12:48 +08:00 |
|
LanQin
|
002c097def
|
ci(.github): 自动生成并发布 GitHub Release
- 新增 `.github/release.yml`,统一分类发布说明中的变更类型。
- 扩展 Docker 发布工作流,生成基于 tag 的发布说明并创建或更新 GitHub Release。
- 同步补充镜像列表、使用文档和回退逻辑,提升发布信息完整性。
|
2026-06-21 02:49:06 +08:00 |
|
LanQin
|
e7e4f43691
|
ci(.github/workflows): 拆分 CI 与发布流程。
Docker Release / Check web and api (push) Waiting to run
Docker Release / Resolve release tag (push) Blocked by required conditions
Docker Release / Build and publish all-in-one (push) Blocked by required conditions
Docker Release / Build and publish api (push) Blocked by required conditions
Docker Release / Build and publish web (push) Blocked by required conditions
Docker Release / Build and publish dovecot (push) Blocked by required conditions
Docker Release / Build and publish postfix (push) Blocked by required conditions
Docker Release / Build and publish rspamd (push) Blocked by required conditions
- 新增独立的 CI 工作流,覆盖前端检查、构建和后端测试。
- 调整 Docker 工作流为仅负责标签发布与镜像构建。
- 同步优化管理页 Issues 图标颜色。
v0.1.1
|
2026-06-21 02:30:01 +08:00 |
|
LanQin
|
c872ed559d
|
feat(admin): 增加关于页与发布版本信息
- 在系统设置中新增“关于”标签页,提供版本、仓库、Issues、文档和开源协议入口。
- 通过 Docker 构建参数注入版本号与发布链接,并在前端展示当前发布版本。
- 调整 GitHub Actions 与镜像构建流程,仅在 tag 发布时构建并发布带版本标识的镜像。
|
2026-06-21 02:23:40 +08:00 |
|
LanQin
|
99fe3cc57c
|
feat(mail): 重构邮件详情元信息展示
CI and Docker / Check web and api (push) Waiting to run
CI and Docker / Build and publish all-in-one (push) Blocked by required conditions
CI and Docker / Build and publish api (push) Blocked by required conditions
CI and Docker / Build and publish web (push) Blocked by required conditions
CI and Docker / Build and publish dovecot (push) Blocked by required conditions
CI and Docker / Build and publish postfix (push) Blocked by required conditions
CI and Docker / Build and publish rspamd (push) Blocked by required conditions
- 抽离 `MessageMetaPanel` 统一展示发件人、收件人、抄送、密送和时间信息。
- 补充地址解析与列表渲染,提升详情页信息完整度和可读性。
v0.1.0
|
2026-06-21 01:51:05 +08:00 |
|
LanQin
|
7e4599ae00
|
Merge branch 'main' of https://github.com/LanQin996/LanQin-Email
|
2026-06-21 01:04:17 +08:00 |
|
LanQin
|
d586cc25b5
|
docs(README): 补充项目许可证说明。
- 新增 `LICENSE` 文件,声明为 MIT 许可证。
- 在 `README.md` 中加入 `License` 小节并链接到许可证文件。
|
2026-06-21 01:04:11 +08:00 |
|
LanQin_
|
4b0e30e1d0
|
Merge pull request #2 from LanQin996/feat/mobile-responsive
feat(web): 优化移动端响应式体验
|
2026-06-21 00:19:43 +08:00 |
|
LanQin
|
936d3c4819
|
style(web): 统一移动端视口与编辑器样式
- 将邮件、个人中心与规则弹窗从 `100dvh` 调整为 `h-svh`,减少移动端视口抖动。
- 优化邮件正文编辑器的基础布局与滚动样式,提升输入区可用性。
- 移除 `protected-layout` 中切换路由时自动关闭移动侧栏的逻辑。
|
2026-06-21 00:02:30 +08:00 |
|
LanQin
|
41386363df
|
ci(.github/workflows): 支持配置 AI 审查推理参数
- 为 AI PR 审查流程新增 `OPENAI_REASONING_EFFORT` 和 `OPENAI_REASONING_SUMMARY` 可选环境变量。
- 允许通过仓库变量调整推理强度与摘要输出。
|
2026-06-20 23:57:06 +08:00 |
|
LanQin
|
a8513120e5
|
refactor(web): 优化侧边栏与邮件展示交互
- 关闭移动端侧边栏在路由切换后的残留打开状态。
- 补充 `SheetContent` 的可访问性描述配置,避免无效告警。
- 统一邮件收件人渲染的空值处理,防止数组为空时异常。
- 渲染纯文本邮件内容时转义 HTML,提升展示安全性。
|
2026-06-20 23:52:59 +08:00 |
|
LanQin
|
3ce17d97dc
|
chore(github): 增加 PR AI 代码审查流程并调整 CI 触发范围
- 新增 `.github/ai-review.md` 与 `.ai-reviewignore`,用于约束 AI 审查规则和忽略生成产物。
- 新增 `.github/workflows/ai-pr-review.yml`,在 PR 上自动运行 AI 审查并支持按配置跳过。
- 调整 `.github/workflows/docker.yml`,将 PR 触发范围收敛到 `main` 分支。
|
2026-06-20 23:18:22 +08:00 |
|
LanQin
|
cee9f7aaa0
|
feat(mail): 优化写信编辑器移动端布局
- 调整正文容器与编辑区的伸缩关系,提升弹窗内滚动与内容填充体验。
- 精简并重排工具栏,优化小屏下按钮换行与对齐表现。
- 默认按设备宽度控制格式栏展开状态,改善移动端初始展示。
|
2026-06-20 02:37:52 +08:00 |
|
LanQin
|
6d0935c6a5
|
feat(web): 增加动效插件并优化侧边栏动画
- 为 `web` 应用引入 `tailwindcss-animate`,并接入 Tailwind 配置。
- 调整 `sheet` 与 `sidebar` 的移动端遮罩、过渡时长和动画曲线,提升侧边栏展开收起体验。
- 精简移动端侧边栏无障碍标题,仅保留必要语义。
|
2026-06-20 02:26:45 +08:00 |
|
LanQin
|
4dd843b50a
|
feat(web): 优化邮箱与个人中心移动端体验
- 为管理页、邮件页和个人中心补充移动端侧栏与抽屉导航,提升小屏可用性。
- 将多处表格/详情/编辑器改为自适应布局,优化邮件列表、消息详情、撰写与规则弹窗的移动端显示。
- 调整顶部栏、按钮与内容区域间距,统一不同屏幕下的阅读与操作体验。
|
2026-06-20 02:13:29 +08:00 |
|
LanQin
|
9b70ba5927
|
build(api): 升级 Go 构建环境版本
- 将 `apps/api` 的 `go` 版本提升到 `1.25.0`,并同步更新依赖校验信息。
- 将 `deploy/all-in-one/Dockerfile` 和 `deploy/api.Dockerfile` 的构建镜像升级到 `golang:1.25-bookworm`。
|
2026-06-19 23:48:02 +08:00 |
|
LanQin_
|
a592926d60
|
Merge pull request #1 from killerprojecte/main
fix: decode RFC 2047 encoded words in mail sender display name
|
2026-06-19 23:35:18 +08:00 |
|
AnserJim
|
b147be3753
|
fix: revert golang version
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
|
2026-06-19 23:18:22 +08:00 |
|
killerprojecte
|
c3a66683ee
|
chore: linear whitespace between adjacent encoded words is stripped
|
2026-06-19 23:12:20 +08:00 |
|
killerprojecte
|
5604b59501
|
fix: improve RFC 2047 decode & fix trim space
|
2026-06-19 22:49:20 +08:00 |
|
killerprojecte
|
d312076d4b
|
chore: handle more encodes & fix idx range
|
2026-06-19 22:15:00 +08:00 |
|
LanQin
|
adbf3e886a
|
docs(AGENTS): 新增仓库审查与修复规范
- 添加 `AGENTS.md`,说明仓库的项目概览与安全敏感领域。
- 补充代码审查、修复、验证与部署配置检查准则。
|
2026-06-19 21:47:58 +08:00 |
|
killerprojecte
|
f0c175e7f6
|
fix: decode RFC 2047 encoded words in mail sender display name
|
2026-06-19 21:27:05 +08:00 |
|
LanQin_
|
25f5933792
|
fix(mail): 阻止撰写弹窗外部交互关闭
- 为 `DialogContent` 增加外部交互拦截,避免点击或按下弹窗外区域时被意外关闭。
|
2026-06-17 15:10:07 +08:00 |
|
LanQin_
|
bfc114bec3
|
feat(web): 升级前端依赖并重构邮件编辑器
- 将前端包管理切换为 `pnpm`,新增工作区与锁文件,并同步更新 CI 与 Docker 构建流程。
- 引入 `tiptap` 重构邮件正文编辑器,支持预览、富文本样式、链接/图片编辑与日程卡片插入。
- 发送与定时发送新增确认提示,补充空主题、空正文和附件提醒。
- 更新 `README.md` 与 `SHADCN_RULES.md` 中的安装与检查命令。
|
2026-06-17 14:58:56 +08:00 |
|
LanQin_
|
6ebbb47012
|
fix(mail): 统一邮箱查询的大小写与别名匹配
- 将 Postfix/Dovecot 的 SQL 查询改为忽略大小写匹配,减少地址大小写导致的投递失败。
- 支持带 `+` 的详细地址解析,并基于域表关联定位邮箱目录。
- 启用 `lda_mailbox_autocreate`,确保投递到详细邮箱时可自动创建邮箱目录。
|
2026-06-17 14:15:03 +08:00 |
|
LanQin_
|
095d3ad247
|
feat(mail): 优化邮件编辑器与邮件同步行为
- 新增已发送文件夹导入测试,并让同步时自动将非收件箱邮件标记为已读。
- 优化编辑器工具栏交互,增强下拉菜单与按钮的悬停/选中态表现,并修复部分按钮点击时的选区丢失。
- 为加粗、列表、对齐等命令加入乐观切换,提升工具栏状态反馈的即时性。
|
2026-06-17 14:14:48 +08:00 |
|
LanQin_
|
a8c2fc852c
|
feat(mail): 支持草稿与定时发送
- 新增草稿保存、草稿编辑/删除、定时发送列表与取消接口,并在后台加入待发送任务表与定时发送工作协程。
- 邮件撰写页支持草稿自动保存、定时发送弹窗、草稿入口识别,以及待发送视图与状态标记。
- 同步补充前端 API 类型与调用,并增加定时发送流程的后端测试。
|
2026-06-17 13:43:19 +08:00 |
|
LanQin_
|
f0044e477c
|
feat(auth): 优化登录注册页面与人机验证展示
- 调整登录、注册页布局为更一致的卡片式结构,提升表单可读性与视觉层级。
- 为登录/注册按钮与状态区补充图标和文案,优化交互反馈。
- 让 Turnstile 验证组件支持自适应宽度并使用更合适的展示尺寸。
|
2026-06-17 10:35:56 +08:00 |
|
LanQin_
|
d008638046
|
feat(mail): 升级写信编辑器并移除 Markdown 依赖。
- 将正文编辑器改为富文本 `contentEditable`,支持字体、字号、颜色、高亮、对齐、列表、缩进等格式化操作。
- 新增抄送/密送显示切换与“分别发送”能力,优化收件人发送方式。
- 移除 `marked` 依赖,并同步精简 `turnstile-box` 的边框样式。
|
2026-06-17 09:44:46 +08:00 |
|
LanQin
|
c21ebe43aa
|
chore(deploy): 配置已发送邮件自动归档
- 为 `submission` 和 `smtps` 启用 `sender_bcc_maps`,将已认证发件人自动抄送到 `发件人+Sent@域名`。
- 补充 Postfix 与 Dovecot 的 `recipient_delimiter` 和 `lmtp_save_to_detail_mailbox` 配置,确保 `Sent` 文件夹可落盘保存。
- 更新部署文档,说明第三方客户端发信后的“已发送”同步流程。
|
2026-06-17 00:19:40 +08:00 |
|
LanQin
|
2029c8804a
|
chore(deploy): 清理邮件服务 TLS 示例配置
- 移除 `docker-compose.yml` 中未启用的 TLS 证书环境变量示例,保持部署配置更简洁。
|
2026-06-17 00:08:36 +08:00 |
|
LanQin
|
811267e5b6
|
feat(deploy): 支持配置邮件客户端 TLS 证书
- 新增 `LANQIN_TLS_CERT_FILE` 和 `LANQIN_TLS_KEY_FILE`,让 Postfix 与 Dovecot 使用外部证书。
- 在单容器与分服务启动脚本中统一回退到 `localhost` 自签证书,并在证书不可读时给出告警。
- 补充部署文档与示例配置,说明第三方客户端校验证书的挂载方式。
|
2026-06-17 00:05:23 +08:00 |
|
LanQin
|
27ab80adb9
|
ci(docker): 简化 Docker 构建工作流
- 改用 `docker` 作为 Buildx driver,移除自定义 BuildKit 镜像配置。
- 删除构建缓存的 `cache-from` 和 `cache-to` 配置,精简镜像构建步骤。
|
2026-06-16 23:39:55 +08:00 |
|
LanQin
|
095607e35b
|
ci(workflow): 指定 Docker Buildx 构建驱动镜像
- 为 `actions/setup-buildx-action` 配置 `driver-opts`。
- 固定 `buildkit` 镜像版本,提升构建环境一致性。
|
2026-06-16 23:36:01 +08:00 |
|
LanQin
|
5821d9aa30
|
feat(mail): 支持发件人名称展示与存储
- 为邮件消息新增 `fromName` 字段,并同步扩展数据库迁移、API 类型与前后端查询/入库逻辑。
- 解析入站邮件时提取并保存发件人名称,发信时将邮箱显示名写入 MIME `From` 头。
- 邮件列表、详情、通知与引用内容改为优先展示发件人名称,提升可读性。
|
2026-06-16 23:29:23 +08:00 |
|
LanQin
|
045132146b
|
feat(mail): 增加签名管理与客户端配置
- 新增邮件签名的数据表、接口和前端管理页,支持全局/邮箱默认签名的创建、编辑、删除与查询。
- 写信时自动带入当前邮箱的默认签名,并优化手动输入内容时的覆盖行为。
- 补充第三方邮件客户端配置页,展示 IMAP/POP3/SMTP 连接信息及公共主机名。
- 扩展部署配置,开放 POP3S/SMTPS 端口并启用 Dovecot POP3 服务。
|
2026-06-16 23:15:35 +08:00 |
|
LanQin
|
9a0e039767
|
feat(mail): 增加新邮件通知提醒
- 新增收件箱轮询探测,用于发现新邮件到达。
- 在收到新邮件时触发站内提示、桌面通知和提示音。
- 补充通知状态缓存与自动刷新联动,避免重复提醒。
|
2026-06-16 22:45:10 +08:00 |
|
LanQin
|
9a8c38f51d
|
ci(.github/workflows): 忽略 Docker 缓存写入错误
- 为 GitHub Actions 的 `cache-to` 配置补充 `ignore-error=true`,避免缓存写入失败影响构建流程。
|
2026-06-16 22:33:42 +08:00 |
|
LanQin
|
b0cc425f61
|
chore(mail): 优化邮件投递超时与服务配置
- 为 SMTP 连接与前端发信请求增加更明确的超时控制。
- 调整 Postfix 与 Rspamd 代理配置,缩短相关处理超时并统一运行参数。
|
2026-06-16 22:28:04 +08:00 |
|
LanQin
|
4882a65e43
|
docs(admin): 精简 SMTP 配置说明
- 移除发信通道卡片中的重复提示文案。
- 保留页面内的默认配置说明,减少信息冗余。
|
2026-06-16 22:13:12 +08:00 |
|
LanQin
|
78e588264d
|
chore(postfix): 配置 Postfix 的默认 TLS 证书
- 在 `postfix` 容器镜像中安装 `ssl-cert`。
- 为 `smtpd` 指定 snakeoil 证书和私钥路径,启用默认 TLS 配置。
|
2026-06-16 22:10:29 +08:00 |
|
LanQin
|
b9b76c6b8c
|
fix(smtp): 适配内置 Postfix 发信链路
- 后端按 SMTP 端口区分普通连接、STARTTLS 和隐式 TLS,避免发信流程在不同中继场景下异常。
- 前端调整管理员页的发信说明与字段文案,强调默认使用内置 Postfix。
|
2026-06-16 22:10:15 +08:00 |
|
LanQin
|
57fa0d0b57
|
chore(deploy): 兼容不同环境下的 rspamd 启动用户
- 在 `supervisord.conf` 中改为按用户存在情况动态选择 `rspamd` 启动参数。
- 当 `_rspamd` 和 `rspamd` 用户都不存在时,回退为 `--insecure` 启动。
|
2026-06-16 21:53:02 +08:00 |
|
LanQin
|
7788e93f0e
|
chore(deploy): 调整 rspamd 与 dovecot 启动配置
- 为 `rspamd` 指定运行用户/组,提升容器内启动一致性。
- 将 `dovecot` 配置格式整理为多行块,保持配置可读性。
- 在 `rspamd` 入口脚本中按可用账号选择启动参数,并保留兜底启动方式。
|
2026-06-16 21:48:42 +08:00 |
|
LanQin_
|
4fc933bc89
|
docs(deploy): 补充 SMTP 发信排查说明
- 说明单容器部署下 Webmail 发信的默认 Postfix 配置。
- 补充 `smtp delivery failed: EOF` 的排查命令与 `SMTP Require TLS` 注意事项。
- 调整 `deploy/postfix/master.cf` 中 `smtp/submission` 的监听标志,避免本机提交会话异常。
|
2026-06-16 21:21:56 +08:00 |
|
LanQin_
|
d87f635899
|
feat(admin,mail,profile): 增强邮件管理与交互体验
- 新增统一确认弹窗,替换多个删除/清理操作的直接执行。
- 管理后台支持首次配置引导、域名/邮箱/别名创建入口,以及邮件列表分页加载更多。
- 邮箱页改为分页拉取邮件,补充无邮箱状态、批量删除确认和“写邮件”可用性控制。
- 个人中心为联系人、清理、规则、拦截操作增加二次确认。
- 将 DKIM 密钥长度提升为 2048 位,增强安全性。
|
2026-06-16 15:40:38 +08:00 |
|
LanQin_
|
3093be2222
|
fix(mail): 发送失败时返回 SMTP 错误
- 发送邮件时若 `SMTP` 投递失败,直接返回 `502 Bad Gateway`。
- 新增测试覆盖投递失败场景,确认错误信息会透出。
|
2026-06-16 15:10:28 +08:00 |
|