@idoall/dsh-session-colors 0.1.4 → 0.1.5

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/CHANGELOG.md CHANGED
@@ -8,6 +8,36 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
8
8
 
9
9
  ## [Unreleased]
10
10
 
11
+ ## [0.1.5] - 2026-09-25
12
+
13
+ Verified against DeepSeek Harness `0.1.7-rc.2` (the latest release candidate) as
14
+ well as `0.1.7-rc.1` and `0.1.7-alpha.2`. No code change: every contract this
15
+ plugin depends on is unchanged between `rc.1` and `rc.2`, and this release
16
+ confirms the same code on the second RC and records it.
17
+
18
+ ### Added
19
+
20
+ - `dsh.compatibility.dshReleases` now records `0.1.7-rc.2` alongside
21
+ `0.1.7-rc.1` and `0.1.7-alpha.2`; both READMEs state all three versions.
22
+ - The design record documents the one substantive addition in `rc.2` — the
23
+ Session-row seats `sidebar.session.row.leading` and `sidebar.session.row.hover`
24
+ — and why the chip deliberately stays on its own click-through layer instead of
25
+ moving into that seat: the leading seat shares the status dot's 16px cell and is
26
+ mounted only while a row is idle, so a chip placed there would disappear for
27
+ running, waiting and archived Sessions.
28
+
29
+ ### Notes
30
+
31
+ - The peer and `dsh.engines.dsh` ranges stay `>=0.1.7-alpha.2 <0.2.0`. Under
32
+ node-semver's prerelease rule that range already admits `0.1.7-rc.2` (a
33
+ comparator names the same `major.minor.patch`), so it was deliberately **not**
34
+ widened for the second RC — widening would admit versions nobody tested.
35
+ - `0.1.5` supports DSH `0.1.7-rc.2`, `0.1.7-rc.1` and `0.1.7-alpha.2`.
36
+ Installations on an older DSH, including `0.1.6-alpha.2`, should stay on plugin
37
+ `0.1.2`.
38
+ - The duplicated `@deepseek-ai/schemastery` peer bullet in the English README was
39
+ removed; the Chinese README already carried it once.
40
+
11
41
  ## [0.1.4] - 2026-09-23
12
42
 
13
43
  Verified against DeepSeek Harness `0.1.7-rc.1` (the latest release candidate) as
package/README.md CHANGED
@@ -23,7 +23,7 @@
23
23
  <a href="#development">Development</a>
24
24
  </p>
25
25
 
