dsh-streamfold 0.5.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/LICENSE +21 -0
- package/README.en.md +124 -0
- package/README.md +126 -0
- package/cordis.patch.yml +7 -0
- package/lib/client.js +3085 -0
- package/lib/index.js +12 -0
- package/package.json +73 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 rezon-aki
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.en.md
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
# dsh-streamfold
|
|
2
|
+
|
|
3
|
+
[简体中文](README.md) · **English**
|
|
4
|
+
|
|
5
|
+
[](LICENSE)
|
|
6
|
+
[](cordis.patch.yml)
|
|
7
|
+
[](test/spark.mjs)
|
|
8
|
+
|
|
9
|
+
> A better conversation window: **the newest thinking window opens automatically while a turn runs**, older windows fold themselves, and when the turn finishes the thinking and tool calls fold away — interleaved prose can stay unfolded. Water-like motion throughout.
|
|
10
|
+
|
|
11
|
+
**Why this project exists**:
|
|
12
|
+
|
|
13
|
+
- **Peek at what dsh is thinking right now.** The newest thinking window opens automatically while it works, and the transcript still stays tidy.
|
|
14
|
+
- **Motion.** We wanted an interface that simply feels good to look at: window height, folding and scroll-follow all advance per frame, like water — no jumps. The "back to bottom" button keeps the official look, but **when it shows is decided here** — normal follow lag no longer makes it flicker, and clicking it glides back smoothly.
|
|
15
|
+
- **Sparks.** Blue sparks rise from the bottom edge of the running thinking window, like a grinding wheel on metal: the faster the content scrolls, the **brighter and denser** they fly (brightness follows scroll speed — dim on slow output, hot on fast), and they stop when it stops. Colour and density are configurable; turning it off means it never runs.
|
|
16
|
+
- **Forging.** While the answer streams, every new chunk throws a small spray of sparks from the writing head (the end of the last line), drifting outwards like metal struck on an anvil. Written text only; pause and the hammer stops, and the sparks burn out on their own. Colour, density, speed and lifetime are configurable.
|
|
17
|
+
- **Settle on the prompt.** When a turn finishes the view glides back to **the message that started it**, so you never have to scroll up to remember what you asked (skipped if you scrolled away yourself; on by default, can be turned off).
|
|
18
|
+
- **Pin the prompt.** The prompt of the turn you are reading stays pinned to the top of the conversation, one line with an ellipsis; it steps aside while the real row is on screen, and **clicking it glides back to that message** (on by default, can be turned off).
|
|
19
|
+
|
|
20
|
+

