56 lines
3.2 KiB
Markdown
56 lines
3.2 KiB
Markdown
# 更新日志
|
||||
|
|
|
|||
|
|
本文件记录本项目的所有重要变更。
|
|||
|
|
|
|||
|
|
格式参考 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/),
|
|||
|
|
版本号遵循 [语义化版本](https://semver.org/lang/zh-CN/)。
|
|||
|
|
|
|||
|
|
## [Unreleased]
|
|||
|
|
|
|||
|
|
### Added
|
|||
|
|
|
|||
|
|
- 构建管线:引入 esbuild 负责打包与压缩,`tsc` 只做类型检查(`scripts/build.mjs`)
|
|||
|
|
- 构建自检:校验 `manifest.json` / `popup.html` 引用的文件是否存在、版本号是否一致
|
|||
|
|
- 打包与发布脚本:`npm run package` 产出 zip,`npm run release -- <patch|minor|major|x.y.z>` 递增版本并同步 `manifest.json` / `package.json` / `updates.xml`
|
|||
|
|
- CI:`.gitea/workflows/release.yml`,推送 `v*` 标签时自动测试、打包并上传产物
|
|||
|
|
- 密钥句柄存储模块 `src/key-store.ts`:以不可导出的 `CryptoKey` 句柄替代明文口令,实现 Service Worker 重启后自动解锁
|
|||
|
|
- `utils.toMatchPatterns()`:把域名配置转成合法的 Chrome match pattern
|
|||
|
|
- 按域名的动态脚本注入:只向用户配置过的域名注册 content script
|
|||
|
|
- 测试:新增 `tests/key-store.test.js`、`tests/content-fill.test.js`(jsdom 真实 DOM),测试总数 54 → 99
|
|||
|
|
- 文档:`README.md`、`PRIVACY.md`、`CHANGELOG.md`、`LICENSE`
|
|||
|
|
|
|||
|
|
### Changed
|
|||
|
|
|
|||
|
|
- `popup.ts`(1479 行)拆分为 `src/popup/` 下 15 个模块,模块间通过 `PopupCtx` 上下文互相调用,消除网状耦合
|
|||
|
|
- `manifest.json` 移除静态 `content_scripts`(原为 `<all_urls>` 无条件注入所有页面)
|
|||
|
|
- 手动填充改为"探测已注入标记 → `chrome.scripting.executeScript` 按需注入"
|
|||
|
|
- `dist/` 不再纳入版本控制,改为构建产物;克隆后需执行 `npm run build`
|
|||
|
|
- 类型检查与产物生成分离:`tsconfig.json` 设置 `noEmit`
|
|||
|
|
|
|||
|
|
### Security
|
|||
|
|
|
|||
|
|
- **移除明文口令存储**:不再把主口令写入 `chrome.storage.session`,改为在 IndexedDB 保存不可导出的密钥句柄;旧版本残留的 `__autoPwd` 在升级后会被自动迁移为句柄并立即删除
|
|||
|
|
- 锁定(手动或 10 分钟无操作)时一并删除密钥句柄,解锁状态不再"自动复活"
|
|||
|
|
- 脚本注入范围由"所有网站"收敛为"用户配置过的域名",锁定时自动清空
|
|||
|
|
- 未配置的站点不再执行任何扩展脚本,同时消除了原先在所有页面常驻的 `MutationObserver`
|
|||
|
|
|
|||
|
|
### Fixed
|
|||
|
|
|
|||
|
|
- `tests/detect-captcha.test.js` 缺少 `chrome.runtime.sendMessage` mock,导致加载 `content.js` 时抛出未处理的 Promise 拒绝,测试结果不干净
|
|||
|
|
|
|||
|
|
## [1.0.0] - 2026-09-14
|
|||
|
|
|
|||
|
|
### Added
|
|||
|
|
|
|||
|
|
- 首个可用版本
|
|||
|
|
- 域名自动填充与自动提交,支持通配符与路径匹配
|
|||
|
|
- 多环境(个人 / 测试 / 生产)管理与多环境命中弹窗选择
|
|||
|
|
- 登录表单字段三级降级探测,支持 Shadow DOM 穿透与 SPA 延迟重试
|
|||
|
|
- 验证码检测(reCAPTCHA / hCaptcha / 滑块 / 图形码),命中时只填充不提交
|
|||
|
|
- 同一域名连续失败 3 次后暂停自动提交,5 分钟后恢复
|
|||
|
|
- 保险库加密:PBKDF2-SHA256(20 万次迭代)+ AES-GCM-256,自动锁定
|
|||
|
|
- 配置导入导出(兼容 v1 / v2 / v3 格式,支持文件口令加密)
|
|||
|
|
- 从浏览器书签批量导入域名
|
|||
|
|
- 口令强度评估与暴力破解耗时估算
|
|||
|
|
- 中英双语界面,侧边栏形态
|