Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
22 changes: 21 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 <https://vscode-ext-kit.kkdev92.dev/>.**
Expand Down Expand Up @@ -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
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
2 changes: 1 addition & 1 deletion docs/migration-from-2x.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down
2 changes: 1 addition & 1 deletion fixtures/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
2 changes: 1 addition & 1 deletion fixtures/extension-host/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"version": "0.0.0",
"private": true,
"engines": {
"vscode": "^1.134.0"
"vscode": "^1.136.0"
},
"main": "./out/extension.js",
"activationEvents": [],
Expand Down
2 changes: 1 addition & 1 deletion fixtures/web-extension/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"version": "0.0.0",
"private": true,
"engines": {
"vscode": "^1.134.0"
"vscode": "^1.136.0"
},
"browser": "./out/extension.js",
"activationEvents": [],
Expand Down
14 changes: 7 additions & 7 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down Expand Up @@ -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",
Expand Down
6 changes: 3 additions & 3 deletions tests/readme-versions.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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] ?? '' }))
Expand Down