dsh
|
c881146a40
|
feat(web): 多语言界面(中/英/日)与用户语言偏好字段
- 新增 internal/i18n 包:以原始中文字符串为 key 的翻译目录(zh 恒等,
en 兜底,ja 缺译回退 en),t/tf 模板函数与 Accept-Language 解析
(按 q 值排序,兜底英语)
- User 模型新增 language 字段(auto|en|zh|ja,默认 auto),
AutoMigrate 自动加列;UserStore 新增 UpdateLanguage
- 语言解析:登录用户按偏好(auto 时取浏览器 Accept-Language),
登录/封禁页按浏览器语言;所有 c.HTML 渲染注入 Lang 模板数据
- 全部页面模板(用户页 + 管理后台 12 页)接入翻译:导航、文件夹、
邮件列表/阅读/写信、设置、登录、封禁页、表单、表格、JS 确认框等;
html lang 属性随语言切换;日期函数(shortDate/time12/time12m)
与 folderLabel 改为语言感知(上午/下午 vs AM/PM vs 午前/午後)
- 设置页新增「界面语言」选择(自动/English/中文/日本語),
/settings 表单支持单独提交语言偏好;管理后台用户表单可预设语言
- 封禁原因等入库中文文案在展示时经 t 翻译(未知 key 原样回退)
- 测试:i18n 单测(解析/回退/译文)、render 测试补 Lang 数据、
时间格式化测试适配新签名;全量 go test 通过
|
2026-08-20 00:21:10 -04:00 |
|
kevin
|
2f7f322b62
|
fix(web): Quill 编辑器本地化,修复写邮件页无法输入正文
- 修复 3f28ec2 引入的回归:CSP script-src/style-src 'self' 拦截了
CDN 的 quill.min.js / quill.snow.css,编辑器初始化失败导致正文不可输入
- 下载 Quill 1.3.7 到 internal/web/static/vendor/quill/(.gitignore 加例外)
- 新增 /static 静态路由,compose 模板改为同源加载:CSP 保持严格,
且服务器离线可用、摆脱第三方 CDN 依赖
- 新增 static_test.go 回归测试验证静态资源可访问
|
2026-08-20 01:37:42 +08:00 |
|
kevin
|
8ea4a623a9
|
fix(security): 修复 P3 低危项(开放重定向/配额TOCTOU/safeJS/会话治理)
- Referer 开放重定向:safeRedirectPath 仅放行同站相对路径,
外部 URL/协议跳转一律回退 /inbox
- 发信配额 TOCTOU:新增 TryReserveQuota 原子预扣
(UPDATE ... WHERE used_bytes + n <= quota_bytes),超配额即拒发;
附件保存失败按大小补偿回退
- 移除危险模板函数 safeHTML/safeJS:新增 jsonify(json.Marshal,
< > & 转义为 \u003c 等,无法逃出 </script>),compose 页
quill.innerHTML 改用 jsonify;srcdoc 改回默认属性转义
- 会话治理:登录成功后 session.Clear() 清旧状态;记录 loginAt,
绝对过期 7 天 + 滑动续期(活跃会话 12h 写回刷新)
- 确认 #15 Content-Disposition 编码随 P1 #4 已完成
- 新增 12 个测试:重定向路径矩阵、配额原子性(含超额不部分扣费)、
jsonify 逃逸防护、会话绝对过期/有效访问(签名会话构造)
至此 16 项安全审计项(P0-P3)全部修复完成。
|
2026-08-19 16:56:23 +08:00 |
|
dsh
|
f281121a4d
|
feat: 前端移动端响应式适配(≤767px)
- 左侧文件夹栏在小屏下变为底部导航条:收件箱/草稿箱/已发送/管理后台 + 居中「写信」悬浮圆钮(带未读角标)
- 顶栏紧凑化:列表页搜索框自动下移为通栏第二行
- 邮件列表:隐藏正文摘要、缩小头像/时间列、行高加大便于触控,删除按钮常显
- 阅读页/写信页/设置页:内边距与字号收紧,配额条适配
- 管理后台:侧栏改为横向换行导航,表格横向滚动,统计卡两列排布
- 全部模板 viewport 增加 viewport-fit=cover(iOS 安全区),底部导航支持 env(safe-area-inset-bottom)
- settings.html 内联样式改为 .settings-main 类以便响应式覆盖
|
2026-08-17 13:21:19 -04:00 |
|
dsh
|
878d31b48e
|
feat: 前端整体重写为 QQ 邮箱风格布局
- base.html: 全新设计系统(顶部导航栏 + 左侧文件夹栏 + 内容区三栏布局,
蓝/橙主题色),兼容管理后台原有组件类
- inbox/drafts/sent: 邮件列表页重写,支持全选、批量删除、实时搜索过滤、
未读标记、头像圆标、QQ 式短日期、悬停行内删除、分页
- view: 邮件阅读页重写(返回/回复/删除工具条、发件人卡片、附件区)
- compose: 写信页重写(发送/附件/取消、字段行、附件 chips、配额进度条)
- settings/login/banned: 设置页(账号信息+配额条)、登录页、封禁页重写
- server.go: 新增模板函数 mailName/mailEmail/initial/truncate/shortDate/avatarStyle
- mail.go: 侧栏文件夹计数(收件箱未读红标、草稿/已发送数量)
- 新增 render_test.go 模板渲染回归测试
|
2026-08-17 04:42:03 -04:00 |
|
kevin
|
4e233c82b4
|
二阶段差不多
|
2026-06-01 19:46:51 +08:00 |
|
kevin
|
9e50d05e71
|
一阶段ok
|
2026-06-01 18:59:55 +08:00 |
|