|
|
21
|
+
|
|
22
|
+
## Why it is light
|
|
23
|
+
|
|
24
|
+
- **No separate view.** It enhances the official transcript through semantic attributes instead of shipping its own conversation shell, taking over the render pipeline or depending on internal renderer contracts — a small upgrade surface.
|
|
25
|
+
- **No dependencies, no build.** Hand-written `lib/`; no runtime dependencies and no file I/O — the host half is just an entry so the client manifest can hand the browser half to the page, and settings live in browser localStorage.
|
|
26
|
+
- **No changes to DSH source; clean uninstall.**
|
|
27
|
+
|
|
28
|
+
## Install
|
|
29
|
+
|
|
30
|
+
**Option 1: the DSH plugin panel (recommended)** — sidebar → **Plugins** → **Add plugin**, paste the line below, then hit “Enable now”:
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
github:rezon-aki/dsh-streamfold
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
**Option 2: the command line** (two equivalent forms):
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
dsh plugin --profile web add github:rezon-aki/dsh-streamfold
|
|
40
|
+
dsh plugin --profile web add https://github.com/rezon-aki/dsh-streamfold
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Restart the profile, then **refresh the browser page** (client code is injected at page load).
|
|
44
|
+
|
|
45
|
+
Requires DSH **>= 0.1.7-alpha.1** (the official transcript view is now owned by the `configForms` service; for the DSH 0.1.5 series use 0.4.x — v0.4.0 itself declares `>=0.1.5-rc.2`).
|
|
46
|
+
|
|
47
|
+
> **What changed in 0.5:** settings are no longer written to a host file (`~/.dsh/streamfold.json` and the `/streamfold/api/settings` route are gone) — they live in browser localStorage only, so values you already tuned stay put. The 0.1.7 transcript view now has four modes (Compact/Standard/Detailed/Verbose); this plugin appends its own "Fold" entry to that official dropdown and parks the official mode on Verbose while folding, so the two never fight.
|
|
48
|
+
|
|
49
|
+
Uninstall:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
dsh plugin --profile web remove dsh-streamfold
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Usage
|
|
56
|
+
|
|
57
|
+
Settings → General → **Work details**: the official four modes stay as they are (**Compact / Standard / Detailed / Verbose**) and a fifth, **Fold**, is appended — the one this plugin owns:
|
|
58
|
+
|
|
59
|
+
| Option | Behaviour |
|
|
60
|
+
| --- | --- |
|
|
61
|
+
| Compact / Standard / Detailed / Verbose | The official modes, with the official labels and behaviour |
|
|
62
|
+
| Fold | This plugin: one window for the running turn, everything else folds into one line |
|
|
63
|
+
|
|
64
|
+
Choosing **Fold** parks the official mode on **Verbose**, so the official side neither folds nor groups anything and folding is done by this plugin alone (no double folding). The four official labels come from the official dictionary, so they follow the official wording; the fifth has no official entry and uses the label shipped with this plugin (Fold).
|
|
65
|
+
|
|
66
|
+
Dedicated settings page: Settings → **Streamfold** (all switches below, applied immediately).
|
|
67
|
+
|
|
68
|
+
While running, only the newest thinking window opens automatically; **windows you opened yourself are never auto-collapsed**, and a superseded window folds back into a one-line summary after the "superseded grace" (2s by default). Scrolling up stops the follow, and a "↓ back to bottom" button appears once you are away from the bottom.
|
|
69
|
+
|
|
70
|
+
## Settings
|
|
71
|
+
|
|
72
|
+
| Setting | Default | Meaning |
|
|
73
|
+
| --- | --- | --- |
|
|
74
|
+
| Fold history turns | on | Off: do not fold past turns on page load (only while a turn runs) |
|
|
75
|
+
| Keep interleaved prose | off | Keep prose rows while folding, laid out naturally (no capped window; the final answer is never wrapped either) |
|
|
76
|
+
| Window height | 260 | Max height of the running thinking window (px) |
|
|
77
|
+
| Auto-expand thinking while running | on | Only the newest block of the running turn; superseded windows fold after the grace period |
|
|
78
|
+
| Superseded grace | 2 s | How long an older window waits before folding into a summary line (0–60, decimals allowed) |
|
|
79
|
+
| Auto-expand tools while running | off | Expand the newest tool card using the official card's own disclosure/scroll |
|
|
80
|
+
| Auto-follow the bottom | on | Stick to the bottom while content grows; scrolling up stops it |
|
|
81
|
+
| Smoothing factor | 0.15 | Share of the remaining gap consumed per frame (0.05–0.9) |
|
|
82
|
+
| Minimum step | 1 | Minimum pixels advanced per 16 ms (refresh-rate independent) |
|
|
83
|
+
| Show "back to bottom" | on | Shown when away from the bottom (hidden for follow lag, to avoid flicker) |
|
|
84
|
+
| Settle on the prompt | on | When a turn finishes, glide back to your message that started it; if you scrolled away yourself, nothing moves |
|
|
85
|
+
| Pin the prompt | on | Keep the prompt of the turn you are reading pinned to the top of the conversation: it follows you as you scroll up, one line with ellipsis; it steps aside while the real row is in view, click to glide back to it |
|
|
86
|
+
| Animated transitions | on | Off makes folding / expanding / jumping instant |
|
|
87
|
+
| Window sparks | on | Sparks along the bottom edge of the running thinking window (standalone module: off = no canvas, no frames) |
|
|
88
|
+
| Spark colour | #4fa8ff | Spark colour; the core is brightened towards white heat |
|
|
89
|
+
| Spark density | 1 | Spark count multiplier (0.2–3): denser costs more to draw (shared by both spark kinds) |
|
|
90
|
+
| Forging sparks | on | Sparks thrown from the writing head while the answer streams; nothing new written, no hammer |
|
|
91
|
+
| Forging spark speed | 1 | Speed multiplier for the thrown sparks (0.2–4) |
|
|
92
|
+
| Forging spark life | 1.3 | How long one spark lives (0.2–5 s, randomised by ±30%) |
|
|
93
|
+
|
|
94
|
+
Settings live in browser localStorage, scoped to the DSH page origin.
|
|
95
|
+
|
|
96
|
+
## Diagnostics
|
|
97
|
+
|
|
98
|
+
Browser console:
|
|
99
|
+
|
|
100
|
+
```js
|
|
101
|
+
__dshStreamfold.stats() // window / fold / chip counts (incl. animation state)
|
|
102
|
+
__dshStreamfold.probe() // row state, still-visible thinking rows, window animation, jump button, spark cost (probe().sparks)
|
|
103
|
+
__dshStreamfold.state() // current settings + official "conversation display" snapshot
|
|
104
|
+
__dshStreamfold.set({ smoothGrow: 0.1, supersedeDelay: 3 })
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
When reporting an issue, attach the `probe()` output and your DSH version.
|
|
108
|
+
|
|
109
|
+
## Safety
|
|
110
|
+
|
|
111
|
+
- Client-side presentation only: it reads the conversation DOM, makes no network requests, touches no credentials and never modifies DSH source.
|
|
112
|
+
- The host half reads no files and registers no routes: settings stay in browser localStorage, and the official transcript view is read/written through DSH's own settings service (`configForms`).
|
|
113
|
+
- Clean uninstall: the settings row, window markers and injected styles are all removed.
|
|
114
|
+
|
|
115
|
+
## Development
|
|
116
|
+
|
|
117
|
+
- Hand-written, no build: `lib/client.js` (browser half, wrapped in `window.__ModuleLoader__`) and `lib/index.js` (host half).
|
|
118
|
+
- After editing `lib/*.js`, reload the plugin and **refresh the page**.
|
|
119
|
+
- Row anchors use official semantic attributes only: `[data-chat-flow]`, `[data-chat-flow-kind]`, `[data-chat-turn]`, `[data-disclosure-row][aria-expanded]`, `[data-variant=think]`, `[data-tool]`, `[data-sample=bash]`, `[class*=_thinkBody]`, `[class*=_bodyWrap]`, `[data-context-injection-body]` — never CSS module hashes.
|
|
120
|
+
- Verified on DSH 0.1.7-rc.1 / 0.1.7-rc.2.
|
|
121
|
+
|
|
122
|
+
## License
|
|
123
|
+
|
|
124
|
+
MIT
|
package/README.md
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# dsh-streamfold · 流式折叠
|
|
2
|
+
|
|
3
|
+
**简体中文** · [English](README.en.md)
|
|
4
|
+
|
|
5
|
+
[](LICENSE)
|
|
6
|
+
[](cordis.patch.yml)
|
|
7
|
+
[](test/spark.mjs)
|
|
8
|
+
|
|
9
|
+
> 一个更好的会话窗口:**运行时自动展开最新的思考小窗**,旧小窗自动折叠,跑完自动将思考过程与工具调用折起,并且可以保留穿插的正文不折叠,全程水流般的动效。
|
|
10
|
+
|
|
11
|
+
**为什么有这个项目**:
|
|
12
|
+
|
|
13
|
+
- **顺便「视奸」dsh 现在在想什么。** 运行中自动展开最新的思考小窗——它此刻在想什么你看得见,界面又保持整洁。
|
|
14
|
+
- **动效。** 我们要的是一个看着就很舒服的界面:小窗高度、折叠与滚动跟随都按帧推进,水流一样,不跳不顿。右下角那颗「回到底部」外观仍是官方的,但**何时出现由本插件决定**——跟随中的正常落后不会再让它一闪一闪,点它是平滑滑回底部。
|
|
15
|
+
- **小窗火花。** 运行中思考小窗底部往上冒火星——像滚筒碾过金属:小窗滚得越快,火星**越亮也越密**(亮度跟着滚动速度走,慢输出暗、快输出烫),停住就不磨了;底边左右两端更密,火星朝窗口内迸。颜色与密度可调,关掉即完全不运行。
|
|
16
|
+
- **正文锻打。** 正文流式输出时,每写一段就从写头(最后一行末尾)向四周飘出一扇火星,像溅出来的一小团火。写了才有,停笔就不发,火星烧完自动收手。颜色、密度、速度、寿命都可调。
|
|
17
|
+
- **跑完回到提问处。** 一轮结束,视图平滑滑回**你这轮那句话**的位置——不用自己往上翻找回"我当初问的是什么"(你已经自己上滚过就不动你;可关,默认开)。
|
|
18
|
+
- **置顶显示提问。** 读到哪一轮,那一轮的提问就钉在会话顶端(一行,超出省略);它自己在屏幕上时自动让位,**点它一下平滑滑回那句发言**(可关,默认开)。
|
|
19
|
+
|
|
20
|
+

|
|
21
|
+
|
|
22
|
+
## 它轻在哪
|
|
23
|
+
|
|
24
|
+
- **不另开视图。** 直接在官方对话流上做 DOM 增强(靠语义属性定位行),不自己实现会话壳、不接管渲染管线、不依赖内部渲染器契约——升级面小。
|
|
25
|
+
- **零依赖、零构建。** 手写 `lib/`,没有构建步骤、没有运行时依赖,也不读写任何文件:宿主半区只是一个占位条目(客户端清单据它把浏览器半区交给页面),设置存在浏览器 localStorage。
|
|
26
|
+
- **不碰官方源码,卸载即净。**
|
|
27
|
+
|
|
28
|
+
## 安装
|
|
29
|
+
|
|
30
|
+
**方式一:DSH 插件面板(推荐)** —— 侧栏 →「**插件**」→「**添加插件**」,粘贴下面这行,装完点「立即启用」:
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
github:rezon-aki/dsh-streamfold
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
**方式二:命令行**(两种等价写法):
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
dsh plugin --profile web add github:rezon-aki/dsh-streamfold
|
|
40
|
+
dsh plugin --profile web add https://github.com/rezon-aki/dsh-streamfold
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
装完重启 profile,然后**刷新浏览器页面**(客户端代码在页面加载时注入)。
|
|
44
|
+
|
|
45
|
+
要求 DSH **>= 0.1.7-alpha.1**(官方「对话显示」档位改由 `configForms` 服务托管;DSH 0.1.5 系列请用 0.4.x —— v0.4.0 自己声明的是 `>=0.1.5-rc.2`)。
|
|
46
|
+
|
|
47
|
+
> **0.4 → 0.5 的变化**:设置不再写宿主文件(`~/.dsh/streamfold.json` 与 `/streamfold/api/settings` 路由已移除),改为只存浏览器 localStorage——你在页面上已经调好的值不受影响;0.1.7 把「对话显示」换成四档(简洁/标准/详细/完全展开),本插件把「折叠」作为第五项接在官方下拉里,选它时官方自动停在「完全展开」,两层折叠不会打架。
|
|
48
|
+
|
|
49
|
+
卸载:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
dsh plugin --profile web remove dsh-streamfold
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
重启 profile 即恢复官方行为。
|
|
56
|
+
|
|
57
|
+
## 用法
|
|
58
|
+
|
|
59
|
+
设置 → 通用设置 → **工作步骤展示**:官方那四档原样保留(**简洁 / 标准 / 详细 / 完全展开**),末尾多一项「**折叠**」——本插件接管的那一档:
|
|
60
|
+
|
|
61
|
+
| 选项 | 行为 |
|
|
62
|
+
| --- | --- |
|
|
63
|
+
| 简洁 / 标准 / 详细 / 完全展开 | 官方原本的四档,文案与行为都跟官方一致 |
|
|
64
|
+
| 折叠 | 本插件:运行中的一轮只留一个窗,其余过程收成一行 |
|
|
65
|
+
|
|
66
|
+
选「折叠」时,官方那一档会被自动停在 **完全展开**(等价于 0.1.5 时代的「标准」语义)——官方自己不折、不分组,折叠只由本插件做,避免两层折叠打架;官方四档的档位名取自官方词典(官方改了文案这边跟着变);「折叠」官方没有对应词条,用本插件自带的标签(中文「折叠」/ 英文 Fold)。
|
|
67
|
+
|
|
68
|
+
专属设置页:设置 → **流式折叠**(下面所有开关都在这里,改动即时生效)。
|
|
69
|
+
|
|
70
|
+
运行中只会自动展开最新那一个思考窗;**你自己点开的窗不会被自动收起**,被取代的旧窗按「旧窗折叠宽限」(默认 2 秒)折回一行摘要;上滚即停跟,离底时出现回底按钮(箭头图标;小窗与主窗口是同一个按钮)。
|
|
71
|
+
|
|
72
|
+
## 设置
|
|
73
|
+
|
|
74
|
+
| 设置项 | 默认 | 说明 |
|
|
75
|
+
| --- | --- | --- |
|
|
76
|
+
| 折叠历史轮次 | 开 | 关掉后:加载页面不再自动折叠历史轮次(只在跑动时折前面的) |
|
|
77
|
+
| 保留穿插正文 | 关 | 折叠时保留带正文的行,直接自然排版(不套窗;正式回答本身也不套窗) |
|
|
78
|
+
| 窗口高度 | 260 | 运行中思考小窗的最大高度(px) |
|
|
79
|
+
| 运行中自动展开思考 | 开 | 只自动展开本轮最新的那一个;被取代的旧窗按「旧窗折叠宽限」折回一行摘要 |
|
|
80
|
+
| 旧窗折叠宽限 | 2 秒 | 新的思考窗出现后,旧窗再等多久才自动折回(0~60,支持小数) |
|
|
81
|
+
| 运行中自动展开工具 | 关 | 开:运行中最新的工具卡自动展开(用官方卡片自己的折叠/内滚,不套限高小窗) |
|
|
82
|
+
| 触底自动跟随 | 开 | 内容增长时自动贴底;你上滚即停跟 |
|
|
83
|
+
| 平滑系数 | 0.15 | 跟随时每帧吃掉多少差距,越小越柔(0.05~0.9) |
|
|
84
|
+
| 平滑最小步长 | 1 | 每 16ms 至少推进多少像素(与屏幕刷新率无关) |
|
|
85
|
+
| 离底显示「回到底部」 | 开 | 离开底部时出现回底按钮(跟随中的轻微落后不显示,避免闪烁) |
|
|
86
|
+
| 跑完回到提问处 | 开 | 一轮结束后平滑移到本轮你那句话的位置;你已经自己上滚过就不动你(动效关掉时直接到位) |
|
|
87
|
+
| 置顶显示提问 | 开 | 把「你正在看的那一轮」的提问钉在会话顶端:往上滚会跟着换成那一轮,超过一行只显示一行;它自己在视口里时自动让位,点它滑回那句话 |
|
|
88
|
+
| 动效过渡 | 开 | 关掉则折叠/展开/回底全部瞬时 |
|
|
89
|
+
| 小窗火花 | 开 | 运行中思考小窗底部的火星(独立模块:关掉后不建画布、不排帧) |
|
|
90
|
+
| 火花颜色 | #4fa8ff | 火星颜色;核心自动提亮成白热 |
|
|
91
|
+
| 火花密度 | 1 | 火星数量倍率(0.2~3),越高越密、绘制开销越大(两种火花共用) |
|
|
92
|
+
| 正文锻打火花 | 开 | 正文流式写头砸出的火星;写头不动就不砸,跑完自动收手 |
|
|
93
|
+
| 锻打火花速度 | 1 | 火星飘出去的速度倍率(0.2~4) |
|
|
94
|
+
| 锻打火花寿命 | 1.3 | 单颗火星活多久(0.2~5 秒,实际在 ±30% 内随机) |
|
|
95
|
+
|
|
96
|
+
设置存在浏览器 localStorage(按 DSH 页面源站隔离)。
|
|
97
|
+
|
|
98
|
+
## 诊断
|
|
99
|
+
|
|
100
|
+
浏览器控制台:
|
|
101
|
+
|
|
102
|
+
```js
|
|
103
|
+
__dshStreamfold.stats() // 窗口 / 折叠 / 折叠条计数(含动效状态)
|
|
104
|
+
__dshStreamfold.probe() // 行状态、还看得见的思考行、小窗动画、回底按钮状态、火星开销(probe().sparks)
|
|
105
|
+
__dshStreamfold.state() // 当前设置 + 官方「对话显示」取值快照
|
|
106
|
+
__dshStreamfold.set({ smoothGrow: 0.1, supersedeDelay: 3 })
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
报问题时附上 `probe()` 的输出与 DSH 版本,定位会快很多。
|
|
110
|
+
|
|
111
|
+
## 安全边界
|
|
112
|
+
|
|
113
|
+
- 纯客户端展示增强:只读对话 DOM,不发网络请求、不接触凭据、不改官方源码。
|
|
114
|
+
- 宿主半区不读写文件、不注册路由:设置只落浏览器 localStorage;对官方「对话显示」档位的读写走 DSH 自己的设置服务(`configForms`)。
|
|
115
|
+
- 卸载即净:设置行、小窗标记与注入的样式全部撤掉。
|
|
116
|
+
|
|
117
|
+
## 开发
|
|
118
|
+
|
|
119
|
+
- 手写、无构建:`lib/client.js`(浏览器半区,包在 `window.__ModuleLoader__` 里)、`lib/index.js`(宿主半区)。
|
|
120
|
+
- 改完 `lib/*.js` 重载插件并**刷新页面**。
|
|
121
|
+
- 行锚点全部用官方语义属性:`[data-chat-flow]`、`[data-chat-flow-kind]`、`[data-chat-turn]`、`[data-disclosure-row][aria-expanded]`、`[data-variant=think]`、`[data-tool]`、`[data-sample=bash]`、`[class*=_thinkBody]`、`[class*=_bodyWrap]`、`[data-context-injection-body]`——不用 CSS module 哈希。
|
|
122
|
+
- 已在 DSH 0.1.7-rc.1 / 0.1.7-rc.2 上验证。
|
|
123
|
+
|
|
124
|
+
## License
|
|
125
|
+
|
|
126
|
+
MIT
|
package/cordis.patch.yml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# dsh-streamfold bundle patch:把 host 半区插进 profile 的插件 roster。
|
|
2
|
+
# 浏览器半区走 package.json 的 dsh.client 清单(客户端注册表据此提供 lib/client.js)。
|
|
3
|
+
# 用 `dsh plugin --profile <name> add <路径或 git 地址>` 安装后本层自动生效;
|
|
4
|
+
# 不要再往 profile 的 cordis.patch.yml 手动 insert 同一 id(重复 id 会让加载器报错起不来)。
|
|
5
|
+
- insert:
|
|
6
|
+
- id: dsh-streamfold
|
|
7
|
+
name: 'dsh-streamfold'
|