Features
- Extension messages are now localizable (
vscode.l10n) — the ~43 user-facing strings shown viavscode.window.show*Message(export notifications, copy/warning prompts, activation failure, tag and wikilink errors, …) are routed through the standardl10nAPI with a newl10n/bundle.l10n.jsonsource bundle and translated bundles for every supported locale (az— continuing #2395 by @jamalkamaladdin — pluszh-cn,zh-tw,ja,ko,es,fr,nl,pt-br,tr); a new test enforces that every bundle ships the exact key set and{placeholder}set of the source bundle and that eachpackage.nlslocale has anl10ncounterpart, so drift fails CI instead of silently falling back to English.package.nls.az.jsonalso now keeps the backtick example identifiers (#tag-name,#parent/child,[[Note]]) in English, matching every other locale (review nits on #2395). The filesystem-root warning (#2396) gains a localized Open Folder… action button (desktop only) so drive-root workspaces can be replaced with a real folder in one click. This adopts thel10nAPI (VS Code ≥ 1.73), soengines.vscodemoves to^1.82.0— the floor already required by the bundled crossnote runtime (cheerio 1.0.0 needs the Node 18.15+ extension host of VS Code ≥ 1.82; on 1.70–1.81 the extension cannot activate at all).
Bug fixes
- Re-running the preview command now focuses the existing preview panel — when a preview for the file was already open,
markdown-preview-enhanced.openPreviewand its keybinding only refreshed the content without revealing the panel; the reused panel (and the first matching one in multiple-preview mode) is now revealed and focused exactly like a freshly opened one, while side and locked previews keep the editor focused (#2397 by @Li-Mingshuang).
The following entries are taken verbatim from crossnote 0.9.35, which this release picks up; the first one is the fix for the extension failing to activate with File is not defined on VS Code versions with a Node 18 extension host (e.g. #2394).
- Keep Crossnote loadable on its supported Node.js 18 runtime — pin Cheerio to 1.0.0 instead of allowing its prerelease range to resolve to Node.js 20-only releases that fail with
ReferenceError: File is not defined. The declared minimum is now Node.js 18.17, matching Cheerio's runtime requirement (#493 reported by @qiyu-lu). - The hover "…" action button no longer flashes at the preview's top-right corner while moving the pointer between blocks — the button is anchored to the hovered block through a class that the un-hover listener stripped a frame before the button unmounted, so for that frame it re-anchored to the preview container. The highlight and the button now stay on the last hovered block until another block is hovered or the pointer leaves the preview, so scanning the document no longer makes the button strobe on and off.
- "Open In-preview Editor" stays in the context menu in Zen mode — the item was hidden there, so users in Zen mode had no discoverable path to the feature. Clicking it in Zen mode now shows a notice explaining that the editor is unavailable until Zen mode is disabled (translated in all supported preview languages). Presentation mode still hides the item, as before.
Improvements
The following entries are also taken verbatim from crossnote 0.9.35.
- Pin development and CI to Node.js 18 — the VS Code extension host runs Node 18, which lacks globals such as
Filethat Node-20-only dependency releases require, so a green test run on Node 20+ proves nothing for real users. All GitHub workflows now install Node 18.17.1 from.tool-versions(previously Node 20), and the Nix dev shell bringsnodejs_18via a pinned nixpkgs-24.11 import, since the rolling nixpkgs channel no longer packages EOL Node 18. The pre-commit toolchain moves with it: lint-staged is held to 15.x, the last line that loads on Node 18 (16.x requires Node ≥ 20.17), and sharp moves to the 0.34.x line — 0.35's prebuilt platform binaries declare Node ≥ 20.9 and get skipped entirely by installs on Node 18, which made graph rasterization fail withCould not load the "sharp" module(#493 reported by @qiyu-lu). - Azerbaijani (az) localization for the preview UI — the context menu, footer, top bar, backlinks panel, image helper, in-preview editor strings and notices now ship in Azerbaijani (
vscode.env.language: az), joining the existing ten languages.