@idoall/dsh-session-colors 0.1.5 → 0.1.7

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,102 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
8
8
 
9
9
  ## [Unreleased]
10
10
 
11
+ ## [0.1.7] - 2026-09-30
12
+
13
+ Verified against DeepSeek Harness `0.2.0-rc.2` (the latest release candidate) as
14
+ well as `0.2.0-rc.1`, `0.1.7-rc.2`, `0.1.7-rc.1` and `0.1.7-alpha.2`. No logic
15
+ change: every contract this plugin depends on is unchanged between `0.2.0-rc.1`
16
+ and `0.2.0-rc.2`, and this release confirms the same code on the new RC and
17
+ records it in the declared range. `0.1.6` is rejected by the `0.2.0-rc.2` boot
18
+ precheck because its range stops at `0.2.0-rc.1`; `0.1.7` is what lifts that.
19
+
20
+ ### Changed
21
+
22
+ - `src/client.js`'s header comment now names the slot the file actually
23
+ registers on, `conversation.session.header.utilities`; it had kept the older
24
+ `conversation.session.header.actions` spelling. Comment only: no executed
25
+ statement changes.
26
+ - The `peerDependencies` and `dsh.engines.dsh` ranges gain a fourth
27
+ alternative: `>=0.1.7-alpha.2 <0.2.0-0 || 0.2.0-rc.1 || 0.2.0-rc.2 || >=0.2.0 <0.3.0`.
28
+ Under node-semver's prerelease rule a prerelease is admitted only when a
29
+ comparator names its exact `major.minor.patch`, so `0.2.0-rc.2` has to be
30
+ written out; a later `0.2.0-rc.3` remains unadmitted. The verified `0.1.7`
31
+ line and the stable `0.2.0` line up to `<0.3.0` are unchanged.
32
+ - `dsh.compatibility.dshReleases` now records `0.2.0-rc.2` alongside
33
+ `0.2.0-rc.1`, `0.1.7-rc.2`, `0.1.7-rc.1` and `0.1.7-alpha.2`; both READMEs
34
+ state all five versions.
35
+
36
+ ### Notes
37
+
38
+ - Contracts verified unchanged between `0.2.0-rc.1` and `0.2.0-rc.2`: the
39
+ compatibility precheck (`evaluatePluginCompatibility` and its callers) is
40
+ byte-identical; the client-modules loader and the slot registration API differ
41
+ only in package version numbers; `ui-workspace`'s row rendering
42
+ (`Rows.tsx`, `AnimatedRows.tsx`, `WorkspaceBrowser.tsx`) is untouched and the
43
+ row still carries `data-row-key="session:<id>"`, `role="treeitem"` and
44
+ `aria-selected`; the `conversation.session.header.utilities` and
45
+ `shell.overlay` catalog entries are identical; `ui-layout` and
46
+ `ui-conversation` change only in `ConversationMainPanel`'s width-controls
47
+ refactor and in locale strings.
48
+ - Measured end-to-end on a disposable `0.2.0-rc.2` web profile built for this
49
+ release (the running profile is not touched): the plugin bundle mounts with no
50
+ precheck warning, and in the browser the client half loads and prints
51
+ `[dsh-session-colors] build=host-routes+animated-rows`, the header control
52
+ renders inside `conversation.session.header.utilities`, the picker panel
53
+ opens, a chosen colour round-trips through
54
+ `GET`/`POST /plugins/dsh-session-colors/marks` with `persistence: "file"`, the
55
+ chip lands vertically centred in the 32px Session row inside its 8px left
56
+ padding, and clearing the mark removes both the mark and the chip.
57
+ - Control experiment: the same tarball at `0.1.6` is refused by
58
+ `dsh plugin add` on `0.2.0-rc.2` with the reported `incompatible` error, while
59
+ `0.1.7` installs and mounts.
60
+ - `0.1.7` supports DSH `0.2.0-rc.2`, `0.2.0-rc.1`, `0.1.7-rc.2`, `0.1.7-rc.1`
61
+ and `0.1.7-alpha.2`. Installations on an older DSH, including
62
+ `0.1.6-alpha.2`, should stay on plugin `0.1.2`.
63
+
64
+ ## [0.1.6] - 2026-09-28
65
+
66
+ Verified against DeepSeek Harness `0.2.0-rc.1` (the latest release candidate) as
67
+ well as `0.1.7-rc.2`, `0.1.7-rc.1` and `0.1.7-alpha.2`. No code change: every
68
+ contract this plugin depends on is unchanged between `0.1.7-rc.2` and
69
+ `0.2.0-rc.1`, and this release confirms the same code on the new RC and records
70
+ it.
71
+
72
+ ### Changed
73
+
74
+ - The `peerDependencies` and `dsh.engines.dsh` ranges change from
75
+ `>=0.1.7-alpha.2 <0.2.0` to
76
+ `>=0.1.7-alpha.2 <0.2.0-0 || 0.2.0-rc.1 || >=0.2.0 <0.3.0`. The old upper
77
+ bound admitted `0.2.0-rc.1` only through node-semver's prerelease ordering; on
78
+ the `0.2.0` **final** release the compatibility precheck would have disabled
79
+ the plugin row at boot. Under node-semver's prerelease rule a prerelease is
80
+ admitted only when a comparator names its exact `major.minor.patch`, so the
81
+ new range has three alternatives: the verified `0.1.7` line, exactly
82
+ `0.2.0-rc.1` (an untested `0.2.0-rc.2` stays out), and the stable `0.2.0`
83
+ line up to `<0.3.0`.
84
+ - `dsh.compatibility.dshReleases` now records `0.2.0-rc.1` alongside
85
+ `0.1.7-rc.2`, `0.1.7-rc.1` and `0.1.7-alpha.2`; both READMEs state all four
86
+ versions.
87
+
88
+ ### Notes
89
+
90
+ - Contracts verified unchanged between `0.1.7-rc.2` and `0.2.0-rc.1`: the
91
+ client-modules loader and the slot registration API differ only in package
92
+ version numbers; the compatibility precheck
93
+ (`evaluatePluginCompatibility` and its callers) is byte-identical; the
94
+ sidebar row keeps `data-row-key="session:<id>"`, `role="treeitem"` and
95
+ `aria-selected`; `conversation.session.header.utilities` is still a
96
+ session-scoped list; `shell.overlay` is still declared by `ui-layout`; the
97
+ `slots`/`locale`/`layout` service faces and the `react@^18.2.0` baseline are
98
+ unchanged.
99
+ - Verified on the running `0.2.0-rc.1` web-profile instance with the published
100
+ `0.1.5`: the client half loads and prints its diagnostic line, the Host half's
101
+ `GET /plugins/dsh-session-colors/marks` answers `200`, the header control
102
+ renders, and DSH does not disable the plugin row.
103
+ - `0.1.6` supports DSH `0.2.0-rc.1`, `0.1.7-rc.2`, `0.1.7-rc.1` and
104
+ `0.1.7-alpha.2`. Installations on an older DSH, including `0.1.6-alpha.2`,
105
+ should stay on plugin `0.1.2`.
106
+
11
107
  ## [0.1.5] - 2026-09-25
