dsh-better-display 0.3.9 → 0.3.12
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 +15 -0
- package/README.en.md +5 -5
- package/README.md +5 -5
- package/compat/harness-rc2.json +17 -13
- package/docs/extension-points.md +36 -0
- package/docs/official-rendering-bridge.md +1 -1
- package/lib/client.js +2405 -2411
- package/lib/client.js.map +1 -1
- package/lib/dsh-better-display.js +9 -18
- package/lib/types/client/Blocks.js +4 -4
- package/lib/types/client/Blocks.js.map +1 -1
- package/lib/types/client/OfficialContent.js +6 -7
- package/lib/types/client/OfficialContent.js.map +1 -1
- package/lib/types/client/Reader.d.ts.map +1 -1
- package/lib/types/client/Reader.js +5 -6
- package/lib/types/client/Reader.js.map +1 -1
- package/lib/types/client/composer-seat.d.ts +24 -0
- package/lib/types/client/composer-seat.d.ts.map +1 -0
- package/lib/types/client/composer-seat.js +23 -0
- package/lib/types/client/composer-seat.js.map +1 -0
- package/lib/types/client/official-slots.d.ts +15 -3
- package/lib/types/client/official-slots.d.ts.map +1 -1
- package/lib/types/client/official-slots.js +37 -4
- package/lib/types/client/official-slots.js.map +1 -1
- package/lib/types/client/primitive-labels.d.ts.map +1 -1
- package/lib/types/client/primitive-labels.js +1 -0
- package/lib/types/client/primitive-labels.js.map +1 -1
- package/package.json +21 -20
- package/scripts/check-harness-compat.mjs +4 -2
- package/scripts/link-harness-dependencies.mjs +48 -11
- package/src/client/Blocks.tsx +5 -5
- package/src/client/OfficialContent.tsx +7 -7
- package/src/client/Reader.module.css +11 -0
- package/src/client/Reader.tsx +5 -6
- package/src/client/composer-seat.ts +28 -0
- package/src/client/official-slots.tsx +38 -5
- package/src/client/primitive-labels.ts +1 -0
- package/tests/browser-official-bridge.tsx +2 -1
- package/tests/fixtures/reader-user-bubble.tsx +37 -15
- package/tests/reader-composer-seat.test.ts +61 -0
- package/tests/reader-official-users.test.ts +1 -1
- package/tests/reader-theme-overlap.test.ts +1 -1
- package/tests/reader-user-bubble.test.ts +1 -0
- package/tests/reasoning-block-key.test.ts +129 -0
- package/tests/stock-install.test.ts +10 -6
- package/tsdown.config.ts +12 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.3.12 — 2026-11-03
|
|
4
|
+
|
|
5
|
+
- Bump KaTeX from 0.16.47 to 0.19.1 (`^0.19.1`, lockfile 0.19.1). Reader still renders with the host's KaTeX CSS and does not vendor private fonts (#78).
|
|
6
|
+
- Bump the jscpd duplicate check to 5.4.2 (package range `^5.4.1`, lockfile 5.4.2) (#81).
|
|
7
|
+
|
|
8
|
+
## 0.3.11 — 2026-11-03
|
|
9
|
+
|
|
10
|
+
- Keep the host composer visible on the reading tab when `dsh-claude-style` hides `[data-composer-seat]` off the first conversation tab. The override applies only while the reader root is mounted, so other tabs keep the skin's hide rule (#83).
|
|
11
|
+
- Stamp each reasoning block with `data-reader-reasoning-block-key` so another plugin can target one card. The key stays put across source growth, translation, the original-text fallback, and settling (#82).
|
|
12
|
+
- Docs: add a worked adapter that shows the official COT translation in the reading view through the text-transform seam ([`docs/extension-points.md`](docs/extension-points.md), [`examples/cot-translation-reader/`](examples/cot-translation-reader/)). The official bundle registers its translation on `conversation.chat.reasoning.body`, which the reading view replaces, so that bundle alone cannot paint there (#75).
|
|
13
|
+
|
|
14
|
+
## 0.3.10 — 2026-11-03
|
|
15
|
+
|
|
16
|
+
- Accept DeepSeek Harness 0.2.1-rc.5 (`dsh-v0.2.1-rc.5`, `b830ec950faba0a46dda564be3e2d854afed94f1`). The peer range and `engines.dsh` are `>=0.2.1-rc.1 <0.2.2`. This is the latest tagged release; later main commits are not tagged and are not published to npm.
|
|
17
|
+
|
|
3
18
|
## 0.3.9 — 2026-10-27
|
|
4
19
|
|
|
5
20
|
- Keep assistant narration visible. Collapsing process hides reasoning, tool calls and process records, and a compact seam between body blocks summarises the folded run (`思考×N · 工具×K · 记录×M`) and expands those rows in place. During a live turn, a later reasoning step folds each earlier reasoning/tool run in its own position, including across narration, without counting narration as `输出×N`. Thanks @Adamaik (#68).
|
package/README.en.md
CHANGED
|
@@ -9,15 +9,15 @@
|
|
|
9
9
|
Open **Settings → Plugins → Add plugin** and enter this in “Package name or address”:
|
|
10
10
|
|
|
11
11
|
```text
|
|
12
|
-
github:aa2246740/dsh-better-display#v0.3.
|
|
12
|
+
github:aa2246740/dsh-better-display#v0.3.12
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
The desktop plugin manager owns the Desktop profile and its bundled package manager. This
|
|
15
|
+
The desktop plugin manager owns the Desktop profile and its bundled package manager. `v0.3.12` is the latest tagged install target whose manifest accepts Harness `0.2.1-rc.5`. This tag includes built `lib/`; normal use needs no clone, build, or DSHX installation. Follow the app if it asks you to reload or reopen after installation.
|
|
16
16
|
|
|
17
17
|
### Web CLI
|
|
18
18
|
|
|
19
19
|
```sh
|
|
20
|
-
dsh plugin --profile web add github:aa2246740/dsh-better-display#v0.3.
|
|
20
|
+
dsh plugin --profile web add github:aa2246740/dsh-better-display#v0.3.12
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
This official CLI command writes only the `web` profile; it cannot modify the Desktop App profile. **pnpm** must be on PATH. For an already-running Web Host, reopen that Host once and reload the page because bundles are read at boot.
|
|
@@ -28,7 +28,7 @@ Another plugin can rewrite reasoning and answer text for display only, for examp
|
|
|
28
28
|
|
|
29
29
|
A ````mcp-app` fence in the final answer mounts as an interactive card in the reading view, inside `<iframe sandbox="allow-scripts allow-forms">` without `allow-same-origin`. The card can fill the next prompt via JSON-RPC. The skill pack is [`skills/generative-mcpapps/`](skills/generative-mcpapps/). Settings → **Better Display** can preview deliverables in the right Sidebar (system app remains the default), turn on translucent frosted glass (off by default), toggle process auto-folding (On is the default), and reports whether that skill is installed in a harness skill root.
|
|
30
30
|
|
|
31
|
-
Targets DeepSeek Harness **0.2.
|
|
31
|
+
Targets DeepSeek Harness **0.2.1-rc.5** (`dsh-v0.2.1-rc.5`, `b830ec950faba0a46dda564be3e2d854afed94f1`). Display only. It does not change Agent execution, the SDK, or credentials. Node.js `^22.19.0 || >=24`. New sessions default to reading. The `@deepseek-ai/dsh-*` peer range and `engines.dsh` are `>=0.2.1-rc.1 <0.2.2`: they accept `0.2.1-rc.5` and stable `0.2.1`, reject `0.2.1` alphas, and reject the `0.2.0` series.
|
|
32
32
|
|
|
33
33
|
**0.3.0** keeps the existing reading layout, folding, and motion while using official feedback, tool details, file cards, and file links. It also fixes process content staying expanded after auto-folding is re-enabled. See the [official integration notes](docs/official-rendering-bridge.md) for coverage and upgrade checks.
|
|
34
34
|
|
|
@@ -36,7 +36,7 @@ From a local checkout or tarball (development/local testing):
|
|
|
36
36
|
|
|
37
37
|
```sh
|
|
38
38
|
dsh plugin --profile web add ./dsh-better-display
|
|
39
|
-
dsh plugin --profile web add ./dsh-better-display-0.3.
|
|
39
|
+
dsh plugin --profile web add ./dsh-better-display-0.3.12.tgz
|
|
40
40
|
```
|
|
41
41
|
|
|
42
42
|
`dsh.bundle` is captured at Host boot. Do not also insert the same row by hand in the profile `cordis.patch.yml`, or it will mount twice.
|
package/README.md
CHANGED
|
@@ -9,15 +9,15 @@
|
|
|
9
9
|
打开 **设置 → 插件 → 添加插件**,在“包名或地址”中输入:
|
|
10
10
|
|
|
11
11
|
```text
|
|
12
|
-
github:aa2246740/dsh-better-display#v0.3.
|
|
12
|
+
github:aa2246740/dsh-better-display#v0.3.12
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
桌面端的插件管理器负责 Desktop profile
|
|
15
|
+
桌面端的插件管理器负责 Desktop profile 和其内置包管理器。`v0.3.12` 是目前已打 tag、且 `engines.dsh` 接受 Harness `0.2.1-rc.5` 的安装目标。本 tag 已包含编译好的 `lib/`;普通使用不需要 clone、构建或安装 DSHX。若应用在安装完成后提示刷新或重新打开,请按提示完成。
|
|
16
16
|
|
|
17
17
|
### Web CLI
|
|
18
18
|
|
|
19
19
|
```sh
|
|
20
|
-
dsh plugin --profile web add github:aa2246740/dsh-better-display#v0.3.
|
|
20
|
+
dsh plugin --profile web add github:aa2246740/dsh-better-display#v0.3.12
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
这条官方 CLI 命令只写入 `web` profile,不能修改 Desktop App 的 profile。本机 PATH 上需要有 **pnpm**。对于已经运行的 Web Host,请重新打开该 Host 一次,再刷新网页;插件 bundle 会在启动时读取。
|
|
@@ -28,7 +28,7 @@ dsh plugin --profile web add github:aa2246740/dsh-better-display#v0.3.6
|
|
|
28
28
|
|
|
29
29
|
最终回答里的 ````mcp-app` 代码块会在阅读视图里挂成交互卡片,跑在 `<iframe sandbox="allow-scripts allow-forms">` 里,没有 `allow-same-origin`。卡片可以通过 JSON-RPC 把下一轮 prompt 填进输入框。技能包在 [`skills/generative-mcpapps/`](skills/generative-mcpapps/)。设置里的 **Better Display** 可把产物改为右侧栏预览(默认仍用系统应用),打开半透明毛玻璃(默认关),设置过程自动折叠开关(默认开),并检测该技能是否已装进宿主技能目录。
|
|
30
30
|
|
|
31
|
-
面向 DeepSeek Harness **0.2.
|
|
31
|
+
面向 DeepSeek Harness **0.2.1-rc.5**(`dsh-v0.2.1-rc.5`,`b830ec950faba0a46dda564be3e2d854afed94f1`)。只改展示,不改 Agent 执行、SDK 或模型凭据。Node.js `^22.19.0 || >=24`。新会话默认进阅读。`@deepseek-ai/dsh-*` peer 与 `engines.dsh` 是 `>=0.2.1-rc.1 <0.2.2`:接受 `0.2.1-rc.5` 和稳定版 `0.2.1`,拒绝 `0.2.1` alpha,也拒绝 `0.2.0` 系列。
|
|
32
32
|
|
|
33
33
|
**0.3.0** 保留现有阅读布局、折叠和动效,接入官方反馈、工具详情、文件卡片及文件链接;并修复重新开启自动折叠后仍保持展开的问题。接入范围和升级检查见 [官方能力接入说明](docs/official-rendering-bridge.md)。
|
|
34
34
|
|
|
@@ -36,7 +36,7 @@ dsh plugin --profile web add github:aa2246740/dsh-better-display#v0.3.6
|
|
|
36
36
|
|
|
37
37
|
```sh
|
|
38
38
|
dsh plugin --profile web add ./dsh-better-display
|
|
39
|
-
dsh plugin --profile web add ./dsh-better-display-0.3.
|
|
39
|
+
dsh plugin --profile web add ./dsh-better-display-0.3.12.tgz
|
|
40
40
|
```
|
|
41
41
|
|
|
42
42
|
`dsh.bundle` 是开机捕获的。不要再往 profile 的 `cordis.patch.yml` 手写同一条 insert,会重复挂载。
|
package/compat/harness-rc2.json
CHANGED
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
{
|
|
2
|
-
"harnessVersion": "0.2.
|
|
2
|
+
"harnessVersion": "0.2.1-rc.5",
|
|
3
|
+
"harnessCommit": "b830ec950faba0a46dda564be3e2d854afed94f1",
|
|
3
4
|
"hashes": {
|
|
4
|
-
"packages/client/ui-slots/src/index.ts": "
|
|
5
|
-
"packages/client/ui-slots/src/renderer.ts": "
|
|
5
|
+
"packages/client/ui-slots/src/index.ts": "43989fb355e1e85316caa70b28de3294f9d6e7b179199a4e429dcd1ef73f2e24",
|
|
6
|
+
"packages/client/ui-slots/src/renderer.ts": "43ba3492fff724ffbe71d0b4bcfca410ab695d019aa2e163d2c8dd56cab1a849",
|
|
6
7
|
"packages/client/ui-renderer/src/client/registry.ts": "6b8b6b969d8bcf0314ea20438a223f3a90e1bd516571faecae5c3c01008ecf21",
|
|
7
|
-
"packages/client/ui-renderer/src/client/scoped-slots.tsx": "
|
|
8
|
-
"packages/client/ui-chat/src/client/contract/slots.ts": "
|
|
9
|
-
"packages/client/ui-tool/src/client/contract/slots.ts": "
|
|
8
|
+
"packages/client/ui-renderer/src/client/scoped-slots.tsx": "ff53b648f9a6fbd59bc13b89fbe33c67b32421c99ab7923689bfa1b47cea95c1",
|
|
9
|
+
"packages/client/ui-chat/src/client/contract/slots.ts": "cf29c7cea66ef3528fbed07387a06c986e6087289a52fe4a9946ea41e3c3275d",
|
|
10
|
+
"packages/client/ui-tool/src/client/contract/slots.ts": "ba3d869c09fead1a4de6eef0b23a276d795ab159a3f9d5df1c5e8fe1c40a7415",
|
|
10
11
|
"packages/client/ui-deliverables/src/client/Deliverables.tsx": "b8d0a19dc208af7f8f44459adba9afe648cd3c398d75917ccfaf2f8c730cfe74",
|
|
11
|
-
"packages/client/ui-chat/src/client/chat/AssistantMarkdown.tsx": "
|
|
12
|
-
"packages/client/ui-chat/src/client/chat/MessageItem.tsx": "
|
|
13
|
-
"packages/client/ui-chat/src/client/chat/AssistantNodeView.tsx": "
|
|
14
|
-
"packages/client/ui-chat/src/client/chat/TurnTailNodeView.tsx": "
|
|
15
|
-
"packages/client/ui-chat/src/client/chat/TurnProcessNodeView.tsx": "
|
|
16
|
-
"packages/client/ui-tool/src/client/tool/models/tool-call-model.ts": "
|
|
12
|
+
"packages/client/ui-chat/src/client/chat/AssistantMarkdown.tsx": "e0d3e450a160ef395e4f50063d83a83a749763f7876fa0a36c5c2de68f6be387",
|
|
13
|
+
"packages/client/ui-chat/src/client/chat/MessageItem.tsx": "118a4d1dcf9eb3b128708b3021acd6f2f7584004f6f904e2d61df23daa528e63",
|
|
14
|
+
"packages/client/ui-chat/src/client/chat/AssistantNodeView.tsx": "72bbc22bd8584c6f8c07656e33b7adb5858f2151eff6e21c6e9a9e87178c41c2",
|
|
15
|
+
"packages/client/ui-chat/src/client/chat/TurnTailNodeView.tsx": "835118e15bb4518d8865de9421425456e377bd623cd8bad2d88ac95ae038b94f",
|
|
16
|
+
"packages/client/ui-chat/src/client/chat/TurnProcessNodeView.tsx": "b7aa82eeb7c8e32bc7e67cca6f4695d23d0ee497c4fc537160a78716a3283dd6",
|
|
17
|
+
"packages/client/ui-tool/src/client/tool/models/tool-call-model.ts": "1c9d44c2a2da9953edd922e21a9987995356dfc7fb8f3f066938e779a7927384",
|
|
17
18
|
"packages/client/ui-primitives/src/markdown/MarkdownText.tsx": "ff500ab71ac6a55df416f84cc1f5900327b9908c5180c4e2b3888377bd417a97",
|
|
18
19
|
"packages/client/ui-primitives/src/markdown/render.tsx": "6e4af631d34ae8c8ea1dbeabd1b4593ee9ff23c3470d2855708b3cf8b84bbca2",
|
|
19
20
|
"packages/client/ui-primitives/src/markdown/parse.ts": "e281b4120306987cce9cf6d8bccfeddec2fe0c7b7b1cc190966f6dcbfd320b1b",
|
|
@@ -22,6 +23,8 @@
|
|
|
22
23
|
},
|
|
23
24
|
"registrations": [
|
|
24
25
|
"conversation.chat.assistant-actions | feedback | packages/client/ui-message-feedback/src/client/index.ts",
|
|
26
|
+
"conversation.chat.flow | (chain/single) | packages/client/ui-chat/src/client/apply.ts",
|
|
27
|
+
"conversation.chat.message.images | (chain/single) | packages/client/ui-attachment/src/client/index.ts",
|
|
25
28
|
"conversation.chat.node | assistant-step | packages/client/ui-chat/src/client/chat/register-node-renderers.ts",
|
|
26
29
|
"conversation.chat.node | command | packages/client/ui-chat/src/client/chat/register-node-renderers.ts",
|
|
27
30
|
"conversation.chat.node | command-input | packages/client/ui-goal/src/client/index.ts",
|
|
@@ -40,10 +43,11 @@
|
|
|
40
43
|
"conversation.chat.node | unknown | packages/client/ui-chat/src/client/chat/register-node-renderers.ts",
|
|
41
44
|
"conversation.chat.node | user | packages/client/ui-chat/src/client/chat/register-node-renderers.ts",
|
|
42
45
|
"conversation.chat.node | workflow-run | packages/client/ui-workflow-run/src/client/index.ts",
|
|
46
|
+
"conversation.chat.reasoning.body | (chain/single) | packages/client/ui-chat/src/client/chat/register-node-renderers.ts",
|
|
43
47
|
"conversation.chat.turnTail | (chain/single) | packages/client/ui-plan/src/client/index.ts",
|
|
44
48
|
"conversation.chat.turnTail | @deepseek-ai/dsh-client-ui-deliverables | packages/client/ui-deliverables/src/client/index.ts",
|
|
45
49
|
"conversation.chat.turnTail | schedule-created | packages/client/ui-schedule/src/client/index.ts",
|
|
46
|
-
"conversation.
|
|
50
|
+
"conversation.chat.user.images | (chain/single) | packages/client/ui-attachment/src/client/index.ts",
|
|
47
51
|
"tool.call.images | (chain/single) | packages/client/ui-attachment/src/client/index.ts",
|
|
48
52
|
"tool.call.toolview | ask_user_question | packages/client/ui-tool/src/client/tool/toolviews/ask-question-row.tsx",
|
|
49
53
|
"tool.call.toolview | bash | packages/client/ui-tool/src/client/tool/toolviews/bash-sample.tsx",
|
package/docs/extension-points.md
CHANGED
|
@@ -60,6 +60,14 @@ import { TEXT_TRANSFORM_SERVICE } from 'dsh-better-display/client';
|
|
|
60
60
|
|
|
61
61
|
`createTextTransformRegistry()` builds a private registry for a unit test. A plugin that wants the reader to paint its text must register on the service the reader provides, not on a registry it constructed itself.
|
|
62
62
|
|
|
63
|
+
### Reasoning DOM marker
|
|
64
|
+
|
|
65
|
+
The reader fallback's reasoning text root (`[data-reader-text-kind="reasoning"]`) exposes `data-reader-reasoning-block-key`. Its value is the same opaque `blockKey` sent in that block's reasoning `DisplayTextRequest`. The marker is present with or without a reasoning transformer, including when a transformer returns `undefined` to keep the original text. It stays stable while that block remains mounted, including streaming growth and display-text changes; do not parse it or persist it as a session identifier.
|
|
66
|
+
|
|
67
|
+
A `ReasoningCard` can group multiple reasoning blocks. For a per-card original/translated toggle, collect **all descendant** `[data-reader-reasoning-block-key]` values and apply the display override to those exact keys through the text-transform registry. Do not assume one key per card, infer ownership from card/block order, or match original or translated text: distinct blocks may have identical text. Treat the values as opaque identifiers, not CSS selector fragments.
|
|
68
|
+
|
|
69
|
+
This marker only associates the existing reasoning display roots with transform requests. It does not change text, rendering identity, source blocks, transcript records, or the native conversation view. A foreign block-chain renderer replaces the fallback and is not guaranteed to provide this marker.
|
|
70
|
+
|
|
63
71
|
### Minimal translation-shaped plugin
|
|
64
72
|
|
|
65
73
|
This one only uppercases. A real translator keeps the same `read` / `subscribe` shape, stores each batch on `blockKey`, and returns a string that extends the previous display string when it wants the fade to continue. It leaves `source === 'tool'` alone unless tool prose should change too.
|
|
@@ -144,6 +152,34 @@ function publish(blockKey: string, text: string, final: boolean) {
|
|
|
144
152
|
|
|
145
153
|
`publish` after each batch. Extend the previous cached string when the fade should continue.
|
|
146
154
|
|
|
155
|
+
### 接官方思考翻译(`cotTranslation`)
|
|
156
|
+
|
|
157
|
+
官方「思考过程机器翻译」组合包(`@deepseek-ai/dsh-experimental-cot-translation-bundle`)把译文注册在 `conversation.chat.reasoning.body` 插槽上,而阅读页用自己的卡片渲染思考,那个插槽不会渲染——装了翻译包,在阅读页看起来像没翻译。用这条缝接它:
|
|
158
|
+
|
|
159
|
+
```ts
|
|
160
|
+
const cot = ctx.get('cotTranslation') as {
|
|
161
|
+
limits(signal: AbortSignal): Promise<{
|
|
162
|
+
maxTextChars: number;
|
|
163
|
+
preferences: { provider: string; targetLanguage: string };
|
|
164
|
+
}>;
|
|
165
|
+
translate(
|
|
166
|
+
request: { text: string; targetLanguage: string; provider?: string },
|
|
167
|
+
signal: AbortSignal,
|
|
168
|
+
): Promise<string>;
|
|
169
|
+
} | undefined;
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
先调 `limits()` 拿目标语言与单次上限(这一步不发送文本),再按 `maxTextChars` 切出**已完成**段落逐段 `translate()`。四个容易踩的点:
|
|
173
|
+
|
|
174
|
+
- `read` 必须同步:返回缓存或 `undefined`(保留原文),把请求排进 `queueMicrotask`,完成后用 `subscribe` 通知重绘;
|
|
175
|
+
- 流式中的末段不发,否则会把半句话送去翻译;
|
|
176
|
+
- 结果按 `blockKey` 缓存,源文本变长时只请求新增段落;
|
|
177
|
+
- 失败返回 `undefined`,阅读页保留原文;不要抛错,也不要写回 block。
|
|
178
|
+
|
|
179
|
+
组合包没挂载时 `ctx.get('cotTranslation')` 返回 `undefined`,此时直接返回 `undefined` 即可,界面与未安装插件完全一致。
|
|
180
|
+
|
|
181
|
+
完整可运行版本(分片、缓存、失败回退、卸载中止)见 [`examples/cot-translation-reader/`](../examples/cot-translation-reader/)。
|
|
182
|
+
|
|
147
183
|
## `dsh-better-display.block`
|
|
148
184
|
|
|
149
185
|
Chain slot, `scope: 'session'`. The reader calls `renderSlotChain` once per block. The first selector that returns non-null draws the block. All-null renders the reader fallback, which is the path that keeps reveal, follow-scroll, and fold.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 官方能力接入说明
|
|
2
2
|
|
|
3
|
-
`0.3.0`
|
|
3
|
+
`0.3.0` 在阅读布局上接入官方内容和控件。当前验收目标是 Harness `0.2.1-rc.5`(`dsh-v0.2.1-rc.5`,`b830ec950faba0a46dda564be3e2d854afed94f1`)。`conversation.chat.turnTail` 仍是 `list`。`conversation.message.images` 已拆成 `conversation.chat.message.images` 与 `conversation.chat.user.images`,Reader 分别镜像这两条 single/session 槽。`ChatNodeOwnerProps` 不再带 `openSkill` / `renderMessageImages`;`conversation.chat.node` 的 `hookContext` 需要 `useGroupAction`。`schedule-created` 和 `schedule_update` 继续走已有镜像座位,Reader 不另写这两张卡片。图标仍使用 `*Regular` 名称。开发者消息里的工具增减行用官方标题和计数,本地 Markdown 图片接受 Desktop 文件路由 `dsh-app://app/api/file`。阅读页自己呈现模型重试和进行中的过程行,所以这两处官方视图变化不改阅读布局。后续仍需维护的自有展示逻辑和升级边界见下文。
|
|
4
4
|
|
|
5
5
|
## 一个具体例子
|
|
6
6
|
|