Skip to content

Releases: starnotes-xj/FaceWinUnlock-Tauri

v0.5.10

Choose a tag to compare

@github-actions github-actions released this 18 Jul 04:01

@

完整更新日志:v0.5.9 → v0.5.10

🔒 WebAuthn/Passkey 不触发人脸(三层防线)

DLL 侧(分类 + debounce):

  • 枚举事件 2250/2251 提前检测:弹窗前 1-2s,5s 窗口
  • ready-monitor 需配合标题关键词:无关键词时保守返回 MonitorUnavailable,不假定为密码填充
  • 发 "run" 前 500ms debounce 轮询 is_webauthn_guard_active()
  • 发 "run" 紧前面加第二道 guard 复查,关闭 ~20ms 竞态
  • broker 场景 hook 武装前多重 WebAuthn 复查(prepare 前后 + 循环内)

EXE 侧(事件监视 + 渲染):

  • EVENT_QUERY XPath 格式修复:channel 路径不再嵌入查询,恢复 *[...] 格式
  • 2250 枚举事件渲染回退:缺失 TransactionId 时用最小 2 字段渲染,单事件失败不丢弃整批
  • 近期枚举(5s TTL)计入 active_count
  • Condvar missed-wakeup 竞态修复
  • broker_guard_prewarm_blocked 在 DLL 断开时清除

🔒 自动锁屏不误锁

  • 当场检测:15 帧硬循环 → 10s deadline + not_face_delay + 传感器预热重试

⚡ Win+L 秒解锁

  • power_resume_requires_run!is_camera_blocked() 时释放预热抑制
  • prewarm_session_gate 配合 credential client 状态正确恢复

🌙 Modern Standby 摄像头阻断

  • GUID_CONSOLE_DISPLAY_STATE 监听:屏幕关闭即阻断,不等待 PBT_APMSUSPEND
  • 所有摄像头路径统一用 is_camera_blocked()(suspend + display 双重条件)

🧹 凭据清理完善

  • KSP 私钥 + credentials.dat 元数据 + 包外备份 + PurgeRequested.flag
  • 插件启动时检测 flag → DeleteAllPluginCredentials + ResetLocalCredentialsStore
  • AppListBackup 磁贴清理:reg.exe 原始解析二进制值,空键删除

📊 仪表盘

  • faceCount 改为响应式 computed
  • 今日识别 3s 轮询刷新
  • facesStore init() 幂等化(faceList 先清空再填充)
  • passkey 版本号移出轮询循环

🛠 安装/部署

  • NSIS CopyFiles 去 /SILENT,失败回退 REBOOTOK,关键文件复制失败弹窗报错
  • install.log 审计日志(INSTLOG 宏)
  • opencv/Server 部署:复制成功才删 resources 副本,禁止静默失败
  • 日志 5MB 自动截断(AtomicBool CAS 防重入、UTF-8 边界对齐、后台线程 + TruncationGuard)
  • CP DLL 部署后检测重启提示

