Title: Rstest extension sunset checklist · Issue #75 · rstackjs/rstack-editor · GitHub
Open Graph Title: Rstest extension sunset checklist · Issue #75 · rstackjs/rstack-editor
X Title: Rstest extension sunset checklist · Issue #75 · rstackjs/rstack-editor
Description: The standalone Rstest extension (rstack.rstest, source in web-infra-dev/rstest packages/vscode) is being retired in favor of the unified Rstack extension (rstack.rstack, this repo). rstack.rstack already covers everything the old extensi...
Open Graph Description: The standalone Rstest extension (rstack.rstest, source in web-infra-dev/rstest packages/vscode) is being retired in favor of the unified Rstack extension (rstack.rstack, this repo). rstack.rstack a...
X Description: The standalone Rstest extension (rstack.rstest, source in web-infra-dev/rstest packages/vscode) is being retired in favor of the unified Rstack extension (rstack.rstack, this repo). rstack.rstack a...
Mail addresses
vsmarketplace@microsoft.com
Opengraph URL: https://github.com/rstackjs/rstack-editor/issues/75
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Rstest extension sunset checklist","articleBody":"The standalone Rstest extension (`rstack.rstest`, source in web-infra-dev/rstest `packages/vscode`) is being retired in favor of the unified Rstack extension (`rstack.rstack`, this repo). `rstack.rstack` already covers everything the old extension does. This issue tracks the sunset. Rslint (`rstack.rslint`) will follow the same process once this one is done.\n\n## Current state\n\n- The old extension's source was removed from web-infra-dev/rstest (web-infra-dev/rstest#2013). The final published 0.12.3 release still stands down when `rstack.rstack` is installed, and its README says the extension is retired.\n- As of 2026-09-29:\n - Marketplace: `rstack.rstest` has about 700 installs; `rstack.rstack` has 156.\n - Open VSX: `rstack.rstest` has 57k downloads; `rstack.rstack` has 4.4k.\n- Cursor does not show registry deprecation flags. For Cursor users, a prompt from the old extension is the only migration signal they get.\n\n## Decisions\n\n- **No settings migration.** The old extension's README gets a mapping table from `rstest.*` to `rstack.rstest.*`. `rstest.nodeExecutable` maps to `rstack.nodeExecutable`.\n- **No changes to `rstack.rstack` for the migration.** All migration logic lives in the old extension's final release.\n- **No `extensionPack` / `extensionDependencies` link** between the two extensions.\n- **\"Don't show again\" is stored in `globalState`**, never in the user's `settings.json`.\n- **Supported core range for the final release is `@rstest/core` `^0.12.0`.**\n- **Ship the final release before requesting deprecation.** Once an extension is flagged deprecated, VS Code hides its Update action, and `disallowInstall` also stops auto-update.\n\n## Final release behavior\n\nThe final release of the old extension checks these cases in order:\n\n1. **`rstack.rstack` is installed and enabled.**\n - Stand down, as it does today.\n - Prompt: \"Rstack has taken over Rstest. Uninstall the Rstest extension.\"\n - **Uninstall Rstest** runs `workbench.extensions.uninstallExtension` on its own ID, then offers a reload.\n - **Don't show again** sets a `globalState` flag.\n - Only check whether Rstack is installed. Do not also require workspace trust or `rstack.rstest.enable`.\n2. **The local `@rstest/core` does not satisfy `^0.12.0`.**\n - Do not start the worker.\n - Show an error on every activation: \"Rstest has moved into the Rstack extension. The Rstest extension only supports @rstest/core ^0.12.0 (found X). Please install Rstack.\"\n - **Install Rstack**.\n - There is no \"Don't show again\", because the extension cannot work in this case.\n - This needs a new semver check. The current `versionCheck.ts` only verifies that the `@rstest/core/api` export and `createRstest` exist, and has no upper bound.\n3. **Only the old extension is present.** This includes the case where Rstack is installed but disabled, because `getExtension` only returns enabled extensions.\n - Run normally. The prompt is shown once, after test discovery, and only if case 2 did not fire.\n - Prompt: \"Rstest has moved into the Rstack extension. The Rstest extension is deprecated and will not be updated. Please install Rstack.\"\n - **Install Rstack** runs `workbench.extensions.installExtension('rstack.rstack', { enable: true })`.\n - **Don't show again** sets a `globalState` flag.\n\n## Checklist\n\n### Phase 0: rstack-editor\n- [x] Drop the `preview` flag from `rstack.rstack`\n\n### Phase 1: final `rstack.rstest` release (web-infra-dev/rstest)\n- [x] Implement the three cases above, with unit and E2E tests (web-infra-dev/rstest#1917)\n- [x] Add the `^0.12.0` semver guard on the local `@rstest/core` (web-infra-dev/rstest#1917)\n- [x] Rename `displayName` to `Rstest (moved to Rstack)`. The Marketplace rejected `Rstest (Deprecated)` at publish time as too similar to the existing `Vitest (DEPRECATED)`; its display-name similarity check is server-side and only runs on publish.\n- [x] Add the settings key mapping table to `packages/vscode/README.md` (web-infra-dev/rstest#1917)\n- [x] Release through the normal Release workflow to both Marketplace and Open VSX (0.12.3, web-infra-dev/rstest#1920)\n- [x] Tag the release (`v0.12.3`)\n- [x] Freeze the extension version: exclude `packages/vscode/package.json` from `bump.config.mts` and `scripts/checkVersionConsistency.mjs` (web-infra-dev/rstest#1919). The VS Code E2E in `test.yml` now runs only on full runs (push to `main`, `release:` PRs, manual full runs).\n\n### Phase 2: registries and docs (2 to 4 weeks after Phase 1, once auto-update has reached most users)\n- [x] Request Marketplace deprecation (`rstack.rstest` → `rstack.rstack`, `disallowInstall: false`) in microsoft/vscode-discussions#1. Allow about 3 weeks; they may ask to verify publisher ownership by email.\n- [x] Open a PR to EclipseFdn/publish-extensions `extension-control/extensions.json` with the same entry ([#1194](https://github.com/EclipseFdn/publish-extensions/pull/1194))\n- [x] Replace remaining `rstack.rstest` references in rstest docs, templates, and devcontainer examples with `rstack.rstack`. VS Code still recommends deprecated IDs listed in a repo's `.vscode/extensions.json`. Checked on rstest `main` (2026-10-08): the only mentions left outside `packages/vscode/` are the intentional migration notes in `website/docs/{en,zh}/guide/basic/vscode-extension.mdx`; the install links already point to `rstack.rstack`, `.vscode/extensions.json` recommends only `rstack.rslint`, and there are no devcontainer or template references.\n\n### Phase 3: stop CI and publishing in rstest\n\nUpstream coverage after this phase: rstackjs/rstack-ecosystem-ci#99 runs this repo's `test:unit` + `lint` (type-checked against the freshly built `@rstest/core`) on every rstest `main` push, and Renovate's `rstack toolchain` group opens a PR that runs the three-platform E2E on every release. Running this repo's VS Code E2E in ecosystem-ci was prototyped in #66 and dropped (see #40).\n\n- [x] Remove the `release_vscode_extension` job from `.github/workflows/release.yml` (web-infra-dev/rstest#1969)\n- [x] Remove the \"VS Code Extension Test\" step from `.github/workflows/test.yml` (web-infra-dev/rstest#1969)\n- [x] Revoke `VSCE_PAT` / `OVSX_PAT` and the `vscode-marketplace` environment. First confirm the token is not shared with this repo's release.\n\n### Phase 4: remove the source (once installs have dropped off)\n- [x] `git rm -r packages/vscode`, then clean up the remaining references (web-infra-dev/rstest#2013):\n - root `package.json` (`test:vscode` and the stale `check-dependency-version` ignore for the `rstest` package name)\n - `bump.config.mts` and `scripts/checkVersionConsistency.mjs` exclusions\n - `knip.jsonc`\n - `.github/renovate.json5`\n - `pnpm-workspace.yaml` (`@vscode/vsce-sign`; `hoistPattern` replaced with `hoist: false`, because restoring pnpm's default hoisting lets the bin-shim `NODE_PATH` expose every workspace package to install checks)\n - `.gitignore`\n - `.vscode/launch.json` and `.vscode/tasks.json`\n - `AGENTS.md`\n - `.agents/skills/create-release-blog/SKILL.md`\n- [ ] Update both deprecation entries to `disallowInstall: true`. On Open VSX, change an entry's values rather than deleting it: deleting the entry does not undo a deprecation.\n- [ ] Repeat Phases 1 to 4 for `rstack.rslint` (web-infra-dev/rslint `packages/vscode-extension`), tracked in #86. As of 2026-11-04: the final release (0.10.0) is out, both deprecation requests are filed, and web-infra-dev/rslint#2488 removed the source and publish jobs. Waiting on the registries and on `disallowInstall: true`.\n\n## References\n\n- Deprecating extensions (VS Code publishing docs): https://code.visualstudio.com/api/working-with-extensions/publishing-extension#deprecating-extensions\n- Marketplace deprecation requests: https://github.com/microsoft/vscode-discussions/discussions/1\n- Open VSX extension control: https://github.com/EclipseFdn/open-vsx.org/wiki/Managing-Extensions\n\n\n\n\n\n","author":{"url":"https://github.com/fi3ework","@type":"Person","name":"fi3ework"},"datePublished":"2026-09-29T07:15:12Z","url":"https://github.com/rstackjs/rstack-editor/issues/75"}
| react-profiling | 0 |
| react-import-map | react,react-dom,react-dom/client,react-dom/profiling,react-is,react-reconciler,react/compiler-runtime,react/jsx-dev-runtime,react/jsx-runtime,scheduler@d5750093facf |
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:e9714fbf-cec6-a4bb-9d67-32aef75467e7 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | EC04:ED758:A421C1:DC56D6:6AEC4135 |
| html-safe-nonce | 81eb2b9c359a9f74c0fd4124b5b1e3693a7be7b467a43f137185e08b22a0ee01 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJFQzA0OkVENzU4OkE0MjFDMTpEQzU2RDY6NkFFQzQxMzUiLCJ2aXNpdG9yX2lkIjoiNjg5NjA0NjQ4MzQ4ODY1MzYyMSIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 7b21cf1d4742645223677926b8b9ec3868e7ae933e9d2826980dba338573a285 |
| hovercard-subject-tag | issue:5626703903 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/rstackjs/rstack-editor/75/issue_layout |
| twitter:image | https://opengraph.githubassets.com/6d08f7f01659cb328c8ba11ab05c756d5a21d3baa002d69c26eb3fdca1eeedd0/rstackjs/rstack-editor/issues/75 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/6d08f7f01659cb328c8ba11ab05c756d5a21d3baa002d69c26eb3fdca1eeedd0/rstackjs/rstack-editor/issues/75 |
| og:image:alt | The standalone Rstest extension (rstack.rstest, source in web-infra-dev/rstest packages/vscode) is being retired in favor of the unified Rstack extension (rstack.rstack, this repo). rstack.rstack a... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | fi3ework |
| hostname | github.com |
| expected-hostname | github.com |
| None | 1dcf8db8e9101b96aecb2bc4e1fd095c110db63a7a140d8a7a9de997e07663e3 |
| turbo-cache-control | no-preview |
| go-import | github.com/rstackjs/rstack-editor git https://github.com/rstackjs/rstack-editor.git |
| octolytics-dimension-user_id | 129049372 |
| octolytics-dimension-user_login | rstackjs |
| octolytics-dimension-repository_id | 1316963958 |
| octolytics-dimension-repository_nwo | rstackjs/rstack-editor |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 1316963958 |
| octolytics-dimension-repository_network_root_nwo | rstackjs/rstack-editor |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | c248a9ae2572141cd7b35bf30a770cdc842dbc35 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
| react-app-name | issues |
Links:
Viewport: width=device-width