dsh-ssh-tui 0.7.4 → 0.8.1

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.
Files changed (74) hide show
  1. package/README.en.md +37 -0
  2. package/README.md +436 -572
  3. package/docs/display-mode.md +122 -0
  4. package/docs/remote-ops.md +104 -0
  5. package/docs/terminals.md +53 -0
  6. package/lib/attach.js +4 -4
  7. package/lib/attach.js.map +1 -1
  8. package/lib/auth-failure.js +128 -0
  9. package/lib/auth-failure.js.map +1 -0
  10. package/lib/commands.js +3 -0
  11. package/lib/commands.js.map +1 -1
  12. package/lib/dialogs.js +43 -0
  13. package/lib/dialogs.js.map +1 -1
  14. package/lib/display-mode.js +147 -0
  15. package/lib/display-mode.js.map +1 -0
  16. package/lib/display-sock.js +361 -21
  17. package/lib/display-sock.js.map +1 -1
  18. package/lib/footer.js +6 -9
  19. package/lib/footer.js.map +1 -1
  20. package/lib/glyph-measure.js +92 -0
  21. package/lib/glyph-measure.js.map +1 -0
  22. package/lib/i18n/en.js +27 -2
  23. package/lib/i18n/en.js.map +1 -1
  24. package/lib/i18n/zh.js +27 -2
  25. package/lib/i18n/zh.js.map +1 -1
  26. package/lib/index.js +74 -5
  27. package/lib/index.js.map +1 -1
  28. package/lib/paint.js +22 -9
  29. package/lib/paint.js.map +1 -1
  30. package/lib/picker.js +14 -13
  31. package/lib/picker.js.map +1 -1
  32. package/lib/plan.js +11 -11
  33. package/lib/plan.js.map +1 -1
  34. package/lib/platform.js +96 -0
  35. package/lib/platform.js.map +1 -1
  36. package/lib/session-blank.js +81 -0
  37. package/lib/session-blank.js.map +1 -0
  38. package/lib/session-list.js +102 -81
  39. package/lib/session-list.js.map +1 -1
  40. package/lib/startup.js +7 -0
  41. package/lib/startup.js.map +1 -1
  42. package/lib/subagent-model.js +8 -7
  43. package/lib/subagent-model.js.map +1 -1
  44. package/lib/term-text.js +296 -28
  45. package/lib/term-text.js.map +1 -1
  46. package/lib/terminal-input.js +132 -10
  47. package/lib/terminal-input.js.map +1 -1
  48. package/lib/theme.js +318 -0
  49. package/lib/theme.js.map +1 -0
  50. package/lib/tool-present.js +11 -9
  51. package/lib/tool-present.js.map +1 -1
  52. package/lib/tui.js +535 -37
  53. package/lib/tui.js.map +1 -1
  54. package/lib/types/attach.d.ts +6 -2
  55. package/lib/types/auth-failure.d.ts +78 -0
  56. package/lib/types/commands.d.ts +9 -0
  57. package/lib/types/dialogs.d.ts +36 -0
  58. package/lib/types/display-mode.d.ts +99 -0
  59. package/lib/types/display-sock.d.ts +75 -0
  60. package/lib/types/footer.d.ts +1 -1
  61. package/lib/types/glyph-measure.d.ts +41 -0
  62. package/lib/types/index.d.ts +20 -0
  63. package/lib/types/plan.d.ts +5 -2
  64. package/lib/types/platform.d.ts +83 -0
  65. package/lib/types/session-blank.d.ts +51 -0
  66. package/lib/types/session-list.d.ts +34 -0
  67. package/lib/types/startup.d.ts +6 -0
  68. package/lib/types/subagent-model.d.ts +7 -6
  69. package/lib/types/term-text.d.ts +55 -23
  70. package/lib/types/terminal-input.d.ts +37 -0
  71. package/lib/types/theme.d.ts +109 -0
  72. package/lib/types/tool-present.d.ts +2 -2
  73. package/lib/types/tui.d.ts +121 -1
  74. package/package.json +92 -93
package/README.en.md CHANGED
@@ -47,6 +47,8 @@ dsh --profile tui
47
47
  Current `dsh` requires `--profile` (`dsh plugin add …` errors without it).
48
48
  Swap `tui` for another profile name.
49
49
 