🧹 CP DLL 残留清理

  • NSIS 安装器:清理 .new 文件先尝试直接删除,失败再用 Delete /REBOOTOKf040a3a
  • 维护页面新增「清理 System32 旧版 DLL 残留(.new)」按钮(214d81b
  • cleanup_stale_cp_dll 同时清理 .bak .old 热替换残留文件(4eb863d

🐛 Bug修复

  • 编辑面容保存 targetIdeditFaceData.id
  • EventLog 订阅无匹配 event ID 时不标 unhealthy
  • 暂停/恢复状态 event-driven 替代轮询
  • 凭据客户端断开时探测定时释放句柄
  • 人脸录入模型提前卸载再重加载确保后端一致性

🏗 内部重构

  • request_auto_lock 提取复用
  • open_configured_camera + warm_up_camera 统一 cancel 闭包
  • power_events 3 路状态(suspend + display + blocked)atomically derived
  • unlock.log 日志截断不阻塞调用线程

完整对比: v0.5.9...v0.5.10
@

v0.5.9

Choose a tag to compare

@github-actions github-actions released this 14 Jul 02:19
b916976

v0.5.9 正式版

主要修复

  • 修复未录入/未启用人脸时锁屏仍预热摄像头,以及手动输入 PIN/密码解锁后旧凭据会话在同一秒重新点亮摄像头的问题。释放后会等待凭据会话真正切换,下一次锁屏或显式识别仍可正常恢复。
  • 优化面容录入启动:进入录入页即后台加载模型并让后台服务提前释放摄像头;模型构建不再占用全局摄像头状态锁。实体摄像头连续取得 3 个有效帧即可结束预热,虚拟摄像头仍保留最多 10 帧兼容回退。
  • #26 休眠唤醒后 LogonUI 卡死和摄像头延迟释放; #27 自动锁屏失败却误报成功,这两个问题我本地已经修复,但是发现了其他问题,打算在下个版本一起修复完发布
  • 完成无 UIA 的 CredUI 分类:WebAuthn/Passkey/security key/FIDO2/设置 PIN 明确跳过通用 Provider;Chrome/Edge 查看与填充密码在健康守卫下使用人脸,失败安全回退 Windows 原生流程。填充密码的时候可以使用人脸识别了
  • 修复 Passkey 卸载残留和第三方卸载清理备份的问题,备份迁移到 ProgramData;保留专用 Passkey 插件的人脸授权与 PIN 设置、修改、删除、重建流程。
  • 彻底移除 UIA、自动 PIN 键盘注入和解锁动画运行代码。

验证

  • Unlock 单元测试:45 项通过
  • Credential Provider 分类测试:9 项通过
  • Tauri 后端检查与前端生产构建通过
  • GitHub Actions 完成 Rust 核心、Passkey MSIX、运行库暂存、Tauri/NSIS 和更新清单的正式构建与校验

完整改动: v0.5.8...v0.5.9

v0.5.8

Choose a tag to compare

@github-actions github-actions released this 05 Jul 11:16
e2e7145

What's Changed

  • v0.5.8: 面容管理提速 + UI 未响应修复 + 摄像头真实设备名(#17) + passkey 卸载兜底 by @starnotes-xj in #24

Full Changelog: v0.5.7...v0.5.8

v0.5.7

Choose a tag to compare

@github-actions github-actions released this 03 Jul 03:18
5ee9a0e

What's Changed

  • fix(enroll): 多尺度检测修复近景大脸照片导入漏检 (#20) by @starnotes-xj in #23

Full Changelog: v0.5.6...v0.5.7

v0.5.6

Choose a tag to compare

@github-actions github-actions released this 03 Jul 01:52
bd7811d

What's Changed

  • docs: 补全 v0.5.5 changelog(秒解锁/自动锁屏/一致性验证等) by @starnotes-xj in #21
  • fix: 摄像头 MSMF 打开慢(Win10 40s)致秒解锁失效 + 录入图片导入修复 (#3 #20) by @starnotes-xj in #22

Full Changelog: v0.5.5...v0.5.6

v0.5.5

Choose a tag to compare

@github-actions github-actions released this 02 Jul 10:19
b391aaa

FaceWinUnlock-Tauri v0.5.5

移除解锁动画、杀软误删自愈、秒解锁、稳定性加固。建议先彻底卸载旧版再全新安装。

✨ 主要更新

🎬 彻底移除 Windows Hello 风格解锁动画#3 #14 #15 #16 #17
删除 DComp/D2D/D3D11/DWrite 图形管线、动画帧资源与注册表开关,Credential Provider DLL 不再静态或动态依赖图形库。旧 Win10 LogonUI 加载失败、锁屏闪烁、睡眠唤醒后卡转圈等问题从根上规避;锁屏界面保留轻量文字状态提示。

⚡ 秒解锁:锁屏预热摄像头
锁屏出现后即在后台预开摄像头(MSMF 打开约 2–3 秒是硬件下限),动一下鼠标触发识别时摄像头已就绪、近乎瞬时完成比对,免去每次等 2–3 秒。空闲 45 秒自动释放关灯;预热打开失败(摄像头被占用/不存在)即抑制重试、有关闭/释放请求时避让。

🎥 修复 Win10 触发识别后摄像头约 40 秒才打开
解锁端摄像头后端改回与录入端一致的 MSMF → DShow → Any 顺序,并记录各后端打开耗时,避免 DShow-first 特征不一致,也避开 CAP_ANY 长阻塞。

🔒 自动锁屏修复

  • 修复「启用了却没效果」:开关此前需再点保存才写库,现拨动即时生效
  • 屏幕已锁时跳过复查,避免与摄像头预热抢占、避免对已锁屏重复锁定

🧩 录入一致性验证收尾#12
切换推理后端后报「模型未加载」→ 幂等重载;点「返回 / 确认更改」离开页面即停验证并关摄像头;从摄像头重新拍摄后可正常保存。

🔑 Passkey 插件

  • 修复卸载主程序后 Passkey 管理器残留(#17):卸载时先备份各用户 credentials.dat,再用 Remove-AppxPackage -AllUsers 移除
  • 卸载重装凭据恢复兜底:查询插件状态时主动备份,第三方工具(如 Geek)卸载后重装可从备份恢复元数据
  • 修复插件已安装却显示「未安装」

🛡️ 运行时文件被杀软误删自愈
安装时将 opencv_world4120.dllFaceWinUnlock-Server.exe 打成压缩备份,注册 FaceWinUnlockHealer 计划任务(开机 / 登录 / 每 15 分钟检测缺失即恢复并拉起服务),缓解火绒 / Defender 误删无签名运行时导致的「找不到 opencv_world4120.dll」。安装器也会尝试加入 Windows Defender 排除。

🔔 其它

  • 更新提示新增「前往下载」按钮,一键打开 Release 页

⚠️ 杀毒软件误删提示

opencv_world4120.dll(OpenCV 运行库)与 FaceWinUnlock-Server.exe(后台人脸服务)目前无数字签名,部分杀软(火绒、Windows Defender 等)可能误判删除,表现为「用一两天后启动报找不到 opencv_world4120.dll」。v0.5.5 起已内置压缩备份 + 自愈计划任务,并尝试加入 Defender 排除;若使用火绒等第三方杀软,请手动把安装目录加入信任区 / 白名单。

📦 下载

下载 facewinunlock-tauri_0.5.5_x64-setup.exe 安装即可(已内置 OpenCV / OpenVINO 运行时)。其余资产为更新机制 / 插件文件,自动管理,一般无需手动下载。


What's Changed

Full Changelog: v0.5.4...v0.5.5

v0.5.4

Choose a tag to compare

@github-actions github-actions released this 23 Jun 03:33
c373895

v0.5.4

🐛 修复 Win10 锁屏不自动解锁(issue #3

同一份程序 Win11 能 Win+L 解锁、Win10 不行(登录磁贴出现、圆圈一直转、摄像头亮但不登录)。根因:v0.5.3 为启动提速把解锁端摄像头后端改成 DShow 优先,而录入端用 CAP_ANY(Windows 上通常解析到 MSMF);DShow 与 MSMF 帧的色彩/曝光/分辨率差异使同一张脸 SFace 特征偏移、余弦相似度跌破阈值 → 检测到脸但匹配不上。Win11 上两后端帧恰好接近掩盖了问题,Win10 暴露。修复:解锁端改回 CAP_ANY 优先,与录入端同一特征空间。

✨ Passkey:清理残留私钥 + 简化插件删除 UI(issue #3

  • 「首选项 → 系统集成」新增「清理残留私钥」:插件「清空/删除」只删元数据、不删 KSP 私钥(残留在 %APPDATA%\Microsoft\Crypto\Keys),现可一键清除 facewinunlock/* 残留私钥(certutil -delkey 已补 -csp,确实生效)。
  • 插件删除菜单精简为「删除所选通行密钥」「清空全部通行密钥」两项,隐藏调试用细分项。

🔧 彻底根治「插件 UI 改了但更新推不动」

插件 MSIX 清单版本此前写死、CI 不同步,插件 UI/代码改动因包版本不变而无法通过应用内「更新」推送给已安装用户。现 MSIX 清单版本随发布 tag 在构建前自动同步(本版 0.5.4.0),点「更新」即可拿到新插件、无需卸载重装(也避免了 -PreserveApplicationData 卸载的 0x80073CFA)。

🔧 修复「检查更新」点击不跳转下载页

更新通知点击改用 Tauri opener 打开发布页(此前 window.open 在应用内 webview 被拦截、点击无反应)。


完整更新记录见 README。

v0.5.3

Choose a tag to compare

@github-actions github-actions released this 22 Jun 04:35

v0.5.3

延续 issue #3 的后续修复与优化。

🔑 Passkey(通行密钥)

  • 卸载默认保留通行密钥:卸载 / 全量更新 / 重装后无需在各网站重新注册。私钥本就保存在 Microsoft Software KSP(per-user,不随插件卸载删除);本版起凭据元数据也通过 Remove-AppxPackage -PreserveApplicationData 保留,并额外做包外备份/恢复兜底。
  • 卸载时提供 「保留密钥」/「彻底清除」 两个选项;核心组件卸载与整包(NSIS)卸载默认保留。
  • ⚠️ 该功能需在 Windows 11 24H2 + 已注册过站点 passkey 的真机上验证「卸载重装免重新注册」。

⚡ GPU 推理后端(OpenCL / OpenCL FP16)

  • kernel tuning 缓存优化:启动时设置 OPENCV_OCL4DNN_CONFIG_PATH 持久化 OpenCL auto-tuning 结果,消除「每次解锁都重新编译 kernel(约 90 秒)」,改为只首次慢、之后秒级。
  • 实验性警告:切换到 GPU 后端时明确提示——部分显卡上识别会很慢甚至匹配不上(锁屏转圈、一致性检查黑屏),遇到异常请改回 CPU(兼容性最好)。
  • 注:缓存只解决「慢」;若显卡 FP16 精度不足导致「匹配不上」,仍需改回 CPU。

🐛 修复

  • 更新检查反复提示:修复「已是最新版仍提示有更新」——更新检查用的版本号(Cargo.toml)此前漏随发版同步;现 CI 从 tag 自动同步安装包与更新检查两处版本号。
  • 首选项卡顿:修复初次打开「首选项 → 软件配置」明显卡顿——启动时多个外部进程查询(计划任务 / 命名管道 / Get-AppxPackage)与界面渲染争抢,已错开延迟加载。

🧹 工程

  • 清理 Rust 编译警告(Server / Unlock / UI 共约 42 个降至 1 个)。

完整对比v0.5.2...v0.5.3

v0.5.2

Choose a tag to compare

@github-actions github-actions released this 21 Jun 11:03

Full Changelog: v0.5.1...v0.5.2

v0.5.1

Choose a tag to compare

@github-actions github-actions released this 21 Jun 07:23

Full Changelog: v0.5.0...v0.5.1