Skip to content

Releases: skymanbp/PhotoManager

pm 1.2.0

Choose a tag to compare

@github-actions github-actions released this 03 Sep 19:47

pm 1.2.0 —— I7 的判定侧落地:pm doctor 开始校验「相册 ⊆ 成片 ∪ inbox-origin」(用户裁定 2026-09-03,兑现 DESIGN-COMMANDS §10.3 第 2 项)。

1.1.3 → 1.2.0

  • pm doctor 多一条 I7:相册里的每张照片都要能解释来源。已解释两条,都以内容为准——① 索引里有同 sha 的成片副本(设计内冗余);② journal 里有一条 Copy 记录,dst 恰是这条相册路径、sha 与盘上现字节相同、src 解析在库外——即 pm vault ingest_inbox 拷进来的那份。源后来被移进 _done 不改判:证据是 journal 记录,不是源文件还在不在。两条都不成立的逐条报 Warn 交人裁决(同 Q1:只报告、不处置,pm 不猜来源),退出码随之为 1;收尾一条 Info 汇总「N 张 = 成片副本 x · inbox 来源 y · 未解释 z」。
  • 记录侧本来就在(P6-D 起 ingest 的 journal Intent 自带库外 srcAbs),这一版补上的是读它的那一半——此前 §10.3 第 2 项写着「判定侧未做」,DESIGN §14 也只能写「暂人工裁决」。
  • --repair 与 I7 无关:修复推导只认 C2 / R2 / Q-DONE-LOST / C5 四种行且要求详情以 opId 开头,I7 行进不去。相册文件永远由人处置。
  • fail-closed:journal 有告警(撕裂尾 / 中段损坏)或快照是坏代回退时,整条判据不判、只打一行 Info 说明。判据里有一条否定式(「journal 里没有别的来源记录」),折叠不全时会把正常照片报成违例。
  • 相册层只判照片(KindPhoto);相册为空的 root 一行不打。层名 相册 / 成片 收进 Pm.Types 单一定义(Pm.Album 按原名再导出,调用点不变)——Pm.Doctor 不能 import Pm.Album(会与 Pm.Cli 成环)。
  • 照片、索引、journal 一字节不动;本版只增加一类只读判定。

安装

  • pm-ui_1.2.0_x64-setup.exe:安装包(装到当前用户,不要管理员权限)。
  • pm-1.2.0-windows-x64.zip:免安装,含 pm.exe(CLI)与 pm-ui.exe(GUI)。
  • 两个资产都没有代码签名,首次运行 SmartScreen 会提示「未知发布者」。

门禁

440 测试全绿(新增 3 例:ingest 端到端后源被移走仍判已解释 / 成片同 sha 副本已解释 + 无解释项逐条 Warn 且 --repair 不动盘 / 三处判别——src 在库内、sha 与盘面不符、journal 有告警),GHC 警告 0;五个突变(去掉 inbox 那条、去掉成片同 sha 那条、去掉 sha 相等、不问库内库外、去掉 fail-closed 闸)逐个各判红一例。真实库 pm doctor 实测:相册 ⊆ 成片 ∪ inbox-origin: 94 张 = 成片副本 94 · inbox 来源 0 · 未解释 0,exit 0。细节见 docs/REVIEW-LOG.md「1.2.0 I7 判定侧」节。

SHA-256

55a3bfe63fb0b68226b86c5c2a36c2b15f42f0fc102d7c416c752fce3d0799bd *pm-1.2.0-windows-x64.zip
48e4bd8e34e9c0aeaf9aa4b0aa009514c314402b4c4719e483bedf9542886b0e *pm-ui_1.2.0_x64-setup.exe

pm 1.1.3

Choose a tag to compare

@github-actions github-actions released this 03 Sep 02:31

pm 1.1.3 —— 计划页:失效草稿自动识别 + 版式修正(2026-09-02 用户反馈「为什么还有那么多未执行计划」「已执行计划在 GUI 上各种溢出文字重叠」)。

