Publish a kernel-less win32-arm64 VSIX - #524
Draft
samclark2015 wants to merge 1 commit into
Draft
Conversation
Positron's bootstrap appends ?targetPlatform=<target> to the gallery asset URL, and the gallery matches that value exactly. A target that was never published answers HTTP 403 rather than falling back to the untargeted build, so omitting win32-arm64 fails Positron's own Windows arm64 build instead of degrading to the universal VSIX. Measured against the live registry: the untargeted ggsql VSIX answers 200 with no targetPlatform and 403 for every target, while posit.air-vscode answers 200 per published target and 403 with none. No runner builds a Windows arm64 kernel yet, so publish the target carrying no kernel. It answers 200, the bootstrapExtensions entry can land, and the extension falls back to a host-installed kernel there — the behaviour every platform had before bundling. A real kernel drops into the same target later with no change on the Positron side. The build-vsix matrix now carries an explicit `kernel` flag per entry rather than testing for the universal target by name, since two targets now ship without one. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #523.
Problem
Positron's bootstrap cannot reach the universal VSIX.
getPlatformDownloads()inbuild/lib/extensions.tsunconditionally appends?targetPlatform=<platform>-<arch>to the gallery asset URL, and the gallery matches that value exactly — in both directions.Measured against the live registry (
https://p3m.dev/openvsx/latest/vscode/asset/...):posit.air-vscode0.28.0?targetPlatform=win32-arm64posit.air-vscode0.28.0?targetPlatform=alpine-x64(never published)posit.air-vscode0.28.0, notargetPlatformggsql.ggsql0.4.1 (universal only)?targetPlatform=win32-arm64ggsql.ggsql0.4.1 (universal only)?targetPlatform=win32-x64ggsql.ggsql0.4.1, notargetPlatformSo omitting
win32-arm64does not degrade to the universal build — it 403s.fetchUrl(build/lib/fetch.ts) accepts only 2xx, retries 10×, then throws, which fails Positron's own Windows arm64 build. A WoA user never sees an error, because that build never ships thebootstrapExtensionsentry.There is also no way to scope around it:
extension.platformsfilters onprocess.platform(win32/darwin/linux) only and cannot exclude an architecture, so backloggingwin32-arm64means dropping Windows bootstrap entirely.Change
Publish
win32-arm64as a target that carries no kernel. It answers 200, thebootstrapExtensionsentry can land, and on that platform the extension falls back to a host-installed kernel — the behaviour every platform had before bundling. When a Windows arm64 runner exists, the kernel drops into the same target with no change on the Positron side.The
build-vsixmatrix now carries an explicitkernelflag per entry instead of testing foruniversalby name, since two targets now ship without one.Verification
Packaged locally from this branch:
The workflow's contents check was exercised in all four combinations — kernel-less/
kernel: falsepasses, kernel-less/kernel: trueerrors, kernel-bearing/kernel: truepasses, kernel-bearing/kernel: falseerrors.Not run: the workflow itself, which only executes on a
v*tag.Out of scope
The old-glibc Linux gap is handled in the PR stacked on top of this one. The
Install ggsqlnotification added there also covers a Windows arm64 machine with no kernel installed.🤖 Generated with Claude Code