Releases
v0.8.0
Compare
Sorry, something went wrong.
No results found
升级须知
gc --yes 现在也删除 envctl/backups 中早于 --older-than(默认 7 天)的快照,始终保留最近 10 个;rollback 只能回到还在的快照。需要更早的快照时,先用 --older-than 调大期限,或在 gc 前备份 envctl/backups。
--harness-source 指向不存在的目录时以退出码 3 报错,不再改用清单的 sourceDir 或 PATH 上的 dsh;相对路径按当前目录解析。
source clone --profile --ref <ref> 把该 ref 写进清单(替换原来声明的 commit/ref);不带 --ref 时克隆并锁定清单已声明的 commit 或 ref,不再总是锁定默认分支的 HEAD。别名已指向另一个包时拒绝(退出码 3),默认别名去掉 dsh-plugin-、dsh- 前缀。
包名(含作用域)不能以 - 开头。
没有清单时 status 以退出码 3 结束(此前为 5);tools list --all --preset 以退出码 3 拒绝。
修复
install <git 地址>#<分支或 tag> 把 # 后的内容记为 ref,不再因「不是 commit」报 schema 错误;README 的 Git 示例改用会锁定 commit 的 source clone --profile。
包名(含作用域)不能以 - 开头,避免被 pnpm 当成选项。
source show/sync/clone 调用 git 时不再继承 GIT_DIR、GIT_WORK_TREE 等变量;此前从 git hook 或 CI 步骤里运行时会检查、快进或锁定另一个仓库。
remote sync 发现本地克隆的 origin 与 remote.json 的 URL 不一致(如 rollback 跨过了一次 remote add)时重新克隆;此前会从旧仓库取内容。
团队仓库中直接放在 skills/ 下的文件(如 README.md、.DS_Store)被忽略,不再让整个提交被拒;使用教程的团队仓库布局补上 skills/ 与 __jsExpr 限制。
有生效 overlay 时,--layer base 的 enable、disable、remove 等能改 overlay 用 remove: true 去掉的 base 插件;此前按合并后的清单找别名,报「not found」。
没有清单时 status 以退出码 3 结束(与 plan 一致),不再报告为 degraded(退出码 5)。
tools list --all 与 --preset 同时使用时报错(退出码 3),不再静默忽略 --preset。
对已经全部纳管的候选执行 adopt --yes 时输出「Nothing to adopt」,不再报告「Adopted N plugin(s)」并列出它们。
写 overlay 的命令(plugins config set、tools config set、install 等加 --layer overlay)拒绝含 ${...} 的值(退出码 3),与写 base 一致;此前会写进 overlay,之后所有读取它的命令都以退出码 3 失败,只能手改文件。
有生效 overlay 时,update --layer base 与 plugins config set --layer base 能改 overlay 用 remove: true 去掉的 base 插件,update --layer base 按 base 中的来源判断是否为 npm;此前前者崩溃(退出码 1),后者按 overlay 覆盖后的来源拒绝。
overlay 里只调整某个 base 插件(没有 package)、而 base 已不再声明它时,install/source clone --profile 加 --layer overlay 写入完整的 package;此前输出「Added」,插件却不在生效清单中。
source clone --profile 克隆并锁定清单为该别名声明的 commit 或 ref(同一仓库时),清单里保留它;给了 --ref 时写入该 ref。此前总是锁定默认分支的 HEAD 并删掉清单里的 commit/ref,照 plan 的提示操作会悄悄换掉固定的代码。
source clone --profile 的别名已指向另一个包时拒绝(退出码 3,base 与 overlay 都是),与 install 一致;此前写 base 时整条替换、丢掉原包的 patches 与启用状态,写 overlay 时让清单与 lock 的包名不一致。
source clone 的默认别名与 install 相同(去掉 dsh-plugin-、dsh- 前缀);此前 install 之后按 README 再 source clone 会因重复包报错。
base 已声明、但本机 DSH 从本地路径(link:、file:)安装的插件,adopt --yes 保留 base 中的条目,把本机路径写进 overlay(没有生效 overlay 时新建并选中 local);此前会把本机路径写进共享的 base,推到团队仓库时被拒。
对 base 已按安装方式声明的本地来源插件再次 adopt --yes,保留 lock.json 中 apply 记录的摘要并输出「Nothing to adopt」;此前会抹掉摘要,之后 plan 对每个这类插件都提示更新。
pull 与 adopt 给新插件选别名时避开当前 overlay 新增的别名;此前与 overlay 别名相同时,前者整体失败、后者被拒绝(「an overlay cannot change package」)。
团队 skill 里同一路径在文件与目录之间互换时,remote sync 能正常预览与接受(先删除再写入);此前预览报 EEXIST(退出码 1),或误报该路径「not owned by the remote」(退出码 3),之后每次 sync 都失败。目录里仍有本机文件时照旧拒绝。
快照另存当时所有 overlay 文件;rollback 跨过一次 remote add --replace 时,把被团队接管的本机 overlay 恢复为原内容;此前会删除它。
apply 删除插件后,purge <包名> 能清理它留在 envctl/sources 下的 clone(清单不再声明该包时);此前因所有权记录已去掉而拒绝,与 remove 帮助所说的流程不符。
--harness-source 指向不存在的目录时以退出码 3 报错;此前静默改用清单的 sourceDir 或 PATH 上的 dsh,doctor、apply、web start 跑的是另一个 DSH。
--harness-source 的相对路径按当前目录解析;此前被解析两次(hs/hs),相对路径总是失败。
容器示例的 .dockerignore 排除 envctl/run/(web start 的记录,含带 token 的 dsh web 登录地址)、remote.json、remote/ 与锁的 .wanted/.reclaim 文件;此前用过 web start 的配置仓库构建镜像时,token 会进入镜像层。
帮助的环境变量部分补上 DSHENV_NPM_CHECK;README 与使用教程中需要 --layer 的命令补上 plugins config unset 与 tools reset;README 说明没有快照时的 rollback 与没有订阅时的 remote remove 以退出码 3 结束。
变更
gc 同时删除 envctl/backups 中早于 --older-than 的快照(始终保留最近 10 个),以及被中断的操作留下、超过同一期限的 .…partial 临时目录;此前快照只增不减,每次有变更的 apply 都会复制一份 envctl/skills。
You can’t perform that action at this time.