1.1.2 → 1.1.3

  • 失效草稿:从未执行、而每一条待办的源(拷贝源 / 改名旧路径 / 隔离 victim)都已不在盘上、源所在的卷还在——这份草稿再执行只会逐项 CONFLICT,多半是同一批事后来用新计划做完了留下的。pm plan list 与 GUI 计划页标「已失效(源已不在)」,pm plan prune / 页头「清理已执行/失效」把它们和已执行的一起清掉。卷不在(相机卡拔了)不算失效;journal 读出有告警的根不判、也不删(fail-closed)。还能执行的草稿与带待裁决残余的计划照旧不动。
  • GUI 执行态措辞:原样显示服务端那一句(与 pm plan list 相同)。1.1.2 的 GUI 自己拼,把「已执行(余 8 项待裁决)」显示成了「部分 8/8」。
  • 计划页版式:列表与明细改为上下整宽堆叠(列表行多时在自己的框里滚、表头钉住)。此前两栏各占一半,9 列不换行的列表比半栏宽,多出的执行态列被明细面板盖住;明细只剩半栏,路径逐字折行、待裁决徽标碎成多行。明细里路径可任意断行,待裁决的原因另起一行灰字;失效草稿的明细顶上有一条黄横幅说明并不再渲染「执行」(终端 pm apply <id> 仍可强跑)。
  • GET /api/plans 每项新增 stale(布尔)与 state(人读执行态原句);路由集合不变。
  • 照片、索引、journal 一字节不动;本版只改计划文件的判定与页面。

安装

  • pm-ui_1.1.3_x64-setup.exe:安装包(装到当前用户,不要管理员权限)。
  • pm-1.1.3-windows-x64.zip:免安装,含 pm.exe(CLI)与 pm-ui.exe(GUI)。
  • 两个资产都没有代码签名,首次运行 SmartScreen 会提示「未知发布者」。

门禁

第一方自审 + 437 测试全绿(新增 PlanExecTests 失效草稿用例:源在 / 只缺一条 / 全缺 / 有 Done / 仅跳过 / 卷不在 / prune 清失效留活草稿)、GHC 警告 0;版式修正以 Edge headless 加载真实 pm serve 在 1418×1022 复现前后对照;细节见 docs/REVIEW-LOG.md「1.1.3 计划页失效草稿 + 版式」节。

SHA-256

5613b26d1b2d223f22cca0ef702dd3ac68157571711f0d014956b7e384957289 *pm-1.1.3-windows-x64.zip
b44b2448442a6ddbf1dd0b666489f0ff26f0df7070dbd509969ab42370d87914 *pm-ui_1.1.3_x64-setup.exe

pm 1.1.2

Choose a tag to compare

@github-actions github-actions released this 02 Sep 19:45

pm 1.1.2 —— 备份盘瞬断保护内建(2026-09-02 用户裁定「防瞬断功能加入正式功能,防止备份/检查时硬盘断连;升到 1.1.2 发布」)。

1.1.1 → 1.1.2

  • 瞬断保护内建(Pm.Removable:外置 USB 备份盘在持续 I/O 下会掉线又自己回来(真实盘 2026-09-02 一天 11 次,最短 2 s 内重挂)。1.1.1 时 pm backup / pm apply 遇到它整批崩掉(hPutBuf: invalid argument 逃顶),pm doctor --deep 吐一片假「读取失败」,只能靠仓内 python 脚本在外面分块续跑。现在同一套判据进了 pm:盘在 = .pm/root-id.json 读得出;一个 I/O 异常三分——确定性错误(用户错误、权限、已存在…)原样抛出,行为与 1.1.1 逐字相同;盘不在 → 等它回来(最多 [backup] drive-wait 秒,缺省 1800)再冷却 30 s 重试;盘在而 EINVAL 一类 → 短停重试,同一步骤最多 5 次。
  • 续跑不重做pm backup 的扫描按 pass 续(拿这一遍的索引当旧快照重扫,只补漏);pm apply 逐项记进度,异常后等盘、先 doctor --repair 把「rename 已落位、Done 未写」的洞补上,再按「组内每项都成功 / 组内每项 journal 末事件都是 Done」结算,只把没跑完的组交给下一场——已落好的文件不重拷、不重 hash;pm doctor --backup [--deep] 整场幂等可重跑,--deep 逐条先等盘,场末盘不在则整场作废重跑,不交假结论。
  • 配置项 [backup] drive-waitpm config set --drive-wait <秒> / --no-drive-wait;GUI 设置页备份卡;POST /api/configdriveWait);0 = 关闭 = 1.1.1 行为。
  • 内核改动只有一行:ExecEnv 多一个只读进度钩子 eeProgressPm.DerivedPm.Convert 字节级拆出(解 Doctor→Convert→Cli 的依赖环)。scripts/backup_watchdog.py 退役;两支核验脚本(verify_backup_dst.py / verify_backup_entries.py)保留。
  • 照片与索引之外的文件一字节不动;关闭保护时行为与 1.1.1 逐字相同(对偶用例钉住)。

