diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 5ae617c..250269f 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -9,7 +9,7 @@ assignees: '' ## Environment - **Package Version**: (e.g., 0.2.0) -- **VS Code Version**: (e.g., 1.134.0) +- **VS Code Version**: (e.g., 1.136.0) - **Node.js Version**: (e.g., 20.0.0) - **OS**: (e.g., Windows 11, macOS 14, Ubuntu 24.04) diff --git a/CHANGELOG.md b/CHANGELOG.md index 55f753b..3c6e63c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,25 @@ Pre-1.0 releases followed it in spirit; their breaking changes are marked **Brea ## [Unreleased] +## [5.0.0] - 2026-09-07 + +**A major for one reason: the VS Code floor.** `engines.vscode` moves from +`^1.134.0` to `^1.136.0`, which every extension built on this package inherits — +that is the whole of the breaking change. The API is byte-for-byte what `4.1.1` +exposed: no export was added, removed or altered, and no behaviour changed. + +### Changed + +- **Breaking:** `engines.vscode` raised from `^1.134.0` to `^1.136.0`, in step + with `@types/vscode` moving to `~1.136.0`. The two have to move together — + `vsce` refuses to package an extension whose `@types/vscode` outruns its + `engines.vscode`, and raising only the types would let code compile against an + API the declared floor does not have. Extensions built on this package inherit + the floor and must declare at least `^1.136.0` themselves. + + The contract lanes were run against the real hosts at this floor: the + Extension Host and web fixtures both report VS Code `1.136.1`. + ### Added - **The documentation is published at .** @@ -1201,7 +1220,8 @@ platform support, toolchain currency, and release supply chain. Initial public release. -[Unreleased]: https://github.com/kkdev92/vscode-ext-kit/compare/v4.1.1...HEAD +[Unreleased]: https://github.com/kkdev92/vscode-ext-kit/compare/v5.0.0...HEAD +[5.0.0]: https://github.com/kkdev92/vscode-ext-kit/compare/v4.1.1...v5.0.0 [4.1.1]: https://github.com/kkdev92/vscode-ext-kit/compare/v4.1.0...v4.1.1 [4.1.0]: https://github.com/kkdev92/vscode-ext-kit/compare/v4.0.1...v4.1.0 [4.0.1]: https://github.com/kkdev92/vscode-ext-kit/compare/v4.0.0...v4.0.1 diff --git a/README.md b/README.md index 7aa00b4..cb33382 100644 --- a/README.md +++ b/README.md @@ -398,15 +398,15 @@ Host, the manifest check and an Extension Host lane. | | | | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------- | -| VS Code | `^1.134.0` — your extension declares the same `engines.vscode`; CI tests stable | +| VS Code | `^1.136.0` — your extension declares the same `engines.vscode`; CI tests stable | | Extension hosts | desktop and web, both covered by CI | | Node (to build) | `>=22.12.0` | | Module format | **ESM only** — `require()` of any subpath fails by design; bundle as extensions normally do | | TypeScript `lib` | `ESNext.Disposable` (the public types name `Symbol.dispose`) and one of `DOM` / `WebWorker` / `@types/node` (they name `AbortSignal`) | | TypeScript | 6.0.x is what this repo builds with; 7.x compiles the package in a non-blocking CI lane | -The floor is `1.134.0` because that is the newest `@types/vscode` there is, so it -is the newest API this package can name at all. The two move together: `vsce` +The floor tracks `@types/vscode`, which is the newest API this package can name +at all, so the two move together as new types are published: `vsce` refuses to package an extension whose `@types/vscode` outruns its `engines.vscode`, and raising only the types would let code compile against an API the declared floor does not have. VS Code updates itself and CI tests stable, diff --git a/docs/migration-from-2x.md b/docs/migration-from-2x.md index f7fd323..ba3210b 100644 --- a/docs/migration-from-2x.md +++ b/docs/migration-from-2x.md @@ -11,7 +11,7 @@ not repeated here. Migrate straight to 4.x. The API is the one 3.0.0 exposed; 4.0.0 raised the VS Code floor and changed nothing else. Before you start, your extension needs what the [platform requirements](https://github.com/kkdev92/vscode-ext-kit#platform-requirements) list: -`engines.vscode` of `^1.134.0` or later, ESM, and `ESNext.Disposable` plus an +`engines.vscode` of `^1.136.0` or later, ESM, and `ESNext.Disposable` plus an `AbortSignal` lib in `tsconfig`. Typed storage keeps the 2.x envelope, so there is no data migration; values a 2.x build wrote are read as they are. diff --git a/fixtures/README.md b/fixtures/README.md index 99ec043..2ac9fa5 100644 --- a/fixtures/README.md +++ b/fixtures/README.md @@ -30,7 +30,7 @@ framework hands it, rather than on what it hands back, it belongs here. ```bash npm run test:eh # from the repository root -VSCODE_VERSION=1.134.0 npm run test:eh +VSCODE_VERSION=1.136.0 npm run test:eh ``` Launches a real VS Code (Electron), activates the fixture, invokes a command, diff --git a/fixtures/extension-host/package.json b/fixtures/extension-host/package.json index 6e435ac..ea9cfa8 100644 --- a/fixtures/extension-host/package.json +++ b/fixtures/extension-host/package.json @@ -6,7 +6,7 @@ "version": "0.0.0", "private": true, "engines": { - "vscode": "^1.134.0" + "vscode": "^1.136.0" }, "main": "./out/extension.js", "activationEvents": [], diff --git a/fixtures/web-extension/package.json b/fixtures/web-extension/package.json index f4c3486..88f19e6 100644 --- a/fixtures/web-extension/package.json +++ b/fixtures/web-extension/package.json @@ -6,7 +6,7 @@ "version": "0.0.0", "private": true, "engines": { - "vscode": "^1.134.0" + "vscode": "^1.136.0" }, "browser": "./out/extension.js", "activationEvents": [], diff --git a/package-lock.json b/package-lock.json index 0c253dd..69da959 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@kkdev92/vscode-ext-kit", - "version": "4.1.1", + "version": "5.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@kkdev92/vscode-ext-kit", - "version": "4.1.1", + "version": "5.0.0", "license": "MIT", "bin": { "vscode-ext-kit": "bin/vscode-ext-kit.mjs" @@ -14,7 +14,7 @@ "devDependencies": { "@eslint/js": "^10.0.1", "@types/node": "^26.1.1", - "@types/vscode": "~1.134.0", + "@types/vscode": "~1.136.0", "@vitest/coverage-v8": "^4.1.10", "@vscode/test-electron": "^3.1.0", "@vscode/test-web": "^0.0.81", @@ -33,7 +33,7 @@ }, "engines": { "node": ">=22.12.0", - "vscode": "^1.134.0" + "vscode": "^1.136.0" }, "peerDependencies": { "vitest": ">=4" @@ -1955,9 +1955,9 @@ "license": "MIT" }, "node_modules/@types/vscode": { - "version": "1.134.0", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.134.0.tgz", - "integrity": "sha512-NDEu0hg4sF7+vvFsADsktqUJ6f80LHSZvVK2Ovo1XiQ0/VHck1O3zst+ZZyVA/uvz6vo6LcuoqU2q48YMqOwWw==", + "version": "1.136.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.136.0.tgz", + "integrity": "sha512-DO746VAfnHk8+Y8CsUKYMm2rjWD0mxEuYBZI+ssaqJY7yvLJPf9lcwxSSz9W60gbdvdcGyvHQxHTyByfF9mVqg==", "dev": true, "license": "MIT" }, diff --git a/package.json b/package.json index 276c29d..b8f693b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@kkdev92/vscode-ext-kit", - "version": "4.1.1", + "version": "5.0.0", "description": "A type-safe application framework for VS Code extension development", "author": { "name": "kkdev92", @@ -78,13 +78,13 @@ } }, "engines": { - "vscode": "^1.134.0", + "vscode": "^1.136.0", "node": ">=22.12.0" }, "devDependencies": { "@eslint/js": "^10.0.1", "@types/node": "^26.1.1", - "@types/vscode": "~1.134.0", + "@types/vscode": "~1.136.0", "@vitest/coverage-v8": "^4.1.10", "@vscode/test-electron": "^3.1.0", "@vscode/test-web": "^0.0.81", diff --git a/tests/readme-versions.test.ts b/tests/readme-versions.test.ts index b1bcddb..716e62c 100644 --- a/tests/readme-versions.test.ts +++ b/tests/readme-versions.test.ts @@ -38,9 +38,9 @@ describe('documented versions', () => { }); it('names no VS Code version other than the declared floor', () => { - // `1.134.0` on its own is the same floor written without a range, which the - // paragraph under the requirements table does deliberately. Anything else - // is a version that moved without the prose moving with it. + // The floor written without a range is the same floor, which the paragraph + // under the requirements table does deliberately. Anything else is a version + // that moved without the prose moving with it. const floor = manifest.engines.vscode.replace(/^[^\d]*/, ''); const found = pages.flatMap(({ page, text }) => [...text.matchAll(/`\^?(1\.\d{2,3}\.\d+)`/g)].map((m) => ({ page, version: m[1] ?? '' }))