We welcome discussions about the project via GitHub issues. The Quarto team is working on this codebase internally before accepting outside contributions, but questions, suggestions, and bug reports are welcome.
The repo includes a rust-toolchain.toml that auto-installs the correct nightly toolchain, components (rustfmt, clippy), and the wasm32-unknown-unknown target on your first cargo invocation. No manual rustup steps needed.
This project uses nextest instead of cargo test, and
wasm-bindgen-cli for building WASM modules. Install both with:
cargo dev-setupThis detects already-installed tools and skips them. When cargo-binstall is available, it downloads pre-built binaries (seconds); otherwise it falls back to cargo install --locked (slower, compiles from source).
Note:
wasm-bindgen-climust exactly match thewasm-bindgencrate version pinned incrates/wasm-quarto-hub-client/Cargo.lock.cargo dev-setupinstalls the correct pinned version automatically. If you install it manually, use the version shown in thatCargo.lock(currently0.2.108):cargo install wasm-bindgen-cli --version 0.2.108. Runningnpm run build:allwill tell you if there's a version mismatch.
The WASM build compiles Lua C source for wasm32-unknown-unknown, which requires LLVM clang — Apple's built-in clang does not support that target.
brew install llvmThis only needs to be done once. The build scripts locate it automatically in the standard Homebrew paths (/opt/homebrew/opt/llvm on Apple Silicon, /usr/local/opt/llvm on Intel).
Four tests in the pampa crate compare output against Pandoc. These tests require Pandoc 3.6 or later and will fail when Pandoc is missing or too old. cargo dev-setup checks this and warns if needed.
Install from pandoc.org/installing.
Required for the hub-client web application. Any recent LTS version works.
cargo build --workspaceThis project uses npm workspaces. Always run npm install from the repo root, not from hub-client/:
npm install # from repo root
cd hub-client
npm run build:all # builds WASM module + web clientcargo xtask testThis runs cargo nextest run --workspace with platform-appropriate crate exclusions (see Windows below). On macOS/Linux it runs the full suite with no exclusions.
Do not use cargo test — nextest is required for correct test execution in this workspace. Extra arguments are forwarded to nextest: cargo xtask test -- -p quarto-doctemplate --no-fail-fast.
cargo xtask verify runs the complete verification suite: Rust build, Rust tests, hub-client WASM build, and hub-client tests.
cargo xtask verifySkip options for faster iteration:
cargo xtask verify --skip-rust-tests
cargo xtask verify --skip-hub-tests
cargo xtask verify --skip-hub-buildcargo xtask lintpampa-fuzz: Excluded from the workspace via exclude in Cargo.toml. The libfuzzer-sys dependency requires nightly Rust and only builds on Linux/macOS. Run fuzz targets directly: cargo fuzz run hello_fuzz --fuzz-dir ./fuzz from crates/pampa/.
No known platform-specific issues. All workspace crates build and test without exclusions.
The repo includes VS Code configuration in .vscode/:
settings.json— rust-analyzer format-on-savelaunch.json— LLDB debug configurations for key cratesextensions.json— recommended extensions (rust-analyzer, CodeLLDB, Even Better TOML)
This repo includes a CLAUDE.md with project-specific instructions for Claude Code. See that file for workspace structure, build commands, testing conventions, and coding guidelines.