From 131398efe1cbf54c728fb6e0e6fac08a45fb1eaa Mon Sep 17 00:00:00 2001 From: Menghuan1918 Date: Fri, 14 Aug 2026 15:56:42 +0800 Subject: [PATCH 1/6] =?UTF-8?q?docs:=20=E5=8F=8B=E6=83=85=E9=93=BE?= =?UTF-8?q?=E6=8E=A5=E6=96=B0=E5=A2=9E=20dsh-TUI=EF=BC=88ccch1mneyyy?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + README_EN.md | 1 + 2 files changed, 2 insertions(+) diff --git a/README.md b/README.md index 3ce38b9..7a645e0 100644 --- a/README.md +++ b/README.md @@ -250,3 +250,4 @@ Windows / Linux / macOS 三平台适配(macOS 日常验证;其余经单元 ## 🔗 友情链接 - [dsh-tianshu-tui](https://github.com/huiliyi37/dsh-tianshu-tui):DeepSeek Harness 交互式终端 UI 插件(渲染核心由自研 harness agent Tianshu-Tui 演进而来),在官方基础上增加 TDD 与证据门等工作流 +- [dsh-TUI](https://github.com/ccch1mneyyy/dsh-TUI):Claude Code 风格全屏交互终端插件——像素鲸鱼顶栏、实时工作状态行、思考流式展开、双击 Esc 回滚、上下文进度条 + TPS 仪表,npm 一键安装 diff --git a/README_EN.md b/README_EN.md index a546073..471d9d1 100644 --- a/README_EN.md +++ b/README_EN.md @@ -251,3 +251,4 @@ Windows / Linux / macOS (macOS validated daily; the rest covered by unit tests); ## 🔗 Friends - [dsh-tianshu-tui](https://github.com/huiliyi37/dsh-tianshu-tui): an interactive terminal UI plugin for DeepSeek Harness (its rendering core evolved from the self-developed harness agent Tianshu-Tui), adding TDD and evidence-gate workflows on top of the official harness +- [dsh-TUI](https://github.com/ccch1mneyyy/dsh-TUI): a Claude Code-style fullscreen interactive TUI plugin — pixel-whale top bar, live working-status row, streaming thought expansion, double-Esc rollback, context progress bar + TPS meter; one-command npm install From df1ab1c65feed2dbf39a0fe5a7d42c9a73157abf Mon Sep 17 00:00:00 2001 From: Menghuan1918 Date: Fri, 14 Aug 2026 16:00:23 +0800 Subject: [PATCH 2/6] =?UTF-8?q?docs:=20=E5=8F=8B=E6=83=85=E9=93=BE?= =?UTF-8?q?=E6=8E=A5=E6=96=B0=E5=A2=9E=20dshfind=20=E4=B8=89=E6=96=B9?= =?UTF-8?q?=E6=8F=92=E4=BB=B6=E5=B8=82=E5=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + README_EN.md | 1 + 2 files changed, 2 insertions(+) diff --git a/README.md b/README.md index 7a645e0..fa77d6c 100644 --- a/README.md +++ b/README.md @@ -251,3 +251,4 @@ Windows / Linux / macOS 三平台适配(macOS 日常验证;其余经单元 - [dsh-tianshu-tui](https://github.com/huiliyi37/dsh-tianshu-tui):DeepSeek Harness 交互式终端 UI 插件(渲染核心由自研 harness agent Tianshu-Tui 演进而来),在官方基础上增加 TDD 与证据门等工作流 - [dsh-TUI](https://github.com/ccch1mneyyy/dsh-TUI):Claude Code 风格全屏交互终端插件——像素鲸鱼顶栏、实时工作状态行、思考流式展开、双击 Esc 回滚、上下文进度条 + TPS 仪表,npm 一键安装 +- [dshfind 插件超市](https://dshfind.com/zh/plugins):三方插件市场——GitHub topic `dsh-plugin` 下的公开仓库清单,每日同步 star、贡献者与增长数据 diff --git a/README_EN.md b/README_EN.md index 471d9d1..ab2a6f9 100644 --- a/README_EN.md +++ b/README_EN.md @@ -252,3 +252,4 @@ Windows / Linux / macOS (macOS validated daily; the rest covered by unit tests); - [dsh-tianshu-tui](https://github.com/huiliyi37/dsh-tianshu-tui): an interactive terminal UI plugin for DeepSeek Harness (its rendering core evolved from the self-developed harness agent Tianshu-Tui), adding TDD and evidence-gate workflows on top of the official harness - [dsh-TUI](https://github.com/ccch1mneyyy/dsh-TUI): a Claude Code-style fullscreen interactive TUI plugin — pixel-whale top bar, live working-status row, streaming thought expansion, double-Esc rollback, context progress bar + TPS meter; one-command npm install +- [dshfind Plugin Market](https://dshfind.com/zh/plugins): a third-party plugin marketplace — a listing of public repos under the GitHub topic `dsh-plugin`, with stars, contributors and growth data synced daily From 20bb60dd03bf1adf6c1002ece1603b131c67e677 Mon Sep 17 00:00:00 2001 From: Menghuan1918 Date: Fri, 14 Aug 2026 16:02:57 +0800 Subject: [PATCH 3/6] ci: add GitHub Actions workflow for tests and type/build checks Run pnpm install --frozen-lockfile, typecheck, test (vitest) and build on push to main and all pull requests. --- .github/workflows/ci.yml | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..2abe642 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,28 @@ +name: CI + +on: + push: + branches: [main] + pull_request: + +jobs: + ci: + runs-on: ubuntu-latest + timeout-minutes: 20 + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v4 + with: + version: 11 + - uses: actions/setup-node@v4 + with: + node-version: 22 + cache: pnpm + - name: Install dependencies + run: pnpm install --frozen-lockfile + - name: Typecheck + run: pnpm typecheck + - name: Test + run: pnpm test + - name: Build + run: pnpm build From c8fc6c7cbf75afbeeb242b800efb8b10ea8ef603 Mon Sep 17 00:00:00 2001 From: Menghuan1918 Date: Fri, 14 Aug 2026 16:52:57 +0800 Subject: [PATCH 4/6] ci: fix Linux runner test failures (shallow clone, git identity, node-pty prebuild) - checkout with fetch-depth: 0: the git log paging test needs the full repository history (default shallow clone yields one commit) - configure a global git identity on the runner: src/git.ts deliberately never sets one and revert/cherry-pick rely on ambient config - tests/unit.spec.ts: node-pty@1.1.0 ships a prebuilt spawn-helper only for darwin/win32; on linux node-gyp compiles it into build/Release. Align the assertion with ensureSpawnHelper's candidate list instead of hardcoding the prebuilds/ path (the Linux test run was red for this reason) --- .github/workflows/ci.yml | 10 ++++++++++ tests/unit.spec.ts | 16 +++++++++++----- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2abe642..9a3bffc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,6 +11,9 @@ jobs: timeout-minutes: 20 steps: - uses: actions/checkout@v4 + with: + # Tests run git log against this repository and need the full history. + fetch-depth: 0 - uses: pnpm/action-setup@v4 with: version: 11 @@ -18,6 +21,13 @@ jobs: with: node-version: 22 cache: pnpm + # The plugin's git revert/cherry-pick spawn git without setting an + # identity (deliberate, see tests/smoke.spec.ts) and rely on ambient + # config; the runner has none by default. + - name: Configure git identity for tests + run: | + git config --global user.name "dsh-better-sidebar-ci" + git config --global user.email "ci@dsh.invalid" - name: Install dependencies run: pnpm install --frozen-lockfile - name: Typecheck diff --git a/tests/unit.spec.ts b/tests/unit.spec.ts index 4b18516..cdab6dd 100644 --- a/tests/unit.spec.ts +++ b/tests/unit.spec.ts @@ -865,15 +865,21 @@ describe('pty helpers', () => { if (process.platform === 'win32') return ensureSpawnHelper() ensureSpawnHelper() - const { existsSync } = require('node:fs') as typeof import('node:fs') + const { existsSync, statSync } = require('node:fs') as typeof import('node:fs') const { dirname, join } = require('node:path') as typeof import('node:path') const { createRequire } = require('node:module') as typeof import('node:module') const entry = createRequire(import.meta.url).resolve('node-pty') const root = dirname(dirname(entry)) - const helper = join(root, 'prebuilds', `${process.platform}-${process.arch}`, 'spawn-helper') - expect(existsSync(helper)).toBe(true) - const { statSync } = require('node:fs') as typeof import('node:fs') - expect((statSync(helper).mode & 0o111) !== 0).toBe(true) + // node-pty ships a prebuilt spawn-helper for darwin/win32; on other + // platforms (linux) node-gyp compiles it into build/Release. Mirror + // ensureSpawnHelper's candidate list: either location is acceptable. + const candidates = [ + join(root, 'prebuilds', `${process.platform}-${process.arch}`, 'spawn-helper'), + join(root, 'build', 'Release', 'spawn-helper'), + ] + const helper = candidates.find(existsSync) + expect(helper).toBeTruthy() + expect((statSync(helper!).mode & 0o111) !== 0).toBe(true) }) }) From bd49fcc3cdf2564b1cf7c1001c4ccf702e254235 Mon Sep 17 00:00:00 2001 From: Menghuan1918 Date: Fri, 14 Aug 2026 16:54:50 +0800 Subject: [PATCH 5/6] ci: restrict spawn-helper test to macOS, its only platform node-pty@1.1.0 builds the spawn-helper executable only for OS=="mac" (binding.gyp); linux uses forkpty directly and ships no helper at all. The test's non-Windows premise was wrong for linux, and no candidate exists there to assert on. --- tests/unit.spec.ts | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/tests/unit.spec.ts b/tests/unit.spec.ts index cdab6dd..1202387 100644 --- a/tests/unit.spec.ts +++ b/tests/unit.spec.ts @@ -861,8 +861,10 @@ describe('pty helpers', () => { }) it('restores the spawn-helper executable bit idempotently', () => { - // On non-Windows the helper must exist and be executable after the fix. - if (process.platform === 'win32') return + // node-pty's spawn-helper is a macOS-only artifact: binding.gyp builds + // the executable only for OS=="mac", and no other platform ships one to + // restore (linux uses forkpty directly). Skip elsewhere. + if (process.platform !== 'darwin') return ensureSpawnHelper() ensureSpawnHelper() const { existsSync, statSync } = require('node:fs') as typeof import('node:fs') @@ -870,9 +872,8 @@ describe('pty helpers', () => { const { createRequire } = require('node:module') as typeof import('node:module') const entry = createRequire(import.meta.url).resolve('node-pty') const root = dirname(dirname(entry)) - // node-pty ships a prebuilt spawn-helper for darwin/win32; on other - // platforms (linux) node-gyp compiles it into build/Release. Mirror - // ensureSpawnHelper's candidate list: either location is acceptable. + // Prebuilt (tarball) or node-gyp-compiled (build/Release): mirror + // ensureSpawnHelper's candidate list — either location is acceptable. const candidates = [ join(root, 'prebuilds', `${process.platform}-${process.arch}`, 'spawn-helper'), join(root, 'build', 'Release', 'spawn-helper'), From 9c8bdc4aa51eae615a04cdf936495c4635c48ad8 Mon Sep 17 00:00:00 2001 From: Menghuan1918 Date: Fri, 14 Aug 2026 16:57:06 +0800 Subject: [PATCH 6/6] ci: bump actions to Node-24-based majors (checkout@v7, setup-node@v7, pnpm/action-setup@v6) Clears the runner deprecation annotation: the previous major versions target Node 20 and are force-run on Node 24. --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9a3bffc..f0570c6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,14 +10,14 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 20 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 with: # Tests run git log against this repository and need the full history. fetch-depth: 0 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v6 with: version: 11 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v7 with: node-version: 22 cache: pnpm