dsh-tide-theme 0.0.0-stage → 0.4.0
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/LICENSE +21 -0
- package/README.md +246 -2
- package/cordis.patch.yml +11 -0
- package/docs/images/banner-dark.png +0 -0
- package/docs/images/banner-light.png +0 -0
- package/docs/images/current-delegation-dark-native.png +0 -0
- package/docs/images/current-delegation-dark.png +0 -0
- package/docs/images/current-delegation-light-native.png +0 -0
- package/docs/images/current-delegation-light.png +0 -0
- package/docs/images/current-dock-dark-native.png +0 -0
- package/docs/images/current-dock-dark.png +0 -0
- package/docs/images/current-dock-light-native.png +0 -0
- package/docs/images/current-dock-light.png +0 -0
- package/docs/images/current-model-dark.png +0 -0
- package/docs/images/current-model-light.png +0 -0
- package/docs/images/current-settings-dark.png +0 -0
- package/docs/images/current-settings-light.png +0 -0
- package/docs/images/current-sidebar-dark.png +0 -0
- package/docs/images/current-sidebar-light.png +0 -0
- package/docs/images/icon.png +0 -0
- package/icon.png +0 -0
- package/lib/client.js +6286 -0
- package/lib/index.d.ts +13 -0
- package/lib/index.js +15 -0
- package/package.json +93 -4
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 zdt3476
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,247 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 潮汐玻璃 · Tide Glass
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img src="docs/images/icon.png" width="96" height="96" alt="Tide Glass icon" style="border-radius: 22px; box-shadow: 0 6px 20px rgba(0,0,0,0.15);" />
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<strong>冰蓝玻璃、真实指标、零噪音 —— 给 DeepSeek Harness 的主题与工作流增强套件</strong>
|
|
9
|
+
</p>
|
|
10
|
+
|
|
11
|
+
<p align="center">
|
|
12
|
+
<a href="https://www.npmjs.com/package/dsh-tide-theme"><img src="https://img.shields.io/npm/v/dsh-tide-theme?color=2563eb&label=npm" alt="npm version" /></a>
|
|
13
|
+
<a href="https://github.com/awesome-dsh-plugin/awesome-dsh-plugin"><img src="https://img.shields.io/badge/dsh--market-verified-16a34a" alt="dsh market" /></a>
|
|
14
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="license" /></a>
|
|
15
|
+
</p>
|
|
16
|
+
|
|
17
|
+
> **关于名字**:本插件原名 `dsh-simplify-theme`(极简主题),主题演化为冰蓝玻璃材质后更名为 **`dsh-tide-theme`**(潮汐玻璃 · Tide Glass)。
|
|
18
|
+
> 如果你是从旧包升级过来的,请先卸载旧包再安装新包;本地配置需重新设置一次(存储键已随包名更新)。
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
<p align="center">
|
|
23
|
+
<picture>
|
|
24
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/images/banner-dark.png" />
|
|
25
|
+
<img src="docs/images/banner-light.png" alt="潮汐玻璃功能总览" style="border-radius: 12px; box-shadow: 0 16px 40px rgba(0,0,0,0.25); width: 100%; max-width: 960px;" />
|
|
26
|
+
</picture>
|
|
27
|
+
</p>
|
|
28
|
+
|
|
29
|
+
Tide Glass 为 DSH 提供冰蓝玻璃表面、冷灰文字与清晰的信息层级,并保留宿主的对话、导航及分屏结构。
|
|
30
|
+
|
|
31
|
+
本文的功能截图由插件组件在隔离浏览器中使用演示数据渲染,用于展示组件样式;它们不代表当前用户会话或完整 DSH 应用的实际界面。真实宿主的布局与交互另外通过宿主结构契约测试验证。
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## 主题材质开关
|
|
36
|
+
|
|
37
|
+
底栏 HUD、用量看板与代委派图这三个自绘组件,**统一跟随插件设置里的主题材质开关**:
|
|
38
|
+
|
|
39
|
+
| 开关 | 三个组件的外观 | 预览 |
|
|
40
|
+
|---|---|---|
|
|
41
|
+
| **开启**(默认) | 套用潮汐玻璃材质:径向微光、定向双层投影、0.5px 发丝描边、彩色图标与连线辉光 | 见下方各功能的「玻璃」图 |
|
|
42
|
+
| **关闭** | 全部回落到 DSH 原生 token 表面(`--dsw-specific-menu` / `--dsw-alias-bg-layer-*` / `--dsw-elevation-*`),与宿主外观完全一致 | 见下方各功能的「原生」图 |
|
|
43
|
+
|
|
44
|
+
开关位于 **设置 → 插件 → 潮汐玻璃主题 → 潮汐玻璃主题材质**,实时生效、无需重启。明暗两套配色各自成立,切换深浅色不会冷暖混用。
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## 核心特性一览
|
|
49
|
+
|
|
50
|
+
### 1. 底栏性能 HUD 与用量看板
|
|
51
|
+
|
|
52
|
+
取代原生埋在弹窗里的统计胶囊,把关键运行指标固定在任何时候都看得见的位置:
|
|
53
|
+
|
|
54
|
+
<p align="center">
|
|
55
|
+
<picture>
|
|
56
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/images/current-dock-dark.png" />
|
|
57
|
+
<img src="docs/images/current-dock-light.png" alt="底栏性能 HUD 与展开的用量看板(玻璃材质)" style="border-radius: 10px; max-width: 620px; box-shadow: 0 8px 30px rgba(0,0,0,0.35);" />
|
|
58
|
+
</picture>
|
|
59
|
+
</p>
|
|
60
|
+
|
|
61
|
+
<details>
|
|
62
|
+
<summary>对比:关闭主题材质后的原生外观</summary>
|
|
63
|
+
|
|
64
|
+
<p align="center">
|
|
65
|
+
<picture>
|
|
66
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/images/current-dock-dark-native.png" />
|
|
67
|
+
<img src="docs/images/current-dock-light-native.png" alt="同一组件的原生外观" style="border-radius: 10px; max-width: 620px;" />
|
|
68
|
+
</picture>
|
|
69
|
+
</p>
|
|
70
|
+
</details>
|
|
71
|
+
|
|
72
|
+
- **单行常驻 HUD**:会话规模、上下文容量、真实端到端 TPS、缓存命中率、模型累计耗时五项一行排布,形制对齐宿主原生 TodoPanel(36px 高、`radius-lg` 圆角)。窄屏按 760px / 640px 两级断点自动收窄,绝不截断读数。
|
|
73
|
+
- **严格计入首字延迟(TTFT)的真实 TPS**:原生口径只算纯解码时间(会出现 200+ t/s 的虚高值);本插件把网络往返与推理思考一并计入,还原真实生成速率。
|
|
74
|
+
- **上下文容量三档语义色**:≤50% 安全绿、50–75% 提醒橙、>75% 警戒红,进度条与徽章同步换色。
|
|
75
|
+
- **上下文压缩即时刷新**:接入 `projectedTokens` 与 `contextBreakdown`,压缩发生后容量读数立刻下降,不会停在旧采样值。
|
|
76
|
+
- **点击展开用量看板**:系统/工具/消息三段式容量条、四张性能 KPI 卡、Token 计费构成表与会话耗时拆解。浮窗**水平居中于 HUD、底边严丝合缝贴住 HUD 顶边**,空间不足时自动翻转到下方或贴视口底。
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
### 2. Agent Graph 子代理拓扑
|
|
81
|
+
|
|
82
|
+
无论工作步骤是否被宿主折叠收起,子代理的派发记录始终常驻可见:
|
|
83
|
+
|
|
84
|
+
<p align="center">
|
|
85
|
+
<picture>
|
|
86
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/images/current-delegation-dark.png" />
|
|
87
|
+
<img src="docs/images/current-delegation-light.png" alt="Agent Graph 子代理拓扑(玻璃材质)" style="border-radius: 10px; max-width: 760px; box-shadow: 0 8px 30px rgba(0,0,0,0.35);" />
|
|
88
|
+
</picture>
|
|
89
|
+
</p>
|
|
90
|
+
|
|
91
|
+
<details>
|
|
92
|
+
<summary>对比:关闭主题材质后的原生外观</summary>
|
|
93
|
+
|
|
94
|
+
<p align="center">
|
|
95
|
+
<picture>
|
|
96
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/images/current-delegation-dark-native.png" />
|
|
97
|
+
<img src="docs/images/current-delegation-light-native.png" alt="同一组件的原生外观" style="border-radius: 10px; max-width: 760px;" />
|
|
98
|
+
</picture>
|
|
99
|
+
</p>
|
|
100
|
+
</details>
|
|
101
|
+
|
|
102
|
+
- **弧形扇出连线**:SVG 按真实几何绘制——外侧分支从枢纽侧缘引出,内侧从底部引出,以贝塞尔曲线落到卡片顶边;有子代理运行时虚线流动并带蓝色辉光。卡片换行时只画主干,避免连线穿过上一行卡片。
|
|
103
|
+
- **横向 Agent 卡片阵列**:网格按可用容器宽度排布,每张卡片保留标题、模型、状态与实际步骤数;步骤数不代表已完成的任务清单。
|
|
104
|
+
- **四色职能映射**:按标题关键词把子代理归到 Research(紫)/ Code(绿)/ Analyze(橙)/ 其它(蓝),图标、渐变底与发光描边同步换色;关闭主题材质后统一回落为中性图标。
|
|
105
|
+
- **多轮次递增时序防冲突**:会话级单调递增编号(第 1 次委派、第 2 次委派…),配合行级粘性绑定(`claimedByRow`),杜绝跨轮次编号重置或盗用旧图。
|
|
106
|
+
- **宁可缺省也不张冠李戴**:无法确定某个工具行对应哪个子会话时**不显示**该节点(失败或仍在排队的 `spawn_teammate` 调用不会凭空占位),而不是按顺序猜一个。未匹配的错误本身仍原样留在原生工具行里。
|
|
107
|
+
- **交互**:点击卡片打开对应子会话;支持取消的运行中卡片提供独立「停止」按钮,停止操作不触发会话跳转。
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
### 3. 侧栏独立小节置顶
|
|
112
|
+
|
|
113
|
+
告别工作区文件夹混杂堆叠,用小节与发丝分割线重塑清晰层级:
|
|
114
|
+
|
|
115
|
+
<p align="center">
|
|
116
|
+
<picture>
|
|
117
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/images/current-sidebar-dark.png" />
|
|
118
|
+
<img src="docs/images/current-sidebar-light.png" alt="侧栏独立小节置顶" style="border-radius: 10px; max-width: 320px; box-shadow: 0 8px 30px rgba(0,0,0,0.35);" />
|
|
119
|
+
</picture>
|
|
120
|
+
</p>
|
|
121
|
+
|
|
122
|
+
- **小节标头**:置顶与普通文件夹分立为 `📌 置顶 (N)` 与 `工作区 (M)` 两小节,标头挂在工作区列表容器内部(不会漂到搜索框上方)。
|
|
123
|
+
- **金星标识**:置顶项带金色 `★` 前缀与投影,与普通项之间用发丝虚线隔开。
|
|
124
|
+
- **选中发光侧条**:当前工作区左侧出现 3px 品牌蓝发光竖条。
|
|
125
|
+
- **未归档 / 归档分页**:双标签页切换活跃状态,与宿主视图状态双向同步。
|
|
126
|
+
- **实时筛选框**:即输即搜,命中会话时保留其工作区组头。
|
|
127
|
+
- **数量上限独立可调**:置顶与未置顶的折叠上限分别配置(置顶设为 0 表示不限,全部常驻)。
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
### 4. 插件页可视化配置面板
|
|
132
|
+
|
|
133
|
+
所有开关与步进器直接挂在 DSH 插件设置页,改动即时保存到 `localStorage`,无需重启或手改配置文件:
|
|
134
|
+
|
|
135
|
+
<p align="center">
|
|
136
|
+
<picture>
|
|
137
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/images/current-settings-dark.png" />
|
|
138
|
+
<img src="docs/images/current-settings-light.png" alt="插件可视化配置面板" style="border-radius: 10px; max-width: 640px; box-shadow: 0 8px 30px rgba(0,0,0,0.35);" />
|
|
139
|
+
</picture>
|
|
140
|
+
</p>
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
### 5. 输入区控件与体验细节
|
|
145
|
+
|
|
146
|
+
- **模型与思考等级控件**:输入框左下方提供供应商分类的模型面板与平滑思考等级(Reasoning Effort)滑块。列表按供应商分组、带粘性组头,模型名后标注可用档位数:
|
|
147
|
+
|
|
148
|
+
<p align="center">
|
|
149
|
+
<picture>
|
|
150
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/images/current-model-dark.png" />
|
|
151
|
+
<img src="docs/images/current-model-light.png" alt="模型选择面板(演示目录)" style="border-radius: 10px; max-width: 680px; box-shadow: 0 8px 30px rgba(0,0,0,0.35);" />
|
|
152
|
+
</picture>
|
|
153
|
+
</p>
|
|
154
|
+
|
|
155
|
+
- **权限预设切换**:输入框右下方一行切换只读 / 可写 / 全放行等权限预设。
|
|
156
|
+
- **每轮耗时徽标**:每轮回复的操作栏尾部常驻该轮端到端实际耗时。
|
|
157
|
+
- **克制的动效**:所有动画尊重 `prefers-reduced-motion`,减弱动态时停止脉冲与流动。
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## 安装
|
|
162
|
+
|
|
163
|
+
### 方式 1:通过官方插件市场(推荐)
|
|
164
|
+
|
|
165
|
+
在 DSH 插件市场搜索 **`dsh-tide-theme`**(显示名「潮汐玻璃」),点击安装后重启客户端。
|
|
166
|
+
|
|
167
|
+
### 方式 2:通过命令行安装
|
|
168
|
+
|
|
169
|
+
```sh
|
|
170
|
+
# npm
|
|
171
|
+
dsh plugin --profile desktop add dsh-tide-theme
|
|
172
|
+
|
|
173
|
+
# GitHub 源码
|
|
174
|
+
dsh plugin --profile desktop add git+https://github.com/zdt3476/dsh-simplify-theme.git
|
|
175
|
+
|
|
176
|
+
# 本地开发软链(link)
|
|
177
|
+
dsh plugin --profile desktop add link:"$PWD"
|
|
178
|
+
|
|
179
|
+
# GitHub Release 预构建包
|
|
180
|
+
dsh plugin --profile desktop add https://github.com/zdt3476/dsh-simplify-theme/releases/download/v0.4.0/dsh-tide-theme-0.4.0.tgz
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
安装后在 **设置 → 插件** 中启用,并按下 `Cmd/Ctrl + R` 重载客户端。
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## 本地开发与测试
|
|
188
|
+
|
|
189
|
+
```sh
|
|
190
|
+
pnpm install
|
|
191
|
+
pnpm test # TypeScript 类型检查 + Vitest 单元测试 (103 tests)
|
|
192
|
+
pnpm build # 编译产出 lib/index.js (Host) 与 lib/client.js (Client)
|
|
193
|
+
pnpm check # test + build 全量流水线检查
|
|
194
|
+
|
|
195
|
+
# 浏览器契约测试(真实 Chromium,45 项)
|
|
196
|
+
# 注意:必须逐个列出测试文件。tests/client/ 下还有 dock-stats-fixture.mjs 等夹具,
|
|
197
|
+
# 用 glob 会把夹具当成测试文件从而误报失败。
|
|
198
|
+
PLAYWRIGHT_MODULE=<playwright/index.mjs> CHROMIUM_EXECUTABLE=<chromium> \
|
|
199
|
+
node --test --test-concurrency=1 \
|
|
200
|
+
tests/client/dock-stats-browser.mjs \
|
|
201
|
+
tests/client/host-layout-browser.mjs \
|
|
202
|
+
tests/client/plugin-settings-browser.mjs \
|
|
203
|
+
tests/client/theme-reference-browser.mjs \
|
|
204
|
+
tests/client/sidebar-section-browser.mjs \
|
|
205
|
+
tests/client/theme-lifecycle-browser.mjs \
|
|
206
|
+
tests/client/delegation-browser.mjs
|
|
207
|
+
|
|
208
|
+
# 重出 README / 市场画廊截图:用插件组件在真实浏览器里渲染,不是手绘。
|
|
209
|
+
# 一次生成「明暗 × 主题开关」四态共 16 张截图(加上应用图标共 17 张参考图)。
|
|
210
|
+
PLAYWRIGHT_MODULE=<playwright/index.mjs> node scripts/capture-docs-screenshots.mjs
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### 截图命名约定
|
|
214
|
+
|
|
215
|
+
| 文件名 | 含义 |
|
|
216
|
+
|---|---|
|
|
217
|
+
| `<name>-dark.png` / `<name>-light.png` | 暗色 / 亮色,**主题材质开启** |
|
|
218
|
+
| `<name>-dark-native.png` / `<name>-light-native.png` | 暗色 / 亮色,**主题材质关闭**(回落 DSH 原生外观) |
|
|
219
|
+
|
|
220
|
+
### 目录结构
|
|
221
|
+
|
|
222
|
+
```
|
|
223
|
+
├── src/
|
|
224
|
+
│ ├── client/
|
|
225
|
+
│ │ ├── composer-stats.ts # 容量占用、真实 TPS、缓存命中算法模型
|
|
226
|
+
│ │ ├── dock-stats.ts # 底栏单行 HUD 与用量看板浮窗
|
|
227
|
+
│ │ ├── delegation-panel.ts # Agent Graph 拓扑、母线连线与四色卡片映射
|
|
228
|
+
│ │ ├── popup.ts # 浮窗定位(居中 + 边框贴合 + 边界翻转)
|
|
229
|
+
│ │ ├── sidebar-groups.ts # 侧栏独立小节标头、置顶排序与数量控制
|
|
230
|
+
│ │ ├── sidebar-tabs.ts # 侧栏未归档/归档分页与筛选框
|
|
231
|
+
│ │ ├── plugin-config.ts # 插件全局配置数据模型与持久化驱动
|
|
232
|
+
│ │ ├── plugin-settings.ts # 插件页可视化设置面板
|
|
233
|
+
│ │ ├── tokens.ts # 潮汐玻璃 Token 覆盖唯一定义(亮/暗成对)
|
|
234
|
+
│ │ └── styles.ts # 全部组件运行期样式表 + 主题材质门控层
|
|
235
|
+
│ └── host/
|
|
236
|
+
│ └── index.ts # Host 插件规范声明
|
|
237
|
+
├── docs/images/ # 真实渲染的明暗 × 主题开关四态截图
|
|
238
|
+
├── scripts/capture-docs-screenshots.mjs # 用插件组件重出全部截图
|
|
239
|
+
├── tests/client/native-tokens.json # 宿主原生 token 基准(用于关态截图与契约比对)
|
|
240
|
+
└── icon.png # 256x256 专属应用图标
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
## 开源许可
|
|
246
|
+
|
|
247
|
+
[MIT License](LICENSE) © 2026 zdt3476
|
package/cordis.patch.yml
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# 注册潮汐玻璃主题插件。
|
|
2
|
+
#
|
|
3
|
+
# Host 侧只占一个 Loader 条目,没有运行时行为;实际效果全部由 Client 侧
|
|
4
|
+
# 通过 `ctx.theme.overrideTokens()` 叠一层 token 实现,因此整套皮肤会跟随
|
|
5
|
+
# 用户选择的 light / dark / system,而不是新增一个独立配色。
|
|
6
|
+
#
|
|
7
|
+
# 想临时关掉皮肤,直接在插件管理里禁用本插件即可;卸载 token 层后界面
|
|
8
|
+
# 会立即还原成内置配色,不残留任何偏好设置。
|
|
9
|
+
- insert:
|
|
10
|
+
- id: tide-theme
|
|
11
|
+
name: dsh-tide-theme
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/icon.png
ADDED
|
Binary file
|