工作日志
fork 只是起点,重新定义才是目的。这里是我在 cloud-mail、SPlayer 两个仓库所有分支里由自己提交的全部改动,共 202 条,数据由 git 历史自动生成。
说明:这里的数字只算我署名的提交(cloud-mail、SPlayer 两个仓库、所有分支),别人提交的、从上游带过来的、以及被时间线筛选挡住的都不显示,所以 GitHub 上能看到的提交会比这里多一些。
总览
2026-02-05 → 2026-09-25 这段时间里,有 18 天在提交,平均每次改动动到 3.6 个文件。
202次
我提交的记录
18天
有提交的日子
7个
涉及分支(含主线)
233天
跨度 02-05 → 09-25
721次
文件改动(同文件多次计数)
7619条
两仓库分支提交总量
cloud-mail 146 次(72%)SPlayer 56 次(28%)
分支拓扑
每个仓库一张图:横轴时间、纵轴分支泳道。曲线表示「这条分支从哪条分支的哪个提交分出来」,泳道上的圆点是我当天的提交(越大说明当天越多),空心圆是分支 HEAD。蓝色 = 上游作者的部分(主线里我接手之前的那一截、从上游提交分出去的曲线),橙色 = 我的。
cloud-mail4 个分支 | 我 146 条 | 2026-08-11 ~ 2026-09-25
主线(main)上游作者的 main子分支从我的提交分出从上游的提交分出圆点 = 我当天的提交(越大越多)| 分支 HEAD | 两个月前已折叠 | 右侧数字 = 我 / 分支共← 手机上可左右滑动
SPlayer3 个分支 | 我 56 条 | 2026-02-05 ~ 2026-09-25
主线(dev)子分支从我的提交分出圆点 = 我当天的提交(越大越多)| 分支 HEAD | 两个月前已折叠 | 右侧数字 = 我 / 分支共← 手机上可左右滑动
提交节奏
同样的改动习惯,时间久了会有形状。
每月提交量合计 202 次
活跃热力图列 = 一周(周一 → 周日),颜色越深当天提交越多;点小方格可跳到下方时间线的当天
2月3月4月5月6月7月8月9月
提交类型先按前缀 + 关键词归类,再由 Cloudflare Workers AI 逐条复核(改了 5 条)
新功能57
修复72
合并8
文档45
杂项11
样式2
性能5
CI2
涉及文件类型按被改动文件的后缀统计(同一文件多次改动会重复计数)
.js98.md96.vue37.ts36.json14(无扩展名)10.toml9.mts7分支明细
每个分支上我提交了多少、从哪个点分出来、以及分支最后一次提交的哈希。
cloud-mail 分支明细按「我的提交」排序
| 分支 | 我的提交 | 分支提交 | 分叉自 | 我的提交时间 | HEAD |
|---|---|---|---|---|---|
thunderbird-client | 75 | 526 | 从 attachment-manager 分出(c8acfb2 @ 2026-08-27) | 2026-08-11 ~ 2026-09-05 | 55a7eb2 |
browse-alist | 73 | 532 | 从 main 分出(ec7a2bb @ 2026-09-05) | 2026-08-11 ~ 2026-09-25 | 2a12eba |
attachment-manager | 58 | 520 | 从 main 分出(ec7a2bb @ 2026-09-05) | 2026-08-11 ~ 2026-09-25 | 6b00d3c |
main | 8 | 259 | 图根(主分支) | 2026-08-26 ~ 2026-09-12 | 911931f |
SPlayer 分支明细按「我的提交」排序
| 分支 | 我的提交 | 分支提交 | 分叉自 | 我的提交时间 | HEAD |
|---|---|---|---|---|---|
NEWAPI | 56 | 1953 | 从 feat/api-enhanced 分出(0e976e1 @ 2026-09-19) | 2026-02-05 ~ 2026-09-25 | 2421100 |
feat/api-enhanced | 32 | 1929 | 从 dev 分出(a8ff995 @ 2026-07-20),已并回 NEWAPI | 2026-02-05 ~ 2026-09-19 | 0e976e1 |
dev | 3 | 1900 | 图根(主分支) | 2026-02-05 ~ 2026-07-20 | a8ff995 |
提交时间线
按时间倒序排列,共 202 条记录,可按仓库或类型筛选。
docs(audit): §12.5 记录 /temp 在线查看与筛选修复的部署(版本 23163fe6)与生产 E2E(16/16 PASS)+ CF 压缩省略 Accept-Ranges 的边缘行为
sync(cos-exchange): 与 browse-alist 同步 worker(/temp 在线查看 + Range + 整目录筛选)
feat(view): /temp 增加在线查看(文本/图片/PDF;音视频须点击播放,无自动播放)+ /temp/api/file 单段 Range 支持;只读网盘筛选改为整目录扫描+本地分页并在无匹配时提示返回「全部」;列表限速放宽至 120/分;审计矩阵扩至 165 项全通过
docs(audit): §11.5 记录 wrangler CLI 经 10808 代理的部署(版本 a4b96b80)与生产 E2E 结果(429 实证、无 CL 流式上传 200、预览 URL 404)
sync(cos-exchange): 与 browse-alist 同步 worker(可读 429 + 限速护栏 + 上传节流)
feat(rate): 统一可读 429(API JSON {error,retryAfter} / 页面中文纯文本 + 精确 Retry-After);新增 /temp 页面与 API 整体限速护栏;上传速率参数化(TEMP_UPLOAD_PER_MIN)并在前端按间隔排队节流 + 重复文件去重;审计矩阵扩至 149 项全通过
chore(api): 默认 API 地址迁移到自有域 delicateduck.xyz(网易云/酷狗/QQ)
sync(cos-exchange): 与 browse-alist 同步 worker(/temp 只限 KV 总占用 800 MiB + 账本校准)
feat(temp): 容量策略改为只限 KV 总占用(TEMP_TOTAL_MB 默认 800 MiB);单文件/数量不再设业务上限;新增账本 tmp.__usage + list() 校准与占用/余量 UI;无 Content-Length 流式上传限量解析;审计矩阵扩至 124 项全通过
perf(web): 第三方音乐源适配层移出首屏;README 精简更新日志表格;修复两处推荐逻辑隐患
feat(setting): 新增「主界面设置」(栏目显示/隐藏 + 拖动排序,含每日推荐/我喜欢的音乐/私人FM)
fix(qq): 上游 5xx/限流兜底(单次重试 + 不抛错 + 节流提示);测试连接改用稳定端点
feat(home): 首页推荐按音乐源个性化(专属歌单/每日推荐/新碟/歌手)+ 缓存按源作用域
feat(qq): 接入 QQ 音乐源(适配层 + 扫码/Cookie 登录 + 四类审计与修复)
fix(kugou): 自定义域不可达时兜底到 Vercel 项目域名;补齐 DNS 排障文档
feat(kugou-login): 完整登录体系(扫码/验证码/账号密码/Cookie)与刷新登录
feat(setting): API 选项并入音乐源分组;酷狗支持点头像 Cookie 登录
feat(kugou): 接入酷狗音乐源(KuGou API 适配层 + 设置项 + 链路/安全/性能审计)
docs: 记录预览链接治理实测结果与历史部署 URL 的已知限制
chore(vercel): 关闭 *.vercel.app 预览/部署链接(Host 级 307 → 正式域名)
perf(web): AMLL core 移出首屏(首屏 gzip -16.4%);关闭 Vercel 部署保护并做线上实测
fix(security,perf): Web 端审计修复(登出凭据清理 / CSP 加固 / 消息页首屏请求 4→1)
fix(router): 修复路由守卫条件写反导致带参页面全部跳 403(专辑/歌单/评论…)
fix(message): 修复私信抽屉样式因 Teleport 完全失效(图片限尺寸 + 不再出现横向滚动条)
fix(message): 图片限尺寸渲染(不再原图撑破卡片)+ 输入区压扁、消息区铺满贴底
fix(message): 解析消息体(JSON 串/HTML/对象),不再泄露原始数据,分享内容以卡片展示
fix(calendar): 修复音乐日历"未知歌手/未知作者",并加固听歌足迹兜底
fix(log): 诊断日志改为默认静默(debugLog),控制台横幅去掉外部链接
feat(message): 通知/评论渲染为结构化卡片,输入区改为微信式
fix(ui,log): 修复实测问题并做日志/密钥治理与链接清理
feat(api): 继续接入视频广场/数字专辑/电台榜单 + 最近播放分类,并落地性能/安全审计修复
feat(api): 补齐网易云官方 API 能力(曲风/MV/日历/听歌足迹/消息/用户/会员)
chore(git): 忽略 .vercel 与 .env*(CLI 链接 Vercel 项目后产生)
feat(api): 支持在设置中运行时切换 API 源(多 API 并存)
sync(cos-exchange): 与 browse-alist 同步 worker(TEMP_KEY_RE 去 i 标志 + POST-only 端点 405)
fix(cos-exchange): TEMP_KEY_RE 去掉 i 标志 + POST-only 端点补 405(Allow: POST);新增 wrangler CLI 部署配置与审计报告 §9(90 项矩阵全通过 + 生产 E2E 实证)
docs(audit): 复审矩阵补 1 项 COS 回源断言(整个 /temp 流程 0 次回源)→ 88 项全通过
docs(audit): 复审——续期面/KV 越权 + mail 后端契约两组(矩阵扩至 87 项全通过);记录 2 条信息级发现(TEMP_KEY_RE 的 i 标志、POST-only 端点 GET 落 404)
docs: 网盘改造说明补充 /temp 文件续期(§2.1 接口/续期行、部署字节数 197560、修复记录 d9cd744)
docs: 同步 cos-exchange Worker 副本——/temp 文件续期(POST /temp/api/renew:读回重写 + 30 天上限;与 browse-alist d9cd744 字节一致)
feat(temp): 文件续期按钮(每次 +7 天;KV 无 touch 接口 → 读回重写)
docs(readme): 补充原作者、许可证与个人修改版声明
fix(mobile): 修复歌单头部按钮重叠与横屏列表无法滑动
更新 README.md
chore(deploy): 同步 D1/KV 绑定配置(与 attachment-manager 0e6290d 一致)——browse-alist 的 mail-worker 未部署,此处仅为保持分支一致
chore(deploy): D1/KV 绑定写入 wrangler.toml(CF 按配置自动绑定,无需面板手工添加)—— D1 db→email(950828e9…)、KV kv→email(2fe4f308…);保留 ai/assets 与 keep_vars;验证 wrangler deploy --dry-run 解析出 env.kv/env.db/env.ai/env.assets
docs: 审计与详细更新日志迁移至 doc/,README 仅保留摘要并还原上游内容
docs(readme): 写入 2026-09-13 审计报告与更新记录
fix(playlist): 修复自建与隐私歌单 401(noCookie 导致匿名查询)
fix(mobile): 移动端适配修复(弹窗宽度 / 网格收缩 / 视口高度 / 安全区 / 触屏可见性)
docs: 网盘改造说明补齐审计修复记录(1f701b6 / 1e8ced9)
docs: 新增 COS Worker 安全/性能/密钥审计报告(2026-09-13)——61 项可执行攻击矩阵全通过、性能实测、发现清单 F1-F10 与建议 R1-R6;说明文档同步
docs: 同步 cos-exchange Worker 副本——审计修复(附件 HEAD 预检 404、列表错误脱敏、2FA 门控按 authStore;与 browse-alist 1f701b6 字节一致)
fix(browse,temp): 审计修复——附件 HEAD 预检 404、列表错误泄露 COS 细节、2FA 门控
docs: 同步 cos-exchange Worker 仓库内副本——/temp 上传任务面板(仿 Alist 进度/日志)、上传后列表不刷新修复、Content-Type 清洗(与 browse-alist de8f581 字节一致)
docs: 网盘改造说明更新——新增 §2.1 /temp 临时网盘(上传任务面板/列表一致性/类型清洗)、部署字节数 191173、修复记录 de8f581
feat(temp): 临时网盘上传任务面板(仿 Alist 进度/日志)+ 修复「上传后列表不刷新」
fix(security/perf): 凭据不再经 URL 传递,加固 CSP、响应头与缓存策略
fix(cloud): 续传失败时刷新 NOS 凭据并从原断点重试
fix(cloud): 修复云盘上传失败——NOS 直传改用 POST + Content-MD5
docs: 同步 cos-exchange Worker 仓库内副本——/browse、/temp 页脚新增版权行「© 2026 DelicateDuck582」(无下划线超链接,与 browse-alist 49cdf53 字节一致)
docs: 网盘改造说明更新——修正 KV 绑定说明(/browse 2FA + /temp 用 BROWSE_KV/TEMP_KV)、部署字节数(171728)、版权行记录(49cdf53)
feat(browse,temp): 页面页脚加版权行「© 2026 DelicateDuck582」(无下划线/非蓝色超链接)
fix(download): 修复下载列表条目较多时「滑不到底」(最后条目被抽屉裁掉)
fix(web): 修复发版后懒加载 chunk 失效导致「点击下载无反应」
chore(security): 新增密钥扫描脚本,并修复 Subsonic 认证盐随机源
fix(cloud): 修复云盘上传逻辑缺陷并优化哈希性能(安全/性能审计)
feat(cloud): 云盘上传支持断点续传,并规避风控与混合内容限制
feat(cloud): 我的云盘支持上传本地音频
feat(security): 登录凭据改走 X-Netease-Cookie 请求头
fix: 播放/下载取链容错(不改动 API 服务)
chore: .gitignore 忽略 TypeScript 构建信息(*.tsbuildinfo)
fix(tsconfig): 安全自检脚本引用的共享模块纳入 node 项目文件列表
feat: 网页端歌曲下载 + 安全加固(两轮审计全部落地)与性能优化
docs: README 增加网页端歌曲下载、安全加固与性能优化更新记录
fix: 补齐 browse-alist mail 侧两个运行时缺陷 + /oss 验签改恒定时间比较
docs: 同步 cos-exchange Worker 仓库内副本至最新生产版(与 browse-alist 及仓库外部署文件字节一致;旧副本缺 /temp、2FA、限流与脱敏等)
merge: 整合上游 v3.3.0 后续修复(引信/引用邮件回复显示 undefined)
merge: browse-alist 整合上游 v3.3.0(webhook/auto-clean/索引优化/AI 验证码/引信回复修复)
merge: 整合上游 v3.3.0(webhook、auto-clean、索引优化、AI 验证码提取、引信回复 undefined 修复;main 分支保持纯安全加固)
docs: 同步 cos-exchange Worker 仓库内副本(/temp 临时网盘、2FA、限流/脱敏等最新生产版,与仓库外部署文件字节一致)
fix: browse 查看器支持无扩展名/伪扩展名图片(魔数嗅探)
docs: COS 子账号权限审计 + 范围决策(方案 B 维持全桶)——脱敏版,替换真实 APPID/桶名为占位符
docs: 配置核对更新——moeq.moe 确认为内部超管域(设计如此),撤销原高风险项
docs: COS-exchange / mail-worker 环境变量配置核对报告(对照代码逐项验证)
audit: COS worker 通信/安全/性能审计 + 主流程加固(browse-alist)
merge: 整合上游 v3.3.0(webhook、auto-clean、索引优化、AI 验证码修复等)
security: mail 侧恒定时间比较/await 修复 + Turnstile remoteip 校验 + 邀请码 CSPRNG;附 COS 生产版回灌审计记录
feat: OpenPGP/Mailvelope 邮件加解密支持(读信解密/验签 + 写信加密模式 + PGP 附件识别)
docs: thunderbird-client 分支项目搁置声明(CloudMail Reader / stalwart-sync 存档,不再维护)
docs: README 补充魔数嗅探/内嵌图排版/附件MIME(当前仓库完整状态存档)
fix: 附件图片魔数绝对优先(覆盖 COS octet-stream 误标)
docs: 安全审计报告二期(镜像增强后全流程复核)
fix: 内嵌图/附件 MIME 用魔数嗅探(COS octet-stream + 无扩展名也能正确识别图片)
fix: 内嵌图 MIME 用响应头 Content-Type(COS key 无扩展名,URL 猜不到导致 octet-stream 无法渲染)
style: 内联样式对齐 CloudMail 原始排版(p margin0/h/a/table/body 字体色)
feat: 邮件 HTML 注入内联基础样式(雷鸟/手机排版修复,不依赖 JS/远程 CSS)
docs: README 更新(内嵌图 cid / 主题编码 / KV 双前缀 403 修复 / 网络退避)
fix: KV/R2 附件路径双前缀(attachments/attachments)导致签名验签 403
fix: SIGTERM 优雅保存 state(防中断丢幂等映射导致重复导入)
feat: 内嵌图 cid 嵌入(镜像自包含)+ 网络指数退避重试 + README 安全审计
feat: 邮件镜像 IMAP 收发(多账户文件夹/双向同步/附件)+ 按需触发同步 + 安全审计
docs: Stalwart 密码确认独立设置(不复用 admin)
docs: 部署 MD 占位符落地(LE_EMAIL/CF Token 手动 DNS 分支/TUNNEL_TOKEN 位置/密码说明)
fix: JMAP 投递保真 receivedAt(CloudMail 真实时间)+ 最终审计
docs+fix: 部署 MD 完善 CLI 执行清单;修复 jmap 模式误跳过账户
security: 去除本地相关数据/密钥(wrangler-test.toml 真实 ID 占位)
feat: Stalwart 文件夹聚合投递(JMAP Email/import)+ 删除/恢复双向同步
feat: 方案 C 发信通道(smtp-void + SYNC_SENT_MODE=send)
docs: 审计遗留事项新增方案C(CloudMail Resend API 发信通道)+ allReceive 语义澄清
fix: 多号模式(admin 5 邮箱)配置 + allReceive 过滤修复
fix: 无 25 端口方案 + 多域名说明 + 启动日志动态化
feat: 删除/发信反向同步 + 安全分析文档
fix: stalwart-sync 安全审计 + 性能加固
feat: stalwart-sync v2——多账户 + 已读回写(JMAP)
feat: 用 Stalwart+同步替换最小 IMAP 桥方案
security+perf: imap-bridge 安全加固与性能优化
feat: 新增 imap-bridge——CloudMail→IMAP 桥(Node 零依赖,TLS 993,只读收件箱)
fix: 工具栏图标点击无反应——补 browserAction.onClicked 打开阅读页
feat: 新增 thunderbird/ 插件(CloudMail Reader)——只读拉取收件箱
ci: 禁用 GitHub Actions push 自动部署(生产由 Workers Builds 从 attachment-manager 构建)
ci: 禁用 GitHub Actions push 自动部署(生产 Worker 由 Workers Builds 从 attachment-manager 构建,避免 main 推送覆盖生产)
fix: 移除 package.json 已废弃的 pnpm.overrides(修复 GitHub Actions ERR_PNPM_LOCKFILE_CONFIG_MISMATCH)
fix: 移除 package.json 中已废弃的 pnpm.overrides(fast-xml-parser 5.7.0)
fix: cvtR2Url 空 key 返回 '' 而非 'NaN'
fix: cvtR2Url 空 key 返回 '' 而非 'NaN'(原 return + 'https://' + '' 是一元加号导致的坏代码,影响空背景图/附件回退 URL)
security: 升级 hono 4.12.16 → ^4.12.34(消除生产依赖的 3 个 advisory,GHSA-f577-qrjj-4474 / GHSA-2gcr-mfcq-wcc3 / GHSA-79qm-7rj5-m7r9)
fix: login-service.js 补 import reqUtils(登录防爆破 getIp 未导入导致 500)
fix: login-service.js 补 import reqUtils(登录防爆破用到的 getIp 之前未导入,导致登录必现 500 ReferenceError: reqUtils is not defined)
fix: 重新生成 pnpm-lock.yaml 记录 fast-xml-parser overrides
security: HTML 签名入库前白名单清洗(防存储型 XSS,纵深防御)
docs: README 记录 main 分支安全增强(基于上游 v3.2.0 的纯安全加固)
security: 清除上游自带的已泄露 jwt_secret(b7f29a1d)
security: 在 main 分支应用纯安全加固(基于上游 v3.2.0,不含 fork 功能/COS 存储安全)
merge: 整合上游 v3.2.0(OAuth 登录、列表列裁剪优化、性能索引、Plus Address、CVE 修复)
docs: 更新 README 仓库说明、Demo 链接,移除 Star History
docs: README 增加新版网易云 API 适配更新记录
fix: getCacheData 不再缓存 null/undefined,避免接口异常时空值缓存导致推荐持续空白
fix: 关闭 withCredentials,兼容新版 API 的 Access-Control-Allow-Origin:*(避免 CORS 凭证模式被浏览器拦截)
feat: 切换网页版 API 至 api-enhanced (music-api2)
security: 网盘 cookie 校验改恒定时间比较、COS 探测失败增加脱敏日志;新增脱敏交接文档(覆盖 attachment-manager/browse-alist 分支现状/部署/安全)
feat: 网盘(cos-proxy-worker) COS 健康探测——COS 关闭/错误时登录界面/首页直接提示「COS对象存储错误,暂时关闭服务」(503, 30秒缓存探测)
feat: 同步 COS 故障自动回退架构到 browse-alist——r2-service 回退KV/回迁/双删、sign-utils URL 按存储生成、/oss+/attachments 明确提示(503)、cron(*/5)批量回迁、前端附件图 toast;修复 doc/cos-proxy-worker.js 边缘缓存绕过(public→private);新增 fallback 单测 15 项
feat: 邮件详情内嵌附件图片加载失败(COS故障)时透明占位+toast提示「文件暂时无法访问--COS错误」(3秒防刷屏),新增 i18n attCosDown
feat: COS 恢复后自动回迁回退附件并释放 KV——回退写入打 storage=fallback 标记、读时惰性回迁、cron(*/5) 批量回迁(cursor 分页遍历)、删除双删(COS+KV);修复批量迁移分页 bug;新增 9 项单测(共15项)
feat: COS 关闭时历史 COS 附件返回明确提示「文件暂时无法访问--COS错误」(503)——/attachments 与 /oss 的 KV miss 区分「COS 故障回退」与真实 404,新增 isCosFallback 判断 + 3 项单测
feat: COS(S3) API 无效/验证失败自动回退 KV 存储——r2-service 故障窗口(5min)+自动恢复探测,sign-utils URL 按存储状态生成(S3→代理域名/KV→本Worker),/oss 空对象 404 兜底,COS 用量统计失败触发故障标记;新增 fallback 单测
fix+perf: v3_9DB sync_delete 迁移默认值改 1(CLOSE) 防止绕过垃圾桶机制;新增 v4_0DB 性能索引(email.resend_email_id / att.email_id / att.key / star.user_id+email_id)
merge: 整合上游 v3.1.0(syncDelete 同步删除、AI 模型更新、邮件勾选上限、按钮/页面/CI 优化);保留 fork 自定义(已读回执 OPENED、COS 签名、垃圾桶、安全加固、html_signature),v3_9DB 补 sync_delete 迁移,移除 pnpm-workspace.yaml(非 workspace 根导致本机构建失败)
fix: /init INIT_SECRET 比较两端 trim,兼容 CF 控制台粘贴带尾随空格/换行导致的永久 mismatch
security: COS 专项审计修复——附件/browse 响应 Cache-Control public→private(禁 CF 边缘缓存绕过验签/密码)、/oss 直读加 per-IP 限流防刷 COS 流量
security: 修复 Resend webhook Svix 验签解析 bug(v1, 前缀导致配置密钥后全部 401)+ 恒定时间比较;README 记录第三轮安全审计
feat: 已读回执(Resend email.opened/clicked -> 状态 OPENED=9),webhook 未处理事件忽略、状态只升不降
security: 修复 TG 邮件token无过期+公开缓存、入站邮件内存DoS/附件无上限、OAuth随机密码用Math.random、附件数量限制晚于发信
security: 修复 TG 邮件token无过期+公开缓存、入站邮件内存DoS/附件无上限、OAuth随机密码用Math.random、附件数量限制晚于发信
security: 修复安全审计发现的高危/中危问题(SQL注入、登录防爆破、/init 独立密钥、错误脱敏、webhook 验签、public token TTL、CORS 白名单)
security: 修复安全审计发现的高危/中危问题(SQL注入、登录防爆破、/init 独立密钥、错误脱敏、webhook 验签、public token TTL、CORS 白名单)
fix: 安全审计修复(列表错误仅回 error 字段防泄露 COS 域名/签名中间值;key 拦截反斜杠;prefix/token 长度限制)
feat: 分页器增加跳页输入框(文件列表限已加载范围,本地页任意跳且超出总页数自动封顶)
fix: 分页器页码折叠(大目录上万文件时只显示 首页/当前附近/末页+省略号,避免翻页器溢出)
docs: 移除子账号名(cos-worker-readonly),只保留权限描述
docs: 清理真实 COS 桶地址/区域(改占位符,敏感配置只存 CF 环境变量)
docs: 同步分页器说明(每页 30/60/100 + 页码导航、per_page 参数、COS 无总数限制)
feat: 分页器替代加载更多(每页 30/60/100 选择 + 页码导航,对齐 alist Paginator;文件列表 token 顺序翻页,最近/收藏数字分页;/browse/api/list 支持 per_page→max-keys)
docs: 新增 browse-alist 网盘改造说明文档(功能/接口/环境变量/安全模型/部署/构建/修复记录)
feat: 顶栏新增「返回邮件」按钮(EMAIL SVG 图标,在退出按钮左侧,跳转 mail.duckgame-play.top)
feat: cookie 指纹 FNV-1a(32位可碰撞) 升级为 HMAC-SHA256(64位hex,不可碰撞/不可逆);browseAuthed/browseFingerprint 改异步并缓存指纹
fix: 退出登录改服务端 /browse/logout(JS 删不掉 HttpOnly cookie,原退出无效);退出图标 ⏻ 缺字形换 SVG
feat: 移除复制链接按钮(避免暴露文件路径结构)
feat: 视频/音频 Range 流式支持、关闭弹层暂停媒体、列表每页 100 条(最近/收藏/文件均分页)
fix: 根路径防自杀式重定向(避免代码误部署到 mail 域名时 302 死循环)
fix: 修复审查发现的逻辑/安全/性能问题(ATT_SIGN_MAX_TTL 非法值兜底、/browse HEAD 空 body 污染缓存、登录失败 Map 无上限清理、缩略图并发限流 MAX_CONCURRENT=4)
docs: 补充 /browse Alist 风格设计规格(对照 alist-web 源码)
refine: /browse 对齐 Alist 源码设计(主色 #1890ff、背景 #f7f8fa、容器 980px、列表三列 35/30/25%、单色 SVG 图标、文件卡片、搜索 Ctrl+K)
feat: /browse 网盘重做为 Alist 风格 UI(手机优先适配,架构与接口不变)
fix: Turnstile siteverify 仅在 remoteip 为合法 IP 时传递,避免校验被拒
fix: /browse 登录 Turnstile 体验优化(验证通过前禁用登录按钮、区分错误提示、记录 siteverify 结果)
docs: 同步 cos-exchange 最新 worker(签名密钥链修复、/browse v2 UI、限流/人机验证/地区白名单等加固)
feat: mail 侧边栏新增「网盘」入口(新标签页打开 cos-exchange /browse)
fix: /attachments 与 /oss 直读端点对畸形百分号编码容错(decodeURIComponent 异常时按 403 处理而非 500)
diagnose: /browse 列表签名失败时返回两侧 StringToSign 对照(ourSTS vs cosSTS),定位 canonical request 差异
fix: /browse 列表签名改用空 body 真实 SHA256 payload(与 AWS SDK 一致),并打印 stringToSign 便于对照 COS 排错
fix: /browse 列表加载加 10s/15s 超时与错误透传,卡死变明确报错便于定位
fix: /browse 页面改用 HTML 实体编码(纯 ASCII),杜绝粘贴编码损坏导致的内联 JS 语法错误;favicon 返回 204
feat: cos-exchange 内置 /browse 只读文件浏览器(密码门控,请求全部经本 Worker)
docs: 收编 cos-exchange 代理 Worker 与签名防伪造改造说明(含 HEAD 缓存修复、路径白名单)
fix: sanitize email HTML against stored XSS (backend + frontend defense-in-depth)
feat: 权限控制新增「全部附件」att:all 权限
docs: cos-exchange 缓存 TTL 调整为 7 天
chore: remove exposed test jwt_secret from wrangler-test.toml
perf: cos-exchange 改用 Workers Cache API 按文件缓存
feat: 附件管理增强与安全加固
Update README-en.md
Update README.md
docs: add fork copyright to MIT license
feat: attachment manager v2 (trash, restore, role group, locate email, type labels, responsive) + docs
feat: attachment manager (admin all users, per-user) + fix editor image overflow
feat: attachment signing, HTML signature, 28MB attachment limit
Merge branch 'maillab:main' into main
Merge branch 'SPlayer-Dev:dev' into dev
Add .env file from example
Update .env.example