@iasiv5/dsh-skins 1.5.20 → 1.5.21

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 +15 -0
  2. package/package.json +2 -2
package/lib/client.js CHANGED
@@ -463,6 +463,16 @@
463
463
  `${body}[data-ds-dark-theme]${column},${body}[data-ds-dark-theme]${dockPanel},${body}[data-ds-dark-theme]${dockPane}{background-color:${opaqueFills.dark}!important}`
464
464
  ].join("\n");
465
465
  }
466
+ function buildReadingBaseCss(bodyAttribute, opaqueFills) {
467
+ if (opaqueFills === null) return "";
468
+ const body = `body[${datasetAttribute(bodyAttribute)}]`;
469
+ const panel = ' [data-plugin-panel="true"]';
470
+ return [
471
+ "/* dsh-skins reading base (ADR-0022): solid skin-tone base under the plugin panel route container — the live page paints the whole route transparent over the wallpaper while the official theme paints an opaque bg token (DOM-dump evidence 2026-10-30), so text sits on a translucent token x wallpaper composite; solid matches the official look. Element-bound: the route leaves the DOM with the page, no state gate needed. Layer pin per ADR-0021 amendment doctrine (large-area cover rules always carry the pin). */",
472
+ `${body}${panel}{position:relative;z-index:0;background-color:${opaqueFills.light}!important}`,
473
+ `${body}[data-ds-dark-theme]${panel}{position:relative;z-index:0;background-color:${opaqueFills.dark}!important}`
474
+ ].join("\n");
475
+ }
466
476
  var PRODUCTION_FIELDS = /* @__PURE__ */ new Set([
467
477
  "id",
468
478
  "label",
@@ -770,6 +780,11 @@ ${darkSelector}{${dark.join(";")}}`;
770
780
  const fullscreenTag = styleTag(`dsh-skins/${skin.id}.fullscreen.css`, fullscreenCss);
771
781
  stops.push(() => fullscreenTag.remove());
772
782
  }
783
+ const readingCss = buildReadingBaseCss(effects.bodyAttribute, opaqueFills);
784
+ if (readingCss !== "") {
785
+ const readingTag = styleTag(`dsh-skins/${skin.id}.reading.css`, readingCss);
786
+ stops.push(() => readingTag.remove());
787
+ }
773
788
  }
774
789
  const backdrop = backdropCss(effects);
775
790
  if (backdrop !== null) {
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@iasiv5/dsh-skins",
3
3
  "description": "DSH Web 皮肤插件:多套品牌皮肤侧栏热切换。",
4
4
  "icon": "./icon.svg",
5
- "version": "1.5.20",
5
+ "version": "1.5.21",
6
6
  "homepage": "https://github.com/iasiv5/dsh-skins#readme",
7
7
  "repository": {
8
8
  "type": "git",
@@ -82,7 +82,7 @@
82
82
  "build": "node scripts/build-client.mjs",
83
83
  "watch": "node scripts/build-client.mjs --watch",
84
84
  "check:lockfile": "pnpm install --frozen-lockfile",
85
- "test": "pnpm run build && node smoke-test.cjs && node scripts/repro-stale-grid-paint.mjs --gate && node scripts/repro-fullscreen-collapse.mjs --gate && node --test tests/*.test.mjs",
85
+ "test": "pnpm run build && node smoke-test.cjs && node scripts/repro-stale-grid-paint.mjs --gate && node scripts/repro-fullscreen-collapse.mjs --gate && node scripts/repro-plugin-panel-readability.mjs --gate && node --test tests/*.test.mjs",
86
86
  "verify:readme": "node scripts/verify-readme-pairing.mjs",
87
87
  "verify:bundle": "node scripts/verify-bundle-guard.mjs",
88
88
  "verify:hooks": "node scripts/verify-upstream-hooks.mjs",