Repository navigation
Releases
dsh-0.1.5-alpha.1-1.3.0
dsh-termux runtime dsh-0.1.5-alpha.1-1.3.0
Built on arm64 Linux (GitHub Actions ubuntu-24.04-arm) with:
- dsh requested:
@deepseek-ai/dsh@0.1.5-alpha.1 - dsh bundled: 0.1.5-alpha.1
- project version: 1.3.0 (
VERSION) - project source:
c4bab83 - Node.js: linux-arm64
24.19.0 - all Android patches from
DSH_PATCH_SETapplied and verified
Release tags are dsh-<bundled dsh version>-<project VERSION>.
The runtime tarball is self-contained: it bundles the installer, update-dsh.sh (+ its helpers) and the patch files, so you can keep following upstream dsh without cloning this repository.
Compatibility note
This release artifact is a snapshot built at release time.
It was tested against the dsh version it bundles only.
Upstream dsh evolves and may change the patched libs; if the patches drift, this artifact may not work.
Install (on Termux, arm64)
One-liner:
curl -fsSL https://github.com/ErEbusE/dsh-termux/releases/latest/download/install.sh | bash -s -- -yOr manually:
- Download
dsh-termux-runtime.tar.gzandinstall.sh(both attached). - Ensure glibc is available:
pkg install glibc-repo && pkg install glibc glibc-runner- Run:
bash install.sh -y(orbash install.sh -p dsh-termux-runtime.tar.gz) - New shell, then
dsh --versionanddsh web --port 3080.
Install a specific release, or go back to an older one
DSH_RELEASE picks which release the installer downloads from; without it the installer resolves latest, which by definition never points at a pre-release:
curl -fsSL https://github.com/ErEbusE/dsh-termux/releases/download/<tag>/install.sh \
| DSH_RELEASE=<tag> bash -s -- -yRun that from a directory with no leftover *-runtime.tar.gz:
without -p, install.sh first looks for a runtime tarball next to itself, and under curl | bash that means the current directory — it would unpack the leftover instead of the release you asked for.
Installing rewrites ~/.local/opt/dsh-termux-runtime, the dsh symlink in ~/.local/bin and one # dsh-termux PATH line in ~/.bashrc.
It never reads or writes ~/.dsh, so sessions and settings survive installs, updates and rollbacks alike.
Update later (no repo clone needed)
dsh update -t next -y # npm update + automatic patch-set refresh
dsh update --self # refresh the patch set and apply it
# directly (no npm download)
dsh update --patch-set <dir|tar.gz> # same, from a local patch setWhat's Changed
- feat(test-install): add the maintainer tools/ directory and pr-merge.sh by @ErEbusE in #34
- ci(release): release on push only when VERSION changes by @ErEbusE in #35
- ci(release): reject an existing release tag before the build by @ErEbusE in #36
- feat: make --self apply the patch set directly (no npm) by @ErEbusE in #37
Full Changelog: dsh-0.1.5-alpha.1-1.2.10...dsh-0.1.5-alpha.1-1.3.0
dsh-0.1.5-alpha.1-1.2.10
dsh-termux runtime dsh-0.1.5-alpha.1-1.2.10
Built on arm64 Linux (GitHub Actions ubuntu-24.04-arm) with:
- dsh requested:
@deepseek-ai/dsh@alpha - dsh bundled: 0.1.5-alpha.1
- project version: 1.2.10 (
VERSION) - project source:
d49f768 - Node.js: linux-arm64
24.19.0 - all Android patches from
DSH_PATCH_SETapplied and verified
Release tags are dsh-<bundled dsh version>-<project VERSION>.
The runtime tarball is self-contained: it bundles the installer, update-dsh.sh (+ its helpers) and the patch files, so you can keep following upstream dsh without cloning this repository.
Compatibility note
This release artifact is a snapshot built at release time.
It was tested against the dsh version it bundles only.
Upstream dsh evolves and may change the patched libs; if the patches drift, this artifact may not work.
Install (on Termux, arm64)
One-liner:
curl -fsSL https://github.com/ErEbusE/dsh-termux/releases/latest/download/install.sh | bash -s -- -yOr manually:
- Download
dsh-termux-runtime.tar.gzandinstall.sh(both attached). - Ensure glibc is available:
pkg install glibc-repo && pkg install glibc glibc-runner- Run:
bash install.sh -y(orbash install.sh -p dsh-termux-runtime.tar.gz) - New shell, then
dsh --versionanddsh web --port 3080.
Install a specific release, or go back to an older one
DSH_RELEASE picks which release the installer downloads from; without it the installer resolves latest, which by definition never points at a pre-release:
curl -fsSL https://github.com/ErEbusE/dsh-termux/releases/download/<tag>/install.sh \
| DSH_RELEASE=<tag> bash -s -- -yRun that from a directory with no leftover *-runtime.tar.gz:
without -p, install.sh first looks for a runtime tarball next to itself, and under curl | bash that means the current directory — it would unpack the leftover instead of the release you asked for.
Installing rewrites ~/.local/opt/dsh-termux-runtime, the dsh symlink in ~/.local/bin and one # dsh-termux PATH line in ~/.bashrc.
It never reads or writes ~/.dsh, so sessions and settings survive installs, updates and rollbacks alike.
Update later (no repo clone needed)
dsh update -t next -y # npm update + automatic patch-set refresh
dsh update --self -y # force a patch-set refresh onlyWhat's Changed
- fix(patches): session v0-to-v3 migration publish falls back to rename on Android by @ErEbusE in #32
- ci(release): skip conditional patch targets absent from the bundled tree by @ErEbusE in #33
Full Changelog: dsh-0.1.2-rc.1-1.2.9...dsh-0.1.5-alpha.1-1.2.10
pre-dsh-0.1.5-alpha.1-g5dda764-1.2.10
Pre-release — built from upstream source, not from npm
This is not the stable channel. It is built from
deepseek-ai/deepseek-harnessatdsh-v0.1.5-alpha.1
(5dda764), which is typically ahead of the
npm release the stable artifacts bundle. Expect upstream
breaking changes. Install it only if you want to test that.
- upstream ref:
dsh-v0.1.5-alpha.1->5dda764 - dsh version: 0.1.5-alpha.1 (built from source)
- project version: 1.2.10 (
VERSION) - all Android patches from
DSH_PATCH_SETapplied and verified - assets: runtime tarball +
install.shonly — deliberately nodsh-termux-patches.tar.gz, sodsh update --selfkeeps refreshing from the stable channel
Install (Termux, arm64)
Once per device, if glibc is not there yet:
pkg install glibc-repo && pkg install glibc glibc-runnerThen, in a directory that holds no other runtime tarball:
mkdir -p ~/dsh-pre && cd ~/dsh-pre
curl -fLO https://github.com/ErEbusE/dsh-termux/releases/download/pre-dsh-0.1.5-alpha.1-g5dda764-1.2.10/install.sh
curl -fLO https://github.com/ErEbusE/dsh-termux/releases/download/pre-dsh-0.1.5-alpha.1-g5dda764-1.2.10/dsh-termux-runtime.tar.gz
bash install.sh -y -p dsh-termux-runtime.tar.gzOr let the installer fetch this exact release — DSH_RELEASE selects it; without it the installer resolves latest, which by definition never points at a pre-release:
curl -fsSL https://github.com/ErEbusE/dsh-termux/releases/download/pre-dsh-0.1.5-alpha.1-g5dda764-1.2.10/install.sh \
| DSH_RELEASE=pre-dsh-0.1.5-alpha.1-g5dda764-1.2.10 bash -s -- -yOpen a new shell, then check what you got:
dsh --version # 0.1.5-alpha.1
dsh web --port 3080Installing rewrites ~/.local/opt/dsh-termux-runtime (wiped and re-extracted), the dsh symlink in ~/.local/bin, and one # dsh-termux PATH line in ~/.bashrc. It never reads or writes ~/.dsh, so sessions and settings survive both directions — but a newer dsh may write session records an older dsh will not read back.
Going back to stable
cd ~ && rm -rf ~/dsh-pre # see the caveat below
curl -fsSL https://github.com/ErEbusE/dsh-termux/releases/latest/download/install.sh | bash -s -- -y
dsh --versionreleases/latest excludes pre-releases by definition, so that one-liner always lands on stable — no flag, no tag to remember.
Caveat that bites exactly here: without -p, install.sh first looks for a *-runtime.tar.gz next to itself, and under curl | bash that means the current directory. Run the rollback from a directory with no leftover pre tarball, or the installer will unpack that tarball again instead of the stable one it downloaded.
Updating from here
dsh update -t <npm dist-tag> -y follows npm, and dsh update --self -y refreshes the updater and patch set from the latest stable release — so a pre install converges back to the stable channel rather than tracking upstream twice. Neither one re-downloads this pre-release: to move to a newer pre, install it the same way you installed this one.
dsh-0.1.2-rc.1-1.2.8
dsh-termux runtime dsh-0.1.2-rc.1-1.2.8
Built on arm64 Linux (GitHub Actions ubuntu-24.04-arm) with:
- dsh requested:
@deepseek-ai/dsh@latest - dsh bundled: 0.1.2-rc.1
- project version: 1.2.8 (
VERSION) - project source:
52faeba - Node.js: linux-arm64
24.19.0 - all Android patches from
DSH_PATCH_SETapplied and verified
Release tags are dsh-<bundled dsh version>-<project VERSION>.
The runtime tarball is self-contained: it bundles the installer, update-dsh.sh (+ its helpers) and the patch files, so you can keep following upstream dsh without cloning this repository.
Compatibility note
This release artifact is a snapshot built at release time.
It was tested against the dsh version it bundles only.
Upstream dsh evolves and may change the patched libs; if the patches drift, this artifact may not work.
Install (on Termux, arm64)
One-liner:
curl -fsSL https://github.com/ErEbusE/dsh-termux/releases/latest/download/install.sh | bash -s -- -yOr manually:
- Download
dsh-termux-runtime.tar.gzandinstall.sh(both attached). - Ensure glibc is available:
pkg install glibc-repo && pkg install glibc glibc-runner- Run:
bash install.sh -y(orbash install.sh -p dsh-termux-runtime.tar.gz) - New shell, then
dsh --versionanddsh web --port 3080.
Install a specific release, or go back to an older one
DSH_RELEASE picks which release the installer downloads from; without it the installer resolves latest, which by definition never points at a pre-release:
curl -fsSL https://github.com/ErEbusE/dsh-termux/releases/download/<tag>/install.sh \
| DSH_RELEASE=<tag> bash -s -- -yRun that from a directory with no leftover *-runtime.tar.gz:
without -p, install.sh first looks for a runtime tarball next to itself, and under curl | bash that means the current directory — it would unpack the leftover instead of the release you asked for.
Installing rewrites ~/.local/opt/dsh-termux-runtime, the dsh symlink in ~/.local/bin and one # dsh-termux PATH line in ~/.bashrc.
It never reads or writes ~/.dsh, so sessions and settings survive installs, updates and rollbacks alike.
Update later (no repo clone needed)
dsh update -t next -y # npm update + automatic patch-set refresh
dsh update --self -y # force a patch-set refresh onlyWhat's Changed
- Generate the release notes already in their edited shape by @ErEbusE in #27
- Anchor the hard-link patch on the publish call, not the import line by @ErEbusE in #28
Full Changelog: dsh-0.1.2-alpha.3-1.2.7...dsh-0.1.2-rc.1-1.2.8
pre-dsh-0.1.3-alpha.2-g82a5fd6-1.2.8
Pre-release — built from upstream source, not from npm
This is not the stable channel. It is built from
deepseek-ai/deepseek-harnessatdsh-v0.1.3-alpha.2
(82a5fd6), which is typically ahead of the
npm release the stable artifacts bundle. Expect upstream
breaking changes. Install it only if you want to test that.
- upstream ref:
dsh-v0.1.3-alpha.2->82a5fd6 - dsh version: 0.1.3-alpha.2 (built from source)
- project version: 1.2.8 (
VERSION) - all Android patches from
DSH_PATCH_SETapplied and verified - assets: runtime tarball +
install.shonly — deliberately nodsh-termux-patches.tar.gz, sodsh update --selfkeeps refreshing from the stable channel
Install (Termux, arm64)
Once per device, if glibc is not there yet:
pkg install glibc-repo && pkg install glibc glibc-runnerThen, in a directory that holds no other runtime tarball:
mkdir -p ~/dsh-pre && cd ~/dsh-pre
curl -fLO https://github.com/ErEbusE/dsh-termux/releases/download/pre-dsh-0.1.3-alpha.2-g82a5fd6-1.2.8/install.sh
curl -fLO https://github.com/ErEbusE/dsh-termux/releases/download/pre-dsh-0.1.3-alpha.2-g82a5fd6-1.2.8/dsh-termux-runtime.tar.gz
bash install.sh -y -p dsh-termux-runtime.tar.gzOr let the installer fetch this exact release — DSH_RELEASE selects it; without it the installer resolves latest, which by definition never points at a pre-release:
curl -fsSL https://github.com/ErEbusE/dsh-termux/releases/download/pre-dsh-0.1.3-alpha.2-g82a5fd6-1.2.8/install.sh \
| DSH_RELEASE=pre-dsh-0.1.3-alpha.2-g82a5fd6-1.2.8 bash -s -- -yOpen a new shell, then check what you got:
dsh --version # 0.1.3-alpha.2
dsh web --port 3080Installing rewrites ~/.local/opt/dsh-termux-runtime (wiped and re-extracted), the dsh symlink in ~/.local/bin, and one # dsh-termux PATH line in ~/.bashrc. It never reads or writes ~/.dsh, so sessions and settings survive both directions — but a newer dsh may write session records an older dsh will not read back.
Going back to stable
cd ~ && rm -rf ~/dsh-pre # see the caveat below
curl -fsSL https://github.com/ErEbusE/dsh-termux/releases/latest/download/install.sh | bash -s -- -y
dsh --versionreleases/latest excludes pre-releases by definition, so that one-liner always lands on stable — no flag, no tag to remember.
Caveat that bites exactly here: without -p, install.sh first looks for a *-runtime.tar.gz next to itself, and under curl | bash that means the current directory. Run the rollback from a directory with no leftover pre tarball, or the installer will unpack that tarball again instead of the stable one it downloaded.
Updating from here
dsh update -t <npm dist-tag> -y follows npm, and dsh update --self -y refreshes the updater and patch set from the latest stable release — so a pre install converges back to the stable channel rather than tracking upstream twice. Neither one re-downloads this pre-release: to move to a newer pre, install it the same way you installed this one.
dsh-0.1.2-rc.1-1.2.7
dsh-termux runtime dsh-0.1.2-rc.1-1.2.7
Built on arm64 Linux (GitHub Actions ubuntu-24.04-arm) with:
- dsh requested:
@deepseek-ai/dsh@alpha - dsh bundled: 0.1.2-rc.1
- project version: 1.2.7 (
VERSION) - project source:
1875cba - Node.js: linux-arm64
24.19.0 - all Android patches from
DSH_PATCH_SETapplied and verified
Release tags are dsh-<bundled dsh version>-<project VERSION>.
The runtime tarball is self-contained: it bundles the installer, update-dsh.sh (+ its helpers) and the patch files, so you can keep following upstream dsh without cloning this repository.
Compatibility note
This release artifact is a snapshot built at release time.
It was tested against the dsh version it bundles only.
Upstream dsh evolves and may change the patched libs; if the patches drift, this artifact may not work.
Install (on Termux, arm64)
One-liner:
curl -fsSL https://github.com/ErEbusE/dsh-termux/releases/latest/download/install.sh | bash -s -- -yOr manually:
- Download
dsh-termux-runtime.tar.gzandinstall.sh(both attached). - Ensure glibc is available:
pkg install glibc-repo && pkg install glibc glibc-runner- Run:
bash install.sh -y(orbash install.sh -p dsh-termux-runtime.tar.gz) - New shell, then
dsh --versionanddsh web --port 3080.
Install a specific release, or go back to an older one
DSH_RELEASE picks which release the installer downloads from; without it the installer resolves latest, which by definition never points at a pre-release:
curl -fsSL https://github.com/ErEbusE/dsh-termux/releases/download/<tag>/install.sh \
| DSH_RELEASE=<tag> bash -s -- -yRun that from a directory with no leftover *-runtime.tar.gz:
without -p , install.sh first looks for a runtime tarball next to itself , and under curl | bash that means the current directory — it would unpack the leftover instead of the release you asked for.
Installing rewrites ~/.local/opt/dsh-termux-runtime, the dsh symlink in ~/.local/bin and one #dsh-termux PATH line in ~/.bashrc.
It never reads or writes ~/.dsh, so sessions and settings survive installs, updates and rollbacks alike.
Update later (no repo clone needed)
dsh update -t next -y # npm update + automatic patch-set refresh
dsh update --self -y # force a patch-set refresh onlyWhat's Changed
- Update dsh to 0.1.2-rc.1
dsh-0.1.2-alpha.4-1.2.7
dsh-termux runtime dsh-0.1.2-alpha.4-1.2.7
Built on arm64 Linux (GitHub Actions ubuntu-24.04-arm) with:
- dsh requested:
@deepseek-ai/dsh@alpha - dsh bundled: 0.1.2-alpha.4
- project version: 1.2.7 (
VERSION) - project source:
1875cba - Node.js: linux-arm64
24.19.0 - all Android patches from
DSH_PATCH_SETapplied and verified
Release tags are dsh-<bundled dsh version>-<project VERSION>.
The runtime tarball is self-contained: it bundles the installer, update-dsh.sh (+ its helpers) and the patch files, so you can keep following upstream dsh without cloning this repository.
Compatibility note
This release artifact is a snapshot built at release time.
It was tested against the dsh version it bundles only.
Upstream dsh evolves and may change the patched libs; if the patches drift, this artifact may not work.
Install (on Termux, arm64)
One-liner:
curl -fsSL https://github.com/ErEbusE/dsh-termux/releases/latest/download/install.sh | bash -s -- -yOr manually:
- Download
dsh-termux-runtime.tar.gzandinstall.sh(both attached). - Ensure glibc is available:
pkg install glibc-repo && pkg install glibc glibc-runner- Run:
bash install.sh -y(orbash install.sh -p dsh-termux-runtime.tar.gz) - New shell, then
dsh --versionanddsh web --port 3080.
Install a specific release, or go back to an older one
DSH_RELEASE picks which release the installer downloads from; without it the installer resolves latest, which by definition never points at a pre-release:
curl -fsSL https://github.com/ErEbusE/dsh-termux/releases/download/<tag>/install.sh \
| DSH_RELEASE=<tag> bash -s -- -yRun that from a directory with no leftover *-runtime.tar.gz:
without -p , install.sh first looks for a runtime tarball next to itself , and under curl | bash that means the current directory — it would unpack the leftover instead of the release you asked for.
Installing rewrites ~/.local/opt/dsh-termux-runtime, the dsh symlink in ~/.local/bin and one #dsh-termux PATH line in ~/.bashrc.
It never reads or writes ~/.dsh, so sessions and settings survive installs, updates and rollbacks alike.
Update later (no repo clone needed)
dsh update -t next -y # npm update + automatic patch-set refresh
dsh update --self -y # force a patch-set refresh onlyWhat's Changed
- Update dsh to 0.1.2-alpha.4
dsh-0.1.2-alpha.3-1.2.7
dsh-termux runtime dsh-0.1.2-alpha.3-1.2.7
Built on arm64 Linux (GitHub Actions ubuntu-24.04-arm) with:
- dsh requested:
@deepseek-ai/dsh@alpha - dsh bundled: 0.1.2-alpha.3
- project version: 1.2.7 (
VERSION) - project source:
1875cba - Node.js: linux-arm64
24.19.0 - all Android patches from
DSH_PATCH_SETapplied and verified
Release tags are dsh-<bundled dsh version>-<project VERSION>.
The runtime tarball is self-contained: it bundles the installer, update-dsh.sh (+ its helpers) and the patch files, so you can keep following upstream dsh without cloning this repository.
Compatibility note
This release artifact is a snapshot built at release time.
It was tested against the dsh version it bundles only.
Upstream dsh evolves and may change the patched libs; if the patches drift, this artifact may not work.
Install (on Termux, arm64)
One-liner:
curl -fsSL https://github.com/ErEbusE/dsh-termux/releases/latest/download/install.sh | bash -s -- -yOr manually:
- Download
dsh-termux-runtime.tar.gzandinstall.sh(both attached). - Ensure glibc is available:
pkg install glibc-repo && pkg install glibc glibc-runner- Run:
bash install.sh -y(orbash install.sh -p dsh-termux-runtime.tar.gz) - New shell, then
dsh --versionanddsh web --port 3080.
Install a specific release, or go back to an older one
DSH_RELEASE picks which release the installer downloads from; without it the installer resolves latest, which by definition never points at a pre-release:
curl -fsSL https://github.com/ErEbusE/dsh-termux/releases/download/<tag>/install.sh \
| DSH_RELEASE=<tag> bash -s -- -yRun that from a directory with no leftover *-runtime.tar.gz:
without -p , install.sh first looks for a runtime tarball next to itself , and under curl | bash that means the current directory — it would unpack the leftover instead of the release you asked for.
Installing rewrites ~/.local/opt/dsh-termux-runtime, the dsh symlink in ~/.local/bin and one #dsh-termux PATH line in ~/.bashrc.
It never reads or writes ~/.dsh, so sessions and settings survive installs, updates and rollbacks alike.
Update later (no repo clone needed)
dsh update -t next -y # npm update + automatic patch-set refresh
dsh update --self -y # force a patch-set refresh onlyWhat's Changed
- Update dsh to 0.1.2-alpha.3
dsh-0.1.1-rc.2-1.2.7
dsh-termux runtime dsh-0.1.1-rc.2-1.2.7
Built on arm64 Linux (GitHub Actions ubuntu-24.04-arm) with:
- dsh requested:
@deepseek-ai/dsh@latest - dsh bundled: 0.1.1-rc.2
- project version: 1.2.7 (
VERSION) - project source:
102c6e0 - Node.js: linux-arm64
24.19.0 - all Android patches from
DSH_PATCH_SETapplied and verified
Release tags are dsh-<bundled dsh version>-<project VERSION>.
Bumping VERSION in the repository and pushing main triggers a
new release; nothing changed means the workflow exits early without
publishing.
The runtime tarball is self-contained: it bundles the installer,
update-dsh.sh (+ its helpers) and the patch files, so you can keep
following upstream dsh without cloning this repository.
Compatibility note
This release artifact is a snapshot built at release time. It was
tested against the dsh version it bundles only. Upstream dsh evolves
and may change the patched libs; if the patches drift, this artifact
may not work.
Install (on Termux, arm64)
One-liner:
curl -fsSL https://github.com/ErEbusE/dsh-termux/releases/latest/download/install.sh | bash -s -- -yOr manually:
- Download
dsh-termux-runtime.tar.gzandinstall.sh(both attached). - Ensure glibc is available:
pkg install glibc-repo && pkg install glibc glibc-runner - Run:
bash install.sh -y(orbash install.sh -p dsh-termux-runtime.tar.gz) - New shell, then
dsh --versionanddsh web --port 3080.
Update later (no repo clone needed)
dsh update -t next -y # npm update + automatic patch-set refresh
dsh update --self -y # force a patch-set refresh onlyWhat's Changed
Full Changelog: pre-dsh-0.1.2-alpha.3-gdd6322d-1.2.7...dsh-0.1.1-rc.2-1.2.7
pre-dsh-0.1.2-alpha.4-g4e84901-1.2.7
Pre-release — built from upstream source, not from npm
This is not the stable channel. It is built from
deepseek-ai/deepseek-harnessatdsh-v0.1.2-alpha.4
(4e84901), which is typically ahead of the
npm release the stable artifacts bundle. Expect upstream
breaking changes. Install it only if you want to test that.
- upstream ref:
dsh-v0.1.2-alpha.4->4e84901 - dsh version: 0.1.2-alpha.4 (built from source)
- project version: 1.2.7 (
VERSION) - all Android patches from
DSH_PATCH_SETapplied and verified - assets: runtime tarball +
install.shonly — deliberately nodsh-termux-patches.tar.gz, sodsh update --selfkeeps refreshing from the stable channel
Install (Termux, arm64)
Once per device, if glibc is not there yet:
pkg install glibc-repo && pkg install glibc glibc-runnerThen, in a directory that holds no other runtime tarball:
mkdir -p ~/dsh-pre && cd ~/dsh-pre
curl -fLO https://github.com/ErEbusE/dsh-termux/releases/download/pre-dsh-0.1.2-alpha.4-g4e84901-1.2.7/install.sh
curl -fLO https://github.com/ErEbusE/dsh-termux/releases/download/pre-dsh-0.1.2-alpha.4-g4e84901-1.2.7/dsh-termux-runtime.tar.gz
bash install.sh -y -p dsh-termux-runtime.tar.gzOr let the installer fetch this exact release — DSH_RELEASE selects it; without it the installer resolves latest, which by definition never points at a pre-release:
curl -fsSL https://github.com/ErEbusE/dsh-termux/releases/download/pre-dsh-0.1.2-alpha.4-g4e84901-1.2.7/install.sh \
| DSH_RELEASE=pre-dsh-0.1.2-alpha.4-g4e84901-1.2.7 bash -s -- -yOpen a new shell, then check what you got:
dsh --version # 0.1.2-alpha.4
dsh web --port 3080Installing rewrites ~/.local/opt/dsh-termux-runtime (wiped and re-extracted), the dsh symlink in ~/.local/bin, and one # dsh-termux PATH line in ~/.bashrc. It never reads or writes ~/.dsh, so sessions and settings survive both directions — but a newer dsh may write session records an older dsh will not read back.
Going back to stable
cd ~ && rm -rf ~/dsh-pre # see the caveat below
curl -fsSL https://github.com/ErEbusE/dsh-termux/releases/latest/download/install.sh | bash -s -- -y
dsh --versionreleases/latest excludes pre-releases by definition, so that one-liner always lands on stable — no flag, no tag to remember.
Caveat that bites exactly here: without -p, install.sh first looks for a *-runtime.tar.gz next to itself, and under curl | bash that means the current directory. Run the rollback from a directory with no leftover pre tarball, or the installer will unpack that tarball again instead of the stable one it downloaded.
Updating from here
dsh update -t <npm dist-tag> -y follows npm, and dsh update --self -y refreshes the updater and patch set from the latest stable release — so a pre install converges back to the stable channel rather than tracking upstream twice. Neither one re-downloads this pre-release: to move to a newer pre, install it the same way you installed this one.