更新摘要
- 修复添加 Gmail 账号时,直接粘贴 Google
展示的带空格分组应用密码会被判为无效的问题。
- 普通空格、不间断空格(U+00A0)、窄不间断空格(U+202F)和零宽空格(U+200B)都会被自动忽略。
修复
gmailAppPasswordField 原来只移除普通空格(U+0020)。从
Google 应用密码页复制 abcd efgh ijkl mnop
时,分组分隔符在不同浏览器和系统下可能是不间断空格或窄不间断空格,
屏幕上与普通空格完全一致,导致粘贴后校验失败,必须手动删除空格才能添加账号。
- 改为按 Unicode 空格分隔符与零宽格式字符统一剥离,覆盖
U+0020、U+00A0、U+1680、U+180E、 U+2000–U+200F(含零宽空格
U+200B)、U+202F、U+205F、U+2060、U+3000 和 U+FEFF。
- 制表符、换行等控件字符仍然判为无效,避免把 Google
账号主密码或其他内容误当成应用专用密码; 去空格后仍要求恰好 16 个可打印
ASCII 字符。
- 添加账号和更新应用密码两个表单的提示文案补充"空格会被自动忽略",中英文同步;
修复后的行为与界面承诺一致。
- 更新 Gmail 接入与部署文档中"服务端只移除普通空格"的描述。
安全
- 应用密码的归一化只发生在服务端校验阶段,不放宽 16 位可打印 ASCII
的最终约束,
也不会记录或回传明文;已保存的密文格式不变,升级不需要重新连接账号。
升级说明
- Web
1.1.2 可直接升级,不新增 D1
迁移、变量、Secret、资源绑定或 API 变更。
- 更新自己的 Fork,构建命令使用
npm run build,部署命令使用
npm run deploy。
- 已连接的 Gmail
账号不需要重新验证或更新应用密码;只有此前因空格问题添加失败的用户
需要重试一次。
- 本次只发布 Web 补丁版本,Float 和 Android 继续使用独立版本号。
测试
- 单元测试覆盖普通空格、不间断空格、窄不间断空格、细空格、全角空格、零宽空格、混合分隔符
与前后空白,以及控件字符、长度不足和非字符串仍被拒绝。
- 785 项单元测试与 32 项 Worker/D1
集成测试通过;
npm run check 的文件行数、Lint 与三套
类型检查全部通过。
发布
- Web 版本为
1.1.3,通过 GitHub Tag v1.1.3
发布,不包含额外下载文件。
- Tag 必须位于
main;发布工作流完成全部验证后生成 GitHub
Release。