安装

  • pm-ui_1.1.2_x64-setup.exe:安装包(装到当前用户,不要管理员权限)。
  • pm-1.1.2-windows-x64.zip:免安装,含 pm.exe(CLI)与 pm-ui.exe(GUI)。
  • 两个资产都没有代码签名,首次运行 SmartScreen 会提示「未知发布者」。

门禁

第一方自审 + 判别突变判红 + 436 测试全绿(新增 RemovableTests 8 例:盘的替身 = 挪走 root-id.json、插回由打印口触发;每个「开」用例配一个「关」对偶)、GHC 警告 0;细节见 docs/REVIEW-LOG.md「1.1.2 瞬断保护内建」节。

SHA-256

17e9922a218ce2765d0ced591ddea0f654a9eb7e83a7598e1c0c0c840987388d *pm-1.1.2-windows-x64.zip
5e2eb3aeaa15ff9833b74aea9133745c2cbbbb32047996e604a7205231372fad *pm-ui_1.1.2_x64-setup.exe

pm 1.1.1

Choose a tag to compare

@github-actions github-actions released this 02 Sep 13:47

pm 1.1.1 —— 备份盘接入后的真实盘复核修复(2026-09-02 用户裁定「发布 1.1.1」)。

1.1.0 → 1.1.1

  • 未来 mtime 的索引复用Pm.Hash.statHitStable 此前只认「上次 hash 晚于文件 mtime 2 s 以上」,mtime 在未来的文件(相机时钟错 + 拷贝保留时间戳)永远判为 racy——真实库 122 个相机时钟在 2027 年的 ARW 让主库与备份盘每次 pm scan / pm backup 各白 hash 14 GiB。判据加入当前时刻:写入窗口(mtime 起 2 s)尚未到来的文件同样可信;窗口内、或窗口过后但 hash 仍早于 mtime 的不信任,到期重 hash 一次即永久回稳(系统时钟回拨本就不在原判据的威胁模型内)。scan 复用 / vault shaViaCache / 测试夹具三处调用同改;新用例 caseFutureMtimeReuse(去掉新分支即转红)。修后真实库:pm scan 复用 4633 · 待 hash 0(用时 1.6 s),pm backup 复用 4611 · 待 hash 0。
  • 无其它行为改动;照片与索引之外的文件一字节不动。

安装

  • pm-ui_1.1.1_x64-setup.exe:安装包(装到当前用户,不要管理员权限)。
  • pm-1.1.1-windows-x64.zip:免安装,含 pm.exe(CLI)与 pm-ui.exe(GUI)。
  • 两个资产都没有代码签名,首次运行 SmartScreen 会提示「未知发布者」。

门禁

第一方自审 + 判别突变判红 + 428 测试全绿、GHC 警告 0;真实盘复核:备份盘 EXTRA 270 → 0(用户授权移入回收站)、pm doctor --deep 全库 4633 条目重读 0 不符、三处 Raw 事件夹按用户裁定改名后 pm names 待裁决 0、pm backup 一致 4611 · EXTRA 0。细节见 docs/REVIEW-LOG.md「1.1.0 后真实盘复核」节。

SHA-256

50b9d0494fff67147aadd1b87916c43c31231dee824677e8c653a9fb06366bf9 *pm-1.1.1-windows-x64.zip
cf9f9a51dbf199d261e50c4e8ab9504202d4a6b816a414ebffc4113a7c38814b *pm-ui_1.1.1_x64-setup.exe

