A monorepo of VS Code extensions. Most of them pair a thin TypeScript client with a Rust engine compiled to WebAssembly, so parsing, analysis and rendering run inside the extension host with no native binaries to install.
Each extension has its own README with the full feature list and settings.
| Extension | What it does |
|---|---|
| Typst Ultra | Typst language server and live, two-way-synced preview on unmodified upstream typst; PDF/SVG/PNG/TIFF export and BibTeX support |
| Typst Ultra Fonts | Typst's default font set, packaged for Typst Ultra |
| WGSL / GLSL Shader | Language server for WGSL (validated by naga) and GLSL, including shaders embedded in Rust and TypeScript |
| FAST Element Ultra | Diagnostics, completion, hover, navigation and rename inside FAST Element html and css tagged templates |
| Protocol Buffers (proto3) | Highlighting, outline and diagnostics for .proto files |
| Cap'n Proto Ultra | Highlighting, outline and diagnostics for .capnp schemas |
| Mojom IDL Ultra | Highlighting, outline, navigation and diagnostics for .mojom files |
| JSON Ultra | JSON, JSONC, JSON5 and JSON Lines: diagnostics, comment-preserving formatting, JSON-path hovers, a JSON Lines table preview |
| dotenv (.env) | Highlighting, diagnostics, formatting and variable completion for .env files |
| Makefile | Highlighting and outline for GNU Make |
| cargo-make (Makefile.toml) | Highlighting, outline, completion, hover and diagnostics for Makefile.toml |
| Diesel schema.rs | Outline, hover, completion and diagnostics for Diesel schema.rs files |
| Askama Templates | Highlighting and snippets for Askama templates |
| Extension | What it does |
|---|---|
| Markdown Preview Ultra | Live Markdown preview with math, mermaid, GitHub alerts, a TOC and two-way scroll sync |
| PDF Ultra | PDF viewer built on pdf.js, with find, outline, zoom and live reload |
| CSV Ultra | CSV and TSV as an editable, sortable spreadsheet, plus rainbow columns in the text editor |
| Log Viewer Ultra | Viewer for large .log files with ANSI colour rendering |
| Vim Ultra | Modal Vim editing: motions, operators, text objects, registers, visual modes, search and :s |
| Extension | What it does |
|---|---|
| Git Compare | Compare the working copy with any branch, tag or commit as a file tree in Source Control |
| Cloudflare AI Models | Use Cloudflare Workers AI and AI Gateway models as chat models in VS Code |
| Claude Usage Ultra | Claude Code plan usage and reset countdowns in the status bar |
| Gitignore Generator Ultra | Generate or extend .gitignore from bundled templates |
| Base64 Tools | Base64-encode and -decode the selected text |
| Remove .cc-writes | Clean up empty .cc-writes directories left in a workspace |
The extensions are not on the Marketplace. Build a .vsix (see below), then
install it with Extensions: Install from VSIX… or:
code --install-extension extensions/<name>/wx-vsce-<name>-<version>.vsix- Node.js 20.19 or later
- pnpm, through corepack:
corepack enablepicks up the version pinned inpackage.json - Rust (stable) with the WebAssembly target:
rustup target add wasm32-unknown-unknown - wasm-pack:
cargo install wasm-pack
Or open the repo in the dev container under .devcontainer, which has all of this installed.
pnpm install
# Package one extension; the result lands in extensions/<name>/
pnpm --filter wx-vsce-<name> package
# Or work on one extension step by step
pnpm --filter wx-vsce-<name> build:wasm # Rust engine → extensions/<name>/wasm/ (Rust-backed extensions only)
pnpm --filter wx-vsce-<name> build # TypeScript → dist/
pnpm --filter wx-vsce-<name> test
# Across the whole repo
pnpm typecheck
pnpm test
cargo test --workspacebuild does not run build:wasm, so run it first for a Rust-backed extension.
package runs both.
pnpm repo publish uploads each extension's packaged .vsix to the VS Code
Marketplace, skipping versions already there. Bump what changed first, then
package and publish in one step:
pnpm bump -f <name>
VSCE_PAT=<token> pnpm repo publish --build -f <name> # --dry-run to previewpnpm repo publish --help covers the options and where the token comes from.
Some extensions have a CONTRIBUTING.md with more detail, such as extra data
sources or how to regenerate their notices.
| Path | Holds |
|---|---|
extensions/ |
One folder per extension: TypeScript sources, grammars, package.json |
crates/ |
The Rust engines. Crates used by one extension are grouped in a folder named after it, such as crates/typst and crates/wgsl-shader |
scripts/ |
Repo maintenance commands (pnpm repo), such as version bumps. See scripts/README.md |
docs/rfc/ |
Design documents for the larger extensions |
MIT, with two exceptions:
- Makefile is GPL-2.0-or-later as a whole, because its binary embeds completion data from fish-shell, which is GPL-2.0-or-later.
- Typst Ultra Fonts is nothing but typst's bundled fonts, each under its own license (OFL, GUST, Bitstream Vera and others).
Each extension's LICENSE.md states its terms, and the third-party material
it redistributes is listed there or in its THIRD-PARTY-NOTICES.md.