Skip to content

Releases: gnk478/dsh-client-ui-wallpaper

1.1.8:社区市场注册 + 清单补齐 + 安装文档改标准路径

Choose a tag to compare

@gnk478 gnk478 released this 05 Oct 18:48

1.1.8 — 清单与安装体验(无代码改动)

  • 进社区市场:向 awesome-dsh-plugin 提交条目 PR #6667(category: theme),收录后可在 dsh-market 的 Themes 页一键安装 / 升级
  • 清单补齐:dsh.client.immediately: true(客户端插件随宿主启动即挂载,壁纸层与设置面板不再等懒加载);engines.dsh: ">=0.2.0-rc.2"(dshmarket 的 manifestFacts() 读 engines.dsh)
  • README 安装段改为生态标准路径:桌面端用 App 内插件市场(dsh plugin --profile desktop 会被 Electron 独占管理拒绝);其他 profile 一行 dsh plugin --profile web add dsh-client-ui-wallpaper;升级要写版本号(pnpm 11 minimumReleaseAge=24h 冷却);scripts/install.mjs 降级为 fallback
  • screenshots.json:市场按自己仓库里的这份清单取图,以后换图不用再提 PR

无代码改动:lib/client.js 与 lib/index.js 与 1.1.7 逐字节一致(sha256 3f609150… / 7d7567b9…)——已经在跑插件的用户不需要重新安装。

安装 / 升级

# 桌面 App:设置 → 插件市场(收录后)
# 其他 profile(web / 自建):
dsh plugin --profile web add dsh-client-ui-wallpaper@1.1.8

# 手动 fallback:
npm i dsh-client-ui-wallpaper@1.1.8
node node_modules/dsh-client-ui-wallpaper/scripts/install.mjs --profile desktop

1.1.7:修复面板手选失效(作用域)+ 点击留痕

Choose a tag to compare

@gnk478 gnk478 released this 05 Oct 18:12

1.1.7 — 面板手选失效修复 + 点击留痕

修复

  • 点缩略图完全没反应(1.1.6 回归):modeAfterPick() 被定义在 apply() 内部,而面板 wallpaperSettingsElement() 属于工厂作用域,onClick 闭包取不到它 —— 每次点击同步抛 Uncaught ReferenceError: modeAfterPick is not defined,save() 从未执行。现在函数提升回工厂作用域,轮换开着时手选仍然只改「当前这一张」。
  • 手选优先显示:三处手选都带 pick: "image" | "video"(宿主校验/持久化,非法值 400),rotate 分支优先定位手选的那一类 —— 修掉「轮换开着时手选静态图被上次手选的视频盖住」;只影响首帧,之后照常轮换。

新增

  • 点击留痕 panelPick:三处面板 onClick 在 save() 前调用 notePick(),/_probe 与 /_client 都能读到 { image, video, at, last }。「点了没反应」时可直接区分「点击没进来」还是「状态没生效」。

测试

  • node --test 共 54 例(test/rotate.test.mjs +2:pick 压过遗留 video、pick 的素材不在库里也先画它)
  • node scripts/check.mjs 第 14 节 +2 项(三个入口的 notePick、panelPick 上报),并断言 modeAfterPick 必须留在工厂作用域(2 tabs)

安装

npm i dsh-client-ui-wallpaper@1.1.7
node node_modules/dsh-client-ui-wallpaper/scripts/install.mjs --profile desktop

1.1.6:手选壁纸不再关闭自动轮换

Choose a tag to compare

@gnk478 gnk478 released this 05 Oct 17:42

1.1.6 — 手选壁纸不再关闭自动轮换

修复

  • 面板里点静态图缩略图 / 动态壁纸缩略图 / 「▶ 动态」按钮 曾经硬编码 mode: "image" / mode: "video",等于顺手把自动轮换关掉(1.1.1–1.1.5 一直如此)。
  • 现在统一走 modeAfterPick(cfg.mode, fallback):轮换开着时手选只改「当前这一张」,mode 保持 rotate。
  • 选中的素材即使不在轮换列表里也先显示它:rotate 分支改用 locateIndex() 定位起始项(显式选的动态版优先于静态图),未命中时 index 保持 -1、先画这一张,下一拍回到列表开头。
  • 客户端 load() 改用库内全量 library 校验 config.image(不再限制在轮换池内),宿主 lib/index.js 同样改为 current.images.includes(wanted)。