pm 1.1.0

Choose a tag to compare

@github-actions github-actions released this 31 Aug 06:37

pm 1.1.0 —— 1.0.0 后首个功能增补(2026-08-31 用户三批裁定:计划页完善 / 候选忽略 / 三仓思路对齐)。

1.0.0 → 1.1.0

  • 计划页完善:执行态标注——已执行 / 部分执行 m/n / 未执行(+失败注记)从 journal 折叠而来(pm plan list / GUI 计划页同源;计划文件永不回写执行状态);已执行的行淡化;逐行删除(两次点击确认)与「清理已执行」一键清理——删的只是可再生成的计划文件,journal / undo / doctor 零影响;待裁决残余不算已执行,prune 不替用户裁决。CLI:pm plan [list] | rm <id>… | prune
  • 候选忽略pm album ignore | unignore(GUI 归档页每张候选卡「忽略」+ 折叠区取消)——按内容 sha 记进主库 .pm/album-ignore.json(照片零改动):改名 / 挪事件夹后忽略仍生效,重新导出的新字节会重新出现;失效记录只提示不自动清。
  • 备份范围 = 主库 − 暂存区To-Be-Sync'd\ 只是中转,不再进备份盘(收窄在 Pm.Diff.backupDiff 单点,比对 / apply 后缓存重算 / status 卡片全部继承);备份盘上已有的暂存副本按不在范围计入 EXTRA(只报告,pm 永不代删)。清暂存的三副本屏障不受影响(按 sha 认归档层的备份见证)。
  • serve--writable 写端点九个 → 十二个(POST /api/album/ignore/api/plan/delete/api/plans/prune);GET /api/plans 加 done / failed / executed / lastRunAt,GET /api/album/candidates 加 ignored / ignoreStale。

安装

  • pm-ui_1.1.0_x64-setup.exe:安装包(装到当前用户,不要管理员权限)。
  • pm-1.1.0-windows-x64.zip:免安装,含 pm.exe(CLI)与 pm-ui.exe(GUI)。
  • 两个资产都没有代码签名,首次运行 SmartScreen 会提示「未知发布者」。

门禁

第一方全量审(本批 diff 逐行 + 架构对照,1 条 minor 登记不改码)+ 判别突变 m1–m6(计划折叠 / 忽略闸)与备份范围突变逐个判红 + 427 测试全绿、GHC 警告 0;真实库落地复核(pm plan list 与 journal 诊断一致、pm versions 非设计内精确重复归 0、pm vault status 零差异)。细节见 docs/REVIEW-LOG.md

SHA-256

9c0f55870dd0290cbc2c2bdc01966f0291eab12edbba1e28614276d65f11b12d *pm-1.1.0-windows-x64.zip
11524d8c078a7e1933ffc77a9466dbf10baa8b47563878ebc801dcda67385ad9 *pm-ui_1.1.0_x64-setup.exe

pm 1.0.0

Choose a tag to compare

@github-actions github-actions released this 28 Aug 12:46

pm 1.0.0 —— 收官版。Photography 主库是相片的唯一权威源(SoT),vault 只是相册的下游投影。

0.6.1 → 1.0.0

  • 相册通道pm import --also-album(暂存区归档时成片 jpg 同源再拷一份进相册,与成片项同组)、pm album add / pm album candidates(成片 → 相册,平铺收藏层、只收 jpg)。
  • 非 jpg 转换pm convert(tif / png / psd / heic … 经本机 python + Pillow 派生 jpg 到 .pm\derived,原文件原地不动,再由计划落位);pm doctor 认得派生件四态、--repair 清半成品。
  • 照片记录pm vault note | notes.pm\vault-notes.json(地点 / 坐标 / 标题 / 来源),随 GUI「保存决定并生成推送计划」写主库;photos.json 不在 pm 写域。
  • AI 建议(GUI):整理页「AI 建议地点」、分类推送页「AI 建议分类/地点」——拉起你自己账号的 claude -p(只读权限模式),只预填、不落盘;用户写过的记录 AI 不问也不改。
  • GUI 第七页「归档」:暂存区归档 / 成片 → 相册 / 非 jpg 转换三张卡,只生成计划,执行仍在「计划」页两次点击。
  • CLIpm vault status 的 UNPUSHABLE 行直接指到转换;「暂不同步」拒收非 jpg。
  • 外部进程一把壳:python 与 claude 同走 Pm.Subprocess.runTool——UTF-8 管道、整体超时、到点整树杀(Windows job 对象)。
  • GUI 复核修:侧栏脚注不再横向溢出;同一行按钮等高对齐。
  • CI:本 release 的二进制由 GitHub Actions(windows-latest)构建——版本一致闸 → 418 测试 → scripts/leakscan.py → zip + NSIS + sha256.txt 同一 run 产出;不是本机编的。

