Repository navigation
fix: accept the dsh 0.2.1 prerelease line and release v0.1.10 - #6
Merged
Merged
Conversation
dsh only auto-discovers skills from .agents/ or .dsh/ project roots, so the bundled skills/ were invisible to dsh until the installer copied them to <DSH_HOME>/skills/. Move the shipped copies to .agents/skills/ (single source stays pi-extensions): - sync-skills.mjs writes .agents/skills/ (pi source paths unchanged) - install-profile.mjs copies from .agents/skills/ - md-to-html.js template candidate path updated; CI/release identity check follows the new location - package.json exports/files ship .agents/skills - update README, README.zh, AGENTS.md, src comments
dsh 0.2.0-rc.2 adds a plugin-compatibility gate that reads only the @deepseek-ai/dsh* peer ranges (engines.dsh is not consulted) and silently skips the whole bundle layer when a range does not include the running host. The previous ^0.1.0-rc.6 range therefore blocked this plugin on 0.2.x. Append ^0.2.0-rc.1 (additive only, no code change) and mirror the widened range in engines.dsh.
772124e moved the shipped skills to .agents/skills and repointed the package-root scripts/md-to-html.js at the new template path, but the copy under .agents/skills/html-doc/scripts/ was only renamed. CI (and the release workflow, which runs the same equality check) has been red on development since 2026-08-29.
dsh 0.2.1-rc.2 refused to install dsh-deeptutor@0.1.9: the published manifest only declared peerDependencies["@deepseek-ai/dsh-tools"] = "^0.1.0-rc.6", and the host compares every @deepseek-ai/dsh-* peer range (or engines.dsh, when present) against the running HOST version. - engines.dsh now decides the check alone: "^0.1.0-rc.6 || ^0.2.0-rc.1", which the host evaluates with includePrerelease and therefore accepts for the whole 0.2.x prerelease line (0.2.1-rc.2, 0.2.1-rc.3, ...). - the dsh-tools peer range also names ^0.2.1-rc.1 so pnpm/npm peer resolution under strict SemVer stays aligned with the host cohort. - devDependencies move to the cohort the plugin is now built and verified against (dsh-tools 0.2.1-rc.3, cordis 4.0.5). - tests/manifest.test.ts pins both rules and the exact 0.2.1-rc.2/rc.3 versions from the report, so a stale manifest fails npm test. - docs: state the supported host lines. Fixes #5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What and why
dsh 0.2.1-rc.2 users could not install this plugin. The macOS Desktop App rejected
dsh-deeptutor@0.1.9with:Two layers caused it, and either one was enough on its own:
0.1.9declared onlypeerDependencies["@deepseek-ai/dsh-tools"] = "^0.1.0-rc.6"and noengines.dsh.The host check (
evaluatePluginCompatibilityindsh-app-boot) comparesengines.dsh, or every@deepseek-ai/dsh-*peer range, against the running hostversion.
0.2.1-rc.2does not satisfy^0.1.0-rc.6.fc0bb67ondevelopmentwidened the range to
^0.2.0-rc.1but was never pushed or published, so npm keptserving 0.1.9.
CI had also been red since 2026-08-29:
772124emoved the shipped skills to.agents/skillsand repointed the package-rootscripts/md-to-html.js, but left thecopy under
.agents/skills/html-doc/scripts/on the old template path. The releaseworkflow runs the same equality check, so even a tag push could not have published.
Changes
engines.dshnow decides the compatibility check alone:^0.1.0-rc.6 || ^0.2.0-rc.1. The host evaluates it withincludePrerelease, so itcovers the whole
0.2.xprerelease line (0.2.1-rc.2,0.2.1-rc.3, future rc's).@deepseek-ai/dsh-toolspeer range also names^0.2.1-rc.1, because pnpm/npmpeer resolution uses strict SemVer, where a prerelease range only matches its own
major.minor.patchtuple.(
dsh-tools0.2.1-rc.3,cordis4.0.5).tests/manifest.test.tspins both rules plus the exact0.2.1-rc.2/0.2.1-rc.3versions from the report; against thev0.1.9manifest three of itsfour assertions fail, which is the regression it exists to catch.
md-to-html.jscopies are byte-identical again, which turns CI and therelease gate green.
Verification
@deepseek-ai/dsh-app-boot) on the packed manifest:0.1.0-rc.6,0.2.0-rc.2,0.2.1-rc.1/rc.2/rc.3pass;0.3.0-rc.1is still rejected.0.1.9manifest reproduces the reported errorverbatim (
{"@deepseek-ai/dsh-tools":"^0.1.0-rc.6"}unmet on0.2.1-rc.2).dsh plugin addof the packedtarball succeeds, the bundle auto-registers, and a cold boot through a 150 s probe
shows no activation failure (the plugin logs
[dsh-deeptutor] plugin loaded).npm ci,npm run typecheck,npm run build, the two-copy equality check,npm test(41 pass) and
npm pack --dry-run.Risk and rollback
Manifest, tests and docs only; no runtime code changed. To roll back, revert the three
commits and untag
v0.1.10if it was published.Related
Fixes #5