편집자 노트

miisaka19800/dsh-restart-fab

A floating one-click restart button for the DeepSeek Harness web GUI — self-contained, cross-platform.

이것은 DeepSeek Harness(DSH) 플러그인입니다. 이 사이트는 GitHub README, 설치 정보, 유지보수 상태, 공개 보안 시그널을 모아 보여줍니다.

업스트림에서 중국어 README를 제공하지 않아 저장소 원본 내용을 표시합니다.

dsh-restart-fab

A floating one-click restart button for the DeepSeek Harness web GUI.

Pinned to the bottom-right corner of the page: one click arms a confirmation, a second click restarts DeepSeek Harness in place — the page shows a full-screen "restarting" overlay and automatically reloads onto the new host once it is back up. No manual refresh, no second tab, no launcher script.

button platform license

Features

  • Fully self-contained — the restarted host is relaunched with the exact same command line that started the current one (node …/bin.js web --port N), preserving workspace, port, profile and flags. No dependency on any launcher script (DSH启动器.exe, shell wrappers, etc.).
  • Cross-platform — Windows (force kill via taskkill), macOS/Linux (graceful SIGTERM then SIGKILL).
  • Fast — the old process is killed ~1.6 s after you confirm; the new host starts immediately.
  • Clean UX — full-screen overlay with a spinner and elapsed timer while restarting; the page polls the host every second and reloads itself the moment the new host responds. A "refresh now" fallback appears after 60 s.
  • Sessions survive — DeepSeek Harness persists sessions, so your conversations resume automatically after the restart.
  • Same-origin only — the restart route rejects requests from other origins.

Install

Once published, install into the web profile with one command:

# from npm (once the package is published)
dsh plugin --profile web add dsh-restart-fab

# or straight from GitHub (works even before the npm release)
dsh plugin --profile web add github:miisaka19800/dsh-restart-fab

Then restart DeepSeek Harness once (close the console window / stop the process and start it again) — from then on the button is always there.

Install from a local checkout (development)

dsh plugin --profile web add /path/to/dsh-restart-fab

The profile keeps a link: dependency, so edits to this folder are live after the next restart.

Uninstall

dsh plugin --profile web remove dsh-restart-fab

How it works

button (2nd click) ──POST /dsh-restart-fab/restart──▶ server route
                                                        │ spawns detached helper
                                                        │   node restart-helper.mjs <pid> <relaunch-spec-json>
helper:  sleep 1.6s ──▶ kill server process ──▶ sleep 400ms ──▶ relaunch
                                                              (same argv, same cwd)
                                                              Windows: new visible console
                                                              (close it to stop; child processes
                                                               attach to it — no stray popups)
         ──▶ poll new host ──▶ exit
page:    overlay + poll /dsh-restart-fab/ping every 1s
         ── boot id changed? ──▶ location.reload() on the new host
  • GET /dsh-restart-fab/ping — health check; reports the host boot id (<pid>-<timestamp>). The page reloads when it changes.
  • POST /dsh-restart-fab/restart — same-origin only; schedules the restart through lib/restart-helper.mjs, spawned as a detached, hidden child so it survives however the server dies. It kills the server process, relaunches the same command line, and exits once the new host answers.

Project layout

pathpurpose
client/client.jshand-authored CJS bundle, injected into the shell.overlay slot (bottom-right button + restart overlay), zh/en locale
lib/index.jsserver-side cordis plugin: ping + restart routes on the webServer service
lib/restart-helper.mjsdetached helper: kill + relaunch (cross-platform)
cordis.patch.ymlprofile bundle patch that inserts the plugin entry

No build step — plain ESM server code and a hand-authored client bundle.

Security

The restart route only accepts same-origin POSTs (the page served by the host itself). Restarting stops the current dsh web process and starts a new one — anything running inside it (including model sessions) is interrupted, then resumed from persistence.

License

MIT

REPOSITORY SIGNALS

보안 및 설치 증거

이 점수는 공개 저장소 메타데이터와 이 사이트에 등록된 설치 증거에만 기반하며, 코드 보안 감사와 다릅니다.

출처 추적 가능

공개 플러그인 카탈로그에서 왔으며, 공개 GitHub 저장소로 연결됩니다.

라이선스

저장소가 MIT 라이선스를 선언했습니다.

유지보수 활동

최근 180일 내 코드 업데이트가 있습니다.

설치 증거

재현 가능한 정확한 설치 메타데이터가 아직 등록되지 않았습니다. 저장소 설명에 따라 직접 확인하세요.

설치 라이프사이클 스크립트

검사한 패키지 메타데이터에 설치 라이프사이클 스크립트가 선언되지 않았습니다.