@crazyhappyone/dsh-tui 0.1.0-alpha.50 → 0.1.0-alpha.51
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 +36 -0
- package/README.md +7 -5
- package/README.zh.md +7 -5
- package/dist/index.js +851 -740
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,41 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.0-alpha.51 — 2026-10-21
|
|
4
|
+
|
|
5
|
+
Prerelease for DSH `0.2.1-rc.2`; npm channel: `next`.
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- Streamed transcript cells now have one physical painter. Ink reserves the slot and paints chrome; sparse incremental frames, pane transitions and resize restore or release that slot without retaining old prose in blank rows. HUD and input-height changes clear the old transcript area and paint the new layout in the same synchronized frame, preventing text from leaking below the transcript during unattended streaming.
|
|
10
|
+
- Mouse wheel and touchpad reports land at their target without row-by-row catch-up. Reports received before a React commit retain their combined movement, and scrolling no longer rerenders the parent loop for every report. Scroll latency is measured through the matching stdout callback.
|
|
11
|
+
- Render-store budgets use incremental row/byte totals and resident LRU order instead of repeatedly scanning all historical lines. Markdown settlement uses a source index to avoid repeatedly searching the full history.
|
|
12
|
+
- `/settings` now browses category → namespace → provider/object → model/array → fields. Search, back navigation and successful edits retain location/selection; nested edits preserve unknown user fields through the official settings service. Narrow layouts reserve space for values and actions.
|
|
13
|
+
- [#14](https://github.com/zhangyang-crazy-one/dsh-tui/issues/14): discard transient text from failed `assistant/attempt` streams, keeping live history consistent with durable replay. Successful retries and officially committed interrupted messages remain visible.
|
|
14
|
+
- [#15](https://github.com/zhangyang-crazy-one/dsh-tui/issues/15): restore SSH port-forward instructions when reopening an in-progress DeepSeek login. Automatic browser opening now checks the actual SSH environment; explicit `o` still opens the link.
|
|
15
|
+
- [#16](https://github.com/zhangyang-crazy-one/dsh-tui/issues/16): resolve file-panel relative paths against the current Session directory after `/cd`, with configured-cwd/filesystem fallback. Absolute paths and the previous root on failure retain their behavior.
|
|
16
|
+
|
|
17
|
+
### Verification and upgrade
|
|
18
|
+
|
|
19
|
+
- Passed 2,299 TUI tests across 173 files with two workers, 46 launcher tests, four strict TypeScript projects, five bundle builds/import checks and the npm package-content check.
|
|
20
|
+
- Production rendering in an OS PTY with synthetic services produced 2,928 completed frames. Of these, 2,812 had transcript snapshots for comparison: 77,558 physical rows, zero mismatches and zero transcript leaks into the input/HUD area. Initialization/layout transitions without snapshots were not counted as comparison passes.
|
|
21
|
+
- In the recorded 120×40 PTY fixture, a nine-line wheel burst reached its target in 17.93 ms instead of 168.07 ms. At 60 Hz, React commits fell from 175 to 60 and output from 804,570 to 307,651 bytes. These measurements depend on the fixture and machine; they do not measure physical touchpad or display latency. See the [verification report](docs/performance-audit-2026-10-21/fix-verification.md).
|
|
22
|
+
- Upgrade with `npm install --global @crazyhappyone/dsh-tui@next`, then relaunch. Source-linked installations can use `/reload` after the new bundle is available. The official `deepseek-tui` profile and settings/credential services remain authoritative; no configuration migration is required.
|
|
23
|
+
- Live model authentication and physical-device rendering were not part of this offline/PTY verification. Full TUI tests used two workers after timing-sensitive failures under high concurrency; assertions were not relaxed.
|
|
24
|
+
|
|
25
|
+
### 中文变更说明
|
|
26
|
+
|
|
27
|
+
- 修复无操作流式输出的重复正文、空白行残影及终端光标定位;聊天内容统一由物理帧绘制。切换面板、调整尺寸及 HUD/输入区高度变化时,在同步帧中清理旧正文区域,防止正文穿插到下方。
|
|
28
|
+
- 修复滚轮/触控板逐行追赶和同批输入只保留最后一次的问题;滚动直接进入视口,延迟统计到对应 stdout 写入回调为止。
|
|
29
|
+
- 历史渲染缓存改用增量行数/字节统计和驻留 LRU,移除预算检查中的反复全量扫描。
|
|
30
|
+
- 设置改为分类、namespace、Provider/对象、model/数组、字段的逐级浏览;支持搜索、返回和保存后停留。继续使用官方配置接口,保留未知字段,窄屏为值和操作预留空间。
|
|
31
|
+
- 修复失败流式片段残留为普通消息,保证实时历史与持久化回放一致;保留成功重试和官方已提交的中断消息。
|
|
32
|
+
- 修复 SSH 登录页关闭重开后丢失转发命令、错误自动打开远端浏览器;显式按 `o` 仍可打开链接。
|
|
33
|
+
- 修复 `/cd` 后文件面板相对路径仍使用启动目录;改用当前会话目录,保留绝对路径及失败时原目录。
|
|
34
|
+
- 验证:2,299 项 TUI 测试、46 项 launcher 测试、4 个严格类型检查项目及构建/打包通过;2,812 个有快照的 PTY 比较帧覆盖 77,558 行,正文不一致与越界均为 0。完整 TUI 测试限制为 2 个 worker,未放宽断言;不将 PTY 合成数据视为在线认证或真实设备验收。
|
|
35
|
+
- 升级:`npm install --global @crazyhappyone/dsh-tui@next` 后重新启动;源码链接安装可在新 bundle 就绪后 `/reload`。继续使用官方 profile 与配置服务,无需迁移配置。
|
|
36
|
+
|
|
37
|
+
[Full comparison](https://github.com/zhangyang-crazy-one/dsh-tui/compare/v0.1.0-alpha.50...v0.1.0-alpha.51)
|
|
38
|
+
|
|
3
39
|
## 0.1.0-alpha.50 — 2026-10-21
|
|
4
40
|
|
|
5
41
|
Prerelease for DSH `0.2.1-rc.2`; npm channel: `next`. The changes below include the unreleased work since `0.1.0-alpha.49`.
|
package/README.md
CHANGED
|
@@ -15,9 +15,9 @@ English | [中文](README.zh.md)
|
|
|
15
15
|
|
|
16
16
|
`@crazyhappyone/dsh-tui` is a terminal interface for DeepSeek Harness (dsh), shipped as a dsh **plugin bundle** plus a `dsh-tui` launcher. The package declares `dsh.bundle`, so dsh installs it into a profile like any other plugin; the launcher only automates that install and boots the profile. This repository owns the plugin sources (`tui/`, `tui-render/`). DSH continues to own agents, sessions, tools, persistence, providers, permissions, and profile assembly.
|
|
17
17
|
|
|
18
|
-
## Release 0.1.0-alpha.
|
|
18
|
+
## Release 0.1.0-alpha.51
|
|
19
19
|
|
|
20
|
-
This prerelease targets DSH `0.2.1-rc.2`. It
|
|
20
|
+
This prerelease targets DSH `0.2.1-rc.2`. It fixes streamed text overlapping the input area, removes wheel scrolling catch-up, reduces history-rendering work, and adds hierarchical settings navigation. It also fixes failed-stream text, SSH login guidance and file paths after `/cd` (#14–#16). See the [changelog](CHANGELOG.md#010-alpha51--2026-10-21) for the full changes and verification boundaries.
|
|
21
21
|
|
|
22
22
|
```sh
|
|
23
23
|
npm install --global @crazyhappyone/dsh-tui@next
|
|
@@ -31,9 +31,11 @@ Earlier lightweight versions used `tui`, while source mode used `deepseek-tui`.
|
|
|
31
31
|
|
|
32
32
|
For a running source-linked installation, `/reload` loads the rebuilt bundle but preserves that process's selected profile. To change from `tui` to `deepseek-tui`, quit and launch again (or pass the desired profile explicitly). Resumed Goals require `/goal resume` to enable automatic continuation.
|
|
33
33
|
|
|
34
|
+
`/settings` now opens a hierarchy. Use Enter to open a category, namespace, provider, model or field; ←/Esc returns one level; `/` searches; `i` edits an object's JSON; Space toggles supported values. Successful edits stay in the current location and use DSH's official settings/credential services. In the recorded PTY comparison, a nine-line wheel burst reached its target in 17.93 ms instead of 168.07 ms; 2,812 frames with published transcript snapshots had no text mismatches or input-area leaks. These are synthetic PTY results, not hardware latency guarantees. See the [fix verification](docs/performance-audit-2026-10-21/fix-verification.md) for fixtures and limits.
|
|
35
|
+
|
|
34
36
|
## Table of Contents
|
|
35
37
|
|
|
36
|
-
- [Release and upgrade](#release-010-
|
|
38
|
+
- [Release and upgrade](#release-010-alpha51)
|
|
37
39
|
- [Changelog](CHANGELOG.md)
|
|
38
40
|
- [Terminal capabilities](#terminal-capabilities)
|
|
39
41
|
- [Screenshots](#screenshots)
|
|
@@ -190,10 +192,10 @@ Clipboard image paste uses `pngpaste -` on macOS ([installation: `brew install p
|
|
|
190
192
|
|
|
191
193
|
### DeepSeek account, models, and working directory
|
|
192
194
|
|
|
193
|
-
- `/login` opens the DeepSeek account page when dsh mounts the `deepseek-account` service: Enter starts browser sign-in, `o` reopens the authorization link, `c` cancels, and the page shows the profile and balance once signed in. The browser returns to the bundle's `webserver` row on `127.0.0.1` with an OS-assigned port. Over SSH the page prints the `ssh -L` forward instead of opening a browser; pin `port` on the `webserver` row so the forward stays stable. Without the account service, `/login` and `/key` open the API-key editor.
|
|
195
|
+
- `/login` opens the DeepSeek account page when dsh mounts the `deepseek-account` service: Enter starts browser sign-in, `o` reopens the authorization link, `c` cancels, and the page shows the profile and balance once signed in. The browser returns to the bundle's `webserver` row on `127.0.0.1` with an OS-assigned port. Over SSH the page prints the `ssh -L` forward instead of opening a browser; pin `port` on the `webserver` row so the forward stays stable. Closing and reopening this page retains the active attempt and restores its forwarding instructions; `o` opens the link only when explicitly requested. Without the account service, `/login` and `/key` open the API-key editor.
|
|
194
196
|
- `/logout` signs out after confirmation; stored API keys remain.
|
|
195
197
|
- `/model` lists `deepseek-account` and `deepseek-official` with the step that makes their models available (`/login` or `/key`) while their catalogs are empty, and refuses to select such a row.
|
|
196
|
-
- `/cd [path]` shows or changes the Session working directory on dsh 0.2.1 and later. The header, `@` mentions, and `/files` follow it, and the model receives the change notice; existing shells keep their own directories.
|
|
198
|
+
- `/cd [path]` shows or changes the Session working directory on dsh 0.2.1 and later. The header, `@` mentions, and `/files` follow it, including relative paths entered in the file panel, and the model receives the change notice; existing shells keep their own directories.
|
|
197
199
|
- `/plugins` lists official bundles in their own group. An official catalog entry whose files are not installed is marked installable, and Space opens the install preview for its exact target.
|
|
198
200
|
|
|
199
201
|
### OpenCode Zen free models
|
package/README.zh.md
CHANGED
|
@@ -15,9 +15,9 @@ kind: "package-group"
|
|
|
15
15
|
|
|
16
16
|
`@crazyhappyone/dsh-tui` 是 DeepSeek Harness(dsh)的终端界面,以 dsh **插件 bundle** 加 `dsh-tui` launcher 的形式发布。包声明了 `dsh.bundle`,因此 dsh 会像安装其他插件一样把它装进 profile;launcher 只负责自动完成这一安装并启动 profile。本仓库拥有插件源码(`tui/`、`tui-render/`)。Agent、会话、工具、持久化、provider、权限与 profile 组装仍由 DSH 拥有。
|
|
17
17
|
|
|
18
|
-
## 0.1.0-alpha.
|
|
18
|
+
## 0.1.0-alpha.51 版本
|
|
19
19
|
|
|
20
|
-
本预发布版面向 DSH `0.2.1-rc.2
|
|
20
|
+
本预发布版面向 DSH `0.2.1-rc.2`,修复实时输出穿插到输入区、滚轮逐行追赶,减少历史渲染开销,并加入设置多级导航。同时修复失败流式文本残留、SSH 登录提示和 `/cd` 后的文件路径问题(#14–#16)。完整变更与验证边界见 [changelog](CHANGELOG.md#010-alpha51--2026-10-21)。
|
|
21
21
|
|
|
22
22
|
```sh
|
|
23
23
|
npm install --global @crazyhappyone/dsh-tui@next
|
|
@@ -31,9 +31,11 @@ dsh-tui
|
|
|
31
31
|
|
|
32
32
|
正在运行的源码链接安装可通过 `/reload` 加载新构建,但会保留进程原先选中的 profile。若从 `tui` 切换到 `deepseek-tui`,需退出后重新启动,或显式指定 profile。恢复的 Goal 需执行 `/goal resume` 才会自动续跑。
|
|
33
33
|
|
|
34
|
+
`/settings` 现在支持多级浏览。Enter 进入分类、namespace、Provider、model 或字段;←/Esc 返回上一层;`/` 搜索;`i` 编辑对象 JSON;Space 切换支持的值。保存后停留当前位置,继续使用 DSH 官方 settings/credentials 服务。本次 PTY 对照中,9 行滚动到达目标从 168.07 ms 降至 17.93 ms;2,812 个有正文快照的比较帧未发现正文不一致或越界。这是合成数据的 PTY 实测,不是硬件延迟保证。数据与边界见[修复验证](docs/performance-audit-2026-10-21/fix-verification.md)。
|
|
35
|
+
|
|
34
36
|
## 目录
|
|
35
37
|
|
|
36
|
-
- [版本与升级](#010-
|
|
38
|
+
- [版本与升级](#010-alpha51-版本)
|
|
37
39
|
- [Changelog](CHANGELOG.md)
|
|
38
40
|
- [终端能力](#终端能力)
|
|
39
41
|
- [截图](#screenshots)
|
|
@@ -190,10 +192,10 @@ TUI 是 dsh 插件 bundle,不是 fork,也不是独立的 agent 运行时:
|
|
|
190
192
|
|
|
191
193
|
### DeepSeek 账号、模型与工作目录
|
|
192
194
|
|
|
193
|
-
- 当 dsh 挂载 `deepseek-account` 服务时,`/login` 打开 DeepSeek 账号页:Enter 发起浏览器登录,`o` 重新打开授权链接,`c` 取消;登录后页面显示账号资料与余额。浏览器回调到本 bundle 的 `webserver` 行,监听 `127.0.0.1` 上由系统分配的端口。通过 SSH 使用时,页面显示 `ssh -L` 端口转发命令而不打开浏览器;在 `webserver` 行固定 `port`
|
|
195
|
+
- 当 dsh 挂载 `deepseek-account` 服务时,`/login` 打开 DeepSeek 账号页:Enter 发起浏览器登录,`o` 重新打开授权链接,`c` 取消;登录后页面显示账号资料与余额。浏览器回调到本 bundle 的 `webserver` 行,监听 `127.0.0.1` 上由系统分配的端口。通过 SSH 使用时,页面显示 `ssh -L` 端口转发命令而不打开浏览器;在 `webserver` 行固定 `port` 可让转发保持稳定。关闭重开页面会继续已有登录并恢复转发提示;按 `o` 才显式打开链接。未挂载账号服务时,`/login` 与 `/key` 打开 API 密钥编辑器。
|
|
194
196
|
- `/logout` 确认后退出登录,已保存的 API 密钥保留。
|
|
195
197
|
- `/model` 在 `deepseek-account` 与 `deepseek-official` 目录为空时列出它们,并注明使模型可用的步骤(`/login` 或 `/key`),且拒绝选中此类行。
|
|
196
|
-
- `/cd [路径]` 在 dsh 0.2.1 及以后版本查看或切换会话工作目录。顶栏、`@` 提及与 `/files`
|
|
198
|
+
- `/cd [路径]` 在 dsh 0.2.1 及以后版本查看或切换会话工作目录。顶栏、`@` 提及与 `/files` 随之切换,文件面板输入的相对路径也以当前会话目录为基准;模型会收到变更通知;已有 shell 保留各自的目录。
|
|
197
199
|
- `/plugins` 将官方 bundle 单独分组。文件尚未安装的官方目录条目标记为可安装,按 Space 打开其精确安装目标的安装预览。
|
|
198
200
|
|
|
199
201
|
### OpenCode Zen 免费模型
|