12
108
 
13
109
  Verified against DeepSeek Harness `0.1.7-rc.2` (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.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).
26
+ > **✅ Supports DSH `0.2.0-rc.2` — the latest `0.2.0` release candidate.** Verified on a disposable release-candidate profile as well as on `0.2.0-rc.1`, `0.1.7-rc.2`, `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,8 @@ 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.2`** (the latest release candidate),
75
- `0.1.7-rc.1` and `0.1.7-alpha.2` — plugin `0.1.5`
74
+ - **Verified DSH version: `0.2.0-rc.2`** (the latest release candidate),
75
+ `0.2.0-rc.1`, `0.1.7-rc.2`, `0.1.7-rc.1` and `0.1.7-alpha.2` — plugin `0.1.7`
76
76
  (see [Compatibility](#compatibility))
77
77
 
78
78
  ```sh
@@ -121,26 +121,34 @@ stored as HSVA, so alpha round-trips exactly.
121
121
 
122
122
  ## Compatibility
123
123
 
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`**.
124
+ Current release: plugin **`0.1.7`** is verified against DeepSeek Harness
125
+ **`0.2.0-rc.2`** — the latest `0.2.0` release candidate — as well as against
126
+ **`0.2.0-rc.1`**, **`0.1.7-rc.2`**, **`0.1.7-rc.1`** and **`0.1.7-alpha.2`**.
127
127
 
128
128
  | Plugin version | Verified DeepSeek Harness | npm status | What it is |
129
129
  | --- | --- | --- | --- |
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. |
130
+ | **`0.1.7`** | **`0.2.0-rc.2`** (latest RC), `0.2.0-rc.1`, `0.1.7-rc.2`, `0.1.7-rc.1`, `0.1.7-alpha.2` | `latest` | Verifies the same code on DSH `0.2.0-rc.2` and adds that exact version to the declared load range. No logic change over `0.1.6`; upgrading needs no migration. |
131
+ | `0.1.6` | `0.2.0-rc.1` (RC), `0.1.7-rc.2`, `0.1.7-rc.1`, `0.1.7-alpha.2` | published | Verifies the same code on DSH `0.2.0-rc.1` and rewrites the declared load range so the plugin survives the `0.2.0` final release. No code change over `0.1.5`; upgrading needs no migration. |
132
+ | `0.1.5` | `0.1.7-rc.2` (latest 0.1.7 RC), `0.1.7-rc.1`, `0.1.7-alpha.2` | published | 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
133
  | `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`. |
132
134
  | `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. |
133
135
  | `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. |
134
136
  | `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. |
135
137
  | `0.1.0` | `0.1.6-alpha.2` | published | First release: Session colour marks, Host-side storage, visible inside a phone's sidebar drawer |
136
138
 
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
139
+ **`0.1.7` supports DSH `0.2.0-rc.2`, the latest release candidate.** Between
140
+ `0.2.0-rc.1` and `0.2.0-rc.2` every contract this plugin depends on is
141
+ unchanged — the compatibility precheck that evaluates `peerDependencies` is
142
+ byte-identical, the client-modules loader and the slot registration API differ
143
+ only in their package version numbers, the sidebar row keeps its
144
+ `data-row-key`/`role`/`aria-selected` markup, `conversation.session.header.utilities`
145
+ is still a session-scoped list, and `shell.overlay` still renders the same layer
146
+ — so **`0.1.7` confirms the same code runs unchanged on the new RC and records
147
+ it.** `0.2.0-rc.2` is added to the range because under node-semver's prerelease
148
+ rule each tuple must be named by a comparator; a later `0.2.0-rc.3` is still not
149
+ admitted. `0.1.6`, the previous release, was rejected by the `0.2.0-rc.2` boot
150
+ precheck exactly because its range stopped at `0.2.0-rc.1`.
151
+ **Upgrading from `0.1.6` needs no migration.** On an older DSH — including
144
152
  `0.1.6-alpha.2` — keep plugin **`0.1.2`**. Newer DSH releases are not
145
153
  auto-declared compatible.
146
154
 
@@ -149,17 +157,20 @@ auto-declared compatible.
149
157
  [`package.json`](package.json) — and a test keeps both READMEs' compatibility
150
158
  sections word-for-word with it and inside the range `peerDependencies`
151
159
  declares. A DSH version that is not listed is **never claimed as compatible**.
152
- - `peerDependencies` declares `>=0.1.7-alpha.2 <0.2.0` for `dsh-client-ui-layout`
153
- and `dsh-client-ui-conversation`, and `dsh.engines.dsh` declares the same range
154
- as the Host requirement: that is the range allowed to **load**, which is not the
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
161
- range is not satisfied, so a correct range is now load-bearing rather than
162
- cosmetic. The evaluation code is identical in `rc.1` and `rc.2`.
160
+ - `peerDependencies` declare `>=0.1.7-alpha.2 <0.2.0-0 || 0.2.0-rc.1 || 0.2.0-rc.2 || >=0.2.0 <0.3.0`
161
+ for `dsh-client-ui-layout` and `dsh-client-ui-conversation`, and
162
+ `dsh.engines.dsh` declares the same range as the Host requirement: that is the
163
+ range allowed to **load**, which is not the same as verified. The four
164
+ alternatives are deliberate: a prerelease is admitted only when a comparator
165
+ names its exact `major.minor.patch`, so the `0.1.7` line needs its own
166
+ comparator, `0.2.0-rc.1` and `0.2.0-rc.2` are each pinned exactly (a `0.2.0-rc.3`
167
+ nobody tested stays out), and the stable `0.2.0` line is admitted so the plugin
168
+ survives the final release. The lower bound names the alpha on purpose: a range
169
+ like `>=0.1.6-0 <0.2.0` admits none of the verified versions.
170
+ - DSH evaluates those peers at boot and **disables** a plugin row whose range is
171
+ not satisfied, so a correct range is load-bearing rather than cosmetic. The
172
+ evaluation code is identical in `0.1.7-rc.1`, `0.1.7-rc.2`, `0.2.0-rc.1` and
173
+ `0.2.0-rc.2`.
163
174
  - DSH 0.1.7-rc.2 added a real Session-row seat,
164
175
  `sidebar.session.row.leading` — a 16px cell before the title. The chip
165
176
  deliberately **stays on its own click-through layer**: that seat shares its cell
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.2` —— 最新的 `0.1.7` 候选版本(RC)。** 已在运行中的该 RC 实例上实测通过,同时也兼容 `0.1.7-rc.1` 与 `0.1.7-alpha.2`;详见[兼容性](#兼容性)。
26
+ > **✅ 已支持 DSH `0.2.0-rc.2` —— 最新的 `0.2.0` 候选版本(RC)。** 已在一次性建起的该 RC 实例上实测通过,同时也兼容 `0.2.0-rc.1`、`0.1.7-rc.2`、`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.2`**(最新候选版)、`0.1.7-rc.1` 与 `0.1.7-alpha.2`——插件 `0.1.5`(见[兼容性](#兼容性))
56
+ - **已验证的 DSH 版本:`0.2.0-rc.2`**(最新候选版)、`0.2.0-rc.1`、`0.1.7-rc.2`、`0.1.7-rc.1` 与 `0.1.7-alpha.2`——插件 `0.1.7`(见[兼容性](#兼容性))
57
57
 
58
58
  ```sh
59
59
  dsh plugin --profile <profile> add @idoall/dsh-session-colors@latest
@@ -92,22 +92,25 @@ dsh plugin --profile <profile> add link:/path/to/dsh-session-colors
92
92
 
93
93
  ## 兼容性
94
94
 
95
- 当前版本:插件 **`0.1.5`** 已针对 DeepSeek Harness **`0.1.7-rc.2`**(最新的 `0.1.7` 候选版本)验证,同时也兼容 **`0.1.7-rc.1`** 与 **`0.1.7-alpha.2`**。
95
+ 当前版本:插件 **`0.1.7`** 已针对 DeepSeek Harness **`0.2.0-rc.2`**(最新的 `0.2.0` 候选版本)验证,同时也兼容 **`0.2.0-rc.1`**、**`0.1.7-rc.2`**、**`0.1.7-rc.1`** 与 **`0.1.7-alpha.2`**。
96
96
 
97
97
  | 插件版本 | 已验证的 DeepSeek Harness | npm 发布状态 | 该版本是什么 |
98
98
  | --- | --- | --- | --- |
99
- | **`0.1.5`** | **`0.1.7-rc.2`**(最新 RC)、`0.1.7-rc.1`、`0.1.7-alpha.2` | `latest` | 确认同一份代码在第二个候选版本上原样可用并加以声明。代码与 `0.1.4` 相同,升级无需迁移。 |
99
+ | **`0.1.7`** | **`0.2.0-rc.2`**(最新 RC)、`0.2.0-rc.1`、`0.1.7-rc.2`、`0.1.7-rc.1`、`0.1.7-alpha.2` | `latest` | 在 DSH `0.2.0-rc.2` 上实测同一份代码,并把该确切版本加进声明的加载范围。逻辑与 `0.1.6` 相同(仅订正一处注释),升级无需迁移。 |
100
+ | `0.1.6` | `0.2.0-rc.1`(RC)、`0.1.7-rc.2`、`0.1.7-rc.1`、`0.1.7-alpha.2` | 已发布 | 在 DSH `0.2.0-rc.1` 上实测同一份代码,并重写声明范围使插件能在 `0.2.0` 正式版上继续加载。代码与 `0.1.5` 相同,升级无需迁移。 |
101
+ | `0.1.5` | `0.1.7-rc.2`(最新 0.1.7 RC)、`0.1.7-rc.1`、`0.1.7-alpha.2` | 已发布 | 确认同一份代码在第二个候选版本上原样可用并加以声明。代码与 `0.1.4` 相同,升级无需迁移。 |
100
102
  | `0.1.4` | `0.1.7-rc.1`(RC)、`0.1.7-alpha.2` | 已发布 | 确认 `0.1.7` 适配在首个候选版本上原样可用并加以声明。代码与 `0.1.3` 相同。 |
101
103
  | `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 插件的解析方式声明。 |
102
104
  | `0.1.2` | `0.1.6-alpha.2` | 已发布 | 修掉折叠/展开工作区后色块停在旧位置约 20 秒:同一个 target 上第二次 `MutationObserver.observe()` 把 `childList` 监听顶掉了。 |
103
105
  | `0.1.1` | `0.1.6-alpha.2` | 已发布 | 仅文档:打包进 npm 的 README 不再写"尚未发布",并声明了市场截图。 |
104
106
  | `0.1.0` | `0.1.6-alpha.2` | 已发布 | 首个版本:会话颜色标记、宿主侧存储、手机抽屉内可见 |
105
107
 
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 版本不会被自动宣称为兼容。
108
+ **`0.1.7` 支持 DSH `0.2.0-rc.2`,即最新的候选版本(RC)。** `0.2.0-rc.1 → 0.2.0-rc.2` 之间,本插件依赖的契约全部没有变化——评估 `peerDependencies` 的兼容性预检**逐字节相同**,client-modules 加载器与 slot 注册 API 只差包版本号,侧栏行仍带 `data-row-key`/`role`/`aria-selected`,`conversation.session.header.utilities` 仍是 session 作用域的 list 座位,`shell.overlay` 仍渲染同一层——所以 **`0.1.7` 确认同一份代码在新 RC 上原样可用,并把它记入声明。** 范围这次要加 `0.2.0-rc.2`,是因为按 node-semver 的预发布规则,每个元组都得有比较符明确写出;更晚的 `0.2.0-rc.3` 依旧进不来。上一版 `0.1.6` 正是被 `0.2.0-rc.2` 的启动预检拒载——它的范围停在 `0.2.0-rc.1`。
109
+ **从 `0.1.6` 升级无需任何迁移。** 仍在更旧的 DSH(含 `0.1.6-alpha.2`)上时,请继续用插件 **`0.1.2`**。更高的 DSH 版本不会被自动宣称为兼容。
107
110
 
108
111
  - **已验证的 DeepSeek Harness** 是这个插件**实际跑过**的确切 DSH 版本。这份清单只有一个存放处——[`package.json`](package.json) 的 `dsh.compatibility.dshReleases`——并且有测试保证两个 README 的兼容性段落与它逐字一致、且落在 `peerDependencies` 声明的范围内。未列出的 DSH 版本**不会被宣称为兼容**。
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` 中完全相同。
112
+ - `peerDependencies` 声明的范围是 `>=0.1.7-alpha.2 <0.2.0-0 || 0.2.0-rc.1 || 0.2.0-rc.2 || >=0.2.0 <0.3.0`(`dsh-client-ui-layout` 与 `dsh-client-ui-conversation`),`dsh.engines.dsh` 把同一范围声明为宿主要求:这是**允许加载**的范围,不等于已验证。四个分支是刻意写的:按 node-semver 的预发布规则,预发布只有在某个比较符写出同一个 `major.minor.patch` 时才被接纳——所以 `0.1.7` 线要自己的比较符,`0.2.0-rc.1` 与 `0.2.0-rc.2` 各自精确钉死(没人测过的 `0.2.0-rc.3` 进不来),`0.2.0` 正式版线放开是为了插件能在正式版上继续加载。下界特意写成这个 alpha:`>=0.1.6-0 <0.2.0` 这样的范围一个已验证版本都不接纳。
113
+ - DSH 会在启动时校验这些 peer,范围不满足就**直接禁用该插件行**,所以范围写对已经不只是"声明问题";这段判定代码在 `0.1.7-rc.1`、`0.1.7-rc.2`、`0.2.0-rc.1` 与 `0.2.0-rc.2` 中完全相同。
111
114
  - DSH 0.1.7-rc.2 新增了一个真正的会话行座位 `sidebar.session.row.leading`(标题前那格 16px)。色块**刻意仍留在自己的点击穿透浮层上**:该座位与状态点共用同一格,且**只在行处于空闲时**才挂载(运行中、等待中、已归档的行都不渲染占位),把色块放进去反而会在最需要它的时候消失。详见[限制](#限制)与设计记录。
112
115
  - `@deepseek-ai/schemastery` 声明为 **peer**,不是普通依赖:DSH 0.1.7 只把 link 插件的 **peer** 依赖解析到运行实例,所以用 `link:` 装入本目录时,普通依赖会让宿主半边 import 失败。
113
116
  - DSH 升级快于插件时,插件本身不会因此报错:色块依赖 DSH 的行 DOM(见[限制](#限制)),所以 DSH 大改行结构时最坏的结果是**色块不再显示**,不会挡住点击。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@idoall/dsh-session-colors",
3
- "version": "0.1.5",
3
+ "version": "0.1.7",
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",
@@ -21,10 +21,12 @@
21
21
  "dsh": {
22
22
  "manifestVersion": 1,
23
23
  "engines": {
24
- "dsh": ">=0.1.7-alpha.2 <0.2.0"
24
+ "dsh": ">=0.1.7-alpha.2 <0.2.0-0 || 0.2.0-rc.1 || 0.2.0-rc.2 || >=0.2.0 <0.3.0"
25
25
  },
26
26
  "compatibility": {
27
27
  "dshReleases": {
28
+ "0.2.0-rc.2": "compatible",
29
+ "0.2.0-rc.1": "compatible",
28
30
  "0.1.7-rc.2": "compatible",
29
31
  "0.1.7-rc.1": "compatible",
30
32
  "0.1.7-alpha.2": "compatible"
@@ -48,8 +50,8 @@
48
50
  "access": "public"
49
51
  },
50
52
  "peerDependencies": {
51
- "@deepseek-ai/dsh-client-ui-conversation": ">=0.1.7-alpha.2 <0.2.0",
52
- "@deepseek-ai/dsh-client-ui-layout": ">=0.1.7-alpha.2 <0.2.0",
53
+ "@deepseek-ai/dsh-client-ui-conversation": ">=0.1.7-alpha.2 <0.2.0-0 || 0.2.0-rc.1 || 0.2.0-rc.2 || >=0.2.0 <0.3.0",
54
+ "@deepseek-ai/dsh-client-ui-layout": ">=0.1.7-alpha.2 <0.2.0-0 || 0.2.0-rc.1 || 0.2.0-rc.2 || >=0.2.0 <0.3.0",
53
55
  "@deepseek-ai/schemastery": "^3.18.2",
54
56
  "react": "^18.2.0"
55
57
  },
package/src/client.js CHANGED
@@ -4,7 +4,7 @@
4
4
  * Two surfaces, both reached through public slots, so no shipped file is
5
5
  * touched and nothing is DOM-patched:
6
6
  *
7
- * - `conversation.session.header.actions` carries the picker button and its
7
+ * - `conversation.session.header.utilities` carries the picker button and its
8
8
  * system-style panel (saturation/value field, hue, alpha, hex, RGBA, theme
9
9
  * swatches, saved colours).
10
10
  * - `shell.overlay` carries the chip layer: a frame-wide, fixed, click-through