安装

  • pm-ui_1.0.0_x64-setup.exe:安装包(装到当前用户,不要管理员权限)。
  • pm-1.0.0-windows-x64.zip:免安装,含 pm.exe(CLI)与 pm-ui.exe(GUI)。
  • 两个资产都没有代码签名,首次运行 SmartScreen 会提示「未知发布者」。

门禁

第一方全量审 + Opus 两轮(一轮 NO-GO 修复批、二轮 GO 四条 minor 收口)+ 判别突变 s1–s9 / g1–g3 / h1–h3 全红 + CI 抓包分支先验;细节见 docs/REVIEW-LOG.md

SHA-256

ae7f37f379680321f3429e3957034cf8b843da9bca177bd79b1d0412c8390507 *pm-1.0.0-windows-x64.zip
ca55d30e77b40c7b374f7668329015e0537d1fa7f486a4bf612c3446cfb7a60d *pm-ui_1.0.0_x64-setup.exe

pm 0.6.1 — CSP 收紧 · doctor --deep 覆盖面汇报 · 文档全量审计与端到端运行时测试收口

Choose a tag to compare

@skymanbp skymanbp released this 27 Aug 18:49

pm 0.6.1 — CSP 收紧 · doctor --deep 覆盖面汇报 · 文档全量审计与端到端运行时测试收口

0.6.0 发布后的结案版本,产品行为面只有两处小改,其余是文档与公开仓历史:

  • GUI:Tauri CSP style-src 收紧为 'self'(去掉 'unsafe-inline')——发布版
    pm-ui.exe 经 WebView2 远程调试(CDP)探针六页实测零违规,gui/ui 新增「无内联
    样式/脚本」常驻哨兵,回潮即测试转红。
  • pm doctor --deep:结束多打一行 [DEEP-DONE] N 条目待深验:已重读重 hash M、不符 a、 读取失败/消失 b(M 只数真正重读过的)。此前干净库上带与不带 --deep 输出逐字相同,用户分不清「深验跑了没发现」与
    「没跑」(端到端运行时测试用翻一字节才证明它跑了)。退出码不变。
  • 端到端运行时测试:发布版 pm.exe 在沙盒三层库上跑完整链 68 步(init → scan →
    sort → import → backup → dedupe/resolve → undo → doctor --deep(含注入损坏)→ clean
    staging → names → vault status/hold/push → config → serve API),四类写路径 28 对
    源/目标 sha 逐字节一致,真实库零写入。
  • 文档:README / DESIGN / DESIGN-COMMANDS / HISTORY / REVIEW-LOG 对照发布版 CLI
    --help 与源码逐条审计,34 条经对抗核实的漂移全部修正(安全叙述的范围表述、
    pm resolve --unskip / pm undo / pm vault ingest 提要、DESIGN 里 P0 前的旧计划
    残留、状态行手抄轮次等),并新增三条常驻哨兵防复发。
  • 公开仓:远端 main 自本版起为完整开发历史(早期提交里的本机路径已用占位符
    重写,逐提交扫描零命中),不再是快照序列。

测试:393/393,GHC 警告 0;新钉的判别突变(m9–m22)全部按期望配对。第 48 轮独立门禁
(Claude Opus 5)FINAL GO,7 条 GO-note 已类级收口(P7-T)。逐轮处置见 docs/REVIEW-LOG.md,阶段史见
docs/HISTORY.md P7-S / P7-T。

