@winstonlu/dsh-eva-skin 0.0.0-stage → 1.0.69
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 +112 -2
- package/cordis.patch.yml +4 -0
- package/icon.svg +1 -0
- package/lib/client.js +1390 -0
- package/lib/index.js +13 -0
- package/locale/en.json +6 -0
- package/locale/zh.json +6 -0
- package/package.json +49 -4
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 卢问底
|
|
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,113 @@
|
|
|
1
|
-
#
|
|
1
|
+
# dsh-eva-skin
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
给 **DeepSeek Harness Web UI** 换一套 EVA 赛璐璐(cel-shade)皮:墨线描边、无模糊硬投影、扫描线、会话状态轨。
|
|
4
|
+
|
|
5
|
+
纯客户端插件 —— 不渲染组件、不注册服务、不碰官方类名,只往 `<head>` 里放一张样式表,靠覆盖官方 `--dsw-*` 设计令牌生效。官方改版、换类名、加页面,最多是一条装饰失效,不会把界面改坏。
|
|
6
|
+
|
|
7
|
+
> EVA cel-shade skin for the DeepSeek Harness Web GUI. Client-only CSS token overrides: ink outlines, hard shadows, scanlines, session status rails.
|
|
8
|
+
|
|
9
|
+
## 截图
|
|
10
|
+
|
|
11
|
+
两张图都是从运行中的真实界面导出的 DOM 重新渲染的:界面原样、皮肤原样,只把会话名、工作区、用户名换成了占位内容,并隐去了头像与挂件气泡。
|
|
12
|
+
|
|
13
|
+

