dsh-ui-tweaks 0.19.0 → 0.19.1

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 CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 dsh-ui-tweaks contributors
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.
1
+ MIT License
2
+
3
+ Copyright (c) 2026 dsh-ui-tweaks contributors
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.en.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # dsh-ui-tweaks
2
2
 
3
- > **Dependency**: currently targets **DSH v0.2.0-rc.1**.
3
+ > **Dependency**: currently targets **DSH v0.2.0-rc.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
 
@@ -61,10 +61,10 @@ Settings entry: **Settings → UI Tweaks**.
61
61
 
62
62
  ```bash
63
63
  # from npm (recommended, prebuilt)
64
- npx -y @deepseek-ai/dsh plugin --profile web add dsh-ui-tweaks
64
+ npx -y @deepseek-ai/dsh plugin --profile desktop add dsh-ui-tweaks
65
65
 
66
66
  # from GitHub (source; built on install by `prepare`)
67
- npx -y @deepseek-ai/dsh plugin --profile web add github:wlj521/dsh-ui-tweaks
67
+ npx -y @deepseek-ai/dsh plugin --profile desktop add github:wlj521/dsh-ui-tweaks
68
68
  ```
69
69
 
70
70
  > **The GitHub path builds locally**: `lib/` is a build artifact and is not tracked; it is produced by `prepare` at install time. Since pnpm 10.26, `prepare` of git-hosted dependencies is **blocked by default** (supply-chain hardening), so allow it in the profile's `pnpm-workspace.yaml` first — otherwise the install ships no `lib/` and the plugin fails to load:
@@ -80,12 +80,12 @@ The package spec after `add` is forwarded to pnpm verbatim, so versions can be
80
80
  pinned — `@version` for the npm package, `#tag` for the GitHub source:
81
81
 
82
82
  ```bash
83
- npx -y @deepseek-ai/dsh plugin --profile web add dsh-ui-tweaks@0.12.0 # pin the npm version
84
- npx -y @deepseek-ai/dsh plugin --profile web add github:wlj521/dsh-ui-tweaks#v0.12.0 # pin a git tag
83
+ npx -y @deepseek-ai/dsh plugin --profile desktop add dsh-ui-tweaks@0.19.1 # pin the npm version
84
+ npx -y @deepseek-ai/dsh plugin --profile desktop add github:wlj521/dsh-ui-tweaks#v0.19.1 # pin a git tag
85
85
  ```
86
86
 
87
- Restart DSH web once after installing (bundle plugins
88
- are scanned at process start).
87
+ Restart the DSH desktop app once after installing (bundle
88
+ plugins are scanned at process start).
89
89
 
90
90
  > If pnpm reports symlink/hoist errors, set `nodeLinker: hoisted` in the
91
91
  > profile's `pnpm-workspace.yaml`.
@@ -101,8 +101,8 @@ pnpm typecheck
101
101
  Load against a running DSH with an overlay, or install as a bundle:
102
102
 
103
103
  ```bash
104
- npx -y @deepseek-ai/dsh web --patch ./cordis.patch.yml # dev overlay
105
- npx -y @deepseek-ai/dsh plugin --profile web add . # bundle install from this checkout
104
+ npx -y @deepseek-ai/dsh plugin --profile desktop add . # bundle install from this checkout
105
+ # dev overlay: edit the desktop profile's cordis.patch.yml ($DSH_HOME/profiles/desktop/cordis.patch.yml) directly — DSH hot-reloads it
106
106
  ```
107
107
 
108
108
  ## How it works
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # dsh-ui-tweaks
2
2
 
3
- > **依赖版本**:当前依赖 **DSH v0.2.0-rc.1**。
3
+ > **依赖版本**:当前依赖 **DSH v0.2.0-rc.2**。
4
4
 
