Repository navigation
Releases: PivKeyU/PivKeyUBox
Releases · PivKeyU/PivKeyUBox
Release list
v0.1.1 · 界面清晰度优化
v0.1.1 · 界面清晰度优化
本次更新聚焦收纳栏的显示清晰度,修复三项优先问题。
界面缩放真正生效(80% – 130%)
此前设置页的「界面缩放」对桌面收纳栏完全无效,根因有两处:
- 同步协议缺字段 ——
PanelSyncData没有uiScale; - 真实生产端漏赋值 —— 面板负载由原生
Manager.BuildPanels()构造,而它从不设置panel.uiScale,消费端永远收到 0 并被兜底成 100。
现已补齐:PanelSyncData.uiScale 字段、BuildPanels() 赋值、BuildPanelKey() 签名项、前端 payload 与 buildPanelSyncKey,以及 usePanelSync 的 effect 依赖。
换算契约分两层且不可混用:
- 逻辑尺寸(WPF 的
Width/FontSize)只乘uiScale—— WPF 已按系统 DPI 把 DIP 换算成物理像素,再乘 DPI 就是重复缩放; - 只有位图像素请求才乘
uiScale × dpiScale。
实测(1920×1080 @150% DPI,折叠态标题条):
| 界面缩放 | 标题条高度 | 胶囊边长 |
|---|---|---|
| 80% | 24 px | 45 px |
| 100% | 30 px | 56 px |
| 130% | 39 px | 73 px |
高清图标按像素档位生成
图标不再是固定尺寸画布,而是按「逻辑尺寸 × 界面缩放 × 系统 DPI」向上取 16 的倍数请求与解码,夹在 [48, 256] 之间:
ResolveIconPixelSize(54 DIP, 100%, 100% DPI) = 64 px
ResolveIconPixelSize(54 DIP, 100%, 150% DPI) = 96 px
ResolveIconPixelSize(54 DIP, 130%, 150% DPI) = 112 px
- 解码缓存键包含像素档位,跨屏或改缩放后按新档位重建,旧档位自动淘汰;
- 磁盘图标缓存加入档位前缀,不同档位互不覆盖;
96 px档位下的绘制参数与旧实现完全一致,升级无视觉回归。
小工作区布局
移除布局计算里虚构的 800 × 560 视口下限。高缩放或小屏下真实工作区可能只有 683 × 364(1366×768 @200%),被强行撑大后预设会算出越界坐标,再被各窗口钳制,表现为挤压与重叠。
| 实际工作区 | 旧视口 | 新视口 |
|---|---|---|
| 1920 × 1017 | 1920 × 1017 | 1920 × 1017 |
| 960 × 540 | 960 × 560 | 960 × 540 |
| 683 × 364 | 800 × 560 | 683 × 364 |
同时修复「右侧停靠」预设在窄视口下把最左列算成负 x 的问题(实测 683×364 / 8 分区时最左 x = −285,面板被推出屏幕左缘)。原生与前端两处同型实现均已加兜底。
文字可读性
- 文件名标签默认字号 10 → 12 DIP,可调范围 [8, 14] → [8, 18];
- 已保存的自定义字号原样保留,只在缺失时使用新默认值;
- 设置页新增「清晰 / 标准 / 紧凑」三档预设,一键套用到当前选中分类。
窄标题条
分区宽度 < 200 DIP 时,标题条只保留 标题 + 折叠 + 菜单按钮;搜索、尺寸、视图、图钉四个按钮收起(悬停也不再挤出),对应操作改从右键菜单进入。
性能与内存
- 后台图标解码增加进行中任务去重与 4 路并发上限;
- 解码缓存逐出修正为真正降到 24 MB 低水位(此前只降到 32 MB 上限即停)。
验证
npm test:6 个测试文件 / 45 个用例全部通过(本次新增 9 个);npm run build与scripts/build-windows.ps1(csc /langversion:5)均通过;- 实机测量覆盖界面缩放 80/100/130%、折叠态与胶囊态、150% 系统 DPI。
已知取舍
- 跨屏拖拽导致 DPI 变化时,图标不会立即按新 DPI 重算(需等下次缩放变化或扫描);
ResizeMinWidth/ResizeMinHeight与窄标题条的 200 DIP 阈值未随缩放变化。
安装包:PivKeyUBox-Setup-v0.1.1.exe(约 8 MB,免 UAC,安装到用户目录)