Skip to content

PhotoS v2.0.0 — GUI v2.0:拆包 + 活切换 + Library/Develop/Export/Tools 工作区

Choose a tag to compare

@Dongwu259 Dongwu259 released this 25 Aug 04:09
· 16 commits to main since this release

PhotoS v2.0.0 — GUI v2.0:拆包 + 活切换 + Library/Develop/Export/Tools 工作区

主题:给人用的 GUI 全面现代化——10k 行单文件拆为模块化包,语言/主题切换不再重建界面,Lightroom 式四模块工作区(图库/修图/导出/工具)。agent 面(CLI/REST/MCP/JSON 契约)零改动;from photo_s.gui import … 兼容面不变。

🆕 工作区(模块栏 + Cmd/Ctrl+1..4,活动模块持久化)

  • 图库 Library:文件面板全宽(含缩略图 LRU 缓存)
  • 修图 Develop:胶片条 + 大图预览(真实管线防抖渲染 ~0.5s、stale 丢弃、原图/效果切换)+ 常驻直方图与曝光/色温读数(analyze_image)+ 右栏调整工具(影调/曲线/调色/矫正/局部——就在预览旁边)
  • 导出 Export:导出队列(勾选照片 + 体积合计 + 空态)+ 输出/水印/元数据/选项设置;与修图页共用同一组参数变量
  • 工具 Tools:12 张工作流启动卡片(审查/去重/对比/画廊/联系表/筛选/校验/HDR/监视/重命名/预设/分析)

🆕 活切换(不再销毁重建)

  • 语言:STRINGS 反向映射遍历器(同文多键多数表决),切换后滚动位置/折叠区状态保留
  • 主题:调色板值重映射遍历器 + ttk 样式刷新;系统外观实时跟随(FocusIn + 30s 轮询),手动切换钉住选择直至重启

🆕 架构(photo_s/gui/ 包)

  • gui.py(10k 行)拆为 app / theme / strings / widgets / workflows / state / bus 七模块;gui_widgets.py 兼容 shim
  • UiBus 事件总线:12 处内联 worker→UI drain 循环统一(排空前查窗口存活,杜绝向已销毁控件派发)
  • 13 个 Tk-free seam 函数独立成 workflows.py(无头可测)

🆕 平台与性能

  • Linux 深色模式检测补齐(gsettings → kdeglobals);Windows DPI per-monitor v2 逐级回落
  • 缩略图 ThumbCache:256MB 字节上限 LRU(原先无上限 dict,大目录可吃数 GB)、线程安全
  • 全部 ImageTk.PhotoImage 显式 master=(修复无窗口管理器/多解释器环境下的 pyimage 崩溃)

🔧 测试

  • 新增 47 个测试(theme/state/活切换/工作区/导出队列/UiBus),全量 1202 绿
  • GUI 测试 HOME+USERPROFILE 隔离不变量(Windows Path.home() 读 USERPROFILE 的坑)
  • CI 新增 Linux xvfb GUI 实验 job(本轮已全绿,稳定后并入主矩阵)

⚠️ 说明

  • 升级:pip install -U photo-s-tools;agent 集成(MCP/REST/SKILL)无需任何改动
  • 设计方案与后续路线:docs/GUI_UPGRADE_PLAN.md;变更明细:docs/GUI_CHANGES.md §13