安装pm-ui_0.6.1_x64-setup.exe(NSIS,当前用户,GUI+CLI 同目录)或
pm-0.6.1-windows-x64.zip(免安装,含 pm.exe / pm-ui.exe)。要求 Windows 10/11 x64

  • WebView2。无代码签名(个人项目),SmartScreen 会提示"未知发布者",介意请按 README
    从源码构建(产物一致)。

SHA-256

dd5e3d7eef0592052475a7b26bcedb231575154688dcfee1306fc6bf363b3e49  pm-0.6.1-windows-x64.zip
d1a719b89fa825e55e987e3df382081ceb29de9bd7de10c0519538270ca1b060  pm-ui_0.6.1_x64-setup.exe

pm 0.6.0 — GUI 直接执行计划 · 上线命令生成 · 发布前全量自审与门禁收敛

Choose a tag to compare

@skymanbp skymanbp released this 27 Aug 16:02

pm 0.6.0 — GUI 直接执行计划 + 上线命令生成 + 发布前全量自审收敛

功能面:GUI 计划页可直接执行待执行计划(两击武装/确认、5 s 自动解除,
/api/pingallowApply 事实门显示;执行结果逐项回显并指向 pm undo);
新增 [portfolio] / [vault] push 发布配置与 pm config 三字段,pm 生成
两仓 git 上线命令文本(状态页一键复制)——pm 自身永不执行 git(I9),
写入口有字符集闸拒绝能长出第二条命令的字符。

安全内核:发布前两轮第一方全量自审(22 簇类级修)+ 41–47 轮对抗门禁收敛:
读路径三态存在探针(缺失 / 拒绝 / 存在分明)、判定与使用同原子域(backup init
锁内复验、init 孤儿 tmp 拒绝、serve 配置快照单 IORef、状态文件同句柄查尾+追加)、
catalog 与 .pm/root-id.json 身份对账(整目录拷贝/恢复错位时拒用)、GUI 加载器
latest-request-wins(失败路径同样不覆盖新请求)、README/HISTORY 发布字段常驻哨兵。
发布链二进制脱敏扫描本版起纳入流程(scripts/leakscan.py):pm.exe 不再链接
Paths_photo_manager(0.5.0 的 pm.exe 曾带构建机安装目录字符串;--version 改由
Cabal 宏取值),pm-ui.exe 沿用 --remap-path-prefix

测试:390/390,GHC 警告 0,判别突变(P7-I 9 项 / P7-J 45 项 / P7-K 7 项 /
P7-P 4 项)全部配对转红;全部源/测试文件 ≤ 750 行。逐轮处置见 docs/REVIEW-LOG.md,
阶段史见 docs/HISTORY.md P7。

安装pm-ui_0.6.0_x64-setup.exe(NSIS,当前用户,GUI+CLI 同目录)或
pm-0.6.0-windows-x64.zip(免安装,含 pm.exe / pm-ui.exe)。
要求 Windows 10/11 x64 + WebView2。无代码签名(个人项目),SmartScreen
会提示"未知发布者",介意请按 README 从源码构建(产物一致)。

SHA-256

22af00416fb33dae6f86322058a9de5d6e369f4d2dd82e2ddfaea264d1c38da0  pm-0.6.0-windows-x64.zip
69508d48d40cf233b27c7f8aaf327d14fb9d9189d6e8e1b70427353673cb4669  pm-ui_0.6.0_x64-setup.exe

pm 0.5.0 — 门禁收敛(37/38 轮 GO)+ 真实库释放链

Choose a tag to compare

@skymanbp skymanbp released this 26 Aug 17:00

pm 0.5.0 — 门禁收敛 + 真实库释放链

对抗评审门禁在第 37 轮达成 GO、minset 空(38 轮聚焦复核亦 GO)——
0.4.7 以来的全部写路径收口(IO 读原语 fail-closed 清点、布尔存在探针类界、
链接属性探针塌 False 关闭)均经逐轮门禁核验后发布。

本版起,作者真实库的完整维护链已全程用 pm 执行并逐项复核:
重复裁决隔离(8 份,16/16 事后 sha 复核)、备份找回(2 ARW)、
增量备份(1016 项 / 98.5 GiB,含 supersede 复合组,重生成对比归零)、
暂存清理(220 项 / 21.4 GiB,三副本重验)。详见 README「实际效果展示」与
docs/HISTORY.md P6-K。

