Development & Runtime

dsh-auto-exit

xiaxingtianxia2-glitch/dsh-auto-exit · ★ 1

xiaxingtianxia2-glitch

Exits the dsh CLI process automatically when the Web UI closes, with a configurable grace period and dry-run mode.

License
MIT
Added
2026-08-21
Maintenance
active
Install kind
github
npm
dsh-auto-exit

No manifest check is available; listing does not imply compatibility or security review.

安装

dsh plugin --profile web add github:xiaxingtianxia2-glitch/dsh-auto-exit

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

For install and environment setup, plus plugin development tutorials, see DSH community docs ↗

README

Source README · body: en · Read Chinese README

Table of contents
  1. What is this?
  2. How it works
  3. Install
  4. Usage
  5. Check status
  6. Configuration
  7. FAQ
  8. License

English | 中文

What is this?

dsh --profile web keeps a long-running process in your terminal, driven from a browser Web UI. This plugin makes closing the Web UI equivalent to exiting the process: once every page is closed, the CLI process exits automatically through the same graceful shutdown path as Ctrl+C (exit code 130) — no need to go back to the terminal.

How it works

  1. Detection — the browser page keeps WebSocket connections to the CLI process; closing the page drops them.
  2. Grace period — after all connections are lost, it waits 15 seconds (configurable) before exiting, so a quick refresh or reopen never kills the process; reopening the page cancels the exit.
  3. Exit — when the grace period expires, it uses the same graceful shutdown channel as Ctrl+C and the process ends with exit code 130, saving state as usual.

Install

dsh plugin --profile web add dsh-auto-exit

Or from the GitHub source (identical content):

dsh plugin --profile web add github:xiaxingtianxia2-glitch/dsh-auto-exit

Usage

  1. Start dsh --profile web and open the Web UI in your browser (default http://127.0.0.1:3080).
  2. Close the browser tab(s)/window(s) (all of them if you have several).
  3. The process exits automatically 15 seconds later.

Check status

curl http://127.0.0.1:3080/auto-exit/status
{"enabled":true,"armed":true,"sockets":2,"countdownMs":0,"graceSeconds":15,"pollMs":1000,"dryRun":false,"lastEvent":"armed","fired":false}

Field meanings: sockets — current page connections; countdownMs — remaining countdown (0 = not counting down); lastEvent — latest state change (idle/armed/lost/cancel/exit).

Configuration

Field Default Description
enabled true Master switch
graceSeconds 15 Seconds to wait after all connections are lost before exiting
pollMs 1000 Poll interval (ms)
armAfterFirstConnect true Only arm after the first page connects (a freshly started server with no browser open does not exit)
dryRun false Dry run: only log "would exit", never actually exit

FAQ

  • Why hasn't it exited yet? Other tabs/windows are still open — the countdown only starts once all connections are gone.
  • Does it exit on laptop sleep or browser crash? Yes — a dropped connection means the UI is no longer usable; increase graceSeconds if you don't want that.
  • How do I turn it off temporarily? Set enabled to false, or uninstall: dsh plugin --profile web remove dsh-auto-exit.

License

MIT