dsh-any-background 0.2.1 → 0.2.2
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.
- package/README.md +12 -16
- package/README.zh.md +13 -17
- package/lib/client.js +110 -18
- package/lib/client.js.map +1 -1
- package/package.json +124 -108
package/README.md
CHANGED
|
@@ -75,21 +75,17 @@ A **DeepSeek Harness** appearance plugin that lets you fully customize the Web U
|
|
|
75
75
|
|
|
76
76
|
## Recent Optimizations
|
|
77
77
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
- **
|
|
81
|
-
- **
|
|
82
|
-
- **
|
|
83
|
-
- **
|
|
84
|
-
- **
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
- **
|
|
89
|
-
- **Translucency without self-damage** — The "Input & controls" opacity slider is deliberately decoupled from the settings panel's own controls (which share the same button tokens), so adjusting it can never bleach the plugin's own sliders and buttons.
|
|
90
|
-
- **Drag-time performance** — Opacity tokens are written as CSS variables on `<html>` instead of rebuilding the whole token stylesheet per tick; slider updates are coalesced to one rAF per frame; the main-background columns are only retinted when their own slider changes.
|
|
91
|
-
- **Drag-time wallpaper downscaling** — While any slider is being dragged the wallpaper swaps to a (~720px) low-res copy for cheap rasterization over large images, then restores full resolution on release.
|
|
92
|
-
- **Instant video playback on import** — A picked video starts playing immediately from a local object URL while its raw bytes stream to disk in the background; the persisted serve URL takes over on the next reload — no more upload + first-buffer wait after import.
|
|
78
|
+
### v0.2.2
|
|
79
|
+
|
|
80
|
+
- **Dark host surfaces fully themed** — Message bubbles, setting-box inputs/cards, selectors, ghost/toolbar buttons, and module-platform surfaces now carry explicit dark tokens, eliminating white-on-white and white-icon-on-bright bugs across the conversation view, settings page, and interactive controls.
|
|
81
|
+
- **Refresh white-flash eliminated** — A theme-reset watcher re-asserts the plugin's forced scheme within the same frame the host re-applies its light `:root/body` rules; the `!important` token stylesheet survives host theme resets, so entering, refreshing, and set-changes no longer paint a white frame.
|
|
82
|
+
- **Brand badge & code banner contrast** — The sidebar brand badge and the code-block info banner now use dark surfaces with legible labels and icons.
|
|
83
|
+
- **Placeholder reads as a hint** — The composer placeholder is rendered with the weak caption token and italic styling, clearly distinct from real input text.
|
|
84
|
+
- **Dual harness compatibility** — `defineStore` is resolved through a runtime adapter that prefers the new `@deepseek-ai/dsh-client-store` and falls back to the legacy `@deepseek-ai/dsh-client-runtime/client`. A single bundle loads on both the npm release and the new deepseek-harness source, with no "missed the module table" boot failure.
|
|
85
|
+
|
|
86
|
+
### v0.2.1
|
|
87
|
+
|
|
88
|
+
- **Instant video playback on import** — A picked video starts playing immediately from a local object URL while its raw bytes stream to disk in the background; the persisted serve URL takes over on the next reload — no upload + first-buffer wait after import.
|
|
93
89
|
- **Option boxes follow the card slider** — The dropdowns, slash-trigger menu, model selector, and popovers around the dialog now follow the "Cards & panels" opacity slider instead of "Input & controls"; the Cordis panel keeps its own input-slider binding.
|
|
94
90
|
|
|
95
91
|
## Installation
|
|
@@ -132,7 +128,7 @@ pnpm dsh web
|
|
|
132
128
|
|
|
133
129
|
## Compatibility
|
|
134
130
|
|
|
135
|
-
- **[`dsh web`](https://github.com/deepseek-ai/deepseek-harness)** — Full support.
|
|
131
|
+
- **[`dsh web`](https://github.com/deepseek-ai/deepseek-harness)** — Full support on both the npm release and the new source build. The plugin auto-detects which client-module table the host ships (the new `@deepseek-ai/dsh-client-store` or the legacy `@deepseek-ai/dsh-client-runtime`) and resolves `defineStore` accordingly at runtime.
|
|
136
132
|
- **[deepseek-harness-desktop](https://github.com/anywhere-labs/deepseek-harness-desktop)** — Supported; a known Electron packaging issue makes the left sidebar and center area opacity appear inverted — awaiting a desktop-client update to fix it.
|
|
137
133
|
|
|
138
134
|
## Star History
|
package/README.zh.md
CHANGED
|
@@ -75,22 +75,18 @@
|
|
|
75
75
|
|
|
76
76
|
## 近期优化
|
|
77
77
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
-
|
|
81
|
-
-
|
|
82
|
-
-
|
|
83
|
-
-
|
|
84
|
-
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
-
|
|
89
|
-
-
|
|
90
|
-
- **拖动性能优化** — 透明度令牌改为写 `<html>` 上的 CSS 变量(拖动时不再整表重建),滑块更新按 rAF 合帧为每帧一次;「主背景」列仅在自身滑块变化时才重染。
|
|
91
|
-
- **拖动时壁纸降采样** — 拖动任意滑块期间,壁纸临时切换到(~720px)低清副本以降低大图上的合成成本,松手后恢复全分辨率。
|
|
92
|
-
- **导入即播视频壁纸** — 选中的视频立即通过本地对象 URL 开始播放,原始字节在后台流式落盘,下次刷新自动切回持久化服务地址——不再有「上传 + 首帧缓冲」的等待。
|
|
93
|
-
- **选项框跟随卡片滑块** — 对话框周围的下拉菜单、斜杠命令菜单、模型选择器与弹层现在跟随「对话框中选项面板」透明度滑块,而非「输入框与控件」;Cordis 插件面板保持自己的输入滑块绑定。
|
|
78
|
+
### v0.2.2
|
|
79
|
+
|
|
80
|
+
- **深色宿主表面全面主题化** — 消息气泡、设置框输入框/卡片、选择器、ghost/工具条按钮、module-platform 表面均补全了显式深色令牌,消除对话区、设置页与交互控件中的白底白字、白底白图标问题。
|
|
81
|
+
- **消除刷新白闪** — 新增主题重置监听:宿主重新施加浅色 `:root/body` 规则后,插件在同帧内重新断言强制主题;`!important` 令牌样式表可抵御宿主主题服务的重置,进入、刷新、修改设置不再闪现一帧白底。
|
|
82
|
+
- **品牌徽章与代码信息条对比提升** — 侧边栏品牌徽章与代码块上方信息条改为深色表面,文字与图标保持清晰可辨。
|
|
83
|
+
- **占位符与正式输入区分** — 发送框占位符改用较弱的 caption 令牌并加斜体,空态不会被误认为已输入内容。
|
|
84
|
+
- **双版本兼容** — `defineStore` 通过运行时适配器解析:优先使用新版 `@deepseek-ai/dsh-client-store`,缺失时回退到旧版 `@deepseek-ai/dsh-client-runtime/client`;同一份 bundle 同时兼容 npm 老版本与新版 deepseek-harness 源码,不再出现 "missed the module table" 启动失败。
|
|
85
|
+
|
|
86
|
+
### v0.2.1
|
|
87
|
+
|
|
88
|
+
- **导入即播视频壁纸** — 选中的视频立即通过本地对象 URL 开始播放,原始字节在后台流式落盘,下次刷新自动切回持久化服务地址,不再有「上传 + 首帧缓冲」的等待。
|
|
89
|
+
- **选项框跟随卡片滑块** — 对话框周围的下拉菜单、斜杠命令菜单、模型选择器与弹层改为跟随「对话框中选项面板」透明度滑块;Cordis 插件面板保持自己的输入滑块绑定。
|
|
94
90
|
|
|
95
91
|
## 安装
|
|
96
92
|
|
|
@@ -132,7 +128,7 @@ pnpm dsh web
|
|
|
132
128
|
|
|
133
129
|
## 兼容性
|
|
134
130
|
|
|
135
|
-
- **[`dsh web`](https://github.com/deepseek-ai/deepseek-harness)** —
|
|
131
|
+
- **[`dsh web`](https://github.com/deepseek-ai/deepseek-harness)** — 同时兼容 npm 发布版与新版源码构建。插件会自动检测宿主携带的客户端模块表(新版 `@deepseek-ai/dsh-client-store` 或旧版 `@deepseek-ai/dsh-client-runtime`),并在运行时据此解析 `defineStore`。
|
|
136
132
|
- **[deepseek-harness-desktop](https://github.com/anywhere-labs/deepseek-harness-desktop)** — 支持;已知 Electron 打包问题导致左侧边栏与中心区域透明度显示相反,需等待桌面端更新修复。
|
|
137
133
|
|
|
138
134
|
## Star History
|
package/lib/client.js
CHANGED
|
@@ -4,10 +4,18 @@ window.__ModuleLoader__.load({
|
|
|
4
4
|
var module = { exports: {} };
|
|
5
5
|
var exports = module.exports;
|
|
6
6
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
7
|
-
let _deepseek_ai_dsh_client_runtime_client = require("@deepseek-ai/dsh-client-runtime/client");
|
|
8
7
|
let react = require("react");
|
|
9
8
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
10
9
|
let react_dom = require("react-dom");
|
|
10
|
+
//#region src/client/runtime.ts
|
|
11
|
+
function resolveStore() {
|
|
12
|
+
try {
|
|
13
|
+
return require("@deepseek-ai/dsh-client-store");
|
|
14
|
+
} catch {}
|
|
15
|
+
return require("@deepseek-ai/dsh-client-runtime/client");
|
|
16
|
+
}
|
|
17
|
+
const defineStore = resolveStore().defineStore;
|
|
18
|
+
//#endregion
|
|
11
19
|
//#region src/client/i18n.ts
|
|
12
20
|
const NS = "settings.anyBg";
|
|
13
21
|
const zh = {
|
|
@@ -610,32 +618,76 @@ window.__ModuleLoader__.load({
|
|
|
610
618
|
"--dsw-alias-bg-layer-2": hsl(h(0), s(0), l(.07)),
|
|
611
619
|
"--dsw-alias-bg-layer-3": hsl(h(0), s(-.05), l(.12)),
|
|
612
620
|
"--dsw-alias-bg-overlay": hsl(h(0), s(-.05), l(.12)),
|
|
621
|
+
"--dsw-alias-bg-module-platform": hsl(h(0), s(0), l(.05)),
|
|
622
|
+
"--dsw-alias-bg-multi-select": hsl(h(0), s(0), l(.1)),
|
|
623
|
+
"--dsw-alias-bg-skeleton": "rgba(255,255,255,0.08)",
|
|
613
624
|
"--dsw-alias-border-l1": rgba(h(0), s(-.1), l(.18), .12),
|
|
614
625
|
"--dsw-alias-border-l2": rgba(h(0), s(-.1), l(.22), .22),
|
|
626
|
+
"--dsw-alias-border-l3": "rgba(255,255,255,0.16)",
|
|
627
|
+
"--dsw-alias-border-l4": "rgba(255,255,255,0.2)",
|
|
628
|
+
"--dsw-alias-border-inverted": "rgba(255,255,255,0.06)",
|
|
615
629
|
"--dsw-alias-label-primary": hsl(0, 0, 1),
|
|
616
|
-
"--dsw-alias-label-secondary":
|
|
617
|
-
"--dsw-alias-label-tertiary":
|
|
618
|
-
"--dsw-alias-label-caption":
|
|
619
|
-
"--dsw-alias-label-dimmed":
|
|
620
|
-
"--dsw-alias-label-quaternary":
|
|
630
|
+
"--dsw-alias-label-secondary": "rgba(255,255,255,0.85)",
|
|
631
|
+
"--dsw-alias-label-tertiary": "rgba(255,255,255,0.7)",
|
|
632
|
+
"--dsw-alias-label-caption": "rgba(255,255,255,0.5)",
|
|
633
|
+
"--dsw-alias-label-dimmed": "rgba(255,255,255,0.35)",
|
|
634
|
+
"--dsw-alias-label-quaternary": "rgba(255,255,255,0.25)",
|
|
635
|
+
"--dsw-alias-label-primary-dimmed": "rgba(255,255,255,0.92)",
|
|
636
|
+
"--dsw-alias-label-primary-foreground": hsl(0, 0, 1),
|
|
637
|
+
"--dsw-alias-label-primary-inverted": hsl(h(0), s(.08), Math.min(l(.06), .16)),
|
|
638
|
+
"--dsw-alias-label-primary-bluish": hsl(0, 0, 1),
|
|
621
639
|
"--dsw-alias-brand-primary": hsl(h(0), s(.1), Math.max(l(.2), .5)),
|
|
622
640
|
"--dsw-alias-brand-text": l(.2) > .6 ? "#000" : "#fff",
|
|
641
|
+
"--dsw-alias-button-primary-fill": hsl(h(0), s(.1), Math.max(l(.2), .5)),
|
|
623
642
|
"--dsw-alias-button-primary-hover": hsl(h(0), s(.1), Math.max(l(.28), .58)),
|
|
624
643
|
"--dsw-alias-button-primary-dimmed": hsl(h(0), s(0), l(.07)),
|
|
625
644
|
"--dsw-alias-button-elevated-fill": hsl(h(0), s(0), l(.04)),
|
|
645
|
+
"--dsw-alias-button-floating-fill": hsl(h(0), s(0), l(.02)),
|
|
626
646
|
"--dsw-alias-button-floating-hover": hsl(h(0), s(0), l(.1)),
|
|
647
|
+
"--dsw-alias-button-tool-bar-fill": "rgba(255,255,255,0.08)",
|
|
648
|
+
"--dsw-alias-button-tool-bar-hover": "rgba(255,255,255,0.12)",
|
|
649
|
+
"--dsw-alias-button-ghost-active-fill": hsl(h(0), s(0), l(.06)),
|
|
650
|
+
"--dsw-alias-button-ghost-active-border": "rgba(255,255,255,0.16)",
|
|
651
|
+
"--dsw-alias-button-ghost-active-hover": hsl(h(0), s(0), l(.09)),
|
|
652
|
+
"--dsw-alias-button-info-fill": "#679efe",
|
|
653
|
+
"--dsw-alias-button-info-hover": "#4176e6",
|
|
654
|
+
"--dsw-alias-button-contrast-fill": hsl(0, 0, 1),
|
|
627
655
|
"--dsw-alias-interactive-bg-hover": rgba(h(0), s(0), Math.max(l(.15), .4), .12),
|
|
656
|
+
"--dsw-alias-interactive-bg-hover-solid": rgba(h(0), s(0), Math.max(l(.15), .4), .16),
|
|
657
|
+
"--dsw-alias-interactive-bg-hover-accent": "rgba(255,255,255,0.24)",
|
|
658
|
+
"--dsw-alias-interactive-bg-hover-danger": "rgba(242,90,90,0.15)",
|
|
628
659
|
"--dsw-alias-interactive-bg-active": rgba(h(0), s(0), Math.max(l(.15), .4), .2),
|
|
629
660
|
"--dsw-alias-markdown-code-block": hsl(h(0), s(0), l(-.06)),
|
|
661
|
+
"--dsw-alias-markdown-code-block-banner": hsl(h(0), s(0), l(-.02)),
|
|
630
662
|
"--dsw-alias-markdown-inline-code": hsl(h(0), s(0), l(.04)),
|
|
663
|
+
"--dsw-alias-markdown-placeholder": hsl(h(0), s(0), l(-.02)),
|
|
664
|
+
"--dsw-alias-markdown-tag": hsl(h(0), s(0), l(.05)),
|
|
665
|
+
"--dsw-alias-markdown-citation": hsl(h(0), s(0), l(.06)),
|
|
666
|
+
"--dsw-alias-markdown-code-segment-selected": hsl(h(0), s(0), l(.05)),
|
|
667
|
+
"--dsw-alias-markdown-code-segment-unselected": hsl(h(0), s(0), l(-.05)),
|
|
631
668
|
"--dsw-alias-state-error-primary": "#ff5c72",
|
|
669
|
+
"--dsw-alias-state-error-secondary": "#ff8aa0",
|
|
632
670
|
"--dsw-alias-state-success-primary": "#3ddc84",
|
|
671
|
+
"--dsw-alias-state-success-secondary": "#69eea4",
|
|
672
|
+
"--dsw-alias-state-success-tertiary": "hsl(152,70%,62%)",
|
|
633
673
|
"--dsw-alias-state-warn-primary": "#ffb347",
|
|
674
|
+
"--dsw-alias-state-warn-secondary": "#ffc980",
|
|
675
|
+
"--dsw-alias-state-warn-tertiary": "#dd8629",
|
|
676
|
+
"--dsw-alias-state-warn-label": "#dd8629",
|
|
677
|
+
"--dsw-alias-state-business-primary": "#679efe",
|
|
678
|
+
"--dsw-alias-state-business-tertiary": "#6f7fa8",
|
|
634
679
|
"--dsw-specific-sidebar-fill": hsl(h(0), s(0), l(-.06)),
|
|
635
680
|
"--dsw-specific-sidebar-nav-item-active": hsl(h(0), s(0), l(.04)),
|
|
636
681
|
"--dsw-specific-sidebar-nav-item-hover": hsl(h(0), s(0), l(0)),
|
|
637
682
|
"--dsw-specific-input-major": hsl(h(0), s(0), l(.02)),
|
|
638
683
|
"--dsw-specific-menu": hsl(h(0), s(0), l(.08)),
|
|
684
|
+
"--dsw-specific-bubble": hsl(h(0), s(0), l(.03)),
|
|
685
|
+
"--dsw-specific-bubble-highlight": hsl(h(0), s(0), l(.08)),
|
|
686
|
+
"--dsw-specific-selector": hsl(h(0), s(0), l(.05)),
|
|
687
|
+
"--dsw-specific-login-input": hsl(h(0), s(0), l(.03)),
|
|
688
|
+
"--dsw-specific-tip": hsl(h(0), s(0), l(.05)),
|
|
689
|
+
"--dsw-alias-toast-bg": hsl(h(0), s(0), l(.08)),
|
|
690
|
+
"--dsw-alias-tooltip-bg": hsl(h(0), s(0), l(.08)),
|
|
639
691
|
"--dsw-alias-scrollbar-bg-l1": hsl(h(0), s(-.05), l(.12)),
|
|
640
692
|
"--dsw-alias-scrollbar-bg-l2": hsl(h(0), s(-.05), l(.16)),
|
|
641
693
|
"--dsw-alias-scrollbar-hover-l1": hsl(h(0), s(-.05), l(.22)),
|
|
@@ -653,11 +705,11 @@ window.__ModuleLoader__.load({
|
|
|
653
705
|
"--dsw-alias-border-l1": rgba(h(0), s(-.15), l(-.35), .18),
|
|
654
706
|
"--dsw-alias-border-l2": rgba(h(0), s(-.15), l(-.35), .3),
|
|
655
707
|
"--dsw-alias-label-primary": hsl(0, 0, 0),
|
|
656
|
-
"--dsw-alias-label-secondary":
|
|
657
|
-
"--dsw-alias-label-tertiary":
|
|
658
|
-
"--dsw-alias-label-caption":
|
|
659
|
-
"--dsw-alias-label-dimmed":
|
|
660
|
-
"--dsw-alias-label-quaternary":
|
|
708
|
+
"--dsw-alias-label-secondary": "rgba(0,0,0,0.85)",
|
|
709
|
+
"--dsw-alias-label-tertiary": "rgba(0,0,0,0.7)",
|
|
710
|
+
"--dsw-alias-label-caption": "rgba(0,0,0,0.5)",
|
|
711
|
+
"--dsw-alias-label-dimmed": "rgba(0,0,0,0.35)",
|
|
712
|
+
"--dsw-alias-label-quaternary": "rgba(0,0,0,0.25)",
|
|
661
713
|
"--dsw-alias-brand-primary": hsl(h(0), s(.05), Math.min(l(-.18), .45)),
|
|
662
714
|
"--dsw-alias-brand-text": "#fff",
|
|
663
715
|
"--dsw-alias-button-primary-hover": hsl(h(0), s(.05), Math.min(l(-.12), .5)),
|
|
@@ -1489,14 +1541,14 @@ window.__ModuleLoader__.load({
|
|
|
1489
1541
|
for (const name of appliedTokenNames) document.body.style.removeProperty(name);
|
|
1490
1542
|
appliedTokenNames = [];
|
|
1491
1543
|
}
|
|
1492
|
-
/** Label tokens flipped by the generated-background brightness verdict.
|
|
1544
|
+
/** Label tokens flipped by the generated-background brightness verdict. The
|
|
1545
|
+
* faint tiers (caption/dimmed) are deliberately NOT flipped: they back
|
|
1546
|
+
* placeholder/hint text, which must stay visibly weaker than real input even
|
|
1547
|
+
* when the wallpaper brightness flips the main label direction. */
|
|
1493
1548
|
const LABEL_TOKENS = [
|
|
1494
1549
|
"--dsw-alias-label-primary",
|
|
1495
1550
|
"--dsw-alias-label-secondary",
|
|
1496
|
-
"--dsw-alias-label-tertiary"
|
|
1497
|
-
"--dsw-alias-label-caption",
|
|
1498
|
-
"--dsw-alias-label-dimmed",
|
|
1499
|
-
"--dsw-alias-label-quaternary"
|
|
1551
|
+
"--dsw-alias-label-tertiary"
|
|
1500
1552
|
];
|
|
1501
1553
|
const OPACITY_TOKEN_GROUPS = [
|
|
1502
1554
|
{
|
|
@@ -1980,6 +2032,42 @@ window.__ModuleLoader__.load({
|
|
|
1980
2032
|
partsObserver?.disconnect();
|
|
1981
2033
|
partsObserver = null;
|
|
1982
2034
|
}
|
|
2035
|
+
let themeObserver = null;
|
|
2036
|
+
let themeRaf = 0;
|
|
2037
|
+
function reassertScheme() {
|
|
2038
|
+
const [, , l] = rColor();
|
|
2039
|
+
if (rBgDark() ?? l < .55) document.body.setAttribute("data-ds-dark-theme", "dsh-any-background");
|
|
2040
|
+
else document.body.removeAttribute("data-ds-dark-theme");
|
|
2041
|
+
applyCustomTokens(rOps());
|
|
2042
|
+
}
|
|
2043
|
+
/** Re-assert the plugin's forced scheme whenever the host strips it, so a
|
|
2044
|
+
* refresh / cold-load / set-change never flashes a light frame. Returns a
|
|
2045
|
+
* disposer for teardown. */
|
|
2046
|
+
function watchThemeResets() {
|
|
2047
|
+
if (themeObserver !== null || typeof MutationObserver === "undefined") return () => void 0;
|
|
2048
|
+
themeObserver = new MutationObserver(() => {
|
|
2049
|
+
if (document.body.getAttribute("data-ds-dark-theme") === "dsh-any-background") return;
|
|
2050
|
+
if (!(rHasColor() || rBgDark() !== null)) return;
|
|
2051
|
+
if (themeRaf !== 0) return;
|
|
2052
|
+
themeRaf = requestAnimationFrame(() => {
|
|
2053
|
+
themeRaf = 0;
|
|
2054
|
+
if (document.body.getAttribute("data-ds-dark-theme") === "dsh-any-background") return;
|
|
2055
|
+
reassertScheme();
|
|
2056
|
+
});
|
|
2057
|
+
});
|
|
2058
|
+
themeObserver.observe(document.body, {
|
|
2059
|
+
attributes: true,
|
|
2060
|
+
attributeFilter: ["data-ds-dark-theme"]
|
|
2061
|
+
});
|
|
2062
|
+
themeObserver.observe(document.documentElement, {
|
|
2063
|
+
attributes: true,
|
|
2064
|
+
attributeFilter: ["data-ds-dark-theme"]
|
|
2065
|
+
});
|
|
2066
|
+
return () => {
|
|
2067
|
+
themeObserver?.disconnect();
|
|
2068
|
+
themeObserver = null;
|
|
2069
|
+
};
|
|
2070
|
+
}
|
|
1983
2071
|
function ensureWpContainer() {
|
|
1984
2072
|
if (!wpEl || !document.body.contains(wpEl)) {
|
|
1985
2073
|
wpEl = document.createElement("div");
|
|
@@ -4749,7 +4837,7 @@ window.__ModuleLoader__.load({
|
|
|
4749
4837
|
}, "dsh-any-background: skin dispose");
|
|
4750
4838
|
const styleEl = document.createElement("style");
|
|
4751
4839
|
styleEl.dataset.plugin = "dsh-any-background";
|
|
4752
|
-
styleEl.textContent = `body[data-ds-dark-theme="dsh-any-background"]::before{content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse 80% 60% at 50% 0%,rgba(255,255,255,0.03) 0%,transparent 60%)}${SETTINGS_STYLE_RULE}${TRAJECTORY_STYLE_RULE}${INPUT_BLUR_RULE}`;
|
|
4840
|
+
styleEl.textContent = `body[data-ds-dark-theme="dsh-any-background"]::before{content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse 80% 60% at 50% 0%,rgba(255,255,255,0.03) 0%,transparent 60%)}${SETTINGS_STYLE_RULE}${TRAJECTORY_STYLE_RULE}${INPUT_BLUR_RULE}[data-composer-card] textarea::placeholder,[data-composer-card] input::placeholder,[data-composer-card] [contenteditable]::placeholder,[data-cordis-panel] input::placeholder,[data-cordis-panel] textarea::placeholder,.dab-input::placeholder,.dab-input textarea::placeholder,.dab-input input::placeholder{color:var(--dsh-any-placeholder,var(--dsw-alias-label-caption,#8a8f98))!important;font-style:italic;opacity:.85}`;
|
|
4753
4841
|
document.head.appendChild(styleEl);
|
|
4754
4842
|
ctx.effect(() => () => {
|
|
4755
4843
|
styleEl?.parentNode?.removeChild(styleEl);
|
|
@@ -4760,7 +4848,7 @@ window.__ModuleLoader__.load({
|
|
|
4760
4848
|
let colorRev = 0;
|
|
4761
4849
|
let bgRev = 0;
|
|
4762
4850
|
const colorTimerRef = { current: null };
|
|
4763
|
-
const store =
|
|
4851
|
+
const store = defineStore({
|
|
4764
4852
|
init: () => ({
|
|
4765
4853
|
url: null,
|
|
4766
4854
|
rev: -1,
|
|
@@ -5214,6 +5302,10 @@ window.__ModuleLoader__.load({
|
|
|
5214
5302
|
ctx.effect(() => () => {
|
|
5215
5303
|
window.clearInterval(watchdogId);
|
|
5216
5304
|
}, "dsh-any-background: theme watchdog");
|
|
5305
|
+
const disposeThemeResets = watchThemeResets();
|
|
5306
|
+
ctx.effect(() => () => {
|
|
5307
|
+
disposeThemeResets();
|
|
5308
|
+
}, "dsh-any-background: theme resets watch");
|
|
5217
5309
|
const onPageHide = () => flushSave();
|
|
5218
5310
|
window.addEventListener("pagehide", onPageHide);
|
|
5219
5311
|
ctx.effect(() => () => window.removeEventListener("pagehide", onPageHide), "dsh-any-background: pagehide flush");
|