diff --git a/CHANGELOG.md b/CHANGELOG.md index fcc6e2c..336f873 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] + +### Fixed + +- The canonical `@deepseek-ai/dsh-*` peer range now admits the `0.1.6-alpha.2` tuple (`|| >=0.1.6-0 <0.2.0`). The `peer-range` tripwire has been failing on `master` since that tuple was published, because semver's prerelease rule gives every new tuple its own clause; the three peers this package declares are re-pinned in the same commit, the lockfile's specifiers follow, and the `sync-peer-range` fixture's "higher-floor" example was raised above the new floor. ## [0.1.9] - 2026-09-12 ### Added diff --git a/data/peer-range.json b/data/peer-range.json index ffd4ea9..c3923c0 100644 --- a/data/peer-range.json +++ b/data/peer-range.json @@ -1,5 +1,5 @@ { - "canonicalRange": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0", - "updatedAt": "2026-09-10", + "canonicalRange": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0", + "updatedAt": "2026-09-19", "note": "Canonical peerDependencies range for @deepseek-ai/dsh-* across the ecosystem. The OR form is required by semver's prerelease rule: a prerelease version only satisfies a comparator set when a comparator in the same [major, minor, patch] tuple carries a prerelease, so 0.1.5-rc.1 is NOT admitted by the bare '>=0.1.2-rc.1 <0.2.0'. Every new upstream prerelease tuple needs its own clause - run `node scripts/check-peer-range-latest.mjs` to detect a missing one (it reads the published dist-tags and prints the clause to append). Run `node scripts/sync-peer-range.mjs --dir --write` after updating this file to re-pin every repo, then let the shared Renovate preset open the update PRs." } diff --git a/package.json b/package.json index d328b59..4a843cb 100644 --- a/package.json +++ b/package.json @@ -84,9 +84,9 @@ "packageManager": "pnpm@11.7.0", "peerDependencies": { "@deepseek-ai/cordis": "^4.0.2", - "@deepseek-ai/dsh-session": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0", - "@deepseek-ai/dsh-tools": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0", - "@deepseek-ai/dsh-user-approval": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0", + "@deepseek-ai/dsh-session": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0", + "@deepseek-ai/dsh-tools": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0", + "@deepseek-ai/dsh-user-approval": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0", "@deepseek-ai/schemastery": "^3.18.2" }, "peerDependenciesMeta": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a400770..0b93899 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,13 +12,13 @@ importers: specifier: ^4.0.2 version: 4.0.2 '@deepseek-ai/dsh-session': - specifier: '>=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0' + specifier: '>=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0' version: 0.1.2-rc.1(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-scope@0.1.0-rc.8(@deepseek-ai/cordis@4.0.2)(@deepseek-ai/dsh-invariants@0.1.0-rc.8(@deepseek-ai/cordis@4.0.2))) '@deepseek-ai/dsh-tools': - specifier: '>=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0' + specifier: '>=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0' version: 0.1.2-rc.1(45afca29d657cd93350ff31b45a89bd7) '@deepseek-ai/dsh-user-approval': - specifier: '>=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0' + specifier: '>=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0' version: 0.1.2-rc.1(9dc9fb75cbaa540955081fa631e1628d) '@deepseek-ai/schemastery': specifier: ^3.18.2 diff --git a/scripts/sync-peer-range.mjs b/scripts/sync-peer-range.mjs index 7af82ef..208557c 100644 --- a/scripts/sync-peer-range.mjs +++ b/scripts/sync-peer-range.mjs @@ -61,7 +61,7 @@ const CLAUSE_RE = /^>=(\S+)\s+<(\S+)$/ * * Both shapes occur in this ecosystem: * - single clause: `>=0.1.2-rc.1 <0.2.0` - * - OR form: `>=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0` + * - OR form: `>=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0` * * The OR form exists because of semver's prerelease rule: a prerelease version * only satisfies a comparator set when a comparator in the *same* diff --git a/test/sync-peer-range.test.mjs b/test/sync-peer-range.test.mjs index 426c128..fd176a7 100644 --- a/test/sync-peer-range.test.mjs +++ b/test/sync-peer-range.test.mjs @@ -144,7 +144,8 @@ describe('CLI end-to-end', () => { await readFile(resolve(import.meta.dirname, '..', 'data', 'peer-range.json'), 'utf8'), ).canonicalRange // above every canonical floor: a real per-package requirement, left alone - const highFloor = '>=0.1.5-rc.1 <0.2.0' + // (raised together with canonicalRange's newest tuple, 2026-09-19) + const highFloor = '>=0.1.6-rc.1 <0.2.0' const repoDir = join(dir, 'cli-repo') await mkdir(repoDir, { recursive: true }) const pkg = join(repoDir, 'package.json')