diff --git a/CHANGELOG.md b/CHANGELOG.md index f430c99..38c16c8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ 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.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [2.0.0] - 2026-08-20 +## [1.5.0] - 2026-08-20 Skills were pre-approving tools they had no business holding, three of them answered to names Claude Code had since taken, and two runtimes were being written to paths they never read. This @@ -14,6 +14,11 @@ installs the new locations. ### Upgrading +**Read this before upgrading.** The version number is a minor, but three things change under +you: three skills answer to new names, two runtimes read new paths, and Node 18 is no longer +supported. `devtronic update` handles the files; the skill names are yours to update in any +notes or scripts that call them. + | Was | Now | Why | |-----|-----|-----| | `/loop` | `/converge` | Claude Code ships a built-in `/loop`; the short form always resolved to it | diff --git a/docs/cli-reference.md b/docs/cli-reference.md index 63c807a..0e4ffdd 100644 --- a/docs/cli-reference.md +++ b/docs/cli-reference.md @@ -443,7 +443,7 @@ npx devtronic doctor --fix ◆ devtronic Doctor Health Check - ✓ Manifest is valid (v1.0.0) + ✓ Manifest is valid (v1.5.0) ✓ 42/42 manifest files exist ✓ Scripts have executable permissions ✓ Plugin registered in .claude/settings.json @@ -683,7 +683,7 @@ After installation, a manifest is created at `.ai-template/manifest.json`: ```json { - "version": "1.0.0", + "version": "1.5.0", "implantedAt": "2026-02-01", "selectedIDEs": ["claude-code", "cursor"], "projectConfig": { diff --git a/docs/existing-projects.md b/docs/existing-projects.md index 10e03bd..4b488b6 100644 --- a/docs/existing-projects.md +++ b/docs/existing-projects.md @@ -211,7 +211,7 @@ After installation, a manifest is created at `.ai-template/manifest.json`: ```json { - "version": "1.8.0", + "version": "1.5.0", "implantedAt": "2026-02-01", "selectedIDEs": ["claude-code", "cursor"], "projectConfig": { diff --git a/docs/plugins.md b/docs/plugins.md index 77158eb..8d15f56 100644 --- a/docs/plugins.md +++ b/docs/plugins.md @@ -393,7 +393,7 @@ The installation manifest at `.ai-template/manifest.json` includes: ```json { - "version": "1.2.6", + "version": "1.5.0", "installMode": "marketplace", "files": { "CLAUDE.md": { diff --git a/packages/cli/package-lock.json b/packages/cli/package-lock.json index 43d6b31..b35bdd0 100644 --- a/packages/cli/package-lock.json +++ b/packages/cli/package-lock.json @@ -1,12 +1,12 @@ { "name": "devtronic", - "version": "2.0.0", + "version": "1.5.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "devtronic", - "version": "2.0.0", + "version": "1.5.0", "license": "MIT", "dependencies": { "@clack/prompts": "^1.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index f4e23d9..966acfa 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "devtronic", - "version": "2.0.0", + "version": "1.5.0", "description": "AI-assisted development toolkit — skills, agents, quality gates, and rules for Claude Code, Cursor, Copilot, and Antigravity", "type": "module", "bin": { diff --git a/packages/cli/src/data/removals.ts b/packages/cli/src/data/removals.ts index 178b2bd..193a2fa 100644 --- a/packages/cli/src/data/removals.ts +++ b/packages/cli/src/data/removals.ts @@ -41,17 +41,17 @@ export const REMOVED_FILES: Record = { }, '.claude/skills/loop/SKILL.md': { reason: 'Renamed to /converge — /loop now belongs to a bundled Claude Code skill', - version: '2.0.0', + version: '1.5.0', alternative: 'Use /converge (or /devtronic:converge). The CLI command stays `devtronic loop`', }, '.claude/skills/recap/SKILL.md': { reason: 'Folded into /summary --quick — /recap is a built-in Claude Code command', - version: '2.0.0', + version: '1.5.0', alternative: 'Use /summary --quick. It writes the same thoughts/RECAP.md', }, '.claude/skills/design-system-sync/SKILL.md': { reason: 'Renamed to /design-tokens-sync — too close to the bundled /design-sync skill', - version: '2.0.0', + version: '1.5.0', alternative: 'Use /design-tokens-sync (also reachable via /design-system --sync)', }, '.claude/skills/scaffold.md': { diff --git a/packages/cli/src/generators/__tests__/skill-cross-references.test.ts b/packages/cli/src/generators/__tests__/skill-cross-references.test.ts index 6c3ac9e..2fec2b9 100644 --- a/packages/cli/src/generators/__tests__/skill-cross-references.test.ts +++ b/packages/cli/src/generators/__tests__/skill-cross-references.test.ts @@ -3,7 +3,7 @@ * indexes, prose points at the next step. Nothing checked those names against * the skills that actually ship. * - * The v2 renames made the cost visible. `/design-system --sync` still routed to + * The 1.5.0 renames made the cost visible. `/design-system --sync` still routed to * `/design:system-sync` — a name that never existed under that form and, after * the rename to `design-tokens-sync`, was wrong twice over. `devtronic-help` * still listed `/recap`, removed in the same release, and had never listed @@ -116,7 +116,7 @@ describe('devtronic-help lists every shipped skill', () => { // ─── Retired names stay retired ─────────────────────────────────────────────── describe('renamed skills are not invoked under their old names', () => { - /** Renamed in v2.0.0 to clear Claude Code built-ins. */ + /** Renamed in v1.5.0 to clear Claude Code built-ins. */ const RETIRED = ['loop', 'recap', 'design-system-sync']; /** Prose that documents the rename is the one legitimate mention. */ @@ -143,7 +143,7 @@ describe('renamed skills are not invoked under their old names', () => { .filter(({ line }) => pattern.test(line) && !EXPLAINS_THE_RENAME.test(line)) .map(({ n, line }) => `${path}:${n}: ${line.trim()}`) ); - expect(offenders, `/${name} was renamed in v2.0.0`).toEqual([]); + expect(offenders, `/${name} was renamed in v1.5.0`).toEqual([]); }); } });