|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
| 细节 | 说明 |
|
|
17
|
+
| --- | --- |
|
|
18
|
+
|  | 品牌徽记与 HARNESS 铭牌、会话状态灯、AT 力场思考态、方形头像、右侧跳转条、输入区 |
|
|
19
|
+
|
|
20
|
+
## 效果
|
|
21
|
+
|
|
22
|
+
| 位置 | 变化 |
|
|
23
|
+
| --- | --- |
|
|
24
|
+
| 配色 | 初号机紫 `#7B4BD8`、零号机蓝 `#2E6BE6`、二号机红 `#E8322D`、荧光绿 `#B4FF39`、警示黄 `#FFD400`,墨黑描边 `#04040A` |
|
|
25
|
+
| 形状 | 方角 + 墨线 + 无模糊硬投影(`box-shadow: n n 0`) |
|
|
26
|
+
| 质感 | 全屏 CRT 扫描线(可关)、选中标签页改墨底荧光字 |
|
|
27
|
+
| 左栏会话行 | 3px 状态轨:绿=运行中(呼吸)、黄=已完成、红=等你回复 |
|
|
28
|
+
| 右侧跳转条 | 荧光绿刻度,悬停变亮,当前条为警示黄 |
|
|
29
|
+
| 底图 | 可选一张压暗的背景图(默认关闭,见「自定义底图」) |
|
|
30
|
+
|
|
31
|
+
## 安装
|
|
32
|
+
|
|
33
|
+
插件市场里搜 `dsh-eva-skin`(包名 `@winstonlu/dsh-eva-skin`),或让 agent 直接装:
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
plugin_manager install_bundle @winstonlu/dsh-eva-skin
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
从 git 装(没有 npm 包时):
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
plugin_manager install_bundle git+https://github.com/luwendi-qq/dsh-eva-skin#<commit>
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
本地开发装法:
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
plugin_manager install_bundle file:/绝对路径/winstonlu-dsh-eva-skin-1.0.0.tgz
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
装完在插件页启用,页面刷新一次即可看到(纯 CSS 改动只需刷新,不必重启)。
|
|
52
|
+
|
|
53
|
+
## 配置
|
|
54
|
+
|
|
55
|
+
在 profile 的 `cordis.patch.yml` 里给 `dsh-eva-skin` 这一行加 config(全部可选):
|
|
56
|
+
|
|
57
|
+
```yaml
|
|
58
|
+
- id: dsh-eva-skin
|
|
59
|
+
config:
|
|
60
|
+
scanlines: true # 扫描线,默认 true
|
|
61
|
+
hardShadow: true # 无模糊硬投影,默认 true
|
|
62
|
+
forceDark: false # 强制暗色,默认 false
|
|
63
|
+
backdrop: false # 背景图,默认 false(见下)
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
> **坑位提醒(写给插件作者)**:配置要从 `apply(ctx, config)` 的第二个参数拿。
|
|
67
|
+
> cordis 里 `config` 是服务,没在 `inject` 里声明就读 `ctx.config` 会抛
|
|
68
|
+
> `cannot get property "config" without inject`;apply 抛错后条目永远停在
|
|
69
|
+
> `loading`,而桌面端启动审计把非 active 条目当致命错误,直接重启 app。
|
|
70
|
+
|
|
71
|
+
## 自定义底图
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
./tools/set-background.sh 你的图.png 0.95 # 第二个参数是亮度,省略默认 0.62
|
|
75
|
+
# 输出 ~/.dsh/backups/pkgs/dsh-eva-skin-<version>.tgz
|
|
76
|
+
plugin_manager install_bundle file:~/.dsh/backups/pkgs/dsh-eva-skin-<version>.tgz
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
脚本会把图压到 1536 宽、转 WebP q74 内嵌进 `lib/client.js`,再打进包里。
|
|
80
|
+
不想内嵌图片(比如要发布到公共 npm)就先跑 `./tools/strip-background.sh`,
|
|
81
|
+
它把 data URI 换回纯 CSS 渐变底,包体从 ~130KB 掉到 ~25KB。
|
|
82
|
+
|
|
83
|
+
包内默认携带一张本地 AI 生成的同人风格插画(`lib/client.js` 里内嵌 WebP);想换图就再跑一次这个脚本,想彻底去掉图就跑 `./tools/strip-background.sh`。
|
|
84
|
+
|
|
85
|
+
## 卸载
|
|
86
|
+
|
|
87
|
+
插件页点卸载,或:
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
plugin_manager remove_bundle @winstonlu/dsh-eva-skin
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
`dispose()` 会移除样式表、开关属性、底图层和角标,不残留。
|
|
94
|
+
|
|
95
|
+
## 兼容性
|
|
96
|
+
|
|
97
|
+
- 需要 DSH `>=0.2.0-rc.2`(`engines.dsh`)
|
|
98
|
+
- 仅 Web 客户端(`dsh.client.platform: "web"`),桌面端与浏览器端同一份 UI
|
|
99
|
+
- 不依赖 CSS-in-JS 哈希类名;只用到侧栏会话行的 `data-row-key^="session:"` 与跳转条的官方语义锚点
|
|
100
|
+
|
|
101
|
+
## 开发
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
node --check lib/client.js
|
|
105
|
+
node ~/.dsh/dsh-runtimes/dsh-primary-runtime/dependencies/pnpm/bin/pnpm.cjs pack --pack-destination ~/.dsh/backups/pkgs
|
|
106
|
+
plugin_manager install_bundle file:$HOME/.dsh/backups/pkgs/winstonlu-dsh-eva-skin-<ver>.tgz
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
改完刷新页面(`unlag` 刷新按钮,或在右键菜单里允许 agent 自己刷新)。
|
|
110
|
+
|
|
111
|
+
## License
|
|
112
|
+
|
|
113
|
+
MIT。EVA / 新世纪福音战士及其角色与机体版权归 khara / 庵野秀明所有,本项目只是配色致敬,不包含任何官方素材。
|
package/cordis.patch.yml
ADDED
package/icon.svg
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 160 119" width="160" height="119"><image href="data:image/webp;base64,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" width="160" height="119"/></svg>
|