50
+ **On the 0.2.0-rc host line?** 0.8.0 is the release that supports it (older versions are refused by the launcher's version check), but it is published under `next` for now — `latest` is still 0.7.4 until 2026-10-01. Until then install with `dsh plugin --profile tui add dsh-ssh-tui@next`; on the 0.1.7-rc line `@latest` (0.7.4) is enough, and moving to 0.8.0 later costs nothing. **0.1.5 and older hosts are no longer supported as of 0.8.0.**
51
+
50
52
  **Updates must use `@latest`.** `dsh plugin` forwards the rest of the line to
51
53
  pnpm in the profile directory. A bare `add dsh-ssh-tui` keeps the version
52
54
  already pinned in `pnpm-lock.yaml` (often 0.3.7). Do not put `--profile`
@@ -99,6 +101,38 @@ side-by-side at 100 columns or more · `DSH_TUI_LINE_MODE=1` appends plain lines
99
101
  readers and `tee` · `ssh-tui.keys` rebinds keys, refusing conflicts · `DSH_TUI_COLOR_DEPTH`
100
102
  pins the palette (truecolor / 256 / 8 / none).
101
103
 
104
+ ## Which host lines this covers
105
+
106
+ The plugin declares and tests **both `@deepseek-ai/dsh` lines in flight**:
107
+
108
+ | Host line | Status |
109
+ | --- | --- |
110
+ | `0.1.7-rc.1` / `0.1.7-rc.2` (`latest`) | declared compatible; CI runs the full real-PTY probe set on rc.2 and typecheck + unit suite on rc.1 |
111
+ | `0.2.0-rc.1` / `0.2.0-rc.2` (`next`, also the desktop app's baseline) | declared compatible; rc.2 is the default development line with the full probe set, rc.1 gets typecheck + suite |
112
+ | `0.1.5` and older | **unsupported as of 0.8.0**, with an explicit `incompatible` entry in `dshReleases` |
113
+
114
+ The declared window is `>=0.1.7-rc.1 <0.1.8 || >=0.2.0-rc.1 <0.2.1` (peer dependencies and `dshReleases`
115
+ state the same fact), and every release re-installs those versions in a clean tree and re-runs the types, the
116
+ suite and the real-PTY probes — not "no errors, so it probably works". Many terminal plugins on npm are still
117
+ stranded on the 0.1.5 line; few terminal UIs install on the 0.2.0-rc line at all, which is why the window is
118
+ maintained this tightly.
119
+
120
+ ## Desktop Harness users, read this first
121
+
122
+ **The official desktop app (<https://www.deepseek.com/harness/>) does not need this plugin** — use its own UI
123
+ or `dsh web`. This plugin is a *terminal* UI and must run on a real TTY; the launcher the desktop app puts on
124
+ your PATH (`DeepSeek Harness.exe` with `ELECTRON_RUN_AS_NODE`) is a GUI-subsystem process with no console, so
125
+ `dsh --profile tui` cannot start under it. For a terminal session, install the npm CLI:
126
+
127
+ ```bash
128
+ npm i -g @deepseek-ai/dsh # a real console runtime
129
+ dsh --profile tui # from a terminal or an SSH session
130
+ ```
131
+
132
+ **Under the desktop app this plugin stays inert rather than failing**: it logs one "inactive here" line through `ctx.logger` and mounts nothing (no locks, no timers, no update check), so the desktop never shows a failed plugin and cannot be broken by it. A profile that would rather fail loudly can set `requireTerminal: true`.
133
+
134
+ The full diagnosis, both desktop defects, the strategy and a copy-paste-ready upstream issue are in [`docs/desktop.md`](docs/desktop.md) and [`docs/upstream-desktop-report.md`](docs/upstream-desktop-report.md).
135
+
102
136
  ## Requirements
103
137
 
104
138
  - Node.js >= 22.19
@@ -408,6 +442,9 @@ You can reopen the wizard at any time with:
408
442
  | `Alt+1` / `2` / `3` / `4` | jump to latest thinking / plan / subagent / reply (a reply is selected, ready for `/copy`) |
409
443
  | `/find [kind] query` | search and jump to the full matching message (`thinking` `plan` `subagent` `reply` `prompt` `tool`), which is also selected. `Ctrl+/` or `Alt+/` opens it |
410
444
  | `/copy` | copy the selected card or reply **as written** to the local clipboard (latest reply if none is selected; OSC 52). The selection survives, so pressing it twice copies the same thing. Inside a full view the copy key (`Ctrl+Shift+C`) takes **the body on screen** — a tool body, a changes diff, or the reply as written — and the overlay echoes the confirmation |
445
+ | `/retryauth [on\|off]` | auto-retry once when the *provider* rejects a request (HTTP 401/403 while a local credential is configured); off by default. The three-step diagnosis is in [`docs/remote-ops.md`](docs/remote-ops.md) §4.8 |
446
+ | `/theme [name]` | palette: `default` / `catppuccin` / `gruvbox` / `mono` (emits no colour at all — bold, dim and underline carry the differences). `/theme` lists them and marks the current one; the choice is remembered, and `DSH_TUI_THEME` overrides it for one launch |
447
+ | Question dialog | ↑/↓ moves the highlight and `●` marks what Enter will submit; in a multi-select, Space (or a digit/letter) ticks a row (`✓`), Enter submits the ticked set (or the highlighted row if none is ticked), Esc cancels |
411
448
  | `Ctrl+G` / `Alt+N` | next search hit; `Alt+P` previous |
412
449
  | `Esc` | drop selection → scroll to bottom → cancel the running turn |
413
450
  | `Ctrl+C` | cancel the running turn; press twice when idle to exit |