reqlanOverviewIdeasFilesCode filesClustersAttributesGraphPrint

Printable idea sheet

vsix_export

reqlan rq/distribution/distribution.rq:280

Katz 0.446

One VSIX is built per native_targets tuple via `vsce package --target <tuple> --no-dependencies`.
Each VSIX keeps today's esbuild-bundled JS ( TS dependency graph stays bundled ); only the matching platform native package is staged into the VSIX so other targets' binaries are excluded.
The same VSIX packs `bin/reqlan-lsp` for that target ( language_server_rust ). Azure `collect-napi-binary.mjs --with-lsp` copies that binary into the native artifact. The pack script checks that zip entry by `file_size`. It does not read the binary through a pipe. The napi addon stays for the index host. npm platform packages do not contain it ( rust_binary_distribution ).
Stamp `targetPlatform` so Marketplace / Open VSX route by extension host ( extension_host_target, native_host_binary_distributed ).
Artifact name shape: `reqlan-extension-<version>-<target>.vsix`.
The VSIX includes logo assets from the extension media build: PNG for marketplace icon, language file icon, activity bar, and README; WebP as a raster fallback.
Implementation: package-extension-targets.mjs, prepare-native-packages.mjs, collect-napi-binary.mjs, .vscodeignore ( `native/`, `bin/` ), azure-pipelines.yml.

plan
goal
Ship six host-targeted VSIXes, each containing only the core engine `.node` for that extension-host platform.

constraints
- Keep --no-dependencies for the bundled TS graph; stage only the matching native package.
- Git at the `ext/v*` tag is canonical (vsix_native_not_from_npm). Azure compiles the native_targets matrix from that commit and packs those binaries.
- npm platform packages remain a CLI/MCP install path on `analytical/v*` (npm_distribution / rust_binary_distribution). They are not an input to Azure.
- `vscode:prepublish` must not restage the host native addon (`--skip-native`); each VSIX `native/target.json` must equal that VSIX `--target`.

steps
1. Stage matching `@reqlan/analytical-<platform>-<arch>` into extension `native/` before vsce. (done)
2. Package with `vsce package --target <tuple> --no-dependencies` for each vsix_export entry; skip native restage in vscode:prepublish; verify packed `native/target.json`. (done)
3. Compile the native_targets matrix in Azure and prepare packages from git versions + those artifacts. (done)
4. Publish each target to Marketplace and Open VSX (extension_distribution, openvsx_registry).
status
in-progress
todo
first ext/v* release with six target VSIXes not yet shipped

Interactive page: vsix_export