From 7ad336b4ddae9a6d697a706969553f3b4142d039 Mon Sep 17 00:00:00 2001 From: Ajay Ghanwat Date: Tue, 18 Aug 2026 22:43:01 +0530 Subject: [PATCH] chore(vscode): prepare 0.8.8 marketplace release --- editors/vscode/CHANGELOG.md | 9 ++++++ editors/vscode/src/language-server.cjs | 41 +++++++++++++++++++------- 2 files changed, 39 insertions(+), 11 deletions(-) diff --git a/editors/vscode/CHANGELOG.md b/editors/vscode/CHANGELOG.md index 6967463d..ddf266fe 100644 --- a/editors/vscode/CHANGELOG.md +++ b/editors/vscode/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## 0.8.8 + +- Added HTML tag and attribute completions inside WRN `view` blocks, while preserving WRNexus + component completion priority and suppressing HTML suggestions outside markup regions. +- Added HTML hover documentation, folding ranges, linked tag editing, and automatic closing tags. +- Added Emmet expansion support for WRN documents and kept void elements from receiving closing tags. +- Hardened completion and auto-close handling against quoted attribute values, replaced selections, + stale asynchronous edits, and duplicate client-side suggestions. + ## 0.8.3 - Rebuilt the embedded WRN compiler with the 0.8.3 SSR, computed-value, Async-scope, and typed loop-prop fixes. diff --git a/editors/vscode/src/language-server.cjs b/editors/vscode/src/language-server.cjs index df997994..5b402925 100644 --- a/editors/vscode/src/language-server.cjs +++ b/editors/vscode/src/language-server.cjs @@ -1,7 +1,8 @@ #!/usr/bin/env node -// WRN editor language server source hash: 1bda85712569242c96adb5fe2512cc07a59d469c50791a892c5146ab61043da9 +// WRN editor language server source hash: 5702fe2c68d78698b5507beb585cfd66a1c826f5c9febddca09fc45c49e40d4e // WRN editor language server generator hash: f593a44aaf05495b789ce7a3086bee1eebb951b884d41c0e017bbcfe5f547e72 -var __create = Object.create; +// @bun @bun-cjs +(function(exports, require, module, __filename, __dirname) {var __create = Object.create; var __getProtoOf = Object.getPrototypeOf; var __defProp = Object.defineProperty; var __getOwnPropNames = Object.getOwnPropertyNames; @@ -195905,12 +195906,20 @@ function regionsFor(document) { regionCache.set(document.uri, { version: document.version, regions }); return regions; } -function clearHtmlRegionCache(uri) { - if (uri) - regionCache.delete(uri); - else - regionCache.clear(); +// packages/language-server/src/index.ts +function offsetAt2(text, position) { + const lines = text.split(/\r?\n/); + let offset = 0; + for (let line = 0;line < Math.min(position.line, lines.length); line++) + offset += (lines[line]?.length ?? 0) + 1; + return Math.min(text.length, offset + Math.max(0, position.character)); } +var semanticTokenTypes2 = ["variable"]; +var semanticTokenModifiers2 = ["declaration", "modification"]; +var semanticTokensLegend2 = { + tokenTypes: [...semanticTokenTypes2], + tokenModifiers: [...semanticTokenModifiers2] +}; // packages/language-server/src/html-service.ts var service = getLanguageService(); @@ -195927,7 +195936,7 @@ function markdown(value) { return ""; } function htmlCompletions(document, position) { - if (!isInsideHtml(document, offsetAt(document.text, position))) + if (!isInsideHtml(document, offsetAt2(document.text, position))) return []; const virtual = htmlDocument(document); const parsed = service.parseHTMLDocument(virtual); @@ -195942,7 +195951,7 @@ function htmlCompletions(document, position) { })); } function htmlHover(document, position) { - if (!isInsideHtml(document, offsetAt(document.text, position))) + if (!isInsideHtml(document, offsetAt2(document.text, position))) return null; const virtual = htmlDocument(document); const result = service.doHover(virtual, position, service.parseHTMLDocument(virtual)); @@ -195955,7 +195964,7 @@ function htmlFoldingRanges(document) { return service.getFoldingRanges(htmlDocument(document)).map((range) => ({ startLine: range.startLine, endLine: range.endLine })); } function htmlLinkedEditingRanges(document, position) { - if (!isInsideHtml(document, offsetAt(document.text, position))) + if (!isInsideHtml(document, offsetAt2(document.text, position))) return null; const virtual = htmlDocument(document); const ranges = service.findLinkedEditingRanges(virtual, position, service.parseHTMLDocument(virtual)); @@ -195991,7 +196000,7 @@ function selfClosingTagCompletion(text, offset) { return ">"; } function htmlTagComplete(document, position) { - const offset = offsetAt(document.text, position); + const offset = offsetAt2(document.text, position); if (!isInsideHtml(document, offset)) return null; const virtual = htmlDocument(document); @@ -196008,6 +196017,15 @@ function mergeCompletions(wrnexus, html) { ]; } +// packages/language-server/src/html-regions.ts +var regionCache2 = new Map; +function clearHtmlRegionCache(uri) { + if (uri) + regionCache2.delete(uri); + else + regionCache2.clear(); +} + // packages/language-server/src/server.ts var documents = new Map; var diagnosticTimers = new Map; @@ -196414,3 +196432,4 @@ process.stdin.on("data", (chunk) => { } }); process.stdin.resume(); +})(exports, require, module, __filename, __dirname);