26
- > **✅ Supports DSH `0.1.7-rc.1` — the latest `0.1.7` release candidate.** Verified on the running release candidate as well as on `0.1.7-alpha.2`; see [Compatibility](#compatibility).
26
+ > **✅ Supports DSH `0.1.7-rc.2` — the latest `0.1.7` release candidate.** Verified on the running release candidate as well as on `0.1.7-rc.1` and `0.1.7-alpha.2`; see [Compatibility](#compatibility).
27
27
 
28
28
  > DSH Session Colors is a DeepSeek Harness community plugin. It does not modify
29
29
  > DSH core and does not rewrite any Session or Workspace data: a mark is only
@@ -71,8 +71,9 @@ Requirements:
71
71
 
72
72
  - DeepSeek Harness with a Web profile
73
73
  - Node.js 20 or newer
74
- - **Verified DSH version: `0.1.7-rc.1`** (the latest release candidate) and
75
- `0.1.7-alpha.2` — plugin `0.1.4` (see [Compatibility](#compatibility))
74
+ - **Verified DSH version: `0.1.7-rc.2`** (the latest release candidate),
75
+ `0.1.7-rc.1` and `0.1.7-alpha.2` — plugin `0.1.5`
76
+ (see [Compatibility](#compatibility))
76
77
 
77
78
  ```sh
78
79
  dsh plugin --profile <profile> add @idoall/dsh-session-colors@latest
@@ -120,24 +121,28 @@ stored as HSVA, so alpha round-trips exactly.
120
121
 
121
122
  ## Compatibility
122
123
 
123
- Current release: plugin **`0.1.4`** is verified against DeepSeek Harness
124
- **`0.1.7-rc.1`** — the latest `0.1.7` release candidate — and against
125
- **`0.1.7-alpha.2`**.
124
+ Current release: plugin **`0.1.5`** is verified against DeepSeek Harness
125
+ **`0.1.7-rc.2`** — the latest `0.1.7` release candidate — as well as against
126
+ **`0.1.7-rc.1`** and **`0.1.7-alpha.2`**.
126
127
 
127
128
  | Plugin version | Verified DeepSeek Harness | npm status | What it is |
128
129
  | --- | --- | --- | --- |
129
- | **`0.1.4`** | **`0.1.7-rc.1`** (latest RC), `0.1.7-alpha.2` | `latest` | Confirms the `0.1.7` adaptation runs unchanged on the release candidate and declares it. No code change over `0.1.3`; upgrading needs no migration. |
130
+ | **`0.1.5`** | **`0.1.7-rc.2`** (latest RC), `0.1.7-rc.1`, `0.1.7-alpha.2` | `latest` | Confirms the same code runs unchanged on the second release candidate and declares it. No code change over `0.1.4`; upgrading needs no migration. |
131
+ | `0.1.4` | `0.1.7-rc.1` (RC), `0.1.7-alpha.2` | published | Confirms the `0.1.7` adaptation runs unchanged on the first release candidate and declares it. No code change over `0.1.3`. |
130
132
  | `0.1.3` | `0.1.7-alpha.2` | published | Adapts to DSH 0.1.7: the Session id comes from the row's own `data-row-key` (fiber fallback kept), chips follow the Web-Animations row gliding `0.1.7` introduced, and the Host dependency is declared the way `0.1.7` resolves a linked plugin. |
131
133
  | `0.1.2` | `0.1.6-alpha.2` | published | Fixes chips staying at their old coordinates for ~20s when a workspace is collapsed or expanded: a second `MutationObserver.observe()` on the same target had silently replaced the `childList` watch. |
132
134
  | `0.1.1` | `0.1.6-alpha.2` | published | Documentation only: the packaged README no longer says "not published", and the market screenshots are declared. |
133
135
  | `0.1.0` | `0.1.6-alpha.2` | published | First release: Session colour marks, Host-side storage, visible inside a phone's sidebar drawer |
134
136
 
135
- **`0.1.4` supports DSH `0.1.7-rc.1`, the latest release candidate.** The `0.1.7`
136
- line changed the sidebar row markup and the linked-plugin dependency resolution,
137
- and **`0.1.3` already absorbed both** — `0.1.4` confirms the same code runs
138
- unchanged on the RC and records it. **Upgrading from `0.1.3` needs no migration.**
139
- On an older DSH — including `0.1.6-alpha.2` — keep plugin **`0.1.2`**. Newer DSH
140
- releases are not auto-declared compatible.
137
+ **`0.1.5` supports DSH `0.1.7-rc.2`, the latest release candidate.** Between
138
+ `rc.1` and `rc.2` every contract this plugin depends on is unchanged — the
139
+ client-modules loader and the slot registration API are byte-identical, the
140
+ sidebar row keeps its `data-row-key`/`role`/`aria-selected` markup and its exact
141
+ geometry, and `shell.overlay` still renders the same layer — so **`0.1.5`
142
+ confirms the same code runs unchanged on the second RC and records it.**
143
+ **Upgrading from `0.1.4` needs no migration.** On an older DSH — including
144
+ `0.1.6-alpha.2` — keep plugin **`0.1.2`**. Newer DSH releases are not
145
+ auto-declared compatible.
141
146
 
142
147
  - **Verified DeepSeek Harness** is the exact DSH version this plugin was actually
143
148
  run against. That list has one home — `dsh.compatibility.dshReleases` in
@@ -147,18 +152,21 @@ releases are not auto-declared compatible.
147
152
  - `peerDependencies` declares `>=0.1.7-alpha.2 <0.2.0` for `dsh-client-ui-layout`
148
153
  and `dsh-client-ui-conversation`, and `dsh.engines.dsh` declares the same range
149
154
  as the Host requirement: that is the range allowed to **load**, which is not the
150
- same as verified. The range admits **both** `0.1.7-alpha.2` and `0.1.7-rc.1`
151
- (a prerelease is admitted when some comparator names the same
152
- `major.minor.patch`), so it was deliberately **not** widened for the RC — doing
153
- so would admit versions nobody tested. The lower bound names the alpha on
154
- purpose: a range like `>=0.1.6-0 <0.2.0` admits neither.
155
- - DSH 0.1.7-rc.1 evaluates those peers at boot and **disables** a plugin row whose
155
+ same as verified. The range admits **all three** of `0.1.7-alpha.2`,
156
+ `0.1.7-rc.1` and `0.1.7-rc.2` (a prerelease is admitted when some comparator
157
+ names the same `major.minor.patch`), so it was deliberately **not** widened for
158
+ the RCs — doing so would admit versions nobody tested. The lower bound names the
159
+ alpha on purpose: a range like `>=0.1.6-0 <0.2.0` admits none of them.
160
+ - DSH 0.1.7 evaluates those peers at boot and **disables** a plugin row whose
156
161
  range is not satisfied, so a correct range is now load-bearing rather than
157
- cosmetic.
158
- - `@deepseek-ai/schemastery` is a **peer**, not a plain dependency: DSH 0.1.7
159
- resolves only a linked plugin's peer dependencies from the running
160
- installation, so a `link:` install of this directory would otherwise fail to
161
- import the Host half.
162
+ cosmetic. The evaluation code is identical in `rc.1` and `rc.2`.
163
+ - DSH 0.1.7-rc.2 added a real Session-row seat,
164
+ `sidebar.session.row.leading` — a 16px cell before the title. The chip
165
+ deliberately **stays on its own click-through layer**: that seat shares its cell
166
+ with the status dot and is mounted **only while the row is idle** (a running,
167
+ waiting or archived row renders no occupant), so a chip placed there would
168
+ vanish exactly when it is most useful. See
169
+ [Limitations](#limitations) and the design record.
162
170
  - `@deepseek-ai/schemastery` is a **peer**, not a plain dependency: DSH 0.1.7
163
171
  resolves only a linked plugin's peer dependencies from the running
164
172
  installation, so a `link:` install of this directory would otherwise fail to
@@ -256,6 +264,12 @@ unaffected** because the layer is click-through.
256
264
  - **The chip depends on DSH's row DOM.** It reads rows by ARIA role and the
257
265
  Session id from the row's `data-row-key`, falling back to React internals. A
258
266
  future DSH release can stop chips from appearing; it cannot break clicking.
267
+ - **The chip is not a row occupant.** DSH 0.1.7-rc.2 declares a real
268
+ `sidebar.session.row.leading` seat in the row's status-dot cell, and this plugin
269
+ deliberately does **not** use it: that seat is mounted only while a row is idle,
270
+ so a chip placed there would disappear for running, waiting and archived
271
+ Sessions. The chip stays on its own click-through layer, which keeps it visible
272
+ in every state and never covers the dot.
259
273
  - **Marks are per DSH instance.** They live in one profile's data directory, so
260
274
  two independent DSH servers do not share them.
261
275
  - **No permission model.** Anyone who can reach the Host's authenticated routes
package/README.zh.md CHANGED
@@ -23,7 +23,7 @@
23
23
  <a href="#开发">开发</a>
24
24
  </p>
25
25
 
26
- > **✅ 已支持 DSH `0.1.7-rc.1` —— 最新的 `0.1.7` 候选版本(RC)。** 已在运行中的 RC 实例上实测通过,同时也兼容 `0.1.7-alpha.2`;详见[兼容性](#兼容性)。
26
+ > **✅ 已支持 DSH `0.1.7-rc.2` —— 最新的 `0.1.7` 候选版本(RC)。** 已在运行中的该 RC 实例上实测通过,同时也兼容 `0.1.7-rc.1` 与 `0.1.7-alpha.2`;详见[兼容性](#兼容性)。
27
27
 
28
28
  > DSH Session Colors 是 DeepSeek Harness 社区插件。它不修改 DSH 核心,也不改写任何会话或工作区数据:一个标记只是"会话 ID → 一个颜色"。
29
29
 
@@ -53,7 +53,7 @@
53
53
 
54
54
  - 带 Web profile 的 DeepSeek Harness
55
55
  - Node.js 20 或更新版本
56
- - **已验证的 DSH 版本:`0.1.7-rc.1`**(最新候选版)与 `0.1.7-alpha.2`——插件 `0.1.4`(见[兼容性](#兼容性))
56
+ - **已验证的 DSH 版本:`0.1.7-rc.2`**(最新候选版)、`0.1.7-rc.1` 与 `0.1.7-alpha.2`——插件 `0.1.5`(见[兼容性](#兼容性))
57
57
 
58
58
  ```sh
59
59
  dsh plugin --profile <profile> add @idoall/dsh-session-colors@latest
@@ -92,21 +92,23 @@ dsh plugin --profile <profile> add link:/path/to/dsh-session-colors
92
92
 
93
93
  ## 兼容性
94
94
 
95
- 当前版本:插件 **`0.1.4`** 已针对 DeepSeek Harness **`0.1.7-rc.1`**(最新的 `0.1.7` 候选版本)与 **`0.1.7-alpha.2`** 验证。
95
+ 当前版本:插件 **`0.1.5`** 已针对 DeepSeek Harness **`0.1.7-rc.2`**(最新的 `0.1.7` 候选版本)验证,同时也兼容 **`0.1.7-rc.1`** 与 **`0.1.7-alpha.2`**。
96
96
 
97
97
  | 插件版本 | 已验证的 DeepSeek Harness | npm 发布状态 | 该版本是什么 |
98
98
  | --- | --- | --- | --- |
99
- | **`0.1.4`** | **`0.1.7-rc.1`**(最新 RC)、`0.1.7-alpha.2` | `latest` | 确认 `0.1.7` 适配在候选版本上原样可用并加以声明。代码与 `0.1.3` 相同,升级无需迁移。 |
99
+ | **`0.1.5`** | **`0.1.7-rc.2`**(最新 RC)、`0.1.7-rc.1`、`0.1.7-alpha.2` | `latest` | 确认同一份代码在第二个候选版本上原样可用并加以声明。代码与 `0.1.4` 相同,升级无需迁移。 |
100
+ | `0.1.4` | `0.1.7-rc.1`(RC)、`0.1.7-alpha.2` | 已发布 | 确认 `0.1.7` 适配在首个候选版本上原样可用并加以声明。代码与 `0.1.3` 相同。 |
100
101
  | `0.1.3` | `0.1.7-alpha.2` | 已发布 | 适配 DSH 0.1.7:会话 id 改从行自身的 `data-row-key` 读取(保留 fiber 回退),色块跟随 0.1.7 引入的 Web Animations 行滑动;宿主依赖按 0.1.7 对 link 插件的解析方式声明。 |
101
102
  | `0.1.2` | `0.1.6-alpha.2` | 已发布 | 修掉折叠/展开工作区后色块停在旧位置约 20 秒:同一个 target 上第二次 `MutationObserver.observe()` 把 `childList` 监听顶掉了。 |
102
103
  | `0.1.1` | `0.1.6-alpha.2` | 已发布 | 仅文档:打包进 npm 的 README 不再写"尚未发布",并声明了市场截图。 |
103
104
  | `0.1.0` | `0.1.6-alpha.2` | 已发布 | 首个版本:会话颜色标记、宿主侧存储、手机抽屉内可见 |
104
105
 
105
- **`0.1.4` 支持 DSH `0.1.7-rc.1`,即最新的候选版本(RC)。** `0.1.7` 线改了侧栏行的 DOM 与 link 插件的依赖解析方式,而**`0.1.3` 已经把这两处吸收完毕**——`0.1.4` 确认同一份代码在 RC 上原样可用,并把 RC 记入声明。**从 `0.1.3` 升级无需任何迁移。** 仍在更旧的 DSH(含 `0.1.6-alpha.2`)上时,请继续用插件 **`0.1.2`**。更高的 DSH 版本不会被自动宣称为兼容。
106
+ **`0.1.5` 支持 DSH `0.1.7-rc.2`,即最新的候选版本(RC)。** `rc.1 → rc.2` 之间,本插件依赖的契约全部没有变化——client-modules 加载器与 slot 注册 API 逐字节相同,侧栏行仍带 `data-row-key`/`role`/`aria-selected` 且几何尺寸完全一致,`shell.overlay` 仍渲染同一层——所以 **`0.1.5` 确认同一份代码在第二个 RC 上原样可用,并把它记入声明。从 `0.1.4` 升级无需任何迁移。** 仍在更旧的 DSH(含 `0.1.6-alpha.2`)上时,请继续用插件 **`0.1.2`**。更高的 DSH 版本不会被自动宣称为兼容。
106
107
 
107
108
  - **已验证的 DeepSeek Harness** 是这个插件**实际跑过**的确切 DSH 版本。这份清单只有一个存放处——[`package.json`](package.json) 的 `dsh.compatibility.dshReleases`——并且有测试保证两个 README 的兼容性段落与它逐字一致、且落在 `peerDependencies` 声明的范围内。未列出的 DSH 版本**不会被宣称为兼容**。
108
- - `peerDependencies` 声明的范围是 `>=0.1.7-alpha.2 <0.2.0`(`dsh-client-ui-layout` 与 `dsh-client-ui-conversation`),`dsh.engines.dsh` 把同一范围声明为宿主要求:这是**允许加载**的范围,不等于已验证。该范围**同时接纳** `0.1.7-alpha.2` 与 `0.1.7-rc.1`(只要范围里有比较符写了同一个 `major.minor.patch`,该版本的预发布就会被接纳),所以**刻意不为 RC 放宽**——放宽只会顺带接纳没人测过的版本。下界特意写成这个 alpha:`>=0.1.6-0 <0.2.0` 这样的范围两者都不接纳。
109
- - DSH 0.1.7-rc.1 会在启动时校验这些 peer,范围不满足就**直接禁用该插件行**,所以范围写对已经不只是"声明问题"。
109
+ - `peerDependencies` 声明的范围是 `>=0.1.7-alpha.2 <0.2.0`(`dsh-client-ui-layout` 与 `dsh-client-ui-conversation`),`dsh.engines.dsh` 把同一范围声明为宿主要求:这是**允许加载**的范围,不等于已验证。该范围**同时接纳** `0.1.7-alpha.2`、`0.1.7-rc.1` 与 `0.1.7-rc.2`(只要范围里有比较符写了同一个 `major.minor.patch`,该版本的预发布就会被接纳),所以**刻意不为 RC 放宽**——放宽只会顺带接纳没人测过的版本。下界特意写成这个 alpha:`>=0.1.6-0 <0.2.0` 这样的范围一个都不接纳。
110
+ - DSH 0.1.7 会在启动时校验这些 peer,范围不满足就**直接禁用该插件行**,所以范围写对已经不只是"声明问题";这段判定代码在 `rc.1` 与 `rc.2` 中完全相同。
111
+ - DSH 0.1.7-rc.2 新增了一个真正的会话行座位 `sidebar.session.row.leading`(标题前那格 16px)。色块**刻意仍留在自己的点击穿透浮层上**:该座位与状态点共用同一格,且**只在行处于空闲时**才挂载(运行中、等待中、已归档的行都不渲染占位),把色块放进去反而会在最需要它的时候消失。详见[限制](#限制)与设计记录。
110
112
  - `@deepseek-ai/schemastery` 声明为 **peer**,不是普通依赖:DSH 0.1.7 只把 link 插件的 **peer** 依赖解析到运行实例,所以用 `link:` 装入本目录时,普通依赖会让宿主半边 import 失败。
111
113
  - DSH 升级快于插件时,插件本身不会因此报错:色块依赖 DSH 的行 DOM(见[限制](#限制)),所以 DSH 大改行结构时最坏的结果是**色块不再显示**,不会挡住点击。
112
114
 
@@ -173,6 +175,7 @@ document.querySelector('.dsh-sc-layer').dataset
173
175
  ## 限制
174
176
 
175
177
  - **色块依赖 DSH 的行 DOM。** 它靠 ARIA role 找行、靠行自身的 `data-row-key` 取会话 ID(回退到 React 内部结构)。DSH 未来改版可能让色块不再显示;但**不会影响点击**。
178
+ - **色块不是行内占位元素。** DSH 0.1.7-rc.2 声明了真正的行座位 `sidebar.session.row.leading`(就落在状态点那一格),本插件**刻意不使用**它:该座位只在行空闲时挂载,色块放进去会在运行中、等待中与已归档的会话上消失。色块因此留在自己的点击穿透浮层上——任何状态下都可见,也永远不盖住状态点。
176
179
  - **标记属于单个 DSH 实例。** 它存在某个 profile 的数据目录里,两个独立的 DSH 服务之间不共享。
177
180
  - **没有权限模型。** 凡是能访问该 profile 已鉴权路由的人,都能读写标记。
178
181
  - **只有颜色。** 没有文字标签、图标或 emoji。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@idoall/dsh-session-colors",
3
- "version": "0.1.4",
3
+ "version": "0.1.5",
4
4
  "type": "module",
5
5
  "description": "DSH web plugin: give any Session a colour mark, shown as a chip in the sidebar and picked from the conversation header. Marks are stored on the Host, so a colour chosen on one device is visible on every other one — including over LAN and tunnels.",
6
6
  "main": "./src/index.js",
@@ -25,6 +25,7 @@
25
25
  },
26
26
  "compatibility": {
27
27
  "dshReleases": {
28
+ "0.1.7-rc.2": "compatible",
28
29
  "0.1.7-rc.1": "compatible",
29
30
  "0.1.7-alpha.2": "compatible"
30
31
  }