Catalogue and sources
The market loads plugin metadata from https://awesome-dsh-plugin.com/plugins.json. This includes curated entries, npm mappings and star counts; CI refreshes the data daily. A bundled snapshot is used as an offline fallback. Only sources listed in that registry are accepted. When a plugin is published to npm, installation prefers an npm tarball and verifies it against the repository. GitHub-only installs depend on the connection to GitHub.
Installation and updates
The Settings page provides category filters, search, star-count and top/new sorting, bilingual descriptions, screenshots, source confirmation and live progress. Screenshots are author-curated through the registry or extracted from a README; they are loaded from GitHub only after the install dialog is opened. Most installations take effect after a page refresh. Plugins installed during the current session can be removed live.
Updates can check an npm version or a pinned commit against HEAD. The interface supports per-plugin updates and updating all plugins. Build scripts remain blocked by default with pnpm version 10 or later; allowing a build script is an explicit per-package choice. Missing pnpm can be detected and set up through the interface.
Backups and diagnostics
A profile's plugin list and configuration can be exported as readable JSON or imported on another machine. The interface can store backups on WebDAV with daily automatic backup. Restore validation occurs before writing, with rollback on failure. Backups may contain credentials from the profile configuration. WebDAV requires HTTPS, refuses private-network targets, and does not store the password in the browser.
Diagnostics show plugin load order, bundle entries, official/community badges, duplicate loaders, dependency-version mismatches, multiple core-package versions, overrides and invalid configuration entries. Log export produces a sanitised plain-text file; home paths and credential shapes are masked, and the log is not sent elsewhere.
Restart behaviour
For changes that cannot hot-load, the page shows a pending-change notice and can offer a restart action. The restart request accepts same-origin POST requests and additionally requires a direct loopback client; forwarded requests are rejected. The replacement relaunches the exact DSH entry, arguments, environment and working directory. Set allowRestart: false when a supervisor such as systemd, launchd or pm2 owns restarts.
Written from the project's own documentation and kept in sync with it. Where the two disagree, the source is authoritative — read the README on GitHub