From 0592c69f29a5412b56927ce1e5a49678619b909e Mon Sep 17 00:00:00 2001 From: Ajay Ghanwat Date: Mon, 13 Jul 2026 19:52:28 +0530 Subject: [PATCH] feat: prepare VS Code extension for marketplace --- editors/vscode/.vscodeignore | 2 ++ editors/vscode/CHANGELOG.md | 7 ++++ editors/vscode/PUBLISHING.md | 38 ++++++++++++++++++++++ editors/vscode/README.md | 51 ++++++++++++++++++++++++------ editors/vscode/SUPPORT.md | 2 +- editors/vscode/icons/wrn.png | Bin 0 -> 5157 bytes editors/vscode/package-lock.json | 6 ++-- editors/vscode/package.json | 27 ++++++++++------ editors/vscode/test/validate.mjs | 25 +++++++++++++-- editors/vscode/wrnexus-0.2.1.vsix | Bin 0 -> 32162 bytes 10 files changed, 133 insertions(+), 25 deletions(-) create mode 100644 editors/vscode/PUBLISHING.md create mode 100644 editors/vscode/icons/wrn.png create mode 100644 editors/vscode/wrnexus-0.2.1.vsix diff --git a/editors/vscode/.vscodeignore b/editors/vscode/.vscodeignore index 441df3f7..dbfc5b14 100644 --- a/editors/vscode/.vscodeignore +++ b/editors/vscode/.vscodeignore @@ -1,5 +1,7 @@ .vscode/** test/** +PUBLISHING.md +icons/*.svg *.vsix **/*.ts **/*.map diff --git a/editors/vscode/CHANGELOG.md b/editors/vscode/CHANGELOG.md index ac623fbf..bef10d3f 100644 --- a/editors/vscode/CHANGELOG.md +++ b/editors/vscode/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## 0.2.1 + +- Prepared the extension manifest, branding, documentation, and PNG icon for the + Visual Studio Marketplace. +- Added repeatable build, validation, packaging, and publishing instructions. +- Documented formatter setup and the extension's no-telemetry policy. + ## 0.2.0 - Added native Format Document and format-on-save support for `.wrn` files. diff --git a/editors/vscode/PUBLISHING.md b/editors/vscode/PUBLISHING.md new file mode 100644 index 00000000..a04de2a5 --- /dev/null +++ b/editors/vscode/PUBLISHING.md @@ -0,0 +1,38 @@ +# Publishing the WRNexus VS Code extension + +The Marketplace extension identifier is `wrnexus.wrnexus`. The `wrnexus` +publisher must exist in the Visual Studio Marketplace and the publishing +identity must have permission to manage it. + +## Build and inspect the VSIX + +From `editors/vscode`: + +```powershell +bun install +bun run check +bun run package +``` + +Install the resulting `wrnexus-.vsix` in a clean VS Code profile and +verify highlighting, Format Document, completion, snippets, and diagnostics on +a `.wrn` file. + +## Publish + +Choose one of these supported routes: + +1. Upload the verified VSIX through the Visual Studio Marketplace publisher + management page. +2. Authenticate `vsce` for the `wrnexus` publisher and run: + + ```powershell + bun run publish + ``` + +Never commit an Azure token or place it in a command-line argument. For local +token-based publishing, provide it through the `VSCE_PAT` environment variable. +For automated publishing, prefer a protected CI secret or Microsoft Entra ID. + +Before each release, increment `version` in `package.json`, update +`CHANGELOG.md`, run the checks, and inspect the VSIX contents printed by `vsce`. diff --git a/editors/vscode/README.md b/editors/vscode/README.md index 031f6357..4bd94aa6 100644 --- a/editors/vscode/README.md +++ b/editors/vscode/README.md @@ -1,8 +1,20 @@ -# WrNexus for VS Code +# WRNexus Language Support -Language support for [WrNexus](https://github.com/) `.wrn` files — the SSR-first, +Language support for [WRNexus](https://wrnexusjs.dev) `.wrn` files — the SSR-first, Bun-powered full-stack framework. +## Installation + +After the first Marketplace release, search for **WRNexus Language Support** in +VS Code or run: + +```text +ext install wrnexus.wrnexus +``` + +For a local package, open the Command Palette, choose **Extensions: Install from +VSIX**, and select the generated `wrnexus-.vsix` file. + ## Features - **Syntax highlighting** ("color-full code"). Keywords (`page`, `component`, @@ -36,19 +48,38 @@ Bun-powered full-stack framework. | `wrnexus.diagnostics.enable` | `true` | Show parse errors for `.wrn` files. | | `wrnexus.format.enable` | `true` | Enable the built-in formatter for `.wrn`. | -## Building the diagnostics engine +To format automatically when saving, add this to VS Code settings: -Diagnostics use a bundled copy of the compiler. Regenerate it after changing -`@wrnexus/compiler`: - -```bash -bun run build:compiler # writes src/compiler.cjs +```json +"[wrn]": { + "editor.defaultFormatter": "wrnexus.wrnexus", + "editor.formatOnSave": true +} ``` -The extension still highlights, snippets and completes without the bundle; only -inline error reporting requires it. +## Privacy + +The extension does not collect telemetry and does not send source code or usage +data over the network. Formatting, completion, and diagnostics run locally. ## Development +Diagnostics use a bundled copy of the compiler. Build and validate everything +after changing the extension or `@wrnexus/compiler`: + +```bash +bun install +bun run check +bun run package +``` + +`bun run package` creates `wrnexus-.vsix`. The extension still +highlights, provides snippets, and completes without the compiler bundle; only +inline error reporting requires it. + Open this folder in VS Code and press F5 to launch an Extension Development Host, then open any `.wrn` file. + +See the +[Marketplace publishing guide](https://git.workroot.in/WorkRoot/WRNexusJS/src/branch/main/editors/vscode/PUBLISHING.md) +for the release procedure. diff --git a/editors/vscode/SUPPORT.md b/editors/vscode/SUPPORT.md index c4adfc01..8ede5515 100644 --- a/editors/vscode/SUPPORT.md +++ b/editors/vscode/SUPPORT.md @@ -2,6 +2,6 @@ For bugs, feature requests, and publishing issues, open an issue in the WrNexus repository: -https://github.com/wrnexus/wrnexus/issues +https://git.workroot.in/WorkRoot/WRNexusJS/issues Please include your VS Code version, extension version, operating system, and a small `.wrn` sample when reporting language support problems. diff --git a/editors/vscode/icons/wrn.png b/editors/vscode/icons/wrn.png new file mode 100644 index 0000000000000000000000000000000000000000..a0bbfaee580afee67311e4f0c3df541e32573c40 GIT binary patch literal 5157 zcmbtYcT|(vwm&IU3pj${AOaT9C|yO3LIi2jA|#*`L69a=6p&^}7*QOQB2uM_Ad(0; zR3SoOkTOa~5C{;Ofk-zLNg#Ov=iR&RTX(&(-XGukzVDoU&i?JQ%R0aPJK9u#hw!h$ z0Dv8a1{ci%fbc#cK#-sJvc2=#h4&KjF}Ugrz_#6+4+K0qc%_MsWEr%ub^Vx1&k0$In{n7I8x5-B;y`0#$i zU0k5YJW#2#yUoIYI7W$$UpeCGl*o89*7RjX0E6q2q%VgqS zk@4N#w0suk@+YOG7WIvxlsTHQf}vrBb%7E&*v*SL#ln1B*6tLsFl-mf$0r~L6vV2Z zB5+5r@sNeii0F*RrA0wr&wWdS3coGW2TxAEJ(E<)wqR8JzT4G5FK$n6s z7VaoCR*`M4OPfvfD~q@A7~CijOO3}}GT3mJTUIvLolh9ifi|BDG&2a+Gr&D#zzlCt z^Rq1}#zzJ+E(Md}GW@7Uy)No26;23l;Htx9O zGmNW^ik^Y>!FZ11DuiD!49(Ke?ux1txL{?5GbJujZp)wvvWBeHIcr?#F9W^ZzP*8R zjB8IOVCc*G=7u)irJ;Ji{Mmb$T__g0Gk&BNf_aEuVk_kq8GIxwO8WZk%#8MtIZlW? z>sa{a*^OR-XKJ2#pYr1o)g^ENL0Kqkt=l=%^rKpbLi}($9u3Ci#H1x{rrDAnlV;Ai z7qKka)jIGfF6ZIvWxJ1EYh-6!5OE1PBLI=T$wFI`iWUaeTJevLY68ULdiR2PYprzq zUae@_I>4y0xEEt;KDbY6w4d6RPn)1!1qKn%mMCrf{H>TwG|PV_9ZtA)$VIQMPHePR zz}&F?&ip=rmRd3;HE3&hxp2~1n&1F6k2mwd> z1Rhn9U5%$s1M^&&kzpZ_1zn=~uTUwLnK4FqAUrg>^A*3u6IJhnM=y*+P~uL#$0U2E z8(O9#E2VaT8&R>PRYM&7b2RJA;0}IJ-1t7eqJTueboviQ@qyx^s62kNUFP#H-bcWV zav{SI8zoIg%b8KHLm*Z?ySE~60;rIlCuThbC{sbhn6y%6>ft9AhTgX|L_xE(p?9X= zg|5Q=8+%t8At?Glr*qRodyb4MaIxGLrXF)~C4gbNsy7gYh*;JeR8$a32uv4J1&wO->YmKtzOuxJIiNu`;ZFYXpSv zM$PW9-_b1oxrYF(S&@p2&GWyMXuyHm{2|^9uqXt_%l+ zNC_xFHEe@`tg#0Gpcl0PcpWGQ0Oq|Y0ElbwNboXF}Xfive zi%aCw>xaE$L;?Eh{ch!!a%HZ|O5=cn+0?@PWK@}%3pEjU5Lv{9u59=SK|q2!v!%a( zg;aCqn<-5)Oz0`YH8dPYu@zJT^6g}mRLX6g@|ns^=VRRI26?6{^CUB1aF$e6EW@Qp zzLTeN*YpegIgPPjyn;@ULsxoc*b<&#DNXgD)ce)KnTJ;Rgn|LeWKIh$WnPu`X=s>u zl)WfpMRHA5T9cZVrl__IN#NzCE&W&84-$cj!sjuC{reX`NVVNl)|Sl}_dd%_%(eF) zUX#+{aK2NI?S@`}*N)JURL!+$RjvA=IpPuaA}#PQiT9fr$VwcKmG;AtKxH+dKnZDM z7o9koal+48i*w8s-xV_HyRk$JW(B+mYuv^b+5G%~T6q6x1SoCetDT zHd4hM?pYLaOY`UG&ag#^MRU$*3n(IIHmf$TDb`TC!fX1#o87EopIqqK{m~r{d2_ zk6*3&&U5B{+}*4th=Z_EWLh}s8a3S{`Ah^(OWP?r<;-2(=<2l@+tSu^ef2{Osrol5 z
  • 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 IcKGc-0JSN<4gdfE literal 0 HcmV?d00001 diff --git a/editors/vscode/package-lock.json b/editors/vscode/package-lock.json index 463fb864..fd1935c2 100644 --- a/editors/vscode/package-lock.json +++ b/editors/vscode/package-lock.json @@ -1,13 +1,13 @@ { "name": "wrnexus", - "version": "0.2.0", + "version": "0.2.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "wrnexus", - "version": "0.2.0", - "license": "MIT", + "version": "0.2.1", + "license": "SEE LICENSE IN LICENSE", "devDependencies": { "@vscode/vsce": "^3.9.2" }, diff --git a/editors/vscode/package.json b/editors/vscode/package.json index 5c10b7fd..ea4b0348 100644 --- a/editors/vscode/package.json +++ b/editors/vscode/package.json @@ -1,19 +1,22 @@ { "name": "wrnexus", - "displayName": "WrNexus (.wrn)", + "displayName": "WRNexus Language Support", "description": "Syntax highlighting, formatting, diagnostics, snippets and completions for WrNexus .wrn files.", - "version": "0.2.0", + "version": "0.2.1", "publisher": "wrnexus", - "license": "MIT", + "private": true, + "license": "SEE LICENSE IN LICENSE", + "icon": "icons/wrn.png", "repository": { "type": "git", - "url": "https://github.com/wrnexus/wrnexus.git", + "url": "https://git.workroot.in/WorkRoot/WRNexusJS.git", "directory": "editors/vscode" }, "bugs": { - "url": "https://github.com/wrnexus/wrnexus/issues" + "url": "https://git.workroot.in/WorkRoot/WRNexusJS/issues" }, - "homepage": "https://github.com/wrnexus/wrnexus#readme", + "homepage": "https://wrnexusjs.dev", + "qna": "https://git.workroot.in/WorkRoot/WRNexusJS/issues", "galleryBanner": { "color": "#0b1021", "theme": "dark" @@ -32,6 +35,10 @@ "wire", "wrnexus", "wrn", + "wirejs", + "language support", + "formatter", + "syntax highlighting", "full-stack", "ssr", "bun" @@ -53,8 +60,8 @@ ], "configuration": "./language-configuration.json", "icon": { - "light": "./icons/wrn.svg", - "dark": "./icons/wrn.svg" + "light": "./icons/wrn.png", + "dark": "./icons/wrn.png" } } ], @@ -148,8 +155,10 @@ }, "scripts": { "build:compiler": "bun build ../../packages/compiler/src/index.ts --target=node --format=cjs --outfile=src/compiler.cjs", + "build": "bun run build:compiler", "validate": "node test/validate.mjs", - "vscode:prepublish": "bun run build:compiler", + "check": "bun run build && bun run validate", + "vscode:prepublish": "bun run check", "package": "vsce package --no-dependencies", "publish": "vsce publish --no-dependencies", "publish:azure": "vsce publish --no-dependencies --azure-credential" diff --git a/editors/vscode/test/validate.mjs b/editors/vscode/test/validate.mjs index 01e26e41..4044719c 100644 --- a/editors/vscode/test/validate.mjs +++ b/editors/vscode/test/validate.mjs @@ -22,6 +22,7 @@ for (const rel of [ "package.json", "language-configuration.json", "syntaxes/wrn.tmLanguage.json", + "syntaxes/wrn.injection.tmLanguage.json", "snippets/wrn.json", ]) { try { @@ -36,7 +37,27 @@ for (const rel of [ const grammar = JSON.parse(readFileSync(join(root, "syntaxes/wrn.tmLanguage.json"), "utf8")); grammar.scopeName === "source.wrn" ? ok("grammar scopeName") : bad("grammar scopeName"); -// 3. Bundled compiler: valid source compiles, invalid source throws with an offset. +// 3. Marketplace metadata and the gallery icon meet vsce requirements. +try { + const manifest = JSON.parse(readFileSync(join(root, "package.json"), "utf8")); + manifest.publisher === "wrnexus" ? ok("publisher id") : bad("publisher id"); + manifest.icon?.endsWith(".png") ? ok("Marketplace icon is PNG") : bad("Marketplace icon is PNG"); + const icon = readFileSync(join(root, manifest.icon)); + const isPng = icon.subarray(1, 4).toString("ascii") === "PNG"; + const width = isPng ? icon.readUInt32BE(16) : 0; + const height = isPng ? icon.readUInt32BE(20) : 0; + isPng && width >= 128 && height >= 128 + ? ok(`Marketplace icon dimensions (${width}x${height})`) + : bad("Marketplace icon is at least 128x128 PNG"); + for (const rel of ["README.md", "CHANGELOG.md", "SUPPORT.md", "LICENSE"]) { + readFileSync(join(root, rel), "utf8"); + ok(`Marketplace document exists: ${rel}`); + } +} catch (e) { + bad("Marketplace metadata", e.message); +} + +// 4. Bundled compiler: valid source compiles, invalid source throws with an offset. try { const compiler = require(join(root, "src/compiler.cjs")); const good = `page Home {\n view {

    Hi

    }\n}`; @@ -58,7 +79,7 @@ try { bad("compiler bundle loads", e.message); } -// 4. Formatter normalizes nested WRN blocks and is idempotent. +// 5. Formatter normalizes nested WRN blocks and is idempotent. try { const { formatWrn } = require(join(root, "src/formatter.js")); const source = `page Home {\nview {\n
    \n

    Hello

    \n
    \n}\n}\n`; diff --git a/editors/vscode/wrnexus-0.2.1.vsix b/editors/vscode/wrnexus-0.2.1.vsix new file mode 100644 index 0000000000000000000000000000000000000000..feb318dc712b4739d2b3aca87046aff4f22b098c GIT binary patch literal 32162 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 AV*mgE literal 0 HcmV?d00001