本文件记录本项目的变更。
格式参考 Keep a Changelog, 版本号遵循 语义化版本。
- 引入版本权威源
VERSION(仓库根,单行MAJOR.MINOR.PATCH): - 两个程序新增
--version:vaultd --version/vaultgui --version - 启动日志打印版本号,便于从日志回溯运行的是哪个版本
- 17 项单元测试,覆盖会话并发、闲置上锁、错误码收敛、限流窗口、
- 统一错误出口:原先有 30 处直接把
err.Error()写进 HTTP 响应, - 会话并发安全:session 字段访问改由互斥锁保护,消除数据竞争
- 滑动窗口闲置上锁:每次成功的解锁态操作刷新闲置计时,取代原先
- 时间存储统一 UTC:账户锁定时间改用 RFC3339 格式存取,
- 备份轮转失败留痕:删除旧备份出错时写日志,不再静默吞错
- 列表接口回显的
limit与实际生效值一致 - 创建分类时校验
parent_id的存在性与归属 - 审计写入失败不再被静默丢弃:改为降级并返回稳定错误码(
E_AUDIT_UNAVAILABLE),响应带audit_degraded标记与X-Audit-Degraded头 phase-a/脚本-打包.py的SRC路径错指:原SRC = os.path.dirname(_HERE)phase-a/脚本-打包.py的失效 ldflag:原phase-edgeapp/脚本-打包.py缺构建步骤:原先只打包、要求 exe 已预构建,- 前端时间显示偏差:
fmtTime原先把后端返回的本地时间一律当 UTC 解析, - 登录限流绕过:限流改用真实
r.RemoteAddr,不再采信可伪造的
- 原型工具不再把派生主密钥打印到 stdout:改为只输出 sha256 前 8 位指纹
- 首个发布版本:Windows 本地单机密码保险箱
- 加密:AES-256-GCM 认证加密(防篡改),密文格式
版本号(1) ‖ IV(12) ‖ Tag(16) ‖ 密文 - 密钥派生:Argon2id(内存 64 MiB / 迭代 2 / 并行 1),抗 GPU / ASIC 暴力破解
- 主密钥不落盘:库里只存派生参数(salt + KDF 参数),每次解锁时重新派生
- 仅监听 127.0.0.1 随机端口:不对外开放,局域网内其他设备无法访问
- 闲置 15 分钟自动上锁(滑动窗口:每次成功操作续期)
- 独立浏览器配置:不影响日常浏览器的书签、密码、历史
- 备份轮转:自动 / 手动备份,保留最近 30 份
- 双形态发布:原生窗口版(Edge / Chrome
--app模式承载)与浏览器版 - 数据格式与早期 PHP 版完全兼容,可双向读写
- 账户锁定:连续 5 次失败锁定 15 分钟(锁定时间以 UTC 存储)
- 登录限流:按来源 IP 10 次/分,按用户名 5 次/5 分(用户名归一化为小写)