Alongside the coreutils WASM commit, record the website repo's
commit/date in version.js (SITE_VERSION) and display it next to
the existing build info on the playground.
Zola auto-generates id="available-commands" on the "Available commands"
<h2>. The placeholder <p> shared that id, so getElementById matched the
heading first and the populate-from-WASM_COMMANDS script ended up
overwriting the heading text — rendering the command list at h2 size.
Rename the placeholder to a non-colliding id.
Replaces the hand-maintained inline-code list in playground.md with
a placeholder that the page script fills from the build-generated
WASM_COMMANDS, so the prose section stays in sync with the actual
feat_wasm contents of the WASM binary.
Previously the list of WASM-bundled utilities was hardcoded in
wasm-terminal.js and playground.md, which drifted from the actual
feat_wasm feature in coreutils/Cargo.toml (e.g. dd, tty, yes were
missing). The website workflow now parses feat_wasm at build time
and emits static/wasm/commands.js, which the terminal prefers over
its built-in fallback list.
Emit a version.js alongside the WASM binary in CI recording the
coreutils commit used for the build, and display it under the
terminal with a link to the commit on GitHub.
Explain that constructs like if/while/for, globbing, and variable
expansion are shell features, not coreutils features, and why they
are not available in the playground's minimal JS shell.
- Clone WASM response before compileStreaming so fallback doesn't re-fetch
- Guard against concurrent ensureRuntime() calls with a promise cache
- Replace inline onclick with event delegation for CSP compatibility
- Add SRI note for WASI shim dynamic import
- Skip l10n tests that require French translations in WASM binary
- Replace uninteresting fmt example with printf sheep | nl
- Hide Playground link from top navigation for now
A browser-based terminal that runs real Rust coreutils compiled to
WebAssembly (wasm32-wasip1) using @bjorn3/browser_wasi_shim.
Features:
- xterm.js terminal with command history and line editing
- Pipe support (cmd1 | cmd2 | cmd3), file redirects (>)
- Persistent virtual filesystem across commands
- cd/pwd builtins with virtual working directory
- Locale support (locale builtin + selector)
- UTF-8/multibyte correct output (raw ConsoleStdout, fixed args_sizes_get)
- Click-to-run example buttons
- Inline wasm_example shortcode for blog posts