PhotoS v2.0.0 — GUI v2.0:拆包 + 活切换 + Library/Develop/Export/Tools 工作区
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