45 条命令收成十个动词;--version 现在也收文件夹;0.3.5 那个打不开的窗口修好了。
-
十个动词,旧名一个不留。
lsgetrmstartstopsetlogsuiagenthelp,原先各自成命令的那些改成参数。这么做不是为了少几条,是因为一个只拿--help上手的 agent 会数出四个不同的「删」——那说明它得先学会我们内部有四层存储才动得了手。⛔ 不兼容:
versions、pull、drop、plugins add/install、packages、config、path、status、attach这些名字都没了,脚本要改。换算最省事的办法是敲一次dsh-box,那十行就是全部。⚠️ 绿色版用户:0.3.5 公告里那句dsh-box path add现在叫dsh-box set path on。 -
能起的 dsh 多了两种。
--version除了版本号,也收一个文件夹:你自己从源码构建的那份,和某个自带 dsh 的应用。带斜杠就按文件夹读,版本号里不会有斜杠,所以一根轴仍然只有一个旗标。应用那种用它自带的解释器起(原生零件是按它的规格编的)。树一律认硬盘上摊着的真文件——整棵树封在归档包里的会当场拒绝并说清原因,而不是等两分钟再给你一句「找不到某个包」。钉版核对对别人的树只报告,不拦着:那棵树不是我们装的。
-
0.3.5 的窗口在 Windows 上一次都打不开。 这一版修了。原因是程序动过控制台之后,再起子进程必须把三个输入输出句柄显式声明齐——少一个,系统就整体拒绝,而且不告诉你是哪一个。
-
起失败不再留下没人认领的进程。 以前等待就绪超时之后,那台 dsh 其实还活着,而账本上是空的:停不掉、窗口里看不见,下次启动撞上一个被占的端口。现在它会把自己起的那台收掉,并告诉你收掉了。
同一处还修好了就绪判据:新版 dsh 的首页要先认证,旧判据永远等不到「起好了」,会把一台健康的 dsh 报成启动失败。
数据目录格式没变,沙箱和下载的版本原地可用。
In English — forty-five commands became ten verbs, --version now takes a folder, and the window that never opened on Windows works again.
The ten are ls, get, rm, start, stop, set, logs, ui, agent and help; what used to be a command of its own is now an argument. The reason is not tidiness: an agent given nothing but --help counted four different verbs for "delete", which meant it had to learn that we keep four layers of storage before it could act at all. ⛔ This is a breaking change — versions, pull, drop, plugins add/install, packages, config, path, status and attach are gone, and scripts need updating. Typing dsh-box prints the whole new surface in ten lines. dsh-box path add from the 0.3.5 announcement is now dsh-box set path on.
Two more kinds of dsh can be started. Besides a release number, --version accepts a folder — one you built from source, or an application that ships its own dsh. A slash makes it a folder and a release number never has one, so the axis still has exactly one flag. An application is started with the interpreter shipped beside it, because its native parts are built for that runtime. The tree itself must always be real files on disk: one sealed inside an archive is refused immediately, with the reason, rather than failing two minutes later with a missing package. The pin check reports what it finds on somebody else's tree and does not refuse — that tree is not one we installed.
The 0.3.5 window never opened once on Windows; that is fixed. Once a program has touched the console, every process it spawns must declare all three standard handles explicitly — leave one out and the system refuses the whole call without saying which.
A failed start no longer leaves a process nobody owns. Previously, when the readiness wait timed out, the dsh was still running while the ledger held nothing: it could not be stopped, the window could not see it, and the next launch met a port held by something nobody admitted starting. It now stops what it started, and says so. The same fix taught the readiness check to authenticate: newer dsh guards its index page, and the old check could never see the finished page — reporting a healthy dsh as one that failed to start.
The data directory format is unchanged; existing sandboxes and downloaded releases keep working.