dsh-ui-tweaks 0.16.0 → 0.16.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.en.md +9 -11
- package/README.md +10 -12
- package/assets/archive.png +0 -0
- package/assets/git.png +0 -0
- package/assets/gitdiff.png +0 -0
- package/assets/mcp.png +0 -0
- package/assets/settings.png +0 -0
- package/assets/terminal.png +0 -0
- package/lib/client.js +69 -56
- package/lib/client.js.map +1 -1
- package/lib/types/client/index.d.ts +2 -4
- package/lib/types/client/index.d.ts.map +1 -1
- package/package.json +41 -41
- package/assets/branch.png +0 -0
package/README.en.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# dsh-ui-tweaks
|
|
2
2
|
|
|
3
|
-
> **Dependency**: currently targets **DSH v0.1.5-alpha.
|
|
3
|
+
> **Dependency**: currently targets **DSH v0.1.5-alpha.2**.
|
|
4
4
|
|
|
5
5
|
A [DeepSeek Harness](https://deepseek-harness.github.io/deepseek-harness/) (DSH) web plugin that live-tunes the conversation UI from the Settings panel.
|
|
6
6
|
|
|
@@ -8,19 +8,17 @@ A [DeepSeek Harness](https://deepseek-harness.github.io/deepseek-harness/) (DSH)
|
|
|
8
8
|
|
|
9
9
|
| | |
|
|
10
10
|
|---|---|
|
|
11
|
-
|  |  | |
|
|
18
|
-
| **MCP manager**: an MCP page in the Settings dialog listing configured MCP servers with live status and full management (Add / Edit / Enable / Disable / Delete / Restart) | |
|
|
11
|
+
|  |  |
|
|
12
|
+
| **Settings panel**: code font size / neon-poster theme / two-decimal cache hit / web search / timeline / GitBar toggles, with dedicated **Archive**, **MCP** and **Search** pages in the left nav | **Branch panel**: pops down from the branch chip in the session header — local / remote branch lists, click to switch; pull button (fast-forward only) in the header, new-branch field at the bottom, plus a **commit graph** dialog (colored SVG fork/merge lanes) and **Tag** management |
|
|
13
|
+
|  |  |
|
|
14
|
+
| **Code diff**: the code-diff tab in the right sidebar — file list (per-file checkboxes for partial commits) + per-file diff (changed hunks only by default, "Full file" toggle at the top right), with a commit area at the bottom for the message, an optional Tag, and Commit / Commit & push | **Terminal**: a real PTY terminal in the sidebar (xterm.js over WebSocket) — full interactivity |
|
|
15
|
+
|  |  |
|
|
16
|
+
| **Archive manager**: an Archive page in the Settings dialog listing archived sessions (title / workspace / relative time) with per-row Restore / Delete and batch Restore all / Delete all | **MCP manager**: an MCP page in the Settings dialog listing configured MCP servers with live status and tool counts, plus full management (Add / Edit / Enable / Disable / Delete / Restart) |
|
|
19
17
|
|
|
20
18
|
## Features
|
|
21
19
|
|
|
22
20
|
- **Code font size (px)** — absolute 8–32px, default 13 (DSH's stock code-block size at a 16px body); applies to code blocks, with inline code following proportionally. The legacy percentage (`codeFontScale`) stays compatible and is overridden once a px value is set. Message text keeps DSH's stock sizing.
|
|
23
|
-
- **Theme (single choice in Layout, stock look by default)** — choose `Default` or **Neon
|
|
21
|
+
- **Theme (single choice in Layout, stock look by default)** — choose `Default` or **Neon poster**: a two-scheme poster skin — paper-white with ink-black hairlines in light mode, near-black with light hairlines in dark mode, both with lime highlights and an Anthropic-red action accent (buttons, links and selections follow the theme tokens automatically; code blocks and the composer card get hard offset shadows), applied live. Future skins will be added as further options the same way.
|
|
24
22
|
- **Timeline (single choice in Features)** — one switch, two options:
|
|
25
23
|
- **Native (default)** — DSH's built-in turn rail (the row of small dots beside the messages), the stock behavior.
|
|
26
24
|
- **Web (classic)** — the v0.11 classic right-side navigation rail, restored: vertically centered on the message area's right edge, a thin line strip when collapsed, a 240px panel on hover (message previews + current-position highlight), a per-item detail bubble with timestamp, and **click to jump** (deep history pages in automatically before landing, with a landing self-check); wheel over the rail scrubs clipped items into reach. Data comes from the server-side `dshChatTimeline` session projection (every user message, independent of the browser's loaded window); sessions with fewer than two user messages hide it. On the web option the native turn rail is hidden with one theme-independent CSS rule (matching its `--turn-natural-height` inline variable), so the two never appear together.
|
|
@@ -47,7 +45,7 @@ All changes apply **live** — no reload needed. The same values can be hand-edi
|
|
|
47
45
|
```yaml
|
|
48
46
|
ui-tweaks:
|
|
49
47
|
timelineStyle: web # defaults to native (DSH's built-in turn rail); web is the classic web timeline
|
|
50
|
-
themeStyle: neon-lime # defaults to default (DSH's stock look); neon-lime is the
|
|
48
|
+
themeStyle: neon-lime # defaults to default (DSH's stock look); neon-lime is the neon-poster skin
|
|
51
49
|
gitBarEnabled: true # defaults to false (off); set true to enable GitBar
|
|
52
50
|
archiveManagerEnabled: true # defaults to false (off); set true to show the Archive page
|
|
53
51
|
initCommandEnabled: true # defaults to false (off); set true to register the /init slash command
|
package/README.md
CHANGED
|
@@ -1,26 +1,24 @@
|
|
|
1
1
|
# dsh-ui-tweaks
|
|
2
2
|
|
|
3
|
-
> **依赖版本**:当前依赖 **DSH v0.1.5-alpha.
|
|
3
|
+
> **依赖版本**:当前依赖 **DSH v0.1.5-alpha.2**。
|
|
4
4
|
|
|
5
|
-
[DeepSeek Harness](https://deepseek-harness.github.io/deepseek-harness/)(DSH)Web UI
|
|
5
|
+
[DeepSeek Harness](https://deepseek-harness.github.io/deepseek-harness/)(DSH)Web UI 插件:在设置面板中实时调整对话界面——代码字号、**主题皮肤**(荧光海报风)、**时间线切换**(原生回合导航轨 / 经典网页时间线)、**GitBar**(会话头部的分支胶囊 + 右侧边栏里的终端 / 代码差异标签页),可开关的**归档管理**(设置中的「归档」页面:查看、恢复或彻底删除已归档会话),可开关的**任务提醒**(会话完成或需要交互时,通过标签页标题闪烁 / 系统通知 / 提示音把你唤回来),以及**缓存命中率两位小数**(把输入框下方统计条的缓存命中百分比改写为精确值)。
|
|
6
6
|
|
|
7
7
|
## 预览
|
|
8
8
|
|
|
9
9
|
| | |
|
|
10
10
|
|---|---|
|
|
11
|
-
|  |  | |
|
|
18
|
-
| **MCP 管理**:设置中的「MCP 管理」页面,列出所有配置的 MCP 服务器及其运行状态,支持添加 / 编辑 / 启用停用 / 删除 / 重启 | |
|
|
11
|
+
|  |  |
|
|
12
|
+
| **设置面板**:代码字号 / 荧光海报主题 / 缓存两位小数 / 网络搜索 / 时间线 / Git 状态栏等功能开关,左侧另有「归档」「MCP 管理」「搜索」页面 | **分支面板**:点击会话头部的分支胶囊向下弹出——本地 / 远程分支列表,点击即切换;头部右侧是拉取按钮(只快进),底部可新建分支,菜单里可打开**提交图谱**(彩色 SVG 分叉图)与 **Tag** 管理 |
|
|
13
|
+
|  |  |
|
|
14
|
+
| **代码差异**:右侧边栏里的代码差异标签页——文件列表(逐文件勾选,可部分提交)+ 逐文件 diff(默认只显示有差异的 hunk,右上可切“完整文件”),底部提交区可写提交说明、打 Tag,提交 / 提交并推送 | **终端**:边栏里的真 PTY 终端(xterm.js + WebSocket),完整终端交互 |
|
|
15
|
+
|  |  |
|
|
16
|
+
| **归档管理**:设置中的「归档」页面,列出所有已归档会话(标题 / 工作区 / 相对时间),支持恢复与彻底删除,顶部可全部恢复 / 全部删除 | **MCP 管理**:设置中的「MCP 管理」页面,列出所有配置的 MCP 服务器及其运行状态与工具数,支持添加 / 编辑 / 启用停用 / 删除 / 重启 |
|
|
19
17
|
|
|
20
18
|
## 功能
|
|
21
19
|
|
|
22
20
|
- **代码字号(px)**:绝对值 8–32,默认 13(正文 16 时的 DSH 原生代码块字号);作用于代码块,行内代码按比例跟随——旧版的百分比配置(`codeFontScale`)仍然兼容,一旦设置新的 px 值即以其为准。消息正文保持 DSH 原生字号。
|
|
23
|
-
- **主题(布局区单选,默认即原生外观)**:可选 `默认` 或
|
|
21
|
+
- **主题(布局区单选,默认即原生外观)**:可选 `默认` 或 **荧光海报**——海报风双方案皮肤:浅色模式纸白底 + 黑粗线条,深色模式近黑底 + 浅色粗线条,都配荧光黄高亮 + Anthropic 红点缀(按钮、链接、选中态跟随主题变量自动变色,代码块与输入框卡片带硬阴影贴纸效果),切换即时生效。后续皮肤会以同样方式追加为新选项。
|
|
24
22
|
- **时间线(功能区内单选)**:一个开关两档,选一个:
|
|
25
23
|
- **原生(默认)**:DSH 自带的回合导航轨(消息右侧的小圆点条),即官方默认行为。
|
|
26
24
|
- **网页(经典)**:找回 v0.11 的经典右侧导航轨——消息区右缘垂直居中,收起时是一列细线,悬停展开为 240px 面板(消息预览 + 高亮当前位),悬停单项弹出带时间戳的详情气泡,**点击跳转**到对应消息(深历史会自动连续翻页加载后落点,带落点自校验);滚轮可在轨上直接翻阅被裁剪的条目。数据来自服务端 `dshChatTimeline` 会话投影(全量用户消息,与浏览器已加载窗口无关),少于两条用户消息的会话自动隐藏;切换到网页档时,原生回合导航轨由插件用一条主题无关的 CSS 规则(命中其 `--turn-natural-height` 内联变量)隐藏,两个不会同时出现。
|
|
@@ -50,7 +48,7 @@
|
|
|
50
48
|
```yaml
|
|
51
49
|
ui-tweaks:
|
|
52
50
|
timelineStyle: web # 默认 native(DSH 自带回合导航轨),web 为经典网页时间线
|
|
53
|
-
themeStyle: neon-lime # 默认 default(DSH 原生外观),neon-lime
|
|
51
|
+
themeStyle: neon-lime # 默认 default(DSH 原生外观),neon-lime 为荧光海报皮肤
|
|
54
52
|
gitBarEnabled: true # 默认 false(关闭),设为 true 开启 GitBar
|
|
55
53
|
archiveManagerEnabled: true # 默认 false(关闭),设为 true 开启「归档」页面
|
|
56
54
|
initCommandEnabled: true # 默认 false(关闭),设为 true 开启 /init 斜杠命令
|
package/assets/archive.png
CHANGED
|
Binary file
|
package/assets/git.png
CHANGED
|
Binary file
|
package/assets/gitdiff.png
CHANGED
|
Binary file
|
package/assets/mcp.png
CHANGED
|
Binary file
|
package/assets/settings.png
CHANGED
|
Binary file
|
package/assets/terminal.png
CHANGED
|
Binary file
|
package/lib/client.js
CHANGED
|
@@ -2441,9 +2441,9 @@ const en = {
|
|
|
2441
2441
|
timelineNative: 'Native',
|
|
2442
2442
|
timelineWeb: 'Web (classic)',
|
|
2443
2443
|
theme: 'Theme',
|
|
2444
|
-
themeHint: 'Conversation skin. Default keeps DSH\u2019s stock look; Neon
|
|
2444
|
+
themeHint: 'Conversation skin. Default keeps DSH\u2019s stock look; Neon poster is a two-scheme skin — paper-white with ink-black hairlines in light mode, near-black with light hairlines in dark mode, lime highlights and an Anthropic-red action accent, applied live.',
|
|
2445
2445
|
themeDefault: 'Default',
|
|
2446
|
-
themeNeonLime: 'Neon
|
|
2446
|
+
themeNeonLime: 'Neon poster',
|
|
2447
2447
|
sectionSearch: 'Web search',
|
|
2448
2448
|
searchOn: 'On',
|
|
2449
2449
|
searchOff: 'Off',
|
|
@@ -2649,8 +2649,6 @@ const en = {
|
|
|
2649
2649
|
includeFile: 'Include in commit',
|
|
2650
2650
|
excludeFile: 'Exclude from commit',
|
|
2651
2651
|
terminal: 'Terminal',
|
|
2652
|
-
terminalGuide: 'A persistent shell in the session working directory.',
|
|
2653
|
-
diffGuide: 'Review working-tree changes and commit.',
|
|
2654
2652
|
notRepo: 'Not a git repository.',
|
|
2655
2653
|
termConnecting: 'connecting…',
|
|
2656
2654
|
termExited: 'shell exited',
|
|
@@ -2677,9 +2675,9 @@ const zh = {
|
|
|
2677
2675
|
timelineNative: '原生',
|
|
2678
2676
|
timelineWeb: '网页(经典)',
|
|
2679
2677
|
theme: '主题',
|
|
2680
|
-
themeHint: '对话皮肤。默认保持 DSH
|
|
2678
|
+
themeHint: '对话皮肤。默认保持 DSH 原生外观;荧光海报是海报风双方案——浅色下纸白底黑粗线,深色下近黑底浅粗线,都配荧光黄高亮 + Anthropic 红点缀,切换即时生效。',
|
|
2681
2679
|
themeDefault: '默认',
|
|
2682
|
-
themeNeonLime: '
|
|
2680
|
+
themeNeonLime: '荧光海报',
|
|
2683
2681
|
sectionSearch: '网络搜索',
|
|
2684
2682
|
searchOn: '开',
|
|
2685
2683
|
searchOff: '关',
|
|
@@ -2885,8 +2883,6 @@ const zh = {
|
|
|
2885
2883
|
includeFile: '提交包含此文件',
|
|
2886
2884
|
excludeFile: '提交排除此文件',
|
|
2887
2885
|
terminal: '终端',
|
|
2888
|
-
terminalGuide: '在会话工作目录中打开常驻 shell。',
|
|
2889
|
-
diffGuide: '查看工作区改动并提交。',
|
|
2890
2886
|
notRepo: '当前目录不是 git 仓库。',
|
|
2891
2887
|
termConnecting: '连接中…',
|
|
2892
2888
|
termExited: 'shell 已退出',
|
|
@@ -2957,13 +2953,17 @@ function buildCodeFontCss(codeFontSize) {
|
|
|
2957
2953
|
return `body{${parts.join(';')}}`;
|
|
2958
2954
|
}
|
|
2959
2955
|
/**
|
|
2960
|
-
* Fluorescent
|
|
2961
|
-
* the paper-white poster (lime highlights,
|
|
2956
|
+
* Fluorescent poster skin (Bilibili tech-video look), in two schemes:
|
|
2957
|
+
* the paper-white poster (lime highlights, Anthropic-red action accent) in light
|
|
2962
2958
|
* mode, and its dark twin in dark mode — near-black paper with the same
|
|
2963
|
-
* lime/
|
|
2959
|
+
* lime/red stickers. Popovers and menus (model switcher, open-in-app,
|
|
2964
2960
|
* stat dialogs, context panel) ride the scheme's own paper so they never read
|
|
2965
2961
|
* as a gray slab against the conversation.
|
|
2966
2962
|
*
|
|
2963
|
+
* The internal style id stays `neon-lime`: it is the persisted setting value,
|
|
2964
|
+
* so renaming it would silently reset every saved profile. Only the labels
|
|
2965
|
+
* shown in Settings changed when the accent moved to Anthropic red.
|
|
2966
|
+
*
|
|
2967
2967
|
* Every colour is a `--dut-*` design variable re-pointed per scheme, and the
|
|
2968
2968
|
* DSW alias tokens map onto those variables in one place, so buttons, links,
|
|
2969
2969
|
* selections, the sidebar and the plugin's own tinted controls follow
|
|
@@ -2986,7 +2986,8 @@ body:not(#dsh-ui-tweaks-theme-scope){
|
|
|
2986
2986
|
--dut-paper-3:#ffffff;
|
|
2987
2987
|
--dut-pop:#ffffff;
|
|
2988
2988
|
--dut-ink:#101418;
|
|
2989
|
-
|
|
2989
|
+
/* the markdown table header keeps an ink strip; its type rides the accent */
|
|
2990
|
+
--dut-th-bg:#101418;
|
|
2990
2991
|
--dut-code:#f7f8f9;
|
|
2991
2992
|
--dut-text-1:#101418;
|
|
2992
2993
|
--dut-text-2:#3d4750;
|
|
@@ -2995,22 +2996,21 @@ body:not(#dsh-ui-tweaks-theme-scope){
|
|
|
2995
2996
|
--dut-btn-fg:#ffffff;
|
|
2996
2997
|
--dut-lime:#c6ff00;
|
|
2997
2998
|
--dut-lime-soft:#dcff4d;
|
|
2998
|
-
--dut-
|
|
2999
|
-
--dut-
|
|
3000
|
-
--dut-
|
|
3001
|
-
--dut-
|
|
3002
|
-
|
|
3003
|
-
|
|
3004
|
-
|
|
3005
|
-
--dut-sel-
|
|
3006
|
-
--dut-sel-fg:#101418;
|
|
2999
|
+
--dut-accent:#c15f3c;
|
|
3000
|
+
--dut-accent-soft:rgba(193,95,60,.12);
|
|
3001
|
+
--dut-accent-pale:#eccfc4;
|
|
3002
|
+
--dut-hover:rgba(193,95,60,.07);
|
|
3003
|
+
--dut-active:rgba(193,95,60,.13);
|
|
3004
|
+
/* text selection uses the native blue in both schemes */
|
|
3005
|
+
--dut-sel-bg:Highlight;
|
|
3006
|
+
--dut-sel-fg:HighlightText;
|
|
3007
3007
|
--dut-faint:rgba(0,0,0,.06);
|
|
3008
3008
|
--dut-scroll-1:#e3e6ea;
|
|
3009
3009
|
--dut-scroll-2:#c8cdd3;
|
|
3010
3010
|
--dut-elev:#101418;
|
|
3011
|
-
/* the user bubble:
|
|
3012
|
-
|
|
3013
|
-
--dut-bubble:#
|
|
3011
|
+
/* the user bubble: a pale tint of the Anthropic-red accent, so it stays in
|
|
3012
|
+
the same family as the links, buttons and artifacts */
|
|
3013
|
+
--dut-bubble:#ffe3d9;
|
|
3014
3014
|
--dut-shadow:#101418;
|
|
3015
3015
|
--dut-drop:rgba(255,255,255,.7);
|
|
3016
3016
|
/* Hairlines stay the host's own subtle values: the shipped 0.5px pills and
|
|
@@ -3027,6 +3027,14 @@ body:not(#dsh-ui-tweaks-theme-scope){
|
|
|
3027
3027
|
--dut-success-2:var(--dsw-static-green-400);
|
|
3028
3028
|
--dut-success-3:var(--dsw-static-green-100);
|
|
3029
3029
|
--dut-warn-3:var(--dsw-static-amber-100);
|
|
3030
|
+
/* Two surfaces read the STATIC DeepSeek scale instead of an alias, so the
|
|
3031
|
+
alias re-points below never reached them: the running-turn "深度求索中…"
|
|
3032
|
+
shimmer (500 + 200 painted into the glyphs) and the ongoing state dot
|
|
3033
|
+
(450). Re-point the static steps here — every alias that also derives from
|
|
3034
|
+
them is already mapped explicitly, so nothing else moves. */
|
|
3035
|
+
--dsw-static-deepseek-200:var(--dut-accent-pale);
|
|
3036
|
+
--dsw-static-deepseek-450:var(--dut-accent);
|
|
3037
|
+
--dsw-static-deepseek-500:var(--dut-accent);
|
|
3030
3038
|
--dsw-alias-bg-base:var(--dut-paper);
|
|
3031
3039
|
--dsw-alias-bg-layer-1:var(--dut-paper);
|
|
3032
3040
|
--dsw-alias-bg-layer-2:var(--dut-paper-2);
|
|
@@ -3050,7 +3058,7 @@ body:not(#dsh-ui-tweaks-theme-scope){
|
|
|
3050
3058
|
--dsw-alias-brand-primary:var(--dut-text-1);
|
|
3051
3059
|
--dsw-alias-brand-primary-invert:var(--dut-paper);
|
|
3052
3060
|
--dsw-alias-brand-text:var(--dut-text-1);
|
|
3053
|
-
--dsw-alias-brand-primary-new-colorprimary-new-color:var(--dut-
|
|
3061
|
+
--dsw-alias-brand-primary-new-colorprimary-new-color:var(--dut-accent);
|
|
3054
3062
|
--dsw-alias-button-contrast-fill:var(--dut-text-2);
|
|
3055
3063
|
--dsw-alias-button-elevated-fill:var(--dut-paper);
|
|
3056
3064
|
--dsw-alias-button-floating-fill:var(--dut-paper);
|
|
@@ -3058,8 +3066,8 @@ body:not(#dsh-ui-tweaks-theme-scope){
|
|
|
3058
3066
|
--dsw-alias-button-ghost-active-border:var(--dut-ink);
|
|
3059
3067
|
--dsw-alias-button-ghost-active-fill:var(--dut-paper-3);
|
|
3060
3068
|
--dsw-alias-button-ghost-active-hover:var(--dut-paper-3);
|
|
3061
|
-
--dsw-alias-button-info-fill:var(--dut-
|
|
3062
|
-
--dsw-alias-button-info-hover:var(--dut-
|
|
3069
|
+
--dsw-alias-button-info-fill:var(--dut-accent);
|
|
3070
|
+
--dsw-alias-button-info-hover:var(--dut-accent);
|
|
3063
3071
|
--dsw-alias-button-primary-dimmed:var(--dut-paper-2);
|
|
3064
3072
|
--dsw-alias-button-primary-fill:var(--dut-text-1);
|
|
3065
3073
|
--dsw-alias-button-primary-hover:var(--dut-text-1);
|
|
@@ -3077,21 +3085,20 @@ body:not(#dsh-ui-tweaks-theme-scope){
|
|
|
3077
3085
|
--dsw-alias-label-primary-inverted:var(--dut-btn-fg);
|
|
3078
3086
|
--dsw-alias-label-secondary:var(--dut-text-2);
|
|
3079
3087
|
--dsw-alias-label-tertiary:var(--dut-text-3);
|
|
3080
|
-
--dsw-alias-link:var(--dut-
|
|
3088
|
+
--dsw-alias-link:var(--dut-accent);
|
|
3081
3089
|
--dsw-alias-markdown-citation:var(--dut-paper-2);
|
|
3082
3090
|
--dsw-alias-markdown-code-block:var(--dut-code);
|
|
3083
3091
|
--dsw-alias-markdown-code-block-banner:var(--dut-paper-3);
|
|
3084
3092
|
--dsw-alias-markdown-code-segment-selected:var(--dut-paper);
|
|
3085
3093
|
--dsw-alias-markdown-code-segment-unselected:var(--dut-paper-2);
|
|
3086
|
-
--dsw-alias-markdown-inline-code:var(--dut-lime-soft);
|
|
3087
3094
|
--dsw-alias-markdown-placeholder:var(--dut-paper-2);
|
|
3088
3095
|
--dsw-alias-markdown-tag:var(--dut-paper-2);
|
|
3089
3096
|
--dsw-alias-scrollbar-bg-l1:var(--dut-scroll-1);
|
|
3090
3097
|
--dsw-alias-scrollbar-bg-l2:var(--dut-scroll-1);
|
|
3091
3098
|
--dsw-alias-scrollbar-hover-l1:var(--dut-scroll-2);
|
|
3092
3099
|
--dsw-alias-scrollbar-hover-l2:var(--dut-scroll-2);
|
|
3093
|
-
--dsw-alias-state-business-primary:var(--dut-
|
|
3094
|
-
--dsw-alias-state-business-tertiary:var(--dut-
|
|
3100
|
+
--dsw-alias-state-business-primary:var(--dut-accent);
|
|
3101
|
+
--dsw-alias-state-business-tertiary:var(--dut-accent-soft);
|
|
3095
3102
|
--dsw-alias-state-error-primary:var(--dut-error);
|
|
3096
3103
|
--dsw-alias-state-error-secondary:var(--dut-error-2);
|
|
3097
3104
|
--dsw-alias-state-success-primary:var(--dut-success);
|
|
@@ -3111,7 +3118,9 @@ body:not(#dsh-ui-tweaks-theme-scope){
|
|
|
3111
3118
|
--dsw-specific-menu:var(--dut-pop);
|
|
3112
3119
|
--dsw-specific-sidebar-fill:var(--dut-paper);
|
|
3113
3120
|
--dsw-specific-sidebar-nav-item-active:var(--dut-lime-soft);
|
|
3114
|
-
|
|
3121
|
+
/* NOT themed: despite the name this token feeds only the "推荐" chip in the
|
|
3122
|
+
question composer, and a lime slab behind text read as a highlighter mark
|
|
3123
|
+
rather than a chip — it stays on the host's own background. */
|
|
3115
3124
|
--dsw-specific-sidebar-nav-item-hover:var(--dut-paper-2);
|
|
3116
3125
|
--dsw-specific-tip:var(--dut-paper-2);
|
|
3117
3126
|
}
|
|
@@ -3124,8 +3133,12 @@ body:not(#dsh-ui-tweaks-theme-scope)[data-ds-dark-theme]{
|
|
|
3124
3133
|
--dut-paper-2:#14181d;
|
|
3125
3134
|
--dut-paper-3:#1e252c;
|
|
3126
3135
|
--dut-pop:#161c22;
|
|
3127
|
-
|
|
3128
|
-
|
|
3136
|
+
/* the poster frame drops to translucent white in dark mode: a solid
|
|
3137
|
+
near-white 2px frame plus its hard offset read as glare (see --dut-shadow) */
|
|
3138
|
+
--dut-ink:rgba(232,236,239,.42);
|
|
3139
|
+
/* a light strip would kill the red type here, so dark mode keeps a dark
|
|
3140
|
+
header strip lifted one step off the paper */
|
|
3141
|
+
--dut-th-bg:#1e252c;
|
|
3129
3142
|
--dut-code:#171d24;
|
|
3130
3143
|
--dut-text-1:#f2f5f3;
|
|
3131
3144
|
--dut-text-2:#b9c3ca;
|
|
@@ -3134,22 +3147,23 @@ body:not(#dsh-ui-tweaks-theme-scope)[data-ds-dark-theme]{
|
|
|
3134
3147
|
--dut-btn-fg:#101418;
|
|
3135
3148
|
--dut-lime:#c6ff00;
|
|
3136
3149
|
--dut-lime-soft:#dcff4d;
|
|
3137
|
-
--dut-
|
|
3138
|
-
--dut-
|
|
3139
|
-
--dut-
|
|
3140
|
-
--dut-
|
|
3141
|
-
|
|
3142
|
-
|
|
3143
|
-
--dut-sel-
|
|
3150
|
+
--dut-accent:#d97757;
|
|
3151
|
+
--dut-accent-soft:rgba(217,119,87,.18);
|
|
3152
|
+
--dut-accent-pale:#eec2b3;
|
|
3153
|
+
--dut-hover:rgba(217,119,87,.16);
|
|
3154
|
+
--dut-active:rgba(217,119,87,.26);
|
|
3155
|
+
/* text selection uses the native blue in both schemes */
|
|
3156
|
+
--dut-sel-bg:Highlight;
|
|
3157
|
+
--dut-sel-fg:HighlightText;
|
|
3144
3158
|
--dut-faint:rgba(255,255,255,.07);
|
|
3145
3159
|
--dut-scroll-1:#2a3138;
|
|
3146
3160
|
--dut-scroll-2:#3a444d;
|
|
3147
3161
|
--dut-elev:#1f262c;
|
|
3148
|
-
|
|
3149
|
-
|
|
3150
|
-
|
|
3151
|
-
|
|
3152
|
-
--dut-shadow
|
|
3162
|
+
/* dark twin: the same red accent, deepened onto the near-black paper */
|
|
3163
|
+
--dut-bubble:#35201a;
|
|
3164
|
+
/* the hard offset band softens with it, so the sticker silhouette survives
|
|
3165
|
+
while the brightness does not */
|
|
3166
|
+
--dut-shadow:rgba(232,236,239,.16);
|
|
3153
3167
|
--dut-drop:rgba(39,39,48,.7);
|
|
3154
3168
|
--dut-line-1:rgba(255,255,255,.06);
|
|
3155
3169
|
--dut-line-2:rgba(255,255,255,.12);
|
|
@@ -3163,10 +3177,10 @@ body:not(#dsh-ui-tweaks-theme-scope)[data-ds-dark-theme]{
|
|
|
3163
3177
|
--dut-warn-3:var(--dsw-static-amber-900);
|
|
3164
3178
|
}
|
|
3165
3179
|
::selection{background:var(--dut-sel-bg);color:var(--dut-sel-fg)}
|
|
3166
|
-
/* table header: the
|
|
3180
|
+
/* table header: the ink header strip, with the type in the accent red */
|
|
3167
3181
|
div[data-slot="conversation.chat.node"] table th{
|
|
3168
|
-
background:var(--dut-
|
|
3169
|
-
color:var(--dut-
|
|
3182
|
+
background:var(--dut-th-bg);
|
|
3183
|
+
color:var(--dut-accent);
|
|
3170
3184
|
}
|
|
3171
3185
|
div[data-slot="conversation.chat.node"] pre{
|
|
3172
3186
|
border:2px solid var(--dut-ink) !important;
|
|
@@ -3175,8 +3189,7 @@ div[data-slot="conversation.chat.node"] pre{
|
|
|
3175
3189
|
background:var(--dut-paper) !important;
|
|
3176
3190
|
}
|
|
3177
3191
|
div[data-slot="conversation.chat.node"] :not(pre)>code{
|
|
3178
|
-
|
|
3179
|
-
color:#101418 !important;
|
|
3192
|
+
color:var(--dut-accent) !important;
|
|
3180
3193
|
border:none !important;
|
|
3181
3194
|
border-radius:6px !important;
|
|
3182
3195
|
padding:1px 6px !important;
|
|
@@ -3188,10 +3201,10 @@ div[data-composer-card]{
|
|
|
3188
3201
|
background:var(--dut-paper) !important;
|
|
3189
3202
|
}
|
|
3190
3203
|
/* context-occupancy ring: the stock track/fill both read near-ink on this
|
|
3191
|
-
skin; give the track a quiet gray and the used arc the
|
|
3204
|
+
skin; give the track a quiet gray and the used arc the red accent
|
|
3192
3205
|
(scoped to the composer's svg so the class-substring match stays safe) */
|
|
3193
3206
|
div[data-composer-card] svg [class*="track"]{stroke:var(--dut-scroll-1)}
|
|
3194
|
-
div[data-composer-card] svg [class*="fill"]{stroke:var(--dut-
|
|
3207
|
+
div[data-composer-card] svg [class*="fill"]{stroke:var(--dut-accent)}
|
|
3195
3208
|
/* sidebar new-session button: lime sticker. Matched by its CSS-module class,
|
|
3196
3209
|
NOT the aria-label — the brand row button shares the same "新建会话"
|
|
3197
3210
|
label (it doubles as the new-session shortcut) and must stay plain. */
|
|
@@ -3719,7 +3732,7 @@ function apply(ctx) {
|
|
|
3719
3732
|
// picking one opens the tab in the sidebar), registered only while the
|
|
3720
3733
|
// gitBarEnabled toggle in the UI Tweaks section is on. Each tab is a page
|
|
3721
3734
|
// type (no address patterns): stage one registers the type with its guide
|
|
3722
|
-
//
|
|
3735
|
+
// capsule, stage two the body under the type's id. The terminal reattaches to
|
|
3723
3736
|
// its persistent host shell on every visit, and the diff tab keeps its
|
|
3724
3737
|
// commit band. The tab registry is resolved lazily: hosts predating the
|
|
3725
3738
|
// right sidebar simply skip these tabs while everything else keeps working.
|
|
@@ -3741,7 +3754,7 @@ function apply(ctx) {
|
|
|
3741
3754
|
id: 'dsh-ui-tweaks/terminal',
|
|
3742
3755
|
kind: 'ui-tweaks-terminal',
|
|
3743
3756
|
title: () => t('terminal'),
|
|
3744
|
-
guide: [{ order: 20, title: () => t('terminal'),
|
|
3757
|
+
guide: [{ order: 20, title: () => t('terminal'), icon: icons_tsx_1.TerminalIcon }],
|
|
3745
3758
|
}));
|
|
3746
3759
|
disposers.push(ctx.slots.inject('sidebar.right.pane.tab', () => ctx.slots.register({
|
|
3747
3760
|
name: 'sidebar.right.pane.tab',
|
|
@@ -3753,7 +3766,7 @@ function apply(ctx) {
|
|
|
3753
3766
|
id: 'dsh-ui-tweaks/diff',
|
|
3754
3767
|
kind: 'ui-tweaks-diff',
|
|
3755
3768
|
title: () => t('diffView'),
|
|
3756
|
-
guide: [{ order: 30, title: () => t('diffView'),
|
|
3769
|
+
guide: [{ order: 30, title: () => t('diffView'), icon: icons_tsx_1.DiffIcon }],
|
|
3757
3770
|
}));
|
|
3758
3771
|
disposers.push(ctx.slots.inject('sidebar.right.pane.tab', () => ctx.slots.register({
|
|
3759
3772
|
name: 'sidebar.right.pane.tab',
|