安装pm-ui_0.5.0_x64-setup.exe(NSIS,当前用户,GUI+CLI 同目录)或
pm-0.5.0-windows-x64.zip(免安装,含 pm.exe / pm-ui.exe)。
要求 Windows 10/11 x64 + WebView2。无代码签名(个人项目),SmartScreen
会提示"未知发布者",介意请按 README 从源码构建(产物一致)。

SHA-256

1201ef8a6663d62ae02458c756b0b9baf3415926afef12329309b11b2ca96ed0  pm-0.5.0-windows-x64.zip
47386f136c851010f9596d706dce7bb388d60e9569721e9c44bc66041b6703f9  pm-ui_0.5.0_x64-setup.exe

v0.4.6 — GUI 设置页收口(codex 二十四轮 GO)

Choose a tag to compare

@skymanbp skymanbp released this 25 Aug 02:26

GUI 设置页收口 —— 路径与并发可以在 GUI 里改了,配置文件本身补齐了 pm 其余写入口早就有的那套写纪律。

装哪个

资产 用途
pm-ui_0.4.6_x64-setup.exe 安装包(NSIS,装到当前用户,不需要管理员):GUI 与 CLI 装进同一目录 + 开始菜单项
pm-0.4.6-windows-x64.zip 免安装:解压即用,含 pm.exe(CLI)与 pm-ui.exe(GUI)

无代码签名(个人项目、无证书),首次运行 SmartScreen 会提示"未知发布者"。不放心就照 README 从源码构建——安装包内容 = zip 内容 = stack install + cargo tauri build 的产物。

SHA-256:

67bee461edfbb1b39d6b21922df2da26ec3bd90306db9956054071f76c808bb1  pm-ui_0.4.6_x64-setup.exe
58a64c61e55810a82ea491c0364022dc66499b5a711a5334451ad77be8b2eff9  pm-0.4.6-windows-x64.zip

这一版有什么

设置页(第五页,数字键 5) —— vault 目录、photos.json、扫描并发数可以在 GUI 里改,备份硬盘可以在 GUI 里登记,改完立刻生效不用重启。主库路径只读:它是 root-id、journal、catalog 全部挂靠的身份锚点,改它等于换一个库,一台机器设一次,留在终端 pm init。经编辑层动主库的请求会显式报错,不会被静默忽略。终端侧有对称命令 pm config / pm config set

配置文件补齐写纪律 —— 配置在 XDG 目录、不在任何库的 .pm 下,于是此前一条 .pm 写纪律都没继承(pm 里最后一个裸 writeFile 的状态写入口)。现在与 catalog 用同一组原语:独占建临时文件、flush 落盘、no-replace 改名,再加一把跨进程配置锁罩住"读→改→写→读回"全程——pm config set、改配置端点、登记备份盘三条路径共用,拿不到锁一律拒绝而不是各写各的把对方抹掉。写入崩在删旧与改名之间只会留下内容完整的 .tmp,pm 认得出来并告诉你怎么恢复,不再报"配置不存在,去 pm init"。

其它 —— {"main": null} 曾被当成"没提这个键"而静默放行(同一请求里的其它改动照做并回 200),现在出现即拒;GUI 写成功后若页面刷新失败会误报"没改成",现在提交结果与刷新状态分开报;并发数的说明改正——它只管扫描,备份盘默认单线程防 HDD 寻道抖动,要改用 pm backup --workers N

安全模型没变

没有删除原语,唯一的移出机制是带 manifest 的隔离区。GUI 只生成计划、记录决定与改配置,没有一个写端点碰照片字节,执行永远是终端里的 pm apply。serve 只绑 127.0.0.1、随机端口、Bearer token、Host/Origin 校验,缺省只读。

codex 对抗评审第 二十四 轮 GO,最小修复集空;六条 minor 已全部收口。219 例测试、GHC 警告 0,每道闸都配"删掉它就转红"的突变验证用例。

完整记录见 docs/REVIEW-LOG.md,设计见 docs/DESIGN.md