跨平台密码管理器 Monorepo。当前主管理面是 Tauri 桌面、Docker Web 和 Chrome Web 扩展:三端复用同一管理 UI 源码和 V2 同步契约,但存储、锁、系统能力和少数返回结构仍按平台适配。Rust pass_core 是合并权威;Chrome 的 JS 合并实现必须通过黄金向量与 Rust 对拍。
当前事实入口:
docs/current-app-extension-implementation-reference-zh.md。逐项文档索引见文档索引.md,分类阅读导航见docs/README.md。
版本 2.0.3。本轮完成双端并发 CAS 混沌测试、WebDAV ETag 防御加固与 WASM 合并架构定案:
- 双端并发 CAS 与密钥轮换混沌测试落地:在
apps/sync_server_ubuntu/tests/test_concurrent_chaos.py新增全自动化多端竞态测试矩阵,真实模拟双客户端在同一 revision 下的并发写入、412 冲突捕获后自动 Pull-Merge-Retry 闭环收敛、多端主密钥轮换(Key Rotation)平滑迁移以及相同 Idempotency-Key 丢包重放幂等性(45 项服务端单测全绿)。 - WebDAV ETag 兼容性防御强化:对齐桌面 Tauri 壳与 Docker Web 端的 WebDAV ETag 护栏契约,补齐单元测试,确保远端无 ETag 时主动拦截并报错,杜绝因无条件覆写造成数据破坏。
- WASM 合并引擎演进架构定案:输出完整 WASM 架构方案与平滑迁移路径(
docs/20261104-1120-WASM合并引擎架构方案与迁移路径.md),明确pass-merge零改造 WASM 编译、MV3 线性内存零拷贝契约及三阶段影子迁移路线,为未来移除 1,077 行 JS 双写奠定基石。
此前里程碑回顾:2.0.2 / 2.0.1 零警告与门禁加固(三大 Rust 目标与 Python 套件 0 告警,门禁配置 -D warnings 与 -W error::ResourceWarning;README 进度版本纳入 version.mjs,72 处版本单一真实源);2.0.0 核心库 Clippy 零警告(core/pass_core 清理,JS↔Rust 对拍与 FFI 零漂移);1.9.7–1.9.9 通行密钥 attestation 硬边界定案(1.9.7 实测谷歌服务端拒绝匿名证明后恢复让位;1.9.8 桥接层补 direct/enterprise 守卫并修正误导性测试;1.9.9 守卫下移到合法性校验之后、拒绝路径断言去空转。1.9.7 无独立文档,细节以提交 254ee692 和 1.9.8/1.9.9 审查记录为准);WebAuthn PRF 扩展支持(自 1.8.2)。
详细进度:docs/20261104-1125-当前开发进度-antigravity.md
优先补齐 Safari 原团队签名安装与完整产品路径验收、Ubuntu 目标容器部署验收、推进 WASM 编译落地与合并引擎双轨制移除。现有“密钥留空即明文、不额外确认”策略保持不变。
详细计划:docs/20261104-1125-下一步待实现-antigravity.md
| 入口 | 路径 | 当前角色 | 主要限制 |
|---|---|---|---|
| Tauri 桌面 | apps/codex-tauri |
Windows / macOS / Linux 统一桌面壳,主力管理 UI | Touch ID 仅 macOS;多进程同数据目录写入无文件级 revision/CAS |
| Docker Web | apps/pass-web |
无 GUI / Ubuntu / Docker 浏览器管理面 | 单用户 vault;同一数据目录只允许一个写实例 |
| Chrome Web 扩展 | apps/extension_chrome_web |
正式 Chrome MV3 扩展,含管理页、自动填充、WebAuthn 和后台同步 | 不提供系统指纹解锁;SSH 创建服务只保存草稿 |
| 扩展共享层 | apps/extension_shared |
popup、content script、background、WebAuthn、Firefox/Safari 共享源码 | 改源码后必须重新构建并刷新平台壳层 |
| Rust Core | core/pass_core |
V2 合并、领域类型、CSV、同步契约与 FFI | pass-storage 仍是候选规范化 DDL,主端未执行 |
| 自建同步服务 | apps/sync_server_ubuntu |
Ubuntu Python 同步服务,提供 V2 state/version/audit/restore API | 服务端只存快照和版本,不做业务合并 |
| macOS 平台模块 | apps/app_macos |
AutoFill、Credential Exchange、旧 SwiftUI 与迁移参考 | 不再作为跨桌面主端 |
| Firefox / Safari 壳 | apps/extension_firefox、apps/extension_safari |
基于共享扩展代码的浏览器壳层 | 未纳入三端命令矩阵,不能宣称与 Chrome 管理能力等价 |
| Android Provider | apps/android_credential_provider |
Android 14+ Credential Manager Provider 骨架 | 真实 vault 解锁、密码结果和 Passkey 结果未完成 |
pass/
├── core/pass_core/ # Rust workspace:domain / merge / csvio / transport / storage / ffi
├── apps/codex-tauri/ # Tauri 2 桌面主端
├── apps/pass-web/ # Docker / Ubuntu Web 端
├── apps/extension_chrome_web/ # 正式 Chrome 扩展壳层与生成产物
├── apps/extension_shared/ # 扩展共享源码与构建脚本
├── apps/extension_firefox/ # Firefox 壳层
├── apps/extension_safari/ # Safari Web Extension + host app
├── apps/app_macos/ # macOS 系统能力和旧 SwiftUI 参考
├── apps/android_credential_provider/
├── apps/sync_server_ubuntu/ # 生产自建同步服务
├── apps/sync_server_local/ # macOS 本地开发启动脚本
├── docs/ # 当前事实、契约、历史设计和审计记录
└── scripts/ # 版本、构建、测试、审计和同步脚本
仓库根目录 VERSION 是唯一版本来源。每轮完成修改后执行:
python3 ~/.codex/skills/pixian-dev-workflow/scripts/bump_version.py --root .
node scripts/version.mjs checkscripts/version.mjs check 会检查包清单、Cargo、Xcode、Android、扩展 manifest、文档当前版本和内嵌同步服务器副本。版本号按 base-10 进位:1.6.9 -> 1.7.0。
共享 UI 与扩展构建关系:
- Tauri/Docker Web/Chrome 管理页源码在
apps/codex-tauri/src;npm run prepare:dist生成 Tauri/Docker Web 资源并同步 Chrome 管理页文件。 - 扩展 popup/content/background/WebAuthn 源码在
apps/extension_shared;npm run build生成共享dist/。 - Chrome 正式扩展加载
apps/extension_chrome_web;运行./scripts/build-extension-chrome-web.sh将共享扩展 bundle、图标和管理页刷新到该目录。
首选根级检查:
bash scripts/test_all.sh默认检查版本、扩展 JS、Python 单测、Rust workspace、命令矩阵和 Markdown 链接。Docker 与 Android 套件需要显式开启:
bash scripts/test_all.sh --docker
bash scripts/test_all.sh --android常用分模块命令:
node scripts/version.mjs check
cd apps/extension_shared && npm test && npm run build
./scripts/build-extension-chrome-web.sh
TASK_CARGO_TARGET_DIR="$(mktemp -d)"
cd core/pass_core
CARGO_TARGET_DIR="$TASK_CARGO_TARGET_DIR" cargo test --workspace --locked
CARGO_TARGET_DIR="$TASK_CARGO_TARGET_DIR" cargo build -p pass-merge --bin pass-merge-cli --locked
CARGO_TARGET_DIR="$TASK_CARGO_TARGET_DIR" node js/check_merge_parity.mjs本机是 macOS;Ubuntu 服务部署、systemd、Docker 运行时和 Android SDK/JDK 验证不要与本机安装方式混用。Python 优先项目内 .venv。
历史/蓝图文档保留用于追溯,不可反向推导为当前能力。改功能前先读“当前事实 → 契约 → 专题文档 → 历史材料”。
- Chrome WebDAV 已接入后台统一调度;不要再把 Chrome 写成未接入 WebDAV。
- Firefox、Safari、Android 和旧 SwiftUI 不是三端管理面等价实现。
- Chrome 内容脚本的账号选择和保存/更新确认浮窗使用 closed Shadow DOM + manual Popover,支持拖动;保存/更新确认不会自动消失。
- Docker Web 是单用户、单写实例 vault,不是多用户服务。
- WebDAV 只有 ETag/If-Match,没有自建服务器的版本列表、审计和恢复接口。
- 软件 Passkey 私钥可同步,不等价于硬件认证器不可导出的安全属性。
本项目按 $pixian-dev-workflow 收尾:验证成功、版本 +0.0.1、更新 .gitignore / 文档、中文 commit、推送到 pixian5/passkey。不要提交私密凭据、SSH key、.env、本地数据库、浏览器测试 profile 或构建缓存。