测试

  • node --test 52 例(+6:test/rotate.test.mjs 池外静态图 / 池外动态 / 动态优先,test/client.test.mjs modeAfterPick 3 例)。
  • 红绿验证:把测试指向 1.1.5 的源码时 4 例失败(缺 modeAfterPick + 3 个池外用例实际值被换成轮换池首项),指向修复后源码 52/52 通过。
  • scripts/check.mjs 新增第 14 节(13 项)。

安装 / 升级

npm i dsh-client-ui-wallpaper@1.1.6
node node_modules/dsh-client-ui-wallpaper/scripts/install.mjs --profile desktop

校验

  • registry dist.shasum c780d4976d5c25d088ff00383c3ef0e9aa05f38a,tarball 内 package/lib/client.js sha256 4220e444…4228c(与仓库一致)
  • 可信发布(OIDC):provenance transparency log index 3092177718,2 条 attestations(npm publish v0.1 + SLSA provenance v1,builder github-hosted)

1.1.5:选择器静默失效告警 + 客户端行为测试

Choose a tag to compare

@gnk478 gnk478 released this 05 Oct 17:27

1.1.5 — 选择器静默失效告警 + 客户端行为测试

新增:DSH 界面挂钩失效不再静默

  • 客户端每 60 秒体检 8 组界面挂钩(输入框 / 侧栏 / 右栏 / 弹窗 / 气泡 / 工具栏 / 头像 / 代码块),每组带 selectors 与「该界面是否在场」的 anchor 判据
  • 带锚点的组连续两轮匹配为 0 才判定失效(strikes >= 2),避开 React 渲染中途的假警报;恢复后清空告警记录,再次失效会重新告警
  • 失效时 console.warn("[dsh-wallpaper] UI 选择器失效:…") + noteError("selector-missing", …),并把 selectorHealth(at / checks / missing / detail / strikes)写进 /wallpaper/_probe 与 /wallpaper/_client;detail 给出每组的匹配数与命中的那条选择器
  • 体检时机:load() 的每个 60 秒周期(在「配置未变就早退」之前),启动后 4 秒再补一轮

测试

  • 新增 test/client.test.mjs(16 例,全部抽真实源码 + 替身):applyVars 3 / applyAutoInk 3 / classifyTile 2 / syncBlurFromState 4 / auditSelectors 4
  • test/rotate.test.mjs 增加断言:每一轮 load() 都必须做一次选择器体检
  • node --test 共 46 例全绿;scripts/check.mjs 增加第 13 节 13 项静态校验

安装

npm i dsh-client-ui-wallpaper@1.1.5
node node_modules/dsh-client-ui-wallpaper/scripts/install.mjs --profile desktop

npm: https://www.npmjs.com/package/dsh-client-ui-wallpaper/v/1.1.5(Trusted Publishing,带 provenance)

1.1.4

Choose a tag to compare

@gnk478 gnk478 released this 05 Oct 17:21

1.1.4

修:50MB 预热阈值此前形同虚设

1.1.2 引入的「大文件不预热」靠 HEAD 响应的 content-length 判断,但 GUI 走 dsh-app:// 协议拿不到该响应头——线上实测 prewarm.last.bytes 恒为 0、skipped 恒为 0,196MB 的视频照样被预热。

现在宿主在 /wallpaper/list.json 里直接返回 sizes(序列内每个素材 stat 出的字节数),客户端 60 秒一次的 load() 顺带刷新 sizeCache;只有查不到大小时才回退 HEAD(兼容老宿主)。

修复后线上 /_probe:prewarm.last.bytes = 16554373(真实字节数,不再是 0)。

测试

  • test/rotate.test.mjs 加 3 例:list.json 大小 → 超阈值只计数不建节点、小素材照常预热、无大小时 HEAD 兜底
  • test/host.test.mjs 加 1 例:sizes 来自宿主 stat
  • node --test 共 30 例;scripts/check.mjs 加第 12 节 6 项

升级

npm i dsh-client-ui-wallpaper@1.1.4
node node_modules/dsh-client-ui-wallpaper/scripts/install.mjs --profile desktop

仍在使用 1.1.1 / 1.1.2 的话请直接升级:那两版的轮换模式壁纸整块不绘制(已在 1.1.3 修复)。

校验值:lib/client.js sha256 77956fd38523df3d31f02c289fbc48d6a6cd6f919d386ce858f73e76ca51b459,lib/index.js sha256 c1341cb8431156412e3054c56e74ded42248ce271ebd0418b8ec355c33bfd094(与 npm tarball 内一致)。

1.1.3

Choose a tag to compare

@gnk478 gnk478 released this 05 Oct 17:15

1.1.3

