Monica 的 Chrome/Edge Manifest V3 浏览器插件。管理界面复用并独立维护 Monica WebUI 源码,运行时不依赖 Monica Server WebUI。
基础可用版本已经完成:
- Nothing 风格的 Vue 3 管理页与 Popup:保留 Monica 原始图标,搭配点阵标题、黑白界面和少量红色强调,字体随扩展离线提供。
- 创建/解锁页、管理页、工具栏、保存密码提示、Passkey 确认框和表单旁自动填充统一使用 Monica 官方彩色图标;发布截图由隔离浏览器中的虚构账号生成。
- 概览页提供可自定义的密码库首页:堆叠常用卡片、可折叠收藏夹、类型、分类与文件夹、数据库、归档和回收站。支持卡片批量选择与排序、数据库范围记忆、紧凑/舒适布局、验证码快捷复制及同步状态入口。
- 各类条目采用统一的 Nothing 详情布局:长内容自动换行,字段与来源记录分层,窄屏保留底部操作。登录项与独立验证码详情可直接复制当前验证码;保密字段单独显示、隐藏。
- 默认跟随系统外观,可手动选择浅色或深色;适配 320–2560px、短横屏与 200% 字体,按钮完整换行,长编辑表单保留底部操作区。
- 支持 8 种语言:简体中文、英文、日语、韩语、德语、西班牙语、俄语和越南语。默认跟随浏览器,可手动切换;管理页、Popup 和网页提示同步生效。
- 大列表按页渲染,搜索仍覆盖全部项目;验证码共享可见页面计时器,隐藏页面停止刷新。图标字体按实际使用精简,生成器、二维码及 Secure Send 按需加载。
- 浏览器工具栏 Popup 和当前网站登录表单检测。
- 表单旁自动填充:聚焦账号、密码或验证码输入框时显示本站匹配项,支持鼠标与键盘选择、随滚动定位、窄屏向上展开及免解锁标记。可在“设置与备份 → 表单旁自动填充”关闭,已打开的网页立即生效。
- Provider 中立的数据模型,覆盖登录、TOTP、银行卡、证件、地址、支付账号和 Passkey。
- AES-256-GCM 加密 IndexedDB 密码库。
- Argon2id v1.3(64 MiB、3 次、32-byte 随机 salt)主密码派生;旧 PBKDF2 密码库在成功解锁后自动原子迁移。
- 解锁密钥只保存于
chrome.storage.session,默认 15 分钟无操作锁定。 - 页面启动与解锁前会检查后台版本;更新后仍运行旧后台时,提供重新加载入口,恢复后继续使用原密码库。
- 支持验证当前密码后更改主密码;完整密码库使用新盐重新派生并加密。
- 支持带版本标识的加密整库备份与原子恢复,包含项目、密码源和设置;恢复失败不会改写现有密码库。
- Popup 只接收登录项摘要;点击后由后台将选中项目的必要字段发送到匹配页面。
- 普通登录项可单独开启“允许免解锁填写”;锁定时仍可点击填写已标记账号的用户名和密码,其他保险库功能仍受解锁保护。
- Popup 可发现主页面及跨域 iframe 登录表单、选择填充目标,并填充用户名、密码和当前 TOTP。
- 登录提交、SPA 按钮和密码变更会显示隔离的保存/更新弹窗;候选密码只在后台内存保留 60 秒。
- Popup 可显式填充证件、账单地址、银行卡和支付账号;通用
number/code字段不会被猜测。 - 旧明文原型数据会在首次创建加密密码库时迁移并删除。
- WebDAV Basic Auth、连接测试、手动同步和多连接管理。
- 兼容 Android 的普通
.zip与MONICA_ENC_V1加密.enc.zip。 - 登录、TOTP、银行卡、证件、地址、支付账号、笔记及 Passkey 元数据导入。
- 浏览器修改和删除会写入新的 Android 快照,未知文件和未来 JSON 字段原样保留。
- 基于远端文件、ETag 和项目 revision 的三方冲突检测;冲突时停止覆盖。
- Bitwarden US、EU 和标准路径自托管服务登录,支持 PBKDF2、Argon2id、身份验证器/邮箱/YubiKey 代码 2FA 和 Token 刷新。
- Bitwarden 个人及组织共享的登录、TOTP、银行卡、身份与安全笔记 Cipher 导入;个人 Cipher 可创建,个人和有权限的组织 Cipher 可更新、删除。
- 支持浏览器本地 ES256 Passkey 注册和登录;Bitwarden 可作为新 Passkey 的默认保存目标,并同步 FIDO2 创建、签名计数器与单凭据删除。
- Bitwarden revision 冲突检测和异常空密码库防误删保护。
- 外部源修改进入加密 mutation queue;管理页显示待同步、失败次数和显式重试入口。
- 本地写操作串行提交,IndexedDB 只有在事务完成后才报告成功,避免并发保存相互覆盖。
当前版本的登录填充、密码保存/更新、身份与支付填充、WebDAV、Bitwarden 和 Passkey 主流程均有真实 Chromium MV3 E2E 覆盖。
支持 简体中文、English、日本語、한국어、Deutsch、Español、Русский、Tiếng Việt 共 8 种语言,与 Android 版的语种保持一致。登录页、侧栏和 Popup 底部均可切换,也可选择“跟随浏览器”。语言包离线提供,Manifest 名称、说明和工具栏文案同步覆盖。字段识别与界面语言独立;切换语言不会修改账号名称、密码或 Android 数据。详见 本地化支持范围。
0.1.27 在相同 Chromium、2,000 条合成登录项和 100 条验证码数据下,登录列表的保留 V8 堆由 59.74 MiB 降至 8.08 MiB,Popup 由 14.07 MiB 降至 5.79 MiB。它们是请求垃圾回收后测得的页面 JavaScript 堆,不代表浏览器总内存;主密码派生仍使用 64 MiB Argon2id。测量范围与复现方式见 性能说明。
发布与商店材料:
- 隐私政策
- 权限说明
- 数据安全申报底稿
- zh-CN 商店文案
- 安全漏洞报告政策
- 独立安全审计交付说明
- 可复现发布流程
- 0.1.31 模块化密码库首页与验证记录
- 0.1.32 首页易用性优化与验证记录
- 0.1.33 Android 风格概览与跨端兼容验证
- 0.1.28 更新后解锁修复与验证记录
- 0.1.27 性能优化与验证记录
- 性能测量与维护
- 0.1.25 多尺寸适配与验证记录
- 0.1.26 多语言与验证记录
- 0.1.24 功能、安装与互通验证记录
- 参与贡献
- 点击插件图标,按需解锁 Monica。
- 登录页选择匹配账号,填充用户名、密码和 TOTP;跨域 iframe 可在“填充目标”中切换。
- 提交新密码后,在页面右上角选择保存源并确认保存或更新。
- 地址、证件或结账页面从 Popup 选择对应项目;银行卡安全码只在这次显式点击后发送。
- 网站请求创建或使用 Passkey 时,在页面确认弹窗中核对网站、账户和保存目标,再继续或取消。
- 在“设置与备份”中定期下载加密整库备份;恢复后使用备份创建时的主密码。
“概览”参考 Android 的模块层次:顶部切换数据库,桌面用两列排列常用卡片、收藏和类型/文件夹,窄屏按顺序单列展示,归档与回收站保留为紧凑入口。模块标题可以展开或收起,并记住选择;数据库默认收起,仍显示需要处理的同步数量。展开后可查看各来源的已知同步时间和状态,“查看并处理”会定位到对应数据库的管理区。
首次显示全部数据库,之后默认记住顶部选择的范围。可在“自定义首页”选择每次显示全部数据库、指定数据库或上次使用的数据库,下一次解锁/重新打开管理页生效;来源已移除时回到全部范围并提示。常用卡片、收藏、类型、文件夹和归档/回收站随当前范围更新。全部范围下显示来源以区分同名账号与文件夹,单库浏览减少重复来源标签;相同名称或 ID 的文件夹不会跨库混合。
“管理卡片”可搜索、多选最多 24 个条目,用拖动或上下按钮调整顺序,点击“保存卡片”后一次生效;取消会放弃草稿。已选择的卡片包含所有数据库,候选列表随顶部范围变化,并展示安全摘要以区分同名账号。失效、归档或已删除条目的固定卡片可集中移除,不删除库内记录。清空后保留空卡叠,也可切回按收藏和最近更新时间生成的推荐,不记录使用次数。
点击卡片打开已有详情;登录卡片显示验证码关联状态,并可直接复制用户名或验证码。验证码仅在点击时生成,HOTP 仅在成功复制后推进计数器。首页不展示密码、验证码密钥、生成的验证码或笔记正文。
“自定义首页”提供紧凑/舒适两档密度、默认数据库和模块显隐/顺序,支持预览、保存与取消。布局和卡片管理使用独立对话框,内容可以滚动,保存/取消保持可见。“恢复默认布局”重置模块和密度,保留数据库、固定卡片与折叠状态;全部隐藏后仍保留设置入口。
这些显示偏好保存在当前扩展的加密库中,并随整库备份恢复,按字段合并保存。Android 与插件分别保存首页布局,不将设备专属的模块、数据库或固定卡片 ID 写进另一端设置;通过 WebDAV 写回时完整保留 Android 的 monica_config/page_adjustment_settings.json。共享条目继续使用原有 Android、KeePass、MDBX2 或 Bitwarden 格式,布局设置不改变记录结构。
在管理页编辑一个有密码和匹配网站的普通登录项,勾选“允许免解锁填写”并保存。锁定后打开对应网站,Popup 会列出可免解锁填写的匹配账号;点击后只填写用户名和密码。TOTP、Passkey、复制密码、查看详情和修改设置仍需解锁。
开启后,任何能够使用当前浏览器配置的人都能点击填写这些账号。扩展使用独立、不可导出的设备密钥保存所选账号的加密副本,因而这部分账号依赖浏览器配置和操作系统保护;它们不再具有主密码锁定时的同等保护。关闭标记、删除或归档账号会撤销权限。这个标记只在当前扩展中生效,不写入 Android、KeePass 或 Bitwarden 的记录;恢复整库备份后需要重新勾选。
- 在管理页打开“密码源”,填写 WebDAV 根地址、用户名和密码。
- Android 使用加密备份时,同时填写相同的备份加密密码。
- 先“测试连接”,再“加密保存”,最后执行“立即同步”。
- 新建登录项时可选择该 WebDAV 源;项目会在下次同步时写入新的 Android 兼容快照。
同步不会修改旧备份文件,而是在 Monica_Backups 中生成新的时间戳快照。两端需连接同一个远端位置,并在写入后由另一端同步/恢复对应快照;浏览器本地库本身不会自动变成 Android 数据库。并发编辑保留冲突处理流程。
插件编辑登录项的独立验证器绑定时,会转换成 Android 的 boundPasswordId,新建、更换和解除后再次同步均保留结果。旧记录缺少插件绑定字段时保留 Android 现有关联;跨 WebDAV 数据库的绑定或一个验证器绑定多个登录项无法由 Android 反向字段完整表示,写入会明确报错,避免丢失关系。HOTP 计数器和未知字段继续保留。
仅包含 Android 设备保护密钥引用的 Passkey 仍只显示元数据;受支持的便携 PKCS#8 私钥仅在加密备份边界内导入和写回。KeePass 互操作验证覆盖 AES-256 与 ChaCha20,Twofish 当前明确不支持。详见 0.1.33 验证记录。
- 在“密码源”点击“连接 Bitwarden”。
- 选择 US/EU 官方地址,或填写自托管 Vault 根地址。
- 输入邮箱和主密码;需要 2FA 时选择方式并继续验证。
- 如需把网站新建的 Passkey 保存到 Bitwarden,请勾选“设为新项目的默认保存目标”;创建、使用或删除后执行“立即同步”。
- 主密码不会保存;Token、Vault Key 和 FIDO2 私钥只存在于 Monica 加密信封中。逐项开启免解锁填写时,所选账号另有设备密钥加密的填写副本。
当前版本会从同步资料中解密用户 RSA 私钥,并分别解包可访问组织的对称密钥;共享 Cipher 按组织/集合归属读取,更新时保留 organizationId 和 collectionIds。缺失或损坏的组织密钥只会跳过对应共享项并保留本地缓存,不会影响个人库。新建项目目前仍创建为个人 Cipher,集合成员管理继续由 Bitwarden 官方客户端负责。Bitwarden FIDO2 的 base64 PKCS#8 密钥可用于登录;计数器更新和单凭据删除会合并回父登录 Cipher,不会删除父登录或其他 Passkey。没有可导出密钥的引用只显示元数据。
npm install
npm test
npm run test:security
npm run test:e2e
npm run package:release
npm run package:verify构建产物位于 dist/,可安装 ZIP 与每次重新生成的 release/monica-extension-unpacked/ 位于 release/。
- 打开
chrome://extensions或edge://extensions。 - 开启“开发者模式”。
- 选择“加载已解压的扩展程序”。
- 选择本项目的
dist目录。 - 打开扩展的“选项”页面并创建主密码。
也可以加载 release/monica-extension-unpacked/,其内容由 npm run package:release 完整替换,并与 release/monica-extension-<version>.zip 字节一致。ZIP 的根目录直接包含 manifest.json。
开发者模式下,扩展 ID 与已解压目录的绝对位置相关。升级现有安装时,应在原目录中完整替换文件后点击“重新加载”,从而保留原扩展 ID 与本地存储。发布脚本支持 --unpacked-dir <原目录>,用于同步刷新已经安装的旧目录。
- 密码、Token、Provider 凭据和 Passkey 私钥不得持久化为明文。
- Content Script 不提供读取密码库的消息接口。
- 自动填充要求用户在 Popup 或页面选择器中明确操作。
- 当前 JSON 导出是用户主动触发的明文导出,必须保存在可信位置。
- 加密整库备份保留原 AES-GCM 信封;替换现有库前同时验证备份主密码和当前主密码。
- Android WebDAV 的设备绑定 Passkey 只有密钥别名,浏览器中保持只读元数据,不能签名。
- Bitwarden 组织密钥无法解包时,相关共享 Cipher 会保持本地缓存并给出警告,不会以空结果覆盖。
详见 架构说明。
Monica 项目采用 GNU GPL v3(GPL-3.0-only)。