dsh-folia 2.4.4 → 2.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/lib/client.js +46 -6
  2. package/package.json +1 -1
package/lib/client.js CHANGED
@@ -16294,12 +16294,23 @@ window.__ModuleLoader__.load({
16294
16294
  } else if (kind === "activate") {
16295
16295
  setNote({
16296
16296
  kind: "ok",
16297
- text: weT("已切换到「") + label + weT("」"),
16298
- // 皮肤中心是在**页面启动时**拉 `/api/skin-center/v2/active` 再注入样式的,
16299
- // 所以"换皮肤"只需刷新这一页(不重启 DSH 进程):下面的按钮就做这件事。
16300
- // 不自动刷:用户可能正在输入,突然刷新会打断。
16297
+ text: weT("已切换到「") + label + weT("」,正在刷新界面…"),
16298
+ // 皮肤中心**只在页面加载时**应用皮肤:它的 `POST /v2/active` 也只写状态文件,
16299
+ // 不重绘。所以"真的换肤"只有重新加载这一页一条路 —— 见下面的自动跳转。
16301
16300
  reload: true,
16302
16301
  });
16302
+ // 一次点击就完成:这里自动重新加载,不再让用户点第二次。
16303
+ // 用 `location.replace(href)` 而非 `reload()`:桌面壳里 reload 有时被吞掉
16304
+ //(表现正是"点了没反应"),硬跳转更容易生效,且 replace 不往历史里塞条目。
16305
+ try {
16306
+ setTimeout(function tryApply() {
16307
+ try {
16308
+ window.location.replace(window.location.href);
16309
+ } catch (e1) {
16310
+ try { window.location.reload(); } catch (e2) { /* 交给手动按钮 */ }
16311
+ }
16312
+ }, 700);
16313
+ } catch { /* 环境不支持 → 手动按钮兜底 */ }
16303
16314
  // 不再整表重拉:本地标记已经对了,省掉那 600 ms 的"没反应"窗口。
16304
16315
  } else if (kind === "remove") {
16305
16316
  setNote({ kind: "ok", text: weT("已删除:") + label });
@@ -16373,6 +16384,32 @@ window.__ModuleLoader__.load({
16373
16384
  ));
16374
16385
  }
16375
16386
 
16387
+ // ⚠️ **壁纸在台时皮肤不会生效** —— 这是皮肤中心写死的行为,不是我们的 bug:
16388
+ // · host 侧:peer(= 本插件)持久化的壁纸选择非空时,它从文档里**扣住**皮肤;
16389
+ // · client 侧:它盯 `body[data-we-wallpaper]`,只要那个标记在,就把皮肤让位
16390
+ // (源码注释:`an active WE wallpaper suppresses skin media`)。
16391
+ // 于是"点了使用但界面没变"最可能的原因就是**壁纸还开着**。这里直接读那个标记,
16392
+ // 命中就把话说清楚,并告诉用户该先做什么。
16393
+ let wallpaperOn = false;
16394
+ try {
16395
+ wallpaperOn = Boolean(document.body && document.body.hasAttribute("data-we-wallpaper"));
16396
+ } catch { /* 拿不到 DOM 就当没有 */ }
16397
+ if (wallpaperOn) {
16398
+ children.push(React.createElement("div", {
16399
+ key: "wpwarning",
16400
+ className: "we-picker__hint",
16401
+ style: {
16402
+ margin: "4px 0 10px",
16403
+ padding: "7px 10px",
16404
+ borderRadius: "8px",
16405
+ background: "rgba(255,196,120,0.12)",
16406
+ color: "#ffd08a",
16407
+ lineHeight: 1.5,
16408
+ },
16409
+ }, weT("⚠️ 当前有壁纸在台:皮肤会被壁纸让位,切换不会生效。")
16410
+ + weT(" 先到「壁纸」页签点「清除」,再回来切换皮肤。")));
16411
+ }
16412
+
16376
16413
  if (error) {
16377
16414
  children.push(React.createElement("div", {
16378
16415
  key: "err",
@@ -16400,8 +16437,11 @@ window.__ModuleLoader__.load({
16400
16437
  className: "we-picker__btn we-picker__btn--primary",
16401
16438
  style: { fontSize: "11.5px", padding: "3px 10px" },
16402
16439
  onClick: () => {
16403
- // 只刷新这个前端页面(皮肤中心启动时重新拉 active),不必重启 DSH 进程。
16404
- try { window.location.reload(); } catch { /* 极端环境刷不动就留着让用户手动重启 */ }
16440
+ // 与自动那条路一致:优先硬跳转,退而 reload。只重载前端页面 ——
16441
+ // 对话与设置都在宿主侧,不会丢。
16442
+ try { window.location.replace(window.location.href); } catch {
16443
+ try { window.location.reload(); } catch { /* 极端环境刷不动就让用户手动重启 */ }
16444
+ }
16405
16445
  },
16406
16446
  title: weT("重新加载界面以应用新皮肤(对话与设置都在宿主侧,不会丢)"),
16407
16447
  }, weT("立即生效"))
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-folia",
3
- "version": "2.4.4",
3
+ "version": "2.4.6",
4
4
  "description": "Folia 壁纸引擎:把本机 Wallpaper Engine 壁纸搬进 DSH 界面(场景实时渲染 / 视频 / 网页),内置液态玻璃与 Folia 吉祥物,并可从自建站点拉取壁纸。单包形态(组件已合并)。",
5
5
  "type": "module",
6
6
  "engines": {