Skip to content

Releases

v0.3.0 - light/dark wallpapers, backup & migration, rc.2 fixes

Choose a tag to compare

@GIN0076 GIN0076 released this 01 Oct 13:44

面向 DSH 0.2.0-rc.2 桌面 Electron 版(Windows) 的功能版本;DSH 的 web profile 同样兼容。

新增

  • 明暗两套图:图片栏拆成「浅色主题」「深色主题」两个槽位,主题切换时自动换图(跟着宿主的 body[data-ds-dark-theme] 走,不用刷新);只设深色图时两个主题都用它;行内用 当前在用 徽标标出此刻生效的那张。两张图共用布局/效果/界面不透明度,换图不打乱构图。
  • 备份与迁移:导出文件 / 复制配置 / 导入文件 / 粘贴导入。一份 JSON 同时携带参数与两张图片(format: "dsh-bg-changer/backup" + version: 1),换机器、重装、清浏览器数据后一键恢复。非本插件的 JSON、更高版本、超过 64MB 一律拒绝并给出提示,且只覆盖备份里带的槽位。
  • 壁纸范围(默认「仅对话区」):壁纸只从对话区/卡片透出来,左侧工作区保持原来的不透明底色;选「全部界面」才把侧边栏一起纳入半透明。
  • 「检查显示」诊断:一键把实况打在面板上(样式表是否注入、壁纸层是否存在及尺寸/不透明度、关键变量实际取值、窗口外壳标记、以及"谁在刷不透明底色")。打包版桌面应用没有 DevTools,这是唯一的取证手段。

修复

  • 面板在「未设置壁纸」时整行丢失样式(0.1.x 起就存在):样式表原本与壁纸图层绑死,没有壁纸时不创建。现在随插件挂载常驻,只有卸载才移除。
  • 侧边栏 / 整窗口不透明:0.2.0-rc.2 把侧边栏底色换成新变量 --dsw-specific-sidebar-fill(0.1.x 没有这个名字);且 Windows 上宿主用同一个变量给"整窗口外壳"和"左侧栏"上色 [data-windows-titlebar] .BynINW_frame,所以"只保留侧边栏原色"会把整个窗口变回不透明。现在改成:保留侧边栏原色,只清掉那块铺满窗口的外壳的背景,三道保险(运行时深度扫描打标记 / *:has(> [class*="sidebarCol"]) / #root > *:has([class*="sidebarCol"])),且不匹配任何哈希类名(全应用有 11 个 *_frame 类,静态选择器会误伤)。
  • 界面不透明度:补齐 rc.2 新增的底色变量(侧边栏、聊天气泡、输入框、浮层与菜单面),承载文字的面留了可读性下限;取不到颜色时会明确提示,不再静默失效。
  • 性能与生命周期:滑块/拖拽改为按帧合并渲染、主题颜色按主题缓存、变量只在真变了才写;停用后不再有异步任务把图层插回来,并释放图片内存;修掉「刚启动就选图被旧图顶掉」「鼠标在预览框外松手仍继续拖动」。
  • 上传安全:并发互斥 + 解码超时 + 40MB / 6000 万像素上限;SVG 先净化(含脚本或外部引用即拒)再转 PNG;只有 blob: 与 data:image/… 能进 CSS url()。

工程化

  • 安装器重写 tools/install.cjs:自动识别活动 profile(并打印理由)、修掉「链接断了却报已就位」、真实 CLI 探测、原子写清单 + 回读校验、备份只留最近 5 份、装前校验 dsh.bundle.patch 存在。
  • 自检 87 → 184 项(node tools/verify-bundle.cjs):假环境升级为真 rAF 队列、真订阅、执行 effect、按 token 名取色、真实节点顺序、按值变化计数;覆盖备份往返与拒收、明暗切换、经真实 UI 的粘贴导入与导出内容校验、诊断不崩、壁纸范围两向断言等。
  • 新增 CHANGELOG.md 与 GitHub Actions 自检流水线(windows-latest + Node 22)。
  • 文档按桌面版重写:删除全部失效信息(E:\DSH-OneClick 旧路径、--profile web 默认、端口 3080 等),补齐 dsh-app://app origin 与「存储按 origin 隔离」说明。

安装与升级

# 首选:官方 CLI(需写全路径,本机示例 <DSH 安装目录>\resources\runtime\cli\bin\dsh.cmd)
& '<DSH 安装目录>\resources\runtime\cli\bin\dsh.cmd' plugin --profile desktop add '<本仓库目录>'

# 或者:仓库自带脚本(不联网、确定性写清单)
node tools/install.cjs --dry-run --profile desktop   # 先看计划
node tools/install.cjs --profile desktop             # 建 link + 登记清单

只改 lib/client.js 的更新属 client-only,硬刷新 Ctrl+Shift+R 即生效;新增/移除 bundle 行一般需重启桌面应用(本机 0.2.0-rc.2 实测登记后即热生效)。

卸载:node tools/install.cjs --uninstall --profile desktop