Releases: YRN-playmaker/dsh-wallpaper_share
Release list
0.1.0-rc8 stable
这个包是什么
Wallpaper Engine 壁纸同步插件(dsh-wallpaper_share)的 rc 档预构建安装包。(又名dsh-wallpaper_share v26.9.3-rc)
解压即用,用户侧零构建:包含 node 半(lib/index.js)、浏览器半(lib/client.js)、
原生捕获器(bin/we-capture.exe)、DWP 渲染运行时(已内联)与自动生效的 bundle 补丁
(cordis.patch.yml),安装后重启 web profile 即可在页面看到 wallpaper_share 标签页。
与 main / test 档的区别
本仓库分三档发布:
- test:跟随 harness 最新版本的实验档,功能最全,可能不稳定;
- main:test 验证通过后的稳定档,跟随 harness 新版本演进;
- rc(本包):基于 harness 0.1.0-rc.8 时代 API 的泛用兼容档。只在 harness 本体
发布新 rc 线时跟进,不追新功能,优先保证存量环境的稳定。
一句话:harness 还停在 0.1.0-rc.x 的用户选这个包;已经升到 0.1.2+ 的用户请走
npm 的 main / test 档,功能适配更新更快。
本版修复内容
- 修复路径穿越漏洞(安全):壁纸文件接口此前对 URL 中的 ".." / "%2e%2e" 校验不足,
可逃逸目录读取任意文件。现统一经 webRelPath() 解析:URL 解码、反斜杠归一、
拒绝绝对路径与任何 ".." 段,非法请求直接返回 403。 - 修复壁纸同步永久锁死:轮询遇到任何一次非 200 响应后同步会永久停止(需刷新页面
才恢复)。现已在错误分支正确复位轮询状态。 - 修复 DWP 渲染循环遇异常停摆:WebGL 单帧异常此前会永久冻结渲染。现异常时一次性
降级 Canvas2D 原位续渲;降级失败则跳过该帧并节流告警,循环不再中断。 - 修复 RAW 帧解码崩溃:坏帧(长度不足)此前直接抛 RangeError 刷屏丢帧。现先校验
长度并截断,不足即安全跳过。 - 细节:DWP 挂载提示文案精简,移至同步按钮右侧同行显示。
适用版本
- Harness:0.1.0-rc.6 及以上(0.1.0-rc.6 / 0.1.0-rc.8 实机验证)。
- 在 harness 0.1.2-alpha.2 及以上存在已知适配问题(沉浸模式新建会话、orb 后台任务
变色等,详见 README「已知问题」),该环境建议改用 main / test 档。 - 运行方式:dsh --profile web。
安装
下载本附件后:
dsh plugin --profile web add ./dsh-wallpaper_share-26.9.3-rc.tgz
或直接 URL 安装:
dsh plugin --profile web add https://github.com/YRN-playmaker/dsh-wallpaper_share/releases/download/v26.9.3-rc/dsh-wallpaper_share-26.9.3-rc.tgz
安装后重启 dsh(web profile)生效。
26.08.29 dsh-wallpaper_share
v26.08.29 — 2026-08-29
Wallpaper Engine scene 真实渲染适配的又一轮打磨:新增**昼夜自动切换(auto 模式)**与 TEXS 序列帧动画解析,并把骨骼动画修复推广到全部格式;同时修复了 spritesheet 频闪 / 丢帧、scene 图层渲染崩塌、以及雾/烟粒子浓度过浓等一系列共性问题。
新增功能
- 昼夜自动切换(auto 模式):识别 scene 图层 alpha 里的 SceneScript
engine.timeOfDay+smoothStep(START_HOUR, END_HOUR),按本地真实时钟 / 日出日落小时计算昼夜 alpha——夜间夜空层 alpha=1、白天隐藏(非昼夜脚本图层保持静态 alpha)。覆盖 2164591875 / 2785951913 / 3151551777 / 3774904326 等 4 个用真实时钟驱动昼夜的壁纸,跨午夜(日出 > 日落)同样支持。 - TEXS 动画段解析(序列帧 / GIF 网格):
decodeTex完整解析 TEXS0001/0002/0003 帧表(每帧的纹理内像素矩形 + 时长),DecodedTex.frames返回帧表;/we-sync/scene/texture返回X-Sprite-Frames/Width/Height/Duration/Rects头,渲染端按时间取帧裁剪绘制。全库 8 个 spritesheet 材质纹理(2164591875 的 12/4 帧瀑布、2325500626 的 16 帧篝火、2022733184 的 32 帧星光、1438064333 的 64 帧、3774904326 的 3 帧昼夜切换等)全部验证可解析。
修复
- 烟雾 / 粒子浓度过浓(2804379697 雾等,共性问题):
ParticleRuntime.updateParticles里let a = hasAlpharandom ? 1 : p.spawnAlpha——凡带alpharandom初始化器的粒子(雾 / 烟 / 雪等绝大多数),其随机不透明度(官方语义 "Alpha random: Defines the opacity of the particles")被直接丢弃、顶成满 alpha=1。fog1 的alpharandom 0.15–0.2 × override.alpha 0.5 = 0.075–0.1被顶成 1,浓 10 倍以上,表现为浓白团块而非轻薄雾霭。修复:a = p.spawnAlpha(保留出生随机 alpha,fade / oscillate 仅在其上调制)。 - alphafade 淡入淡出单位错误(粒子早期偏薄 / 上升沿错):
fadeintime/fadeouttime在 WE 中单位为秒(与粒子年龄 / 剩余寿命秒数比较),但代码拿 0-1 的寿命比例frac直接比较,把0.5s当成"50% 寿命"——雾寿命 3–5s 时淡入被拉长到 1.5–2.5s,远慢于 WE 的 0.5s,导致粒子长期停留在低 alpha、平均浓度偏低。修复:按每粒子maxLife把秒换算成比例(fadeIn / p.maxLife)再比较。 - 昼夜壁纸"白天 / 黑夜快速频闪"(2164591875 等):根因是序列帧动画里混入了"空帧"。夜空图层是 4 帧 spritesheet,其中一帧的 TEXS 矩形越界且采样区域全透明(alpha≈0)——播放到该帧时夜空图层瞬间变透明,底下的白天图层透出,于是每 0.4s(动画循环)闪一次"白天",表现为"白天 / 黑夜快速衔接"。修复:
decodeTex解析 TEXS 帧表后,通用剔除矩形越界或不透明像素占比 < 5% 的空帧(不针对具体壁纸 ID),坏帧不再让图层闪空。 - 多页序列帧"丢帧"(2164591875 夜空只剩两帧循环):剔除空帧后夜空动画仍只有前两帧循环。根因是该纹理是多 image 页(GIF 式)结构(
imageCount=2:image0 1024×1024 + image1 1024×512),TEXS 帧表的frameNumber字段指明每帧所属页——夜空第 4 帧frameNumber=1指向 image1。但解码器只解码 image0 且忽略 frameNumber,导致该帧被错误采样回 image0 的 (0,0),与首帧完全重复 → 视觉上"只有前两帧循环"。修复:decodeTex读取所有 image 页的 mip0,当帧引用多页时把各 raw 页纵向拼成一张图集并按frameNumber重映射每帧矩形 y 偏移,使渲染端"单图裁剪"模型可用。夜空图现输出 1024×1536 图集、3 个互不相同的有效帧(像素差实测 2.4–2.8)。 - scene 非序列帧图层整层跳过(渲染崩塌):
renderScene里this.layerSprite.get(layer.id)对无 sprite 的普通 image 层返回undefined,旧判断spr !== null未排除undefined(undefined !== null为 true),导致每个非 sprite 图层访问spr.frames抛TypeError,被 draw() 的 try/catch 捕获后整层不绘制——表现为"背景 / 普通图层不显示,只剩先画的 puppet 层"。改为spr != null(同时排除 null 与 undefined)。此 bug 影响大量无 sprite 的 scene 壁纸(2587542891、2804379697 等),是"只显示眉毛瞳孔而背景缺失"的根因。 - scene 纹理序列帧动画(GIF / 切分图片网格)不播放:
decodeTex此前只解析第一个 image 的 mip0,完全忽略 TEXS 动画段——切分图片动画壁纸只显示第一帧(静态)。现完整解析 TEXS 帧表并驱动渲染端按时间取帧裁剪(见"新增功能")。 - spritesheet 静态缓存排除:带序列帧动画的图层不再进入静态背景离屏缓存(否则永远只画第一帧)。
- 骨骼旋转统一为欧拉角(全部格式):扫描 52 个 scene 壁纸中全部 47 个带 puppet 的壁纸,确认 MDLA0001(0013 格式)与 MDLA0006(0021/0023 格式)动画帧的旋转分量均可能 > 1(0023 最高 98.855,0021 有 28.199)——四元数 z 分量被限制在 [-1,1],>1 证明所有格式都是欧拉角。老格式(0013)逐骨骼蒙皮已改为
mat4TRSEuler(T×R×S,R=Rz·Ry·Rx),睫毛弯曲等骨骼动画不再出现 180° 翻转与人物上下抖动。 - 动画检测覆盖所有骨骼(0013 老格式):此前只检查骨骼 0 的帧跨度,而骨骼 0 常为静态绑定姿势(跨度=0),导致整个动画被跳过;现遍历全部骨骼的关键帧,任一骨骼有变化即播放(瞳孔收缩 / 眼睑旋转等依赖骨骼 1+ 的动画恢复正常)。
260826T dsh-wallpaper_share
修复了很多已知交互问题和粒子特效问题,支持跟随主题语言切换
260824T dsh-wallpaper_share
26.08.23 dsh-wallpaper_share
正式版本已发布
更新内容:
更正了按钮控件逻辑
更新了场景类型效果控件适配
修正了测试版中出现的部分骨骼绑定错误的问题
GL 画布改为离屏渲染目标,在主画布上按 z-order 逐段合成
修复了测试版粒子效果过亮的问题
禁用了部分2d粒子形变
更新了雨滴序列纹理的表现效果
新增应用类壁纸预览模式
优化了内存占用
Adjusted button control logic.
Updated adaptation for scene-type effect controls.
Fixed skeletal binding errors found in the beta version.
Switched the GL canvas to an off-screen render target, compositing segments onto the main canvas based on z-order.
Fixed an issue where particle effects were overly bright in the beta version.
Disabled certain 2D particle deformations.
Improved the visual rendering of raindrop texture sequences.
Added a preview mode for application-style wallpapers.
Optimized memory usage.
260822T dsh-wallpaper_share
Note: This version is a preview version
Fixes
The "exploding" issue of the puppet component
Adaptive UV v-direction in the grid
Bug in triangle drawing v-values in buildMeshCanvas
Decoding semantics for RG88/R8 texture parsing
Overbright coloring for particles + colorrandom min color
Scalar sin × flow direction in shake
Filtering for visibility effect
Real-time duration for bone animation cycle using MDLA + Rotation anchor changes bone position
New Features (3 items)
WebGL pixel-based perturbation for waterwaves
Global effect strength scaling
Complete parsing of Puppet (MDLV/MDLS0003/0004/MDLA/MDAT/MDLE)
Other (2 items)
Texture interface returns image region size
Soft edges for particles are only available for <128px small textures
注:此版本为预览版本
修复
puppet 部件"炸开"问题
网格 UV v 方向自适应
buildMeshCanvas 三角形绘制 v 负值 bug
粒子 RG88/R8 纹理解码语义
粒子 overbright 染色 + colorrandom min 色
shake 标量 sin × flow 方向
效果 visible 过滤
骨骼动画周期用 MDLA 真实时长 + 旋转锚点改骨骼位置
新增(3 项)
waterwaves WebGL 逐像素扰动
effectStrengthScale 全局效果强度
Puppet 解析完整化(MDLV/MDLS0003/0004/MDLA/MDAT/MDLE)
其他(2 项)
纹理接口返回 image 区域尺寸
粒子软边仅限 <128px 小纹理
v0.2.0
这个版本完成了改名、修了 4 个 bug,并给"增强模式"补上了场景壁纸与视频 seek 的能力。
插件名同步 dsh-wallpaper_share,与 GitHub 仓库名保持一致。安装方式相应更新(见下方)。
修复的 Bug
启动崩溃:execFileSync 原先从 node:fs 导入(实际属于 node:child_process),ESM 实例化直接抛错、导致整个 web profile 插件树加载失败。已拆分导入修复。
scene 壁纸增强模式黑屏:回退逻辑要求 sourceKind === '' 才显示预览,scene 的 kind 非空 → 既不显示预览也不走媒体分支,纯黑屏。已修复。
image 壁纸增强模式黑屏:同上,image 源未接入增强模式。已修复。
视频源无法 seek:serveFile 不支持 HTTP Range,moov 在文件尾的 mp4 播放会卡住。已补齐 Range 支持。
新功能
scene.pkg 纹理提取:从 Wallpaper Engine 私有 PKGV 容器里扫描最大的 JPEG/PNG 纹理并流式返回,增强模式下场景壁纸不再黑屏。
HTTP Range 支持:Accept-Ranges / 206 / 416 / 200 全套,视频可正常拖动进度条。
image 增强模式:显示原始源图。
自诊断增强:/we-sync/diag 现在会返回每台显示器的 scene 纹理提取结果(尺寸 / MIME)。
增强模式兼容矩阵
v0.0.1
Those who are interested can download and have a look.