5
5
  [DeepSeek Harness](https://deepseek-harness.github.io/deepseek-harness/)(DSH)Web UI 插件:在设置面板中实时调整对话界面——代码字号、**主题皮肤**(简约 / 荧光海报)、**时间线切换**(原生回合导航轨 / 经典网页时间线)、**GitBar**(会话头部的分支胶囊 + 右侧边栏里的代码差异标签页),可开关的**归档管理**(设置中的「归档」页面:查看、恢复或彻底删除已归档会话),可开关的**任务提醒**(会话完成或需要交互时,通过标签页标题闪烁 / 系统通知 / 提示音把你唤回来),以及**缓存命中率两位小数**(把输入框下方统计条的缓存命中百分比改写为精确值)。
6
6
 
@@ -64,10 +64,10 @@
64
64
 
65
65
  ```bash
66
66
  # 方式一:从 npm 安装(推荐,预构建产物,一条命令装好)
67
- npx -y @deepseek-ai/dsh plugin --profile web add dsh-ui-tweaks
67
+ npx -y @deepseek-ai/dsh plugin --profile desktop add dsh-ui-tweaks
68
68
 
69
69
  # 方式二:从 GitHub 仓库安装(源码,安装时由 prepare 自动构建)
70
- npx -y @deepseek-ai/dsh plugin --profile web add github:wlj521/dsh-ui-tweaks
70
+ npx -y @deepseek-ai/dsh plugin --profile desktop add github:wlj521/dsh-ui-tweaks
71
71
  ```
72
72
 
73
73
  > **方式二需要放行构建脚本**:`lib/` 不在仓库里(构建产物),靠 `prepare` 在安装时生成;而 pnpm ≥ 10.26 出于供应链安全**默认不允许 git 依赖执行 `prepare`**。先在 profile 的 `pnpm-workspace.yaml` 里放行,否则装完没有 `lib/`,插件加载即失败:
@@ -82,11 +82,11 @@ npx -y @deepseek-ai/dsh plugin --profile web add github:wlj521/dsh-ui-tweaks
82
82
  `add` 后面的包说明会**原样转发给 pnpm**,因此可以指定版本——npm 包用 `@版本号`,GitHub 源码用 `#tag`:
83
83
 
84
84
  ```bash
85
- npx -y @deepseek-ai/dsh plugin --profile web add dsh-ui-tweaks@0.12.0 # 锁定 npm 版本
86
- npx -y @deepseek-ai/dsh plugin --profile web add github:wlj521/dsh-ui-tweaks#v0.12.0 # 锁定 git tag
85
+ npx -y @deepseek-ai/dsh plugin --profile desktop add dsh-ui-tweaks@0.19.1 # 锁定 npm 版本
86
+ npx -y @deepseek-ai/dsh plugin --profile desktop add github:wlj521/dsh-ui-tweaks#v0.19.1 # 锁定 git tag
87
87
  ```
88
88
 
89
- 安装完成后**重启一次 `dsh web`**(bundle 插件在进程启动时扫描)。
89
+ 安装完成后**重启一次 DSH 桌面端**(bundle 插件在进程启动时扫描)。
90
90
 
91
91
  > 若 pnpm 报符号链接/hoist 相关错误,可在 profile 的 `pnpm-workspace.yaml` 中设置 `nodeLinker: hoisted`。
92
92
 
@@ -101,8 +101,8 @@ pnpm typecheck
101
101
  本地加载(覆盖层)或作为 bundle 安装:
102
102
 
103
103
  ```bash
104
- npx -y @deepseek-ai/dsh web --patch ./cordis.patch.yml # 开发覆盖层
105
- npx -y @deepseek-ai/dsh plugin --profile web add . # 从本目录作为 bundle 安装
104
+ npx -y @deepseek-ai/dsh plugin --profile desktop add . # 从本目录作为 bundle 安装
105
+ # 开发覆盖层:直接编辑桌面端 profile 的 cordis.patch.yml($DSH_HOME/profiles/desktop/cordis.patch.yml),DSH 会热重载
106
106
  ```
107
107
 
108
108
  ## 工作原理
package/cordis.patch.yml CHANGED
@@ -1,12 +1,12 @@
1
- # dsh-ui-tweaks bundle patch
2
- #
3
- # Declared by `dsh.bundle.patch` in package.json: when the plugin is installed
4
- # through the official CLI —
5
- #
6
- # dsh plugin --profile <name> add dsh-ui-tweaks
7
- #
8
- # — the command appends `dsh-ui-tweaks` to the profile's bundle stack and this
9
- # patch mounts the server-side plugin row.
10
- - insert:
11
- - id: ui-tweaks
12
- name: 'dsh-ui-tweaks'
1
+ # dsh-ui-tweaks bundle patch
2
+ #
3
+ # Declared by `dsh.bundle.patch` in package.json: when the plugin is installed
4
+ # through the official CLI —
5
+ #
6
+ # dsh plugin --profile <name> add dsh-ui-tweaks
7
+ #
8
+ # — the command appends `dsh-ui-tweaks` to the profile's bundle stack and this
9
+ # patch mounts the server-side plugin row.
10
+ - insert:
11
+ - id: ui-tweaks
12
+ name: 'dsh-ui-tweaks'
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "dsh-ui-tweaks",
3
- "version": "0.19.0",
4
- "description": "DSH web plugin: live-tune the conversation UI — code font size (px input), a timeline switch (DSH's native turn rail, or the classic v0.11 web rail: hover to preview, click to jump; native by default), a theme switch with two skins (a minimal one that only tints markdown inline code with the Anthropic red, and a neon poster skin with light/dark schemes), a GitBar (branch chip in the session header with branch management, plus a code-diff tab in the native right sidebar with per-file diff and commit & push), task alerts that call you back via tab-title flash / system notification / chime when any session finishes its turn or starts waiting for your approval, plan review or answer, an /init slash command that submits an AGENTS.md bootstrap prompt (Chinese or English) into the current session, and a precise cache-hit readout that keeps two decimal places on the stats line's cache-hit figure under the input box — from the Settings panel. Requires DSH v0.2.0-rc.1 (the conversation timeline and dialog width are now native to DSH; the task notifier follows the alpha.2 session-status API).",
3
+ "version": "0.19.1",
4
+ "description": "DSH web plugin: live-tune the conversation UI — code font size (px input), a timeline switch (DSH's native turn rail, or the classic v0.11 web rail: hover to preview, click to jump; native by default), a theme switch with two skins (a minimal one that only tints markdown inline code with the Anthropic red, and a neon poster skin with light/dark schemes), a GitBar (branch chip in the session header with branch management, plus a code-diff tab in the native right sidebar with per-file diff and commit & push), task alerts that call you back via tab-title flash / system notification / chime when any session finishes its turn or starts waiting for your approval, plan review or answer, an /init slash command that submits an AGENTS.md bootstrap prompt (Chinese or English) into the current session, and a precise cache-hit readout that keeps two decimal places on the stats line's cache-hit figure under the input box — from the Settings panel. Requires DSH v0.2.0-rc.2 (the conversation timeline and dialog width are now native to DSH; the task notifier follows the alpha.2 session-status API).",
5
5
  "keywords": [
6
6
  "dsh",
7
7
  "deepseek-harness",
@@ -45,12 +45,6 @@
45
45
  "engines": {
46
46
  "node": ">=20"
47
47
  },
48
- "scripts": {
49
- "build": "tsc -p tsconfig.json && tsc -p tsconfig.client.json && node scripts/build-client.mjs",
50
- "prepare": "pnpm build",
51
- "prepublishOnly": "pnpm build",
52
- "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.client.public.json"
53
- },
54
48
  "license": "MIT",
55
49
  "dsh": {
56
50
  "bundle": {
@@ -75,25 +69,25 @@
75
69
  },
76
70
  "peerDependencies": {
77
71
  "@deepseek-ai/cordis": "^4.0.4",
78
- "@deepseek-ai/dsh-api-session-controller": "^0.2.0-rc.1",
79
- "@deepseek-ai/dsh-api-workspace-controller": "^0.2.0-rc.1",
80
- "@deepseek-ai/dsh-client-locale": "^0.2.0-rc.1",
81
- "@deepseek-ai/dsh-client-store": "^0.2.0-rc.1",
82
- "@deepseek-ai/dsh-client-ui-commands": "^0.2.0-rc.1",
83
- "@deepseek-ai/dsh-client-ui-conversation": "^0.2.0-rc.1",
84
- "@deepseek-ai/dsh-client-ui-renderer": "^0.2.0-rc.1",
85
- "@deepseek-ai/dsh-client-ui-session": "^0.2.0-rc.1",
86
- "@deepseek-ai/dsh-client-ui-settings": "^0.2.0-rc.1",
87
- "@deepseek-ai/dsh-client-ui-sidebar-right": "^0.2.0-rc.1",
88
- "@deepseek-ai/dsh-client-ui-slots": "^0.2.0-rc.1",
89
- "@deepseek-ai/dsh-client-ui-workspace": "^0.2.0-rc.1",
90
- "@deepseek-ai/dsh-host-webserver": "^0.2.0-rc.1",
91
- "@deepseek-ai/dsh-session": "^0.2.0-rc.1",
92
- "@deepseek-ai/dsh-session-projection": "^0.2.0-rc.1",
93
- "@deepseek-ai/dsh-settings": "^0.2.0-rc.1",
94
- "@deepseek-ai/dsh-storage-domain": "^0.2.0-rc.1",
95
- "@deepseek-ai/dsh-token-meter": "^0.2.0-rc.1",
96
- "@deepseek-ai/dsh-workspace": "^0.2.0-rc.1",
72
+ "@deepseek-ai/dsh-api-session-controller": "^0.2.0-rc.2",
73
+ "@deepseek-ai/dsh-api-workspace-controller": "^0.2.0-rc.2",
74
+ "@deepseek-ai/dsh-client-locale": "^0.2.0-rc.2",
75
+ "@deepseek-ai/dsh-client-store": "^0.2.0-rc.2",
76
+ "@deepseek-ai/dsh-client-ui-commands": "^0.2.0-rc.2",
77
+ "@deepseek-ai/dsh-client-ui-conversation": "^0.2.0-rc.2",
78
+ "@deepseek-ai/dsh-client-ui-renderer": "^0.2.0-rc.2",
79
+ "@deepseek-ai/dsh-client-ui-session": "^0.2.0-rc.2",
80
+ "@deepseek-ai/dsh-client-ui-settings": "^0.2.0-rc.2",
81
+ "@deepseek-ai/dsh-client-ui-sidebar-right": "^0.2.0-rc.2",
82
+ "@deepseek-ai/dsh-client-ui-slots": "^0.2.0-rc.2",
83
+ "@deepseek-ai/dsh-client-ui-workspace": "^0.2.0-rc.2",
84
+ "@deepseek-ai/dsh-host-webserver": "^0.2.0-rc.2",
85
+ "@deepseek-ai/dsh-session": "^0.2.0-rc.2",
86
+ "@deepseek-ai/dsh-session-projection": "^0.2.0-rc.2",
87
+ "@deepseek-ai/dsh-settings": "^0.2.0-rc.2",
88
+ "@deepseek-ai/dsh-storage-domain": "^0.2.0-rc.2",
89
+ "@deepseek-ai/dsh-token-meter": "^0.2.0-rc.2",
90
+ "@deepseek-ai/dsh-workspace": "^0.2.0-rc.2",
97
91
  "@deepseek-ai/schemastery": "^3.18.4",
98
92
  "react": "^18.2.0",
99
93
  "react-dom": "^18.2.0"
@@ -105,26 +99,26 @@
105
99
  },
106
100
  "devDependencies": {
107
101
  "@deepseek-ai/cordis": "^4.0.4",
108
- "@deepseek-ai/dsh-api-session-controller": "0.2.0-rc.1",
109
- "@deepseek-ai/dsh-api-workspace-controller": "0.2.0-rc.1",
110
- "@deepseek-ai/dsh-client-locale": "0.2.0-rc.1",
111
- "@deepseek-ai/dsh-client-store": "0.2.0-rc.1",
112
- "@deepseek-ai/dsh-client-ui-commands": "0.2.0-rc.1",
113
- "@deepseek-ai/dsh-client-ui-conversation": "0.2.0-rc.1",
114
- "@deepseek-ai/dsh-client-ui-renderer": "0.2.0-rc.1",
115
- "@deepseek-ai/dsh-client-ui-session": "0.2.0-rc.1",
116
- "@deepseek-ai/dsh-client-ui-settings": "0.2.0-rc.1",
117
- "@deepseek-ai/dsh-client-ui-sidebar-right": "0.2.0-rc.1",
118
- "@deepseek-ai/dsh-client-ui-slots": "0.2.0-rc.1",
119
- "@deepseek-ai/dsh-client-ui-workspace": "0.2.0-rc.1",
120
- "@deepseek-ai/dsh-host-webserver": "0.2.0-rc.1",
121
- "@deepseek-ai/dsh-session": "0.2.0-rc.1",
122
- "@deepseek-ai/dsh-session-persistence": "0.2.0-rc.1",
123
- "@deepseek-ai/dsh-session-projection": "0.2.0-rc.1",
124
- "@deepseek-ai/dsh-settings": "0.2.0-rc.1",
125
- "@deepseek-ai/dsh-storage-domain": "0.2.0-rc.1",
126
- "@deepseek-ai/dsh-token-meter": "0.2.0-rc.1",
127
- "@deepseek-ai/dsh-workspace": "0.2.0-rc.1",
102
+ "@deepseek-ai/dsh-api-session-controller": "0.2.0-rc.2",
103
+ "@deepseek-ai/dsh-api-workspace-controller": "0.2.0-rc.2",
104
+ "@deepseek-ai/dsh-client-locale": "0.2.0-rc.2",
105
+ "@deepseek-ai/dsh-client-store": "0.2.0-rc.2",
106
+ "@deepseek-ai/dsh-client-ui-commands": "0.2.0-rc.2",
107
+ "@deepseek-ai/dsh-client-ui-conversation": "0.2.0-rc.2",
108
+ "@deepseek-ai/dsh-client-ui-renderer": "0.2.0-rc.2",
109
+ "@deepseek-ai/dsh-client-ui-session": "0.2.0-rc.2",
110
+ "@deepseek-ai/dsh-client-ui-settings": "0.2.0-rc.2",
111
+ "@deepseek-ai/dsh-client-ui-sidebar-right": "0.2.0-rc.2",
112
+ "@deepseek-ai/dsh-client-ui-slots": "0.2.0-rc.2",
113
+ "@deepseek-ai/dsh-client-ui-workspace": "0.2.0-rc.2",
114
+ "@deepseek-ai/dsh-host-webserver": "0.2.0-rc.2",
115
+ "@deepseek-ai/dsh-session": "0.2.0-rc.2",
116
+ "@deepseek-ai/dsh-session-persistence": "0.2.0-rc.2",
117
+ "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2",
118
+ "@deepseek-ai/dsh-settings": "0.2.0-rc.2",
119
+ "@deepseek-ai/dsh-storage-domain": "0.2.0-rc.2",
120
+ "@deepseek-ai/dsh-token-meter": "0.2.0-rc.2",
121
+ "@deepseek-ai/dsh-workspace": "0.2.0-rc.2",
128
122
  "@deepseek-ai/schemastery": "^3.18.4",
129
123
  "@types/node": "^24.0.0",
130
124
  "@types/react": "~18.3.1",
@@ -138,5 +132,9 @@
138
132
  "dependencies": {
139
133
  "semver": "^7.8.5",
140
134
  "yaml": "2.9.0"
135
+ },
136
+ "scripts": {
137
+ "build": "tsc -p tsconfig.json && tsc -p tsconfig.client.json && node scripts/build-client.mjs",
138
+ "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.client.public.json"
141
139
  }
142
- }
140
+ }
@@ -1,17 +0,0 @@
1
- /**
2
- * Official app icons for the 打开项目 menu — JetBrains product marks are
3
- * the full-color SVGs from resources.jetbrains.com (gradient ids namespaced
4
- * per icon so several can coexist on one page), VS Code from simple-icons,
5
- * Explorer a filled Windows-yellow folder. Sizing lives in CSS.
6
- * @module dsh-ui-tweaks/client/appicons
7
- */
8
- /** target key -> inline SVG markup (trusted build-time constants). */
9
- export declare const APP_ICONS: {
10
- explorer: string;
11
- vscode: string;
12
- idea: string;
13
- goland: string;
14
- webstorm: string;
15
- pycharm: string;
16
- };
17
- //# sourceMappingURL=appicons.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"appicons.d.ts","sourceRoot":"","sources":["../../../src/client/appicons.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,sEAAsE;AACtE,eAAO,MAAM,SAAS,EAAE;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAQhB,CAAA"}
@@ -1,55 +0,0 @@
1
- /**
2
- * dsh-ui-tweaks — whale working indicator (browser half).
3
- *
4
- * A little brand whale (the sidebar's FishLogo mark) perched on the composer
5
- * card's top-right corner over drifting blue waves — Claude Desktop's little
6
- * crab, but a whale — resident the whole time the feature is on. Idle: the
7
- * whale keeps its original colour and floats still on the waves; hovering or
8
- * clicking it swims it too (easter egg). Working: it swims and breathes
9
- * between its original colour and the waves' blue until the model finishes.
10
- *
11
- * - Mounted in `conversation.input.dock` (the full-width row stacked by the
12
- * composer column right above the card), registered only while the
13
- * `whaleIndicatorEnabled` toggle is on — off costs nothing. The dock row is
14
- * WIDER than the card (the card is capped at
15
- * `--dsh-composer-card-max-width` and centered with
16
- * `--dsh-composer-side-clearance` side padding by the InputBar root), so
17
- * the row replicates that exact geometry — same max-width, centered, same
18
- * side padding — before right-aligning; a 6px `translateY` then straddles
19
- * the card's top edge. The extra 14px right inset centers the whale over
20
- * the send button (34px round button, 8px tool-row padding → its center
21
- * sits 25px from the card's right edge; the 22px whale's right edge at
22
- * 14px puts its center at 25px).
23
- * - "Working" = the current session's `running` flag on the sessions list
24
- * feed, OR the input machine's claimed/submitting phases (the window
25
- * between pressing Enter and the agent actually starting to run).
26
- * - The whale geometry is the stock FishLogo path embedded as a constant, so
27
- * the indicator never depends on DOM timing; at mount we still try to lift
28
- * a fresher path from the live sidebar brand mark (`[class*="brandMark"]`)
29
- * so a DSH logo update is followed without a plugin release.
30
- * @module dsh-ui-tweaks/client/whale
31
- */
32
- import type { ISessions } from '@deepseek-ai/dsh-api-session-controller/client';
33
- import type { SessionId } from '@deepseek-ai/dsh-session/types';
34
- export declare const WHALE_CSS = "\n.duwi-row{box-sizing:border-box;width:100%;max-width:calc(var(--dsh-composer-card-max-width) + 2 * var(--dsh-composer-side-clearance, 0px));margin:0 auto;padding:0 calc(var(--dsh-composer-side-clearance, 0px) + 14px) 0 var(--dsh-composer-side-clearance, 0px);display:flex;align-items:flex-end;justify-content:flex-end;height:27px;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}\n.duwi-stack{display:flex;flex-direction:column;align-items:center;transform:translateY(6px)}\n.duwi-whale{display:block;color:var(--dsw-alias-label-primary);transform-origin:50% 60%;pointer-events:auto;cursor:pointer}\n.duwi-row.duwi-swim .duwi-whale{animation:duwi-swim 1.9s ease-in-out infinite,duwi-breathe 1.9s ease-in-out infinite}\n.duwi-whale:hover{animation:duwi-swim 1.9s ease-in-out infinite}\n.duwi-waves{display:block;width:26px;height:9px;margin-top:-3px;overflow:hidden}\n.duwi-wave-back{stroke:#3d8bfd;opacity:.35}\n.duwi-wave-front{stroke:#3d8bfd;opacity:.8}\n.duwi-wave-front,.duwi-wave-back{animation:duwi-drift-front 1.9s linear infinite}\n.duwi-wave-back{animation-duration:3.4s;animation-direction:reverse}\n@keyframes duwi-swim{\n0%,100%{transform:translateY(0) rotate(-4deg)}\n50%{transform:translateY(-3.5px) rotate(4deg)}\n}\n@keyframes duwi-breathe{\n0%,100%{color:var(--dsw-alias-label-primary)}\n50%{color:#3d8bfd}\n}\n@keyframes duwi-drift-front{\nfrom{transform:translateX(0)}\nto{transform:translateX(-8px)}\n}\n@media (prefers-reduced-motion:reduce){\n.duwi-row.duwi-swim .duwi-whale,.duwi-whale:hover{animation:none}\n.duwi-wave-front,.duwi-wave-back{animation:none}\n}\n";
35
- /** Idempotent installer for the indicator styles (same pattern as the other features). */
36
- export declare function installWhaleStyles(): () => void;
37
- /**
38
- * Structural slice of the framework `InputState` (not re-exported by the
39
- * package's client entry) — exactly the fields the indicator reads off the
40
- * dock's owner share.
41
- */
42
- interface InputPhaseSnapshot {
43
- phase: 'plain' | 'adjudicating' | 'claimed' | 'submitting';
44
- }
45
- export interface WhaleIndicatorProps {
46
- /** Framework seat (PropsRuntime): current session id. */
47
- sessionId: SessionId | undefined;
48
- /** Owner share (InputZone): live input-machine snapshot — covers the send → run window. */
49
- input: InputPhaseSnapshot;
50
- /** Injected: the client sessions service (list feed carrying `running`). */
51
- sessionsService: ISessions;
52
- }
53
- export declare function WhaleIndicator({ sessionId, input, sessionsService }: WhaleIndicatorProps): import("react").JSX.Element;
54
- export {};
55
- //# sourceMappingURL=whale.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"whale.d.ts","sourceRoot":"","sources":["../../../src/client/whale.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gDAAgD,CAAA;AAC/E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAkB/D,eAAO,MAAM,SAAS,gnDA2BrB,CAAA;AAED,0FAA0F;AAC1F,wBAAgB,kBAAkB,IAAI,MAAM,IAAI,CAU/C;AAuBD;;;;GAIG;AACH,UAAU,kBAAkB;IAC1B,KAAK,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS,GAAG,YAAY,CAAA;CAC3D;AAED,MAAM,WAAW,mBAAmB;IAClC,yDAAyD;IACzD,SAAS,EAAE,SAAS,GAAG,SAAS,CAAA;IAChC,2FAA2F;IAC3F,KAAK,EAAE,kBAAkB,CAAA;IACzB,4EAA4E;IAC5E,eAAe,EAAE,SAAS,CAAA;CAC3B;AAED,wBAAgB,cAAc,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,mBAAmB,+BAuDxF"}