Repository navigation
Releases
P-Pass 2026.10.7
本版更新(2026.10.7)
Added
- Windows 端:首个正式版,支持 64 位 Windows。后台备份由 Windows 系统服务运行,与桌面应用分开;安装包暂未做代码签名,安装时系统可能弹出安全提示,点「更多信息 → 仍要运行」即可继续(#788、#1161、#1167)。
- macOS 端:设置里的「关于」分两行显示桌面应用和后台服务的版本,两者不一致时会标出来(#1044)。
Changed
- Android 端、iOS 端:欢迎页的介绍文字与官网首页统一为「手机照片自动备份到家中的电脑,无需注册账号,不上传任何云端」(#874)。
- 桌面端、Android 端、iOS 端:手机和电脑之间的通信协议升到版本 3。三端都要更新到这一版,并重新扫码配对一次;版本对不上时会提示哪一端需要更新(#1117)。
- 桌面端:电脑上移除设备、或手机上断开与电脑的连接,都会立即作废这台手机的配对,并停止正在从它传输的照片(以前手机自己断开时,正在传的那一张还会传完)。设备的名字和历史记录照常保留在设备列表与活动记录里。电脑换了身份后,原来配对的手机显示为「已断开」,提示需要重新扫码(#1117)。
- 桌面端、Android 端:手机和电脑之间改用新版通信协议(协议版本 2)。两端都要更新到这一版才能继续配对和备份;版本对不上时,手机首页会说明是手机还是电脑上的 P-Pass 需要更新,电脑的设备列表也会标出需要更新的手机(#1069、#1070)。
- Android 端:备份遇到问题时如实说明原因:电脑空间满、照片库文件夹打不开、电脑上的 P-Pass 出错、需要更新等情况各有提示;以前部分与配对无关的传输异常会被误报成「配对失效」,现在不会了。不该发生的错误只记在那一张照片上,不挡住其他照片(#1072)。
- Android 端:配对没成功时说明具体原因:配对码无效或已被使用、电脑上拒绝了、电脑端服务重启了、电脑上一直没人确认而过期(#1072)。
- 桌面端:出错提示不再显示内部代码,认不出的错误统一显示通用提示(#1071)。
- Android 端:在手机上断开与电脑的连接时,只尽力通知电脑一次;电脑当时不在线就不再补发,手机断开后不留任何后台任务。电脑上留下的这台手机可在电脑端移除(#956)。
- macOS 端:应用内更新下载期间,后台服务和手机备份照常进行;下载完成、真正安装前才暂停一次后台服务,装完由新版自动恢复。你主动停止过的服务,更新前后都保持停止(#1060)。
- macOS 端:你在 App 里停止后台服务后,重开 App、更新都不会再自动把它启动或重新登记开机自启,只有你点「启动后台服务」才会恢复(#1046)。
- macOS 端:后台服务的运行输出改存到 P-Pass 数据目录的
logs里,「导出诊断包」会一并带上;包内的用户名、家目录路径等信息按原规则打码(#1042、#1046)。 - macOS 端:系统语言是英文时,菜单栏菜单和系统对话框一开始就显示英文;读不到系统语言时一律用英文(#1043)。
- macOS 端:新建照片库的默认文件夹名改为
P-Pass Library,不随界面语言变化;已有照片库的位置不变(#1043)。 - macOS 端:磁盘剩余空间低于约 5 GB 时提醒一次,点「知道了」后重启也不再重复,空间回升后再次跌破才会重新提醒;全部界面与文档统一写作「约 5 GB」(#1044、#1048)。
- macOS 端:照片库里的
.svg、.ico文件不再当作照片显示;avi、mkv 和相机 RAW 文件按正确的类型识别并重新生成缩略图。这些调整只改索引,不动你的文件(#1044)。 - macOS 端:停止后台服务时只结束 P-Pass 自己的后台进程,不会误关命令行里恰好带同样字样的其他程序(#1043)。
Removed
- macOS 端:程序里不再包含任何使用统计上报代码,运行统计只写在本机日志里,是否导出日志由你自己决定。已安装用户配置文件里的
[telemetry]段会被直接忽略,不影响使用;数据目录里遗留的anon_id文件会在启动时自动清理(#949)。 - macOS 端:不再兼容最旧正式版(Android 0.9.0)之前测试版使用的旧配对与传输接口(#1050)。
Fixed
- 桌面端:拿到位置权限后用原图替换抹过拍摄地点的旧照片时,不再在照片库里多留一份旧副本;升级后会自动清掉之前留下的旧副本,释放空间(#1182)。
- 桌面端:传输中断、程序崩溃或断电后留在照片库目录里的临时文件和多余的缩略图,现在会被自动清理,释放空间,照片库占用的空间基本等于照片本身;清理在后台进行,残留再多也不会拖慢启动(#1183)。
- Android 端:手机存储满、写不进文件时,以下几步不再闪退:完成首次设置、确认「系统停止了后台备份」、连接新电脑、断开连接这几步会提示「没能保存」并照常继续;配对信息存不下来时显示配对失败,清出空间后重新扫码即可。腾出空间后再操作一次就能正常保存(#1039)。
- Android 端:设置页的开关开启时显示 P-Pass 的绿色,不再是系统默认的紫色;对话框等其他控件的默认颜色也统一换成 P-Pass 的配色(#1093)。
- 桌面端:手机对同一张照片重新发起传输时,电脑不再误报一次失败,正在进行的传输接着完成,照片只存一份(#1076)。
- Android 端:设置(后台备份、仅 Wi‑Fi、通知、备份哪些相册)没能保存到手机上时,不再闪退;开关回到原来的值,并提示没存上。「再试一次」「恢复已跳过的照片」「取消剩余」没能完成时会提示,不再没有反应或闪退(#1020)。
- Android 端:备份记录暂时读不出来时,首页说明「读不出来」,不再显示过时的进度;没选相册时首页显示「未选相册」,不再说「相册数量读取失败」(#1038)。
- macOS 端:后台服务停止时也能「打开照片库」,不再报连接错误(#1059)。
- macOS 端:查看大图时,HEIC 等系统能解码的格式直接显示原图;显示不了的格式退回清晰缩略图,不再出现一片黑(#1054)。
- macOS 端:活动记录里不再出现「未分类活动」(#1044)。
- macOS 端:后台服务被系统关闭时会先收尾再退出;备份写入中途被打断留下的临时文件,下次启动时自动清理,不会动你自己的文件(#1047)。
- macOS 端:同意配对时,设备记录和操作记录一次性写入;写入失败会如实报错,不会只留下一半(#1055)。
Security
-
桌面端:退役不再使用的原图下载入口(ppf/download/1、asset.download);手机端取原图早已改走 blob 票据,不受影响,桌面少开一个对外入口(#1125)。
-
桌面端:依赖库 tokio 升级到 1.53.3,修复安全公告 RUSTSEC-2026-0386(#1079)。
-
桌面端、Android 端、iOS 端:依赖库 hickory-resolver 升级到 0.26.3,修复 3 条安全公告(#1193)。
-
Android 端:发布包不再带入旧版 org.json 库,消除 2 条安全公告(#1194)。
-
Android 端:播放器依赖带入的 guava 升级到 33.7.2,修复安全公告 GHSA-xxph-c9ww-hj94(#1233)。
-
iOS 端:调试用的启动参数在正式构建中一律不生效(#1227)。
-
macOS 端:电脑的设备身份私钥改存在系统钥匙串里,只有签名一致的 P-Pass 后台服务能读取,不再以文件形式放在照片库目录(以前会随时间机器备份、网盘同步或拷贝照片库一起被带走)。更新后旧的私钥文件会被删除,已配对的手机需要重新扫码配对一次。钥匙串暂时读不到时,后台服务不会启动,并在 App 里说明原因(#1109)。
-
Android 端:这台手机的设备身份密钥改为用系统密钥库(Android Keystore)加密保存;即使 App 的数据文件被复制出去,也无法用来冒充这台手机。更新到这一版后需要在电脑上重新扫码配对一次,电脑会把它当作一台新设备,已备份过的照片不会重复上传。换新手机时,身份和配对记录不会随系统换机工具搬过去,新手机作为新设备重新配对。系统密钥库暂时出问题时,App 会说明情况,可以重试或重置后重新配对(#1106)。
-
桌面端、Android 端、iOS 端:电脑上移除一台手机后,会立即断开与它的连接;手机下次联系电脑得知已被移除时,自动清掉这台电脑的配对、缓存的原图和后台任务,回到欢迎页,并提示「配对已失效」(#1119)。
-
桌面端:只有已配对的手机,或正在扫码配对的手机,才能连上这台电脑;其它设备在发出任何请求之前就会被拒绝。关掉配对二维码后,没用过的配对码立即作废。对单个请求的大小、读取时长和并发数设了上限,防止异常设备拖垮后台服务(#1122)。
-
iOS 端:被电脑移除后,即使电脑直接拒绝连接,手机也能识别出配对已失效并自动清理(#1122)。
-
桌面端、iOS 端:日志里的照片文件名和文件夹名改为不可还原的短代号;导出的日志不再包含设备名称,也不再在照片库目录里留下文件,改由你选择保存位置。iOS 的日志不进入 iCloud 和电脑备份(#1122)。
-
桌面端、Android 端、iOS 端:配对加 6 位验证码。手机扫码后显示验证码,在电脑上输入、点「允许加入」才完成配对;输错一次这次申请即作废,需在电脑上重新显示二维码。手机只对以前配对完成过的同一台电脑跳过验证码(#1118、#1145)。
-
桌面端:后台服务只在你点「显示二维码」时开放配对,开机或重启后不再自动开放(#1145)。
-
macOS 端:同一用户下的其他程序不能再冒充 P-Pass 窗口程序操作后台服务,也不能改动配对名单与照片库位置;两者之间按代码签名互相认人,后台服务打包为单独签名的辅助程序(#1110、#1115)。
-
桌面端:窗口内的网页只能调用 P-Pass 明确开放的功能,并启用严格的内容安全策略;正式版关闭开发者工具(#1120)。
-
桌面端、Android 端:测试版与正式版用不同的更新签名,测试版不会装到正式版上;macOS 安装更新前还会核对新版本由 P-Pass 开发者签名、且比当前版本新(#1121、#1147)。
P-Pass 2026.10.7
构建自 a6dc9dd · 2026-10-28T10:02:22Z
签名状态:macOS=yes(Developer ID 签名 + 公证 + staple)/ Windows=no(Authenticode 证书 H-02 范畴)/ Android=yes(keystore 签名)
iOS 0.10.2(build 10002999)已上传 TestFlight(App Store Connect 签名,在 TestFlight 里装;不是本页的下载文件)
构建来源证明:已生成(attest job)
更新清单:每个安装包都用更新签名密钥签名(minisign,test 与正式各用一把);客户端用内置公钥验签,验签不过不安装。缺签名密钥时发布流水线直接失败,不存在未签名的清单。
面向人类的资产(H-10c · UPD-15:文件名带该端版本号)
- P-Pass_<macOS 版本>_macos-arm64.dmg — macOS 桌面 App(.app,内含自包含 daemon sidecar + lib/)
- P-Pass_<Android 版本>_android.apk — Android APK(keystore 签名,可直接安装;允许"未知来源"即可)
- P-Pass_<桌面版本>_x64-setup.exe — Windows 安装包(NSIS)
验证(被拦截/不信任时先做这三步)
- 下载每平台的 SHA256SUMS-<platform> 资产(certutil/shasum 对照)
gh attestation verify <下载的文件> -R hawkeye-xb/P-Pass
(SLSA provenance,覆盖本次构建的 macOS dmg / .app.tar.gz、Windows 安装包与 daemon.exe / testclient.exe、Android APK;
复用自旧版本的产物不重新证明,以其原发布版本为准)- 源码可查:构建流程 .github/workflows/release.yml
被杀软拦截了?见 docs/troubleshooting/blocked-by-av.md
H-10c 资产 SHA-256
be974fc2700ba3035002ac017f9076885e0bc3f412b354d116b72dc80604cddb artifacts/macos-arm64/P-Pass_0.10.1_macos-arm64.dmg
51b500e6f92361a72fe5458cc6789c60c5d183acd36527e05e82f599078236c3 artifacts/android/P-Pass_0.10.2_android.apk
dogfood binaries
continuous builds of main (macos-arm64 / linux-x64 / win-x64). Tag is fixed, assets are clobbered on each push.
test channel (rolling pointer)
固定通道指针,勿删。test 通道客户端与 update Worker 只读本 release 的 manifest.json;
内容随每次 test 发布覆盖(release.yml · REL-07),下载链接指向对应版本的 release。
Fixed channel pointer - do not delete. Overwritten by every test release.