12 Commits
Author SHA1 Message Date
Sylvestre Ledru 77efde6da3 Add uutils grep to the playground
grep ships as its own standalone WASM module (not part of the coreutils
multicall binary) and depends on the Oniguruma C library, so the website
workflow now checks out uutils/grep, installs the WASI SDK to provide a
wasm sysroot for the onig_sys C sources, builds grep.wasm, and appends
"grep" to the generated command list.

The terminal loads grep.wasm as an optional second module and dispatches
grep directly (argv[0] = "grep"). grep defaults to --color=never since the
WASI shim reports stdout as a TTY, which would otherwise emit match-
highlight escapes that corrupt piped output; explicit --color is honored.

Adds a grep emoji example and grep WASM integration tests.
2026-06-02 13:47:45 +02:00
Sylvestre Ledru 52600ea55c Fix French arch --help test to match current translation
The coreutils-l10n translation uses the infinitive 'Afficher' rather
than 'Affiche', causing the test to fail in CI.
2026-04-13 09:19:15 +02:00
Sylvestre Ledru c8c195ed63 Fix French arch --help test assertion
Upstream coreutils-l10n updated the French translation of arch-about
from "Afficher l'architecture de la machine" to "Affiche l'architecture
de la machine", which was causing the WASM terminal test to fail in CI.
2026-04-04 23:09:59 +02:00
Sylvestre Ledru 7b8c877eb0 Playground: remove JS fallback, require WASM for all commands
Remove the jsFallback function and its tests. Commands now require
the WASM binary to be loaded. If WASM is still loading, a "please
wait" message is shown instead of running JS approximations.
2026-04-04 12:58:14 +02:00
Sylvestre Ledru c596ff7755 Playground: add support for I/O redirection (< > >>)
Parse < (stdin from file), > (stdout to file), and >> (append) in
the command line. Files are read from and written to the persistent
virtual filesystem, so redirected output persists across commands.
2026-04-04 12:43:52 +02:00
Sylvestre Ledru 17e38beade Playground: fix corrupted file sizes in ls output
browser_wasi_shim's Filestat.write_bytes() uses setUint8 for the
1-byte filetype field at offset 16, leaving bytes 17-23 unwritten.
Since Rust allocates the stat buffer with MaybeUninit, those padding
bytes contain stack garbage that corrupts the struct.

Fix by replacing write_bytes with a version that writes filetype as
a full 8-byte BigUint64 (zero-extended), clearing the padding.
Also add a test asserting file sizes are reasonable.
2026-04-04 11:55:54 +02:00
Sylvestre Ledru 0c49cf76fd Add tests for ls -al WASI fixes (timestamps, parent dir) 2026-04-04 11:43:46 +02:00
Sylvestre Ledru a3bbcc284d Playground: add tab completion for commands and filenames 2026-04-04 11:31:05 +02:00
Sylvestre Ledru e6d078d6b2 Add French l10n test for arch --help in WASM playground 2026-04-04 11:11:32 +02:00
Sylvestre Ledru d66a1d720f Skip WASM sort tests when sort traps in the build
sort hits 'unreachable' in some WASM builds. Probe once and skip
sort-dependent tests rather than failing CI.
2026-04-03 22:24:50 +02:00
Sylvestre Ledru 965c898e51 Playground fixes: avoid double-fetch, CSP-safe event handling, hide from nav
- 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
2026-04-03 22:13:57 +02:00
Sylvestre Ledru adc6d38c5a Add playground tests and CI integration
- Browser-based unit tests (111 tests) covering parsing, builtins,
  pipes, UTF-8, l10n, virtual filesystem, and WASM integration
- Headless Puppeteer test runner (scripts/run-tests.js)
- CI workflow step to build WASM and run tests
2026-04-03 21:47:38 +02:00