22.5.0 (2026-02-09)
🚀 Features
- core: display batch tasks in the tui (#33695)
- core: add variant 2 to CNW cloud prompts with promo message (#34223)
- core: improve configure-ai-agents to copy nx skills/subagents/plugins (#34176)
- core: add Nx Cloud connect URL to template README (#34249)
- core: add decorative banners for Nx Cloud CNW completion message (#34270)
- core: add initial impl of task io service (#34205)
- core: improve AI agent rules for CLAUDE.md generation (#34304)
- core: add command to download cloud client (#34333)
- core: add AI agent detection and NDJSON output for CNW (#34320)
- core: update cnw messaging (#34364)
- core: eagerly shutdown plugins that don't provide later hooks (#34253)
- gradle: add debug env var to gradle batch executor (#34259)
- js: add NX_PREFER_NODE_STRIP_TYPES to use Node's strip types feature instead of transpilation for TypeScript files (#34202)
- js: bump swc to latest versions (#34215)
- js: update swc/cli to 0.8.0 (#34365)
- maven: load Maven classes at runtime for version-agnostic batch execution (#34180)
- maven: bump maven plugin version to 0.0.13 (#34318)
- nx-dev: add llms-full.txt and HTTP Link headers for LLM discovery (#34232)
- nx-dev: add server-side page view tracking for docs (#34283)
- nx-dev: reformat sidebar into topics (#34265)
🩹 Fixes
- core: clean up daemon workspace data directory on nx reset --onl… (#34174)
- core: move tui to parking lot rwlock to avoid hang (#34187)
- core: handle resizing a bit better for inline_tui (#34006)
- core: consolidate GitHub URL messaging when gh push fails (#34196)
- core: cloud commands are noop when not connected rather than errors (#34193)
- core: fall back to node_modules when tmp has noexec (#34207, #33991)
- core: hide already-installed nx packages from suggestion list during nx import (#34227)
- core: improve plugin worker error messages and lifecycle timeouts (#34251)
- core: do not throw error if worker.stdout is not instanceof socket (#34224)
- core: handle multibyte UTF-8 characters in socket message consumption (#34151)
- core: resolve daemon client reconnect queue deadlock (#34284)
- core: nx should show help for run-one when using project short names (#34303)
- core: prevent command injection in getNpmPackageVersion (#34309)
- core: fix CNW git amend and README marker handling (#34306)
- core: tweak configure-ai-agents messaging (#34307)
- core: handle EPIPE errors gracefully in daemon socket writes (#34311)
- core: allow overriding daemon logging settings (#34324)
- core: preserve task selection when unrelated tasks finish (#34328)
- core: disable ignore filters for outputs expansion (#34316, #32620)
- core: track all task outputs regardless of path depth (#34321)
- core: avoid crash when pane area is out of bounds during resize (#34343)
- core: use picocolors instead of chalk in the nx package (#34305)
- core: only detect flaky tasks for cacheable tasks (#33994)
- core: reduce daemon inotify watch count by upgrading watchexec (#34329)
- core: add missing FileType import for Windows watcher build (#34369)
- core: use --lockfile-only for Bun updateLockFile (#34375, #22602, #34344)
- devkit: allow null values in JSON schema validation (#34167)
- gradle: use tooling api compatible flags (#34247)
- gradle: ensure that batch output is not overriden for atomized targets (#34268)
- gradle: enforce that only one gradle task can be passed into gradle executor (#34269)
- gradle: use gradle project name when resolving dependent tasks (#34331)
- maven: include pom.xml and ancestor pom files as inputs for all targets (#34291)
- misc: improve freebsd build reliability with better error handling and disk cleanup (#34326)
- nx-dev: update broken /launch-nx links (#34192)
- nx-dev: update dead links across nx-dev UI libraries (#34238)
- nx-dev: fix internal link check caching and remaining /launch-nx link (#34255, #34183)
- nx-dev: make headers and table options linkable (#34267)
- nx-dev: fix double-counting and exclude assets from page tracking (#34286)
- nx-dev: exclude large native deps from build bundle (#34335)
- nx-dev: fix og images wrong URL for embeds (#34346)
- nx-dev: use right URL for the given netlify context (#34348)
- nx-dev: include nx cli examples on refs page (#34367)
- react: remove file-loader dependency and update svgr migration (#34218)
- repo: align pnpm version in CI workflows with package.json (#34370)
- testing: add timeout to runCommandUntil to prevent hanging tests (#34148)
- testing: preload vitest/node to prevent race condition on Node 24 (#34261, #34028, #33091)
- vite: handle sophisticated vite plugins (#34242)
- web: ensure vitest config file is created (#34216)
❤️ Thank You
- AgentEnder @AgentEnder
- barbados-clemens @barbados-clemens
- Caleb Ukle
- Claude
- Claude Opus 4.5
- Claude Opus 4.6
- Colum Ferry @Coly010
- Copilot @Copilot
- Craigory Coppola @AgentEnder
- Drew Teachout @drewteachout
- FrozenPandaz @FrozenPandaz
- iceThief (민찬기) @Chanki-Min
- Jack Hsu @jaysoo
- James Henry @JamesHenry
- Jason Jean @FrozenPandaz
- jaysoo @jaysoo
- Jonathan Cammisuli @Cammisuli
- Juri Strumpflohner @juristr
- Kai Gritun
- Leosvel Pérez Espinosa @leosvelperez
- Louie Weng @lourw
- MaxKless @MaxKless
- Miguel @mpsanchis