dsh-ui-tweaks 0.17.3 → 0.18.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/README.en.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # dsh-ui-tweaks
2
2
 
3
- > **Dependency**: currently targets **DSH v0.1.6-alpha.2**.
3
+ > **Dependency**: currently targets **DSH v0.1.7-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
 
@@ -39,17 +39,20 @@ A [DeepSeek Harness](https://deepseek-harness.github.io/deepseek-harness/) (DSH)
39
39
  - "Only when hidden" defaults on (no nagging while you watch the page); the first snapshot only arms the baseline (a page reload never fires a burst); events fire on transitions with a 2s per-session+kind cooldown (reconnect flicker absorbed); subagent child rows are skipped (the parent carries the turn). A **Test** button in Settings previews permission and channels in one click.
40
40
  - **Precise cache hit (toggleable, off by default)** — DSH's stats line shows the cache-hit share as a bare integer ("Cache hit 96%"). When enabled, the figure is rewritten to two decimals ("Cache hit 96.35%") and computed from the raw token buckets — cache reads ÷ billed input (uncached input + cache reads + cache writes) — the same source as the stock number, just unrounded; a full hit shows 100.00%, and with no billed input the group is absent anyway. The toggle lives in the Layout settings group; turning it off restores the stock figure.
41
41
 
42
- All changes apply **live** — no reload needed. The same values can be hand-edited in the settings document:
42
+ All changes apply **live** — no reload needed. The same values can be hand-edited in the profile's `cordis.patch.yml` (the document the Settings page writes; `settings.yaml` was retired in DSH 0.1.7):
43
43
 
44
44
  ```yaml
45
- ui-tweaks:
46
- timelineStyle: web # defaults to native (DSH's built-in turn rail); web is the classic web timeline
47
- themeStyle: minimal # defaults to default (DSH's stock look); minimal tints markdown inline code Anthropic red (#c15f3c light / #d97757 dark), neon-lime is the neon-poster skin
48
- gitBarEnabled: true # defaults to false (off); set true to enable GitBar
49
- archiveManagerEnabled: true # defaults to false (off); set true to show the Archive page
50
- initCommandEnabled: true # defaults to false (off); set true to register the /init slash command
51
- preciseCacheHitEnabled: true # defaults to false (off); set true to enable the two-decimal cache-hit figure
52
- notificationsEnabled: true # defaults to false (off); set true to enable task alerts (event filters & channels are per-item toggles in Settings)
45
+ # $DSH_HOME/profiles/<profile>/cordis.patch.yml
46
+ - id: ui-tweaks
47
+ name: dsh-ui-tweaks
48
+ config:
49
+ timelineStyle: web # defaults to native (DSH's built-in turn rail); web is the classic web timeline
50
+ themeStyle: minimal # defaults to default (DSH's stock look); minimal tints markdown inline code Anthropic red (#c15f3c light / #d97757 dark), neon-lime is the neon-poster skin
51
+ gitBarEnabled: true # defaults to false (off); set true to enable GitBar
52
+ archiveManagerEnabled: true # defaults to false (off); set true to show the Archive page
53
+ initCommandEnabled: true # defaults to false (off); set true to register the /init slash command
54
+ preciseCacheHitEnabled: true # defaults to false (off); set true to enable the two-decimal cache-hit figure
55
+ notificationsEnabled: true # defaults to false (off); set true to enable task alerts (event filters & channels are per-item toggles in Settings)
53
56
  ```
54
57
 
55
58
  Settings entry: **Settings → UI Tweaks**.
@@ -104,8 +107,11 @@ npx -y @deepseek-ai/dsh plugin --profile web add . # bundle install from
104
107
 
105
108
  ## How it works
106
109
 
107
- - **Server** (`src/index.ts`) registers the `ui-tweaks` settings namespace and
108
- mounts a same-origin route (`/_dsh/ui-tweaks/settings`) — the Web settings
110
+ - **Server** (`src/index.ts`) exports the `Config` settings schema — since DSH
111
+ 0.1.7 the Settings form is derived from a plugin's exported `Config`
112
+ (the old `settings.register()` is gone) and `configure({ auto: false })`
113
+ suppresses the auto-generated page in favor of the client's own sections —
114
+ and mounts a same-origin route (`/_dsh/ui-tweaks/settings`) — the Web settings
109
115
  RPC only exposes a fixed allowlist of namespaces since rc.6, so a custom route
110
116
  is how a plugin owns a configuration page.
111
117
  - **Browser** (`src/client/index.tsx`) reads/writes that route, renders the
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # dsh-ui-tweaks
2
2
 
3
- > **依赖版本**:当前依赖 **DSH v0.1.6-alpha.2**。
3
+ > **依赖版本**:当前依赖 **DSH v0.1.7-rc.2**。
4
4
 
5
5
  [DeepSeek Harness](https://deepseek-harness.github.io/deepseek-harness/)(DSH)Web UI 插件:在设置面板中实时调整对话界面——代码字号、**主题皮肤**(简约 / 荧光海报)、**时间线切换**(原生回合导航轨 / 经典网页时间线)、**GitBar**(会话头部的分支胶囊 + 右侧边栏里的代码差异标签页),可开关的**归档管理**(设置中的「归档」页面:查看、恢复或彻底删除已归档会话),可开关的**任务提醒**(会话完成或需要交互时,通过标签页标题闪烁 / 系统通知 / 提示音把你唤回来),以及**缓存命中率两位小数**(把输入框下方统计条的缓存命中百分比改写为精确值)。
6
6
 
@@ -42,17 +42,20 @@
42
42
  - 「仅页面不可见时」默认开启(正盯着页面时不打扰);首帧快照只武装不触发(刷新页面不刷屏);只在跳变沿触发 + 同会话同类事件 2 秒冷却(防重连抖动);子代理子会话不计(父会话承载整轮)。设置里有「测试」按钮,一键预览权限申请与通道效果。
43
43
  - **缓存命中率两位小数(可开关,默认关闭)**:DSH 原生统计条里的缓存命中只显示整数百分比(如「缓存命中 96%」)。开启后改写为两位小数(如「缓存命中 96.35%」),且**直接用原始 token 数计算**——缓存读取 ÷ 计费输入(未缓存输入 + 缓存读取 + 缓存写入),与原生数字同源、但不再取整;完全命中显示 100.00%,无计费输入时该组本就不显示。开关位于设置的「布局」区,关闭即恢复原样。
44
44
 
45
- 所有修改**即时生效**,无需刷新。同一份配置也可以直接在设置文档里手改:
45
+ 所有修改**即时生效**,无需刷新。同一份配置也可以直接手改——DSH 0.1.7 起 `settings.yaml` 已退役,配置写在 profile 的 `cordis.patch.yml`(设置页保存时写入的就是这份文件):
46
46
 
47
47
  ```yaml
48
- ui-tweaks:
49
- timelineStyle: web # 默认 native(DSH 自带回合导航轨),web 为经典网页时间线
50
- themeStyle: minimal # 默认 default(DSH 原生外观),minimal 只把行内代码染成 Anthropic 红(浅色 #c15f3c / 深色 #d97757),neon-lime 为荧光海报皮肤
51
- gitBarEnabled: true # 默认 false(关闭),设为 true 开启 GitBar
52
- archiveManagerEnabled: true # 默认 false(关闭),设为 true 开启「归档」页面
53
- initCommandEnabled: true # 默认 false(关闭),设为 true 开启 /init 斜杠命令
54
- preciseCacheHitEnabled: true # 默认 false(关闭),设为 true 开启缓存命中率两位小数
55
- notificationsEnabled: true # 默认 false(关闭),设为 true 开启任务提醒(事件过滤与三个通道在设置里逐项开关)
48
+ # $DSH_HOME/profiles/<profile>/cordis.patch.yml
49
+ - id: ui-tweaks
50
+ name: dsh-ui-tweaks
51
+ config:
52
+ timelineStyle: web # 默认 native(DSH 自带回合导航轨),web 为经典网页时间线
53
+ themeStyle: minimal # 默认 default(DSH 原生外观),minimal 只把行内代码染成 Anthropic 红(浅色 #c15f3c / 深色 #d97757),neon-lime 为荧光海报皮肤
54
+ gitBarEnabled: true # 默认 false(关闭),设为 true 开启 GitBar
55
+ archiveManagerEnabled: true # 默认 false(关闭),设为 true 开启「归档」页面
56
+ initCommandEnabled: true # 默认 false(关闭),设为 true 开启 /init 斜杠命令
57
+ preciseCacheHitEnabled: true # 默认 false(关闭),设为 true 开启缓存命中率两位小数
58
+ notificationsEnabled: true # 默认 false(关闭),设为 true 开启任务提醒(事件过滤与三个通道在设置里逐项开关)
56
59
  ```
57
60
 
58
61
  设置入口:**设置 → 界面调整**。
@@ -104,7 +107,7 @@ npx -y @deepseek-ai/dsh plugin --profile web add . # 从本目录作为 b
104
107
 
105
108
  ## 工作原理
106
109
 
107
- - **服务端**(`src/index.ts`):注册 `ui-tweaks` 设置命名空间,并挂载同源路由 `/_dsh/ui-tweaks/settings`——自 rc.6 起,Web 设置 RPC 只暴露固定白名单命名空间,因此自定义路由是插件拥有配置页的方式。
110
+ - **服务端**(`src/index.ts`):导出 `Config` 设置 schema——0.1.7 起设置表单由宿主从插件导出的 `Config` 自动派生(旧的 `settings.register()` 已移除),插件再以 `configure({ auto: false })` 抑制自动生成页、由客户端各分区接管展示;并挂载同源路由 `/_dsh/ui-tweaks/settings`——自 rc.6 起,Web 设置 RPC 只暴露固定白名单命名空间,因此自定义路由是插件拥有配置页的方式。
108
111
  - **Git 后端**(`src/git.ts` + `src/git-web.ts`):通过 `ctx.get('sessions')`(可选服务)解析会话 header 的 `cwd` 作为“当前项目”,用 `child_process.execFile('git', …)`(无 shell、cwd 固定、超时 + 中止传播)执行只读/写操作;同源路由 `/_dsh/ui-tweaks/git/*` 提供 status / branches / diff(hunk 或完整文件,含绝对行号)/ graph(结构化提交行,含父哈希,供前端排布分支 lane)/ commit / push / pull(仅快进)/ checkout / create / branch-delete / remote-delete。
109
112
  - **浏览器端**(`src/client/index.tsx`):读写该路由、渲染设置页,并通过运行时 `<style>` 元素实时应用样式,覆盖稳定的 DSH 锚点(`body` 上的 markdown 代码字体 token 与主题变量、`[data-slot="conversation.chat.node"]` 内的代码块 / 表头)。
110
113
  - **GitBar**(`src/client/gitbar.tsx`):分支胶囊挂在 `conversation.session.header.actions`(会话标题旁),代码差异则注册为右侧边栏原生标签页(page 类型:`ctx.sidebarRightTabs` 注册类型与指南入口,`sidebar.right.pane.tab` 按类型 id 注册内容,代码差异另注册标题席位在页签上补未提交改动的小黄点,随 `gitBarEnabled` 开关按需挂载)。视图是全高 flex 列:文件列表 / diff / 提交区三段高度分配采用「只给被拖的那一段显式高度、diff 段 `flex:1` 吃掉余量」的方式,配合 45% 上限,拖动永远不会撑破视图。提交保留在代码差异页底部的提交区。在外部应用中打开项目是 DSH 自带的 open-in-app 按钮,本插件的 `/open` 路由与 `openFolder` 后端已随之移除。提交图谱对话框的 lane 布局与 SVG 渲染拆在 `src/client/graphlayout.ts`(纯函数模块:父哈希 → 每行 lane / 边段,经典 first-parent 路由——第一父提交沿用原 lane 让线性历史始终一条线,合并与 fork 画贝塞尔弧线;`parents` 字段可选,兼容宿主里尚未重载的旧服务端)。
package/lib/config.js CHANGED
@@ -50,27 +50,32 @@ export const DEFAULT_NOTIFY_ON_INTERACTION = true;
50
50
  export const DEFAULT_NOTIFY_TITLE_FLASH = true;
51
51
  export const DEFAULT_NOTIFY_SYSTEM_NOTIFICATION = true;
52
52
  export const DEFAULT_NOTIFY_SOUND = false;
53
- /** Configuration schema with documented defaults. */
53
+ /**
54
+ * Configuration schema with documented defaults. Every field is marked
55
+ * `.volatile()` (schemastery ≥3.18.3): since DSH 0.1.7 the Settings panel
56
+ * derives each plugin's form from its exported `Config` schema, and only
57
+ * volatile fields appear in the form (and stay editable without a remount).
58
+ */
54
59
  export const Config = z.object({
55
- codeFontScale: z.number().min(MIN_CODE_FONT_SCALE).max(MAX_CODE_FONT_SCALE).default(DEFAULT_CODE_FONT_SCALE),
56
- codeFontSize: z.number().min(MIN_CODE_FONT_SIZE).max(MAX_CODE_FONT_SIZE),
57
- timelineStyle: z.union(['native', 'web']).default(DEFAULT_TIMELINE_STYLE),
58
- themeStyle: z.union(['default', 'minimal', 'neon-lime']).default(DEFAULT_THEME_STYLE),
59
- searchEnabled: z.boolean().default(DEFAULT_SEARCH_ENABLED),
60
- searchEngine: z.union(['bing', 'ddg', 'exa', 'tavily', 'keenable', 'perplexity', 'deepseek']).default(DEFAULT_SEARCH_ENGINE),
61
- bingMarket: z.union(BING_MARKET_OPTIONS).default(DEFAULT_BING_MARKET),
62
- gitBarEnabled: z.boolean().default(DEFAULT_GITBAR_ENABLED),
63
- archiveManagerEnabled: z.boolean().default(DEFAULT_ARCHIVE_MANAGER_ENABLED),
64
- mcpManagerEnabled: z.boolean().default(DEFAULT_MCP_MANAGER_ENABLED),
65
- initCommandEnabled: z.boolean().default(DEFAULT_INIT_COMMAND_ENABLED),
66
- preciseCacheHitEnabled: z.boolean().default(DEFAULT_PRECISE_CACHE_HIT_ENABLED),
67
- notificationsEnabled: z.boolean().default(DEFAULT_NOTIFICATIONS_ENABLED),
68
- notifyOnlyWhenHidden: z.boolean().default(DEFAULT_NOTIFY_ONLY_WHEN_HIDDEN),
69
- notifyOnComplete: z.boolean().default(DEFAULT_NOTIFY_ON_COMPLETE),
70
- notifyOnInteraction: z.boolean().default(DEFAULT_NOTIFY_ON_INTERACTION),
71
- notifyTitleFlash: z.boolean().default(DEFAULT_NOTIFY_TITLE_FLASH),
72
- notifySystemNotification: z.boolean().default(DEFAULT_NOTIFY_SYSTEM_NOTIFICATION),
73
- notifySound: z.boolean().default(DEFAULT_NOTIFY_SOUND),
60
+ codeFontScale: z.number().min(MIN_CODE_FONT_SCALE).max(MAX_CODE_FONT_SCALE).default(DEFAULT_CODE_FONT_SCALE).volatile(),
61
+ codeFontSize: z.number().min(MIN_CODE_FONT_SIZE).max(MAX_CODE_FONT_SIZE).volatile(),
62
+ timelineStyle: z.union(['native', 'web']).default(DEFAULT_TIMELINE_STYLE).volatile(),
63
+ themeStyle: z.union(['default', 'minimal', 'neon-lime']).default(DEFAULT_THEME_STYLE).volatile(),
64
+ searchEnabled: z.boolean().default(DEFAULT_SEARCH_ENABLED).volatile(),
65
+ searchEngine: z.union(['bing', 'ddg', 'exa', 'tavily', 'keenable', 'perplexity', 'deepseek']).default(DEFAULT_SEARCH_ENGINE).volatile(),
66
+ bingMarket: z.union(BING_MARKET_OPTIONS).default(DEFAULT_BING_MARKET).volatile(),
67
+ gitBarEnabled: z.boolean().default(DEFAULT_GITBAR_ENABLED).volatile(),
68
+ archiveManagerEnabled: z.boolean().default(DEFAULT_ARCHIVE_MANAGER_ENABLED).volatile(),
69
+ mcpManagerEnabled: z.boolean().default(DEFAULT_MCP_MANAGER_ENABLED).volatile(),
70
+ initCommandEnabled: z.boolean().default(DEFAULT_INIT_COMMAND_ENABLED).volatile(),
71
+ preciseCacheHitEnabled: z.boolean().default(DEFAULT_PRECISE_CACHE_HIT_ENABLED).volatile(),
72
+ notificationsEnabled: z.boolean().default(DEFAULT_NOTIFICATIONS_ENABLED).volatile(),
73
+ notifyOnlyWhenHidden: z.boolean().default(DEFAULT_NOTIFY_ONLY_WHEN_HIDDEN).volatile(),
74
+ notifyOnComplete: z.boolean().default(DEFAULT_NOTIFY_ON_COMPLETE).volatile(),
75
+ notifyOnInteraction: z.boolean().default(DEFAULT_NOTIFY_ON_INTERACTION).volatile(),
76
+ notifyTitleFlash: z.boolean().default(DEFAULT_NOTIFY_TITLE_FLASH).volatile(),
77
+ notifySystemNotification: z.boolean().default(DEFAULT_NOTIFY_SYSTEM_NOTIFICATION).volatile(),
78
+ notifySound: z.boolean().default(DEFAULT_NOTIFY_SOUND).volatile(),
74
79
  });
75
80
  /** Resolve a partial config into a fully defaulted value. */
76
81
  export function resolveConfig(config = {}) {
package/lib/config.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/lib/index.js CHANGED
@@ -1,13 +1,18 @@
1
1
  /**
2
2
  * dsh-ui-tweaks — server half.
3
3
  *
4
- * Registers the `ui-tweaks` settings namespace so users can tune the
5
- * conversation UI either from the Settings panel or by editing the settings
6
- * document directly (settings.yaml `ui-tweaks:` section). All rendering work
4
+ * Owns the `ui-tweaks` settings namespace so users can tune the conversation
5
+ * UI either from the Settings panel or by editing the profile patch
6
+ * (`cordis.patch.yml` `ui-tweaks` entry; settings.yaml was retired in DSH
7
+ * 0.1.7, which migrated its sections there). Since 0.1.7 the Settings panel
8
+ * derives each form from the plugin's exported `Config` schema — there is no
9
+ * explicit `settings.register()` anymore — so this module re-exports
10
+ * `Config` and opts out of the auto-generated form page (the browser half
11
+ * owns its sections through the `settings.section` slot). All rendering work
7
12
  * happens in the browser bundle (`src/client`), which reads and writes this
8
13
  * namespace through the same-origin route mounted here — the Web settings RPC
9
- * only exposes a fixed allowlist of namespaces since rc.6, so a custom route is
10
- * the supported way for a plugin to own a configuration page.
14
+ * only exposes a fixed allowlist of namespaces since rc.6, so a custom route
15
+ * is the supported way for a plugin to own a configuration page.
11
16
  * @module dsh-ui-tweaks
12
17
  */
13
18
  import { UI_TWEAKS_SETTINGS_NAMESPACE, Config, } from "./config.js";
@@ -21,14 +26,23 @@ import { McpBackend, installMcpWeb } from "./mcp.js";
21
26
  import { SearchBackend, installSearchWeb } from "./search-web.js";
22
27
  import { createSearchProvider } from "./search.js";
23
28
  export const name = 'dsh-ui-tweaks';
29
+ /**
30
+ * Re-export the Config schema so the Cordis loader attaches it to this
31
+ * plugin's runtime: since DSH 0.1.7 `SettingsForms` reads
32
+ * `entry.fiber.runtime.Config` to derive the settings form (the old
33
+ * `ctx.settings.register()` call no longer exists).
34
+ */
35
+ export { Config };
24
36
  /** Required services: the settings seam is the whole server-side surface. */
25
37
  export const inject = ['settings', 'web'];
26
38
  export function apply(ctx) {
27
- ctx.settings.register(UI_TWEAKS_SETTINGS_NAMESPACE, Config, {
28
- applies: 'live',
29
- });
39
+ // The Settings form is derived from the exported `Config` schema (DSH
40
+ // 0.1.7+). This client owns its Settings sections through the
41
+ // `settings.section` slot, so opt the instance out of the auto-generated
42
+ // form page instead of registering a namespace by hand.
43
+ ctx.effect(() => ctx.settings.configure({ auto: false }, ctx.fiber));
30
44
  // The task notifier classifies turn endings (completed / aborted / failed)
31
- // through this session projection (same registration pattern as above).
45
+ // through this session projection (registered when present).
32
46
  installTurnOutcomeProjection(ctx);
33
47
  // The conversation timeline rail enumerates user messages through this
34
48
  // session projection (registered when the projection service is present).
@@ -54,7 +68,7 @@ export function apply(ctx) {
54
68
  installSearchWeb(ctx, searchBackend);
55
69
  // Free web search: registering a provider into the web seam makes the
56
70
  // harness's built-in `web_search` tool use it. The preferred engine and
57
- // Bing market come live from the ui-tweaks settings document; engine API
71
+ // Bing market come live from the ui-tweaks settings form; engine API
58
72
  // keys resolve through the credentials center (~/.dsh/.credentials.yaml)
59
73
  // first, then the process environment.
60
74
  const web = ctx;
@@ -62,7 +76,8 @@ export function apply(ctx) {
62
76
  const row = ctx.settings.describe().find(candidate => candidate.ns === UI_TWEAKS_SETTINGS_NAMESPACE);
63
77
  return (row?.value?.searchEnabled) === true;
64
78
  };
65
- if (web.web) {
79
+ const seam = web.web;
80
+ if (seam) {
66
81
  const readConfig = () => {
67
82
  const row = ctx.settings.describe().find(candidate => candidate.ns === UI_TWEAKS_SETTINGS_NAMESPACE);
68
83
  const value = row?.value;
@@ -87,23 +102,29 @@ export function apply(ctx) {
87
102
  return process.env[envName];
88
103
  };
89
104
  const provider = createSearchProvider({ readConfig, resolveApiKey });
90
- web.web.registerSearchProvider(provider);
91
- // Takeover only while the feature is enabled: registration alone must not
92
- // hijack web_search when the toggle is off. Runtime availability still
105
+ seam.registerSearchProvider(provider);
106
+ // Startup reconcile — deferred until this fiber is ACTIVE: since DSH
107
+ // 0.1.7 `settings.describe()` only lists ACTIVE entries, and inside
108
+ // apply() our own fiber is still LOADING, so a synchronous read here
109
+ // would always see "off" and `syncSearchPatch(false)` would write that
110
+ // back over the user's enabled patch entry on every boot. Takeover only
111
+ // happens while the feature is enabled; runtime availability still
93
112
  // re-reads the setting live, so turning it off always wins.
94
- if (searchEnabledNow() && !web.web.searchProviderId) {
95
- web.web.searchProviderId = provider.id;
96
- }
97
- // Startup reconcile: mirror the toggle into the profile patch so the
98
- // harness's built-in web_search is activated / restored even if the
99
- // setting was changed by hand (settings.yaml) between restarts.
100
- void searchBackend.syncSearchPatch(searchEnabledNow()).catch((error) => {
113
+ void ctx.fiber.await().then(() => {
114
+ if (searchEnabledNow() && !seam.searchProviderId) {
115
+ seam.searchProviderId = provider.id;
116
+ }
117
+ // Mirror the toggle into the profile patch so the harness's built-in
118
+ // web_search is activated / restored even if the setting was changed
119
+ // by hand between restarts.
120
+ return searchBackend.syncSearchPatch(searchEnabledNow());
121
+ }).catch((error) => {
101
122
  ctx.logger.warn('[dsh-ui-tweaks] search patch sync failed: %s', error instanceof Error ? error.message : String(error));
102
123
  });
103
124
  }
104
125
  else {
105
126
  ctx.logger.warn('[dsh-ui-tweaks] web seam not found; built-in web_search stays on the stock backend');
106
127
  }
107
- ctx.logger.info('[dsh-ui-tweaks] settings namespace registered and Web routes mounted');
128
+ ctx.logger.info('[dsh-ui-tweaks] settings schema exported and Web routes mounted');
108
129
  }
109
130
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * hand-edited settings document and the Settings panel stay consistent.
5
5
  * @module dsh-ui-tweaks/config
6
6
  */
7
- import type Schema from '@deepseek-ai/schemastery';
7
+ import z from '@deepseek-ai/schemastery';
8
8
  /** Settings document namespace owned by this plugin. */
9
9
  export declare const UI_TWEAKS_SETTINGS_NAMESPACE = "ui-tweaks";
10
10
  /** Raw user-facing configuration (partial inputs receive schema defaults). */
@@ -151,8 +151,53 @@ export declare const DEFAULT_NOTIFY_ON_INTERACTION = true;
151
151
  export declare const DEFAULT_NOTIFY_TITLE_FLASH = true;
152
152
  export declare const DEFAULT_NOTIFY_SYSTEM_NOTIFICATION = true;
153
153
  export declare const DEFAULT_NOTIFY_SOUND = false;
154
- /** Configuration schema with documented defaults. */
155
- export declare const Config: Schema<UITweaksConfig>;
154
+ /**
155
+ * Configuration schema with documented defaults. Every field is marked
156
+ * `.volatile()` (schemastery ≥3.18.3): since DSH 0.1.7 the Settings panel
157
+ * derives each plugin's form from its exported `Config` schema, and only
158
+ * volatile fields appear in the form (and stay editable without a remount).
159
+ */
160
+ export declare const Config: z<Schemastery.ObjectS<NoInfer<{
161
+ codeFontScale: z<number, number, "volatile-defined">;
162
+ codeFontSize: z<number, number, "volatile">;
163
+ timelineStyle: z<"native" | "web", "native" | "web", "volatile-defined">;
164
+ themeStyle: z<"default" | "minimal" | "neon-lime", "default" | "minimal" | "neon-lime", "volatile-defined">;
165
+ searchEnabled: z<boolean, boolean, "volatile-defined">;
166
+ searchEngine: z<"bing" | "ddg" | "exa" | "tavily" | "keenable" | "perplexity" | "deepseek", "bing" | "ddg" | "exa" | "tavily" | "keenable" | "perplexity" | "deepseek", "volatile-defined">;
167
+ bingMarket: z<"zh-CN" | "zh-HK" | "zh-TW" | "ja-JP" | "en-US" | "en-GB", "zh-CN" | "zh-HK" | "zh-TW" | "ja-JP" | "en-US" | "en-GB", "volatile-defined">;
168
+ gitBarEnabled: z<boolean, boolean, "volatile-defined">;
169
+ archiveManagerEnabled: z<boolean, boolean, "volatile-defined">;
170
+ mcpManagerEnabled: z<boolean, boolean, "volatile-defined">;
171
+ initCommandEnabled: z<boolean, boolean, "volatile-defined">;
172
+ preciseCacheHitEnabled: z<boolean, boolean, "volatile-defined">;
173
+ notificationsEnabled: z<boolean, boolean, "volatile-defined">;
174
+ notifyOnlyWhenHidden: z<boolean, boolean, "volatile-defined">;
175
+ notifyOnComplete: z<boolean, boolean, "volatile-defined">;
176
+ notifyOnInteraction: z<boolean, boolean, "volatile-defined">;
177
+ notifyTitleFlash: z<boolean, boolean, "volatile-defined">;
178
+ notifySystemNotification: z<boolean, boolean, "volatile-defined">;
179
+ notifySound: z<boolean, boolean, "volatile-defined">;
180
+ }>>, Schemastery.ObjectT<NoInfer<{
181
+ codeFontScale: z<number, number, "volatile-defined">;
182
+ codeFontSize: z<number, number, "volatile">;
183
+ timelineStyle: z<"native" | "web", "native" | "web", "volatile-defined">;
184
+ themeStyle: z<"default" | "minimal" | "neon-lime", "default" | "minimal" | "neon-lime", "volatile-defined">;
185
+ searchEnabled: z<boolean, boolean, "volatile-defined">;
186
+ searchEngine: z<"bing" | "ddg" | "exa" | "tavily" | "keenable" | "perplexity" | "deepseek", "bing" | "ddg" | "exa" | "tavily" | "keenable" | "perplexity" | "deepseek", "volatile-defined">;
187
+ bingMarket: z<"zh-CN" | "zh-HK" | "zh-TW" | "ja-JP" | "en-US" | "en-GB", "zh-CN" | "zh-HK" | "zh-TW" | "ja-JP" | "en-US" | "en-GB", "volatile-defined">;
188
+ gitBarEnabled: z<boolean, boolean, "volatile-defined">;
189
+ archiveManagerEnabled: z<boolean, boolean, "volatile-defined">;
190
+ mcpManagerEnabled: z<boolean, boolean, "volatile-defined">;
191
+ initCommandEnabled: z<boolean, boolean, "volatile-defined">;
192
+ preciseCacheHitEnabled: z<boolean, boolean, "volatile-defined">;
193
+ notificationsEnabled: z<boolean, boolean, "volatile-defined">;
194
+ notifyOnlyWhenHidden: z<boolean, boolean, "volatile-defined">;
195
+ notifyOnComplete: z<boolean, boolean, "volatile-defined">;
196
+ notifyOnInteraction: z<boolean, boolean, "volatile-defined">;
197
+ notifyTitleFlash: z<boolean, boolean, "volatile-defined">;
198
+ notifySystemNotification: z<boolean, boolean, "volatile-defined">;
199
+ notifySound: z<boolean, boolean, "volatile-defined">;
200
+ }>>, "plain">;
156
201
  /** Configuration after static validation, with every default materialized. */
157
202
  export interface ResolvedUITweaksConfig {
158
203
  /** Code font size as a percentage of the stock message font size (legacy input). */
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,30 @@
1
1
  /**
2
2
  * dsh-ui-tweaks — server half.
3
3
  *
4
- * Registers the `ui-tweaks` settings namespace so users can tune the
5
- * conversation UI either from the Settings panel or by editing the settings
6
- * document directly (settings.yaml `ui-tweaks:` section). All rendering work
4
+ * Owns the `ui-tweaks` settings namespace so users can tune the conversation
5
+ * UI either from the Settings panel or by editing the profile patch
6
+ * (`cordis.patch.yml` `ui-tweaks` entry; settings.yaml was retired in DSH
7
+ * 0.1.7, which migrated its sections there). Since 0.1.7 the Settings panel
8
+ * derives each form from the plugin's exported `Config` schema — there is no
9
+ * explicit `settings.register()` anymore — so this module re-exports
10
+ * `Config` and opts out of the auto-generated form page (the browser half
11
+ * owns its sections through the `settings.section` slot). All rendering work
7
12
  * happens in the browser bundle (`src/client`), which reads and writes this
8
13
  * namespace through the same-origin route mounted here — the Web settings RPC
9
- * only exposes a fixed allowlist of namespaces since rc.6, so a custom route is
10
- * the supported way for a plugin to own a configuration page.
14
+ * only exposes a fixed allowlist of namespaces since rc.6, so a custom route
15
+ * is the supported way for a plugin to own a configuration page.
11
16
  * @module dsh-ui-tweaks
12
17
  */
13
18
  import type { Context } from '@deepseek-ai/cordis';
19
+ import { Config } from './config.ts';
14
20
  export declare const name = "dsh-ui-tweaks";
21
+ /**
22
+ * Re-export the Config schema so the Cordis loader attaches it to this
23
+ * plugin's runtime: since DSH 0.1.7 `SettingsForms` reads
24
+ * `entry.fiber.runtime.Config` to derive the settings form (the old
25
+ * `ctx.settings.register()` call no longer exists).
26
+ */
27
+ export { Config };
15
28
  /** Required services: the settings seam is the whole server-side surface. */
16
29
  export declare const inject: string[];
17
30
  export declare function apply(ctx: Context): void;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAelD,eAAO,MAAM,IAAI,kBAAkB,CAAA;AAEnC,6EAA6E;AAC7E,eAAO,MAAM,MAAM,UAAsB,CAAA;AAEzC,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CA0FxC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAEL,MAAM,EACP,MAAM,aAAa,CAAA;AAWpB,eAAO,MAAM,IAAI,kBAAkB,CAAA;AAEnC;;;;;GAKG;AACH,OAAO,EAAE,MAAM,EAAE,CAAA;AAEjB,6EAA6E;AAC7E,eAAO,MAAM,MAAM,UAAsB,CAAA;AAEzC,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAmGxC"}
@@ -21,7 +21,7 @@ import type { ProjectionDefinition } from '@deepseek-ai/dsh-session-projection';
21
21
  /** Projection key the browser notifier reads through list-row `projectionValues`. */
22
22
  export declare const TURN_OUTCOME_PROJECTION_KEY = "dshTurnOutcome";
23
23
  /** The stock `TurnEndReason` kinds (the map is merge-extensible upstream). */
24
- export type TurnOutcomeKind = 'completed' | 'aborted' | 'blocked' | 'error' | 'max-tokens' | 'interrupted';
24
+ export type TurnOutcomeKind = 'completed' | 'aborted' | 'blocked' | 'error' | 'max-tokens' | 'interrupted' | 'forked';
25
25
  /** Whole projection value: why the latest turn ended. */
26
26
  export interface TurnOutcomeValue {
27
27
  kind: TurnOutcomeKind;
@@ -1 +1 @@
1
- {"version":3,"file":"turn-outcome.d.ts","sourceRoot":"","sources":["../../src/turn-outcome.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAA;AAG/E,qFAAqF;AACrF,eAAO,MAAM,2BAA2B,mBAAmB,CAAA;AAE3D,8EAA8E;AAC9E,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,YAAY,GAAG,aAAa,CAAA;AAE1G,yDAAyD;AACzD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,eAAe,CAAA;IACrB,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAA;IACZ,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,+EAA+E;IAC/E,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAaD,OAAO,QAAQ,2CAA2C,CAAC;IACzD,UAAU,oBAAoB;QAC5B,uFAAuF;QACvF,cAAc,EAAE,gBAAgB,GAAG,IAAI,CAAA;KACxC;IACD,UAAU,yBAAyB;QACjC,+EAA+E;QAC/E,cAAc,EAAE,gBAAgB,GAAG,IAAI,CAAA;KACxC;CACF;AAED,qFAAqF;AACrF,KAAK,yBAAyB,GAAG,IAAI,CACnC,oBAAoB,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAC,EAC/D,MAAM,CACP,GAAG;IACF,IAAI,EAAE,WAAW,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;CAC3F,CAAA;AAED,4EAA4E;AAC5E,eAAO,MAAM,+BAA+B,EAAE,yBAsB7C,CAAA;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAI/D"}
1
+ {"version":3,"file":"turn-outcome.d.ts","sourceRoot":"","sources":["../../src/turn-outcome.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAA;AAG/E,qFAAqF;AACrF,eAAO,MAAM,2BAA2B,mBAAmB,CAAA;AAE3D,8EAA8E;AAC9E,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,YAAY,GAAG,aAAa,GAAG,QAAQ,CAAA;AAErH,yDAAyD;AACzD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,eAAe,CAAA;IACrB,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAA;IACZ,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,+EAA+E;IAC/E,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAaD,OAAO,QAAQ,2CAA2C,CAAC;IACzD,UAAU,oBAAoB;QAC5B,uFAAuF;QACvF,cAAc,EAAE,gBAAgB,GAAG,IAAI,CAAA;KACxC;IACD,UAAU,yBAAyB;QACjC,+EAA+E;QAC/E,cAAc,EAAE,gBAAgB,GAAG,IAAI,CAAA;KACxC;CACF;AAED,qFAAqF;AACrF,KAAK,yBAAyB,GAAG,IAAI,CACnC,oBAAoB,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAC,EAC/D,MAAM,CACP,GAAG;IACF,IAAI,EAAE,WAAW,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;CAC3F,CAAA;AAED,4EAA4E;AAC5E,eAAO,MAAM,+BAA+B,EAAE,yBAsB7C,CAAA;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAI/D"}
package/package.json CHANGED
@@ -1,141 +1,142 @@
1
- {
2
- "name": "dsh-ui-tweaks",
3
- "version": "0.17.3",
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.1.6-alpha.2+ (the conversation timeline and dialog width are now native to DSH; the task notifier follows the alpha.2 session-status API).",
5
- "keywords": [
6
- "dsh",
7
- "deepseek-harness",
8
- "deepseek",
9
- "deepseek-ai",
10
- "cordis",
11
- "plugin",
12
- "ui-tweaks",
13
- "chat-ui"
14
- ],
15
- "type": "module",
16
- "repository": {
17
- "type": "git",
18
- "url": "git+https://github.com/wlj521/dsh-ui-tweaks.git"
19
- },
20
- "publishConfig": {
21
- "access": "public"
22
- },
23
- "main": "lib/index.js",
24
- "types": "lib/types/index.d.ts",
25
- "exports": {
26
- ".": {
27
- "types": "./lib/types/index.d.ts",
28
- "default": "./lib/index.js"
29
- },
30
- "./client": {
31
- "types": "./lib/types/client/index.d.ts",
32
- "default": "./lib/client.js"
33
- },
34
- "./cordis.patch.yml": "./cordis.patch.yml",
35
- "./package.json": "./package.json"
36
- },
37
- "files": [
38
- "lib",
39
- "cordis.patch.yml",
40
- "assets",
41
- "README.md",
42
- "README.en.md",
43
- "LICENSE"
44
- ],
45
- "engines": {
46
- "node": ">=20"
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
- "license": "MIT",
55
- "dsh": {
56
- "bundle": {
57
- "patch": "./cordis.patch.yml"
58
- },
59
- "client": {
60
- "inject": [
61
- "@deepseek-ai/dsh-api-session-controller",
62
- "@deepseek-ai/dsh-api-workspace-controller",
63
- "@deepseek-ai/dsh-client-locale",
64
- "@deepseek-ai/dsh-client-store",
65
- "@deepseek-ai/dsh-client-ui-commands",
66
- "@deepseek-ai/dsh-client-ui-conversation",
67
- "@deepseek-ai/dsh-client-ui-renderer",
68
- "@deepseek-ai/dsh-client-ui-settings",
69
- "@deepseek-ai/dsh-client-ui-slots",
70
- "@deepseek-ai/dsh-client-ui-workspace",
71
- "@deepseek-ai/dsh-client-ui-session"
72
- ],
73
- "platform": "web"
74
- }
75
- },
76
- "peerDependencies": {
77
- "@deepseek-ai/cordis": "^4.0.2",
78
- "@deepseek-ai/dsh-api-session-controller": "^0.1.6-alpha.2",
79
- "@deepseek-ai/dsh-api-workspace-controller": "^0.1.6-alpha.2",
80
- "@deepseek-ai/dsh-client-locale": "^0.1.6-alpha.2",
81
- "@deepseek-ai/dsh-client-store": "^0.1.6-alpha.2",
82
- "@deepseek-ai/dsh-client-ui-commands": "^0.1.6-alpha.2",
83
- "@deepseek-ai/dsh-client-ui-conversation": "^0.1.6-alpha.2",
84
- "@deepseek-ai/dsh-client-ui-renderer": "^0.1.6-alpha.2",
85
- "@deepseek-ai/dsh-client-ui-session": "^0.1.6-alpha.2",
86
- "@deepseek-ai/dsh-client-ui-settings": "^0.1.6-alpha.2",
87
- "@deepseek-ai/dsh-client-ui-sidebar-right": "^0.1.6-alpha.2",
88
- "@deepseek-ai/dsh-client-ui-slots": "^0.1.6-alpha.2",
89
- "@deepseek-ai/dsh-client-ui-workspace": "^0.1.6-alpha.2",
90
- "@deepseek-ai/dsh-host-webserver": "^0.1.6-alpha.2",
91
- "@deepseek-ai/dsh-session": "^0.1.6-alpha.2",
92
- "@deepseek-ai/dsh-session-projection": "^0.1.6-alpha.2",
93
- "@deepseek-ai/dsh-settings": "^0.1.6-alpha.2",
94
- "@deepseek-ai/dsh-storage-domain": "^0.1.6-alpha.2",
95
- "@deepseek-ai/dsh-token-meter": "^0.1.6-alpha.2",
96
- "@deepseek-ai/dsh-workspace": "^0.1.6-alpha.2",
97
- "@deepseek-ai/schemastery": "^3.18.2",
98
- "react": "^18.2.0",
99
- "react-dom": "^18.2.0"
100
- },
101
- "peerDependenciesMeta": {
102
- "cordis": {
103
- "optional": true
104
- }
105
- },
106
- "devDependencies": {
107
- "@deepseek-ai/cordis": "^4.0.2",
108
- "@deepseek-ai/dsh-api-session-controller": "0.1.6-alpha.2",
109
- "@deepseek-ai/dsh-api-workspace-controller": "0.1.6-alpha.2",
110
- "@deepseek-ai/dsh-client-locale": "0.1.6-alpha.2",
111
- "@deepseek-ai/dsh-client-store": "0.1.6-alpha.2",
112
- "@deepseek-ai/dsh-client-ui-commands": "0.1.6-alpha.2",
113
- "@deepseek-ai/dsh-client-ui-conversation": "0.1.6-alpha.2",
114
- "@deepseek-ai/dsh-client-ui-renderer": "0.1.6-alpha.2",
115
- "@deepseek-ai/dsh-client-ui-session": "0.1.6-alpha.2",
116
- "@deepseek-ai/dsh-client-ui-settings": "0.1.6-alpha.2",
117
- "@deepseek-ai/dsh-client-ui-sidebar-right": "0.1.6-alpha.2",
118
- "@deepseek-ai/dsh-client-ui-slots": "0.1.6-alpha.2",
119
- "@deepseek-ai/dsh-client-ui-workspace": "0.1.6-alpha.2",
120
- "@deepseek-ai/dsh-host-webserver": "0.1.6-alpha.2",
121
- "@deepseek-ai/dsh-session": "0.1.6-alpha.2",
122
- "@deepseek-ai/dsh-session-persistence": "0.1.6-alpha.2",
123
- "@deepseek-ai/dsh-session-projection": "0.1.6-alpha.2",
124
- "@deepseek-ai/dsh-settings": "0.1.6-alpha.2",
125
- "@deepseek-ai/dsh-storage-domain": "0.1.6-alpha.2",
126
- "@deepseek-ai/dsh-token-meter": "0.1.6-alpha.2",
127
- "@deepseek-ai/dsh-workspace": "0.1.6-alpha.2",
128
- "@deepseek-ai/schemastery": "^3.18.2",
129
- "@types/node": "^24.0.0",
130
- "@types/react": "~18.3.1",
131
- "@types/react-dom": "~18.3.1",
132
- "esbuild": "^0.28.2",
133
- "react": "^18.2.0",
134
- "react-dom": "^18.2.0",
135
- "typescript": "^5.7.0",
136
- "zod": "^4.5.4"
137
- },
138
- "dependencies": {
139
- "yaml": "2.9.0"
140
- }
141
- }
1
+ {
2
+ "name": "dsh-ui-tweaks",
3
+ "version": "0.18.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.1.7-rc.2 (the conversation timeline and dialog width are now native to DSH; the task notifier follows the alpha.2 session-status API).",
5
+ "keywords": [
6
+ "dsh",
7
+ "deepseek-harness",
8
+ "deepseek",
9
+ "deepseek-ai",
10
+ "cordis",
11
+ "plugin",
12
+ "ui-tweaks",
13
+ "chat-ui"
14
+ ],
15
+ "type": "module",
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "git+https://github.com/wlj521/dsh-ui-tweaks.git"
19
+ },
20
+ "publishConfig": {
21
+ "access": "public"
22
+ },
23
+ "main": "lib/index.js",
24
+ "types": "lib/types/index.d.ts",
25
+ "exports": {
26
+ ".": {
27
+ "types": "./lib/types/index.d.ts",
28
+ "default": "./lib/index.js"
29
+ },
30
+ "./client": {
31
+ "types": "./lib/types/client/index.d.ts",
32
+ "default": "./lib/client.js"
33
+ },
34
+ "./cordis.patch.yml": "./cordis.patch.yml",
35
+ "./package.json": "./package.json"
36
+ },
37
+ "files": [
38
+ "lib",
39
+ "cordis.patch.yml",
40
+ "assets",
41
+ "README.md",
42
+ "README.en.md",
43
+ "LICENSE"
44
+ ],
45
+ "engines": {
46
+ "node": ">=20"
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
+ "license": "MIT",
55
+ "dsh": {
56
+ "bundle": {
57
+ "patch": "./cordis.patch.yml"
58
+ },
59
+ "client": {
60
+ "inject": [
61
+ "@deepseek-ai/dsh-api-session-controller",
62
+ "@deepseek-ai/dsh-api-workspace-controller",
63
+ "@deepseek-ai/dsh-client-locale",
64
+ "@deepseek-ai/dsh-client-store",
65
+ "@deepseek-ai/dsh-client-ui-commands",
66
+ "@deepseek-ai/dsh-client-ui-conversation",
67
+ "@deepseek-ai/dsh-client-ui-renderer",
68
+ "@deepseek-ai/dsh-client-ui-settings",
69
+ "@deepseek-ai/dsh-client-ui-slots",
70
+ "@deepseek-ai/dsh-client-ui-workspace",
71
+ "@deepseek-ai/dsh-client-ui-session"
72
+ ],
73
+ "platform": "web"
74
+ }
75
+ },
76
+ "peerDependencies": {
77
+ "@deepseek-ai/cordis": "^4.0.4",
78
+ "@deepseek-ai/dsh-api-session-controller": "^0.1.7-rc.2",
79
+ "@deepseek-ai/dsh-api-workspace-controller": "^0.1.7-rc.2",
80
+ "@deepseek-ai/dsh-client-locale": "^0.1.7-rc.2",
81
+ "@deepseek-ai/dsh-client-store": "^0.1.7-rc.2",
82
+ "@deepseek-ai/dsh-client-ui-commands": "^0.1.7-rc.2",
83
+ "@deepseek-ai/dsh-client-ui-conversation": "^0.1.7-rc.2",
84
+ "@deepseek-ai/dsh-client-ui-renderer": "^0.1.7-rc.2",
85
+ "@deepseek-ai/dsh-client-ui-session": "^0.1.7-rc.2",
86
+ "@deepseek-ai/dsh-client-ui-settings": "^0.1.7-rc.2",
87
+ "@deepseek-ai/dsh-client-ui-sidebar-right": "^0.1.7-rc.2",
88
+ "@deepseek-ai/dsh-client-ui-slots": "^0.1.7-rc.2",
89
+ "@deepseek-ai/dsh-client-ui-workspace": "^0.1.7-rc.2",
90
+ "@deepseek-ai/dsh-host-webserver": "^0.1.7-rc.2",
91
+ "@deepseek-ai/dsh-session": "^0.1.7-rc.2",
92
+ "@deepseek-ai/dsh-session-projection": "^0.1.7-rc.2",
93
+ "@deepseek-ai/dsh-settings": "^0.1.7-rc.2",
94
+ "@deepseek-ai/dsh-storage-domain": "^0.1.7-rc.2",
95
+ "@deepseek-ai/dsh-token-meter": "^0.1.7-rc.2",
96
+ "@deepseek-ai/dsh-workspace": "^0.1.7-rc.2",
97
+ "@deepseek-ai/schemastery": "^3.18.4",
98
+ "react": "^18.2.0",
99
+ "react-dom": "^18.2.0"
100
+ },
101
+ "peerDependenciesMeta": {
102
+ "cordis": {
103
+ "optional": true
104
+ }
105
+ },
106
+ "devDependencies": {
107
+ "@deepseek-ai/cordis": "^4.0.4",
108
+ "@deepseek-ai/dsh-api-session-controller": "0.1.7-rc.2",
109
+ "@deepseek-ai/dsh-api-workspace-controller": "0.1.7-rc.2",
110
+ "@deepseek-ai/dsh-client-locale": "0.1.7-rc.2",
111
+ "@deepseek-ai/dsh-client-store": "0.1.7-rc.2",
112
+ "@deepseek-ai/dsh-client-ui-commands": "0.1.7-rc.2",
113
+ "@deepseek-ai/dsh-client-ui-conversation": "0.1.7-rc.2",
114
+ "@deepseek-ai/dsh-client-ui-renderer": "0.1.7-rc.2",
115
+ "@deepseek-ai/dsh-client-ui-session": "0.1.7-rc.2",
116
+ "@deepseek-ai/dsh-client-ui-settings": "0.1.7-rc.2",
117
+ "@deepseek-ai/dsh-client-ui-sidebar-right": "0.1.7-rc.2",
118
+ "@deepseek-ai/dsh-client-ui-slots": "0.1.7-rc.2",
119
+ "@deepseek-ai/dsh-client-ui-workspace": "0.1.7-rc.2",
120
+ "@deepseek-ai/dsh-host-webserver": "0.1.7-rc.2",
121
+ "@deepseek-ai/dsh-session": "0.1.7-rc.2",
122
+ "@deepseek-ai/dsh-session-persistence": "0.1.7-rc.2",
123
+ "@deepseek-ai/dsh-session-projection": "0.1.7-rc.2",
124
+ "@deepseek-ai/dsh-settings": "0.1.7-rc.2",
125
+ "@deepseek-ai/dsh-storage-domain": "0.1.7-rc.2",
126
+ "@deepseek-ai/dsh-token-meter": "0.1.7-rc.2",
127
+ "@deepseek-ai/dsh-workspace": "0.1.7-rc.2",
128
+ "@deepseek-ai/schemastery": "^3.18.4",
129
+ "@types/node": "^24.0.0",
130
+ "@types/react": "~18.3.1",
131
+ "@types/react-dom": "~18.3.1",
132
+ "esbuild": "^0.28.2",
133
+ "react": "^18.2.0",
134
+ "react-dom": "^18.2.0",
135
+ "typescript": "^5.7.0",
136
+ "zod": "^4.5.4"
137
+ },
138
+ "dependencies": {
139
+ "semver": "^7.8.5",
140
+ "yaml": "2.9.0"
141
+ }
142
+ }