修:轮换模式壁纸整块空白(1.1.1 / 1.1.2 的严重缺陷)

1.1.1 引入轮换预热时,rotate 分支丢掉了一段初始化声明(var seconds = Number(config.rotateSeconds) 与 15 秒下限、var index = 0 与首帧定位循环),分支末尾也丢了 return;。结果 load() 每次一进分支就读未声明的 index 抛 ReferenceError,又被静默的 .catch(function () {}) 吞掉——面板一切正常,壁纸却再也不绘制,且没有任何线索。如果你用的是 1.1.1 或 1.1.2,请升级到本版。

修:加载失败不再静默

加载链上的异常现在会记进 loadFailure = { at, name, message },/wallpaper/_probe 与 /wallpaper/_client 都带,并立刻补发一次探针;下一次成功加载(appliedSignature = signature)后清空。

测试

  • 新增 test/rotate.test.mjs(4 例):抽取真实 load() 源码,用替身 fetch / 计时器跑通「首帧只画一次并停在当前素材」「rotateSeconds 非法或缺省回落到 600 秒」「抛错写进 loadFailure」「下次成功清空 loadFailure」
  • 指向坏的 1.1.2 源码时这 4 例全红,修复后 node --test 共 26 例
  • scripts/check.mjs 新增第 11 节 11 项静态校验(含「rotate 分支结束即 return」)

升级

npm i dsh-client-ui-wallpaper@1.1.3
node node_modules/dsh-client-ui-wallpaper/scripts/install.mjs --profile desktop

校验值:lib/client.js sha256 c4f516afc9343b8e559ce4adf324a0a61d70da521854708f4627baaaad2cfcad(与 npm tarball 内一致)。

v1.1.2

Choose a tag to compare

@gnk478 gnk478 released this 05 Oct 17:06

1.1.2: probe heartbeat + layer self-heal + prewarm size gate

v1.1.1

Choose a tag to compare

@gnk478 gnk478 released this 04 Oct 18:26

1.1.1

  • 修:淡入前先等新壁纸首帧就绪(视频 loadeddata、图片 load/decode,READY_MS = 600 兜底),不再出现"过渡淡的是空节点、帧到了才硬切"
  • 修:打断上一次淡入时旧节点以 opacity:1 卡在图层里(settle() 统一回收 + paintSeq 守卫)
  • 轮换提前 8 秒预热下一项(preload = "auto"),预热节点不抢播
  • /wallpaper/_probe 新增 ready 与 switches,可直接读出最近一次是 fade 还是 instant* 及原因
  • 测试:crossfade 行为测试扩到 11 例,node --test 共 19 例;自检新增第 9 节 13 项

npm: https://www.npmjs.com/package/dsh-client-ui-wallpaper/v/1.1.1 (trusted publishing + provenance)

v1.1.0

Choose a tag to compare

@gnk478 gnk478 released this 04 Oct 17:57

dsh-client-ui-wallpaper 1.1.0

  • 轮换交叉淡入淡出:换壁纸不再整层清空重建 —— 新节点插在常驻面纱之前,旧节点留在下层淡出 0.7s 后再回收;data-dsh-wp-current 标记当前节点,自动字色与探针都改按当前节点取色
  • 尊重系统「减少动态效果」:prefers-reduced-motion: reduce、窗口隐藏、首次绘制、重绘同一节点时直接替换,不做过渡
  • 测试:新增 test/crossfade.test.mjs(从 lib/client.js 抽真实源码在最小 DOM 替身上跑 8 例);node --test 共 16 例;scripts/check.mjs 加第 8 节 10 项静态校验
  • npm:dsh-client-ui-wallpaper@1.1.0(17 files,带 provenance 的 OIDC 可信发布)

安装:npm i dsh-client-ui-wallpaper@1.1.0 → node node_modules/dsh-client-ui-wallpaper/scripts/install.mjs --profile desktop

1.0.4

Choose a tag to compare

@gnk478 gnk478 released this 04 Oct 17:47

1.0.4 — npm 包内自检与 npm test 可用

  • npm 包里也能跑自检:1.0.3 的自检第 7 节会校验 workflow YAML,但 npm 包里没有 .github/,从装好的包里跑 node scripts/check.mjs 会报 3 项失败。现在缺 .github/ 时跳过(只校验随包发布的 examples/ 两份副本)
  • test/ 打进包里:files 增加 test,装完包可直接 npm test 跑 8 个行为测试;prepublishOnly = 自检 + 行为测试

安装:npm i dsh-client-ui-wallpaper@1.0.4