q2 v0.16.0
Experimental. q2 is under active development and not ready for production use.
Install
curl -fsSL https://raw.githubusercontent.com/quarto-dev/q2/main/install.sh | bashOn Windows (PowerShell):
irm https://raw.githubusercontent.com/quarto-dev/q2/main/install.ps1 | iexq2 mcp (the Quarto Hub MCP server) needs Node.js 24+ at runtime;
everything else works standalone. Hub connection defaults for quarto-hub.com are built in.
The Linux binaries are statically linked (musl): one build per architecture, no glibc
requirement, works on Alpine and old distros alike. If you specifically need a
dynamically-linked build, install.sh --from-source builds one.
| Platform | File |
|---|---|
| Linux x86_64 (static, any distro) | q2-0.16.0-linux_amd64.tar.gz |
| Linux ARM64 (static, any distro) | q2-0.16.0-linux_arm64.tar.gz |
| macOS Intel | q2-0.16.0-darwin_amd64.tar.gz |
| macOS Apple Silicon | q2-0.16.0-darwin_arm64.tar.gz |
| Windows x86_64 | q2-0.16.0-windows_amd64.zip |
Verify a manual download (Unix archives are signed with minisign, Ed25519):
minisign -Vm q2-0.16.0-<platform>.tar.gz -P RWR2A9ILpZX1kVF3Q6uk5TRus8FDM25H2F+KKKHEuqlxv+JJSLyPalvNThe trusted comment should name exactly the file you downloaded.
Checksums (all platforms): sha256sum -c checksums.sha256 --ignore-missing
Standalone Quarto Hub MCP server
q2 mcp is also published on its own as a self-contained Node bundle for
running the MCP server without installing q2 — e.g. embedding it in
another tool. Requires Node.js 24+. Download
quarto-hub-mcp-0.16.0.tar.gz, extract, and run node index.mjs --help.
Unlike q2 mcp, this bundle does not embed quarto-hub.com credentials — see
the bundled README.md for the OAuth env vars to set.
(Experimental, temporary channel — npx distribution is planned.)
Changes
- Merge pull request #494 from quarto-dev/release/v0.16.0 (46cacc8)
- chore(release): bump workspace version to 0.16.0 (8f6c05c)
- Merge pull request #492 from quarto-dev/feature/bd-fu16z22k-project-profiles (7306498)
- fix rebase fallout: new with_lua_support caller from main gets the 7th arg (bd4301c)
- project profiles: Phase 5 — docs, smoke fixture, wrap-up (bd-fu16z22k) (0bbb9ab)
- project profiles: Phase 4 — conditional content (bd-fu16z22k) (73f92e0)
- project profiles: Phase 3 — environment-file integration (bd-fu16z22k) (706ad6e)
- project profiles: Phase 2 — CLI, cache key, subprocess env (bd-fu16z22k) (ef3016c)
- project profiles: Phase 1 — _quarto-.yml overlays (bd-fu16z22k) (5b8ef65)
- instructions: commit-and-continue at clean phase boundaries (6b03326)
- project profiles: Phase 0 — activation resolution core (bd-fu16z22k) (8c7daa9)
- Merge pull request #489 from quarto-dev/feature/bd-96fswwce-combining-marks (bcdbce6)
- Merge pull request #491 from quarto-dev/bugfix/bd-hxhnnlzs-jupyter-kernel-leak (a217ab5)
- bd-hxhnnlzs: mark verification complete in plan (5b80399)
- Shut down Jupyter kernels when their kernel scope ends (bd-hxhnnlzs) (ed6b6e3)
- Merge pull request #490 from quarto-dev/feature/bd-fz6gwfq0-shortcode-text-contexts (2ea84ef)
- Restrict html_entity_regex() to semicolon-terminated entity names (bd-v8qc9zyc) (05c2454)
- Update shortcodes-website-config plan: PR #487 merged, strand closed (e71bdda)
- Merge remote-tracking branch 'origin/main' into braid/bd-fz6gwfq0-shortcode-text-contexts (bd21fef)
- Merge pull request #487 from quarto-dev/feature/bd-shortcodes-in-metadata-bp06aub8 (4041eff)
- bd-fz6gwfq0: record PR #490 in plan (16337d4)
- Substitute shortcodes in text contexts: code, raw, math, attrs, targets (bd-fz6gwfq0) (64648ee)
- Accept combining marks and ZWNJ/ZWJ as prose content in the qmd grammar (bd-96fswwce) (fa7dcbc)
- Merge pull request #488 from quarto-dev/feature/bd-named-entities-w6xbfftj-entity-decode (fe88756)
- Investigate bd-shortcodes-in-code-blocks-hhpus9da: subset-duplicate of bd-fz6gwfq0, wait for bp06aub8 expander (48b2344)
- bd-shortcodes-in-metadata-bp06aub8: reconcile with env-files strand (main merge) (c3856cb)
- Decode named HTML entity references in prose (bd-named-entities-w6xbfftj) (9509f8d)
- Merge remote-tracking branch 'origin/main' into braid/bd-shortcodes-in-metadata-bp06aub8 (c864434)
- Record design decisions for bd-named-entities-w6xbfftj (632f34e)
- Merge pull request #486 from quarto-dev/feature/bd-environment-files-372u9qbs-load-environment-files (3ef77da)
- bd-shortcodes-in-metadata-bp06aub8 Phase 4: e2e verification, clippy fixes, shortcodes docs page (059155c)
- bd-shortcodes-in-metadata-bp06aub8 Phase 3: text-level shortcode expansion in include files (d2c6ba9)
- bd-shortcodes-in-metadata-bp06aub8 Phase 2: markdown semantics for website presentation config strings (0c2d4a0)
- Investigate bd-named-entities-w6xbfftj: named entity references dropped in prose (622e48a)
- bd-shortcodes-in-metadata-bp06aub8 Phase 1: resolve shortcodes in all metadata values (d7ffa74)
- bd-shortcodes-in-metadata-bp06aub8 Phase 0: failing tests for shortcodes in config/meta/includes (4cab2a6)
- bd-environment-files-372u9qbs: record PR #486 in plan (3bbc4b8)
- Load project _environment files (bd-environment-files-372u9qbs) (adc2281)
- bd-shortcodes-in-metadata-bp06aub8: finalize plan — design decisions + Q1 entry survey (6af0ba2)
- bd-shortcodes-in-metadata-bp06aub8: Q1 ground-truth study answers 2 of 6 design questions (f2e6691)
- Merge pull request #485 from quarto-dev/chore/bd-cx1det1y-error-docs-backfill (0cb8abc)
- Investigate bd-shortcodes-in-metadata-bp06aub8: plan skeleton for shortcodes in website config + includes (bfaf952)
- Merge pull request #484 from quarto-dev/feature/bd-nv4p0eb1-span-hardening-2 (485e864)
- Backfill error catalog + docs pages for Q-2-36/37/38 (bd-cx1det1y) (2ef8b49)
- Merge pull request #483 from quarto-dev/feature/bd-brace-escape-hint-0tmemkyt (0c5d0ab)
- bd-environment-files-372u9qbs: record design decisions + dotenv parser research (315271c)
- fmt: format scripted edits in project/mod.rs and theme_diagnostic.rs (844aa3c)
- clippy: PathBuf::clone instead of to_path_buf in theme_error_candidates (cf8ab01)
- plan: phase A code complete; step-2 quarto-source-map memo (bd-nv4p0eb1) (fdc3217)
- Merge braid/bd-r64mj1aa-candidate-lists: complete diagnostic candidate lists (a5477e3)
- plan: bd-r64mj1aa done (D5+D6+D7) (53725af)
- Complete diagnostic candidate lists: manifests + _metadata.yml layers everywhere (bd-r64mj1aa) (d71291c)
- Investigate bd-environment-files-372u9qbs: _environment files not loaded (8d8403a)
- Merge braid/bd-h5rfw3ao-project-type-error: candidate-matched Q-5-17 binding (b122c9c)
- plan: bd-h5rfw3ao done (cfbd24a)
- Harden project_type_error with candidate-matched binding (bd-h5rfw3ao) (fcf2a0b)
- Merge braid/bd-x113wg9v-doc-resource-binding: doc-level resource diagnostic binding (b9ec7ed)
- plan: bd-x113wg9v done (a6ed323)
- Bind the declaring file to doc-level resource diagnostics (bd-x113wg9v) (26bc811)
- Update bare-brace-escape-hint plan: PR #483 opened (922961b)
- Q-2-41: bare-brace parse errors now hint at escaping literal braces (bd-brace-escape-hint-0tmemkyt) (29130c6)
- Investigate bd-brace-escape-hint-0tmemkyt: plan skeleton for bare-brace escape hint (104b35c)
- Merge pull request #482 from quarto-dev/feature/bd-nv4p0eb1-span-hardening (8518ac7)
- Merge origin/main (v0.15.0 release + listing fixes) into feature/bd-nv4p0eb1-span-hardening (eb1095f)
- Update wasm-quarto-hub-client Cargo.lock for the 0.14.0 workspace bump (5f56345)
- fmt: format ANONYMOUS_FILE_ID re-export (bd-y5gpc8yv) (9cfdbcb)
- plan: session log — 7 of 11 phase-A items done (cf04d6e)
- Merge braid/bd-y5gpc8yv-quarto-xml-fileid: non-aliasing anonymous XML FileId (3621e46)
- plan: bd-y5gpc8yv done (86ae472)
- quarto-xml: anonymous parses mint a non-aliasing sentinel FileId (bd-y5gpc8yv) (01dd01e)
- Merge braid/bd-thagcbfq-lua-byte-range-fid: Lua byte_range FileId exposure (2b88d15)
- plan: bd-thagcbfq done (fc084a9)
- Expose the FileId in Lua byte_range(); lookup_range refuses foreign-file ranges (bd-thagcbfq) (ac6112f)
- Merge braid/bd-vmlhw7nx-attribution-fileid: typed attribution file gate (cf70a83)
- plan: bd-vmlhw7nx done (458cddb)
- Gate attribution on the blamed file's FileId, not the literal slot 0 (bd-vmlhw7nx) (9e7e42b)
- Merge braid/bd-jrq4hroi-add-file-with-id-lint: add-file-with-id lint guardrail (518bcc3)
- plan: bd-jrq4hroi done (3ada373)
- Add add-file-with-id lint: restrict raw FileId/content pairing to blessed modules (bd-jrq4hroi) (8d85fb4)
- Merge braid/bd-t3enk8gq-caption-hulls: caption-extended table span hull fix (84b5cd0)
- plan: bd-t3enk8gq done (7b5f722)
- Build caption-extended table spans with the same-file preimage hull (bd-t3enk8gq) (144d941)
- Merge braid/bd-f6h40a9r-incremental-foreign-offsets: incremental writer foreign-offset fix (f683968)
- plan: bd-f6h40a9r done (commit 978dba6) (245c09c)
- Never slice original_qmd at foreign-file offsets in the incremental writer (bd-f6h40a9r) (978dba6)
- Merge braid/bd-itj2mjkr-engine-slot-desync: engine intermediate FileId slot fix (6fd67ed)
- plan: bd-itj2mjkr done (commit 9d1c258) (187d6a2)
- Fix engine intermediate FileId slot desync in project renders (bd-itj2mjkr) (9d1c258)
- Add FileId/span integrity audit assessment + phase-A hardening plan (bd-nv4p0eb1) (8345e12)