v2.10.0
1b5d/llm-apiv2.10.0Jun 24, 2026by github-actions[bot]
AI Summary
This release focuses on dependency updates, improved package manager support (including pnpm v11 and bun lockfile pruning), and introduces new caching options. It also implements CLI stability improvements like graceful shutdown and migrates Vercel auth to standard OAuth flows.
Key Highlights
- New local cache eviction options (`cacheMaxAge` and `cacheMaxSize`)
- Improved package manager pruning and lockfile handling for pnpm v11, bun, and npm
- Implementation of graceful shutdown for the CLI
- Migration of Vercel auth to standard OAuth/device flows
New Features
- Add `cacheMaxAge` and `cacheMaxSize` for local cache eviction
- Add incremental task caching
- Allow `--affected` and `--filter` to be combined
- Add circular package dependency detection to boundaries
- Replace package manager commands in scaffolded README files
- Handle package manager catalogs in migration codemod
- Add Next.js + Elysia full-stack starter template
- Graceful shutdown implementation
Full Release Notes
<!-- Release notes generated using configuration in .github/release.yml at v2.10.0 --> ## What's Changed ### create-turbo * feat: Replace package manager commands in scaffolded README files by @DependerKumarSoni in https://github.com/vercel/turborepo/pull/6747 * chore: Update dependencies found in audits by @anthonyshew in https://github.com/vercel/turborepo/pull/12586 ### @turbo/codemod * feat: Handle package manager catalogs in migration codemod by @anthonyshew in https://github.com/vercel/turborepo/pull/12496 * fix: Always update $schema URL to versioned format during migration by @anthonyshew in https://github.com/vercel/turborepo/pull/12529 * fix: Support `turbo.jsonc` in codemod transforms by @anthonyshew in https://github.com/vercel/turborepo/pull/12532 * fix: Preserve prerelease info in schema URL during codemod migration by @anthonyshew in https://github.com/vercel/turborepo/pull/12542 ### eslint * chore: Upgrade dependencies to resolve their known vulnerabilities by @anthonyshew in https://github.com/vercel/turborepo/pull/12604 ### @turbo/repository * feat: Add `cacheMaxAge` and `cacheMaxSize` for local cache eviction by @anthonyshew in https://github.com/vercel/turborepo/pull/12487 * chore: Update to Rust 1.95.0 by @ognevny in https://github.com/vercel/turborepo/pull/12636 ### @turbo/telemetry * fix: Suppress telemetry alert when running on Vercel by @anthonyshew in https://github.com/vercel/turborepo/pull/12576 ### Examples * feat(examples): Add Next.js + Elysia full-stack starter template by @eastgold15 in https://github.com/vercel/turborepo/pull/12414 * build(deps): Bump @xmldom/xmldom from 0.8.11 to 0.8.12 in /examples/with-react-native-web by @dependabot[bot] in https://github.com/vercel/turborepo/pull/12537 * fix: Add missing `@types/node` to `with-svelte` example apps by @anthonyshew in https://github.com/vercel/turborepo/pull/12585 * feat(sandbox): Bump @vercel/sandbox from v1 to beta by @marc-vercel in https://github.com/vercel/turborepo/pull/12595 * chore: Update examples to Turbo 2.9.6 by @cursor[bot] in https://github.com/vercel/turborepo/pull/12600 * examples: Add Ultracite example by @haydenbleasel in https://github.com/vercel/turborepo/pull/12615 ### Changelog * docs: Release post for 2.9 by @anthonyshew in https://github.com/vercel/turborepo/pull/12441 * docs: Add documentation for cacheMaxAge and cacheMaxSize options by @anthonyshew in https://github.com/vercel/turborepo/pull/12500 * fix: Resolve correct nested bun lockfile versions during prune by @anthonyshew in https://github.com/vercel/turborepo/pull/12506 * Revert "fix: Avoid `setsid()` in PTY spawn to prevent macOS Gatekeeper CPU spikes" by @anthonyshew in https://github.com/vercel/turborepo/pull/12507 * fix: Unblock `watch` loop so interruptible persistent tasks restart on file changes by @anthonyshew in https://github.com/vercel/turborepo/pull/12509 * fix(api-client): Treat * as wildcard in preflight Access-Control-Allow-Headers by @bitttttten in https://github.com/vercel/turborepo/pull/12503 * docs: Document `turbo.*` generator variables by @anthonyshew in https://github.com/vercel/turborepo/pull/12511 * fix: Backfill missing pnpm workspace importer entries during prune by @anthonyshew in https://github.com/vercel/turborepo/pull/12514 * fix: Include transitive dependencies in engine graph pruning for affected paths using Task Graph by @anthonyshew in https://github.com/vercel/turborepo/pull/12516 * fix: Update AI-generated response disclaimer to include human attribution by @anthonyshew with @Copilot in https://github.com/vercel/turborepo/pull/12517 * fix: Preserve shallow install strategy during npm lockfile pruning by @anthonyshew in https://github.com/vercel/turborepo/pull/12520 * fix: Preserve per-workspace lockfiles during pnpm pruning by @anthonyshew in https://github.com/vercel/turborepo/pull/12519 * feat: Add incremental task caching by @anthonyshew in https://github.com/vercel/turborepo/pull/12531 * docs: Send siteId as label on feedback GitHub issues by @molebox in https://github.com/vercel/turborepo/pull/12527 * Replace local ai-agent-detection with @vercel/agent-readability by @molebox in https://github.com/vercel/turborepo/pull/12528 * fix: Prevent `filterUsingTasks` `--filter` from pulling dependents into Task Graph by @anthonyshew in https://github.com/vercel/turborepo/pull/12535 * fix: Only enforce signature key length for keys that exist by @anthonyshew in https://github.com/vercel/turborepo/pull/12538 * fix: Validate engine concurrency after task-level filtering by @anthonyshew in https://github.com/vercel/turborepo/pull/12540 * feat: Allow `--affected` and `--filter` to be combined by @anthonyshew in https://github.com/vercel/turborepo/pull/12543 * fix(config): Deep-merge nested OTEL config across priority sources by @bitttttten in https://github.com/vercel/turborepo/pull/12513 * fix: Retain microfrontend proxy tasks when using `filterUsingTasks` by @anthonyshew in https://github.com/vercel/turborepo/pull/12545 * fix: Bun workspace lockfile pruning producing invalid output by @JRoy in https://github.com/vercel/turborepo/pull/12548 * fix: Respect dirty .gitignore patterns during task input hashing by @anthonyshew in https://github.com/vercel/turborepo/pull/12557 * feat: Add circular package dependency detection to boundaries by @anthonyshew in https://github.com/vercel/turborepo/pull/12567 * perf: Increase remote cache upload chunk size from 8KB to 256KB by @anthonyshew in https://github.com/vercel/turborepo/pull/12568 * perf: Parallelize `boundaries` checking with Rayon and cache DFS traversals by @anthonyshew in https://github.com/vercel/turborepo/pull/12569 * docs: Add Bun equivalent for updating dependencies by @anthonyshew in https://github.com/vercel/turborepo/pull/12580 * fix: Mention `turbo.json` in concurrency error message by @anthonyshew in https://github.com/vercel/turborepo/pull/12582 * fix: Surface actionable message when remote cache is requested but not linked by @anthonyshew in https://github.com/vercel/turborepo/pull/12584 * chore: Delete agents app by @anthonyshew in https://github.com/vercel/turborepo/pull/12587 * fix: Load custom CA certificates in fast webpki-only HTTP client by @anthonyshew in https://github.com/vercel/turborepo/pull/12591 * docs: Remove pre-release badges by @anthonyshew in https://github.com/vercel/turborepo/pull/12592 * fix: Align Markdown docs routing with docs/md endpoints by @molebox in https://github.com/vercel/turborepo/pull/12596 * fix: Support two-dot git ranges in filter selectors by @anthonyshew in https://github.com/vercel/turborepo/pull/12599 * feat: Graceful shutdown by @anthonyshew in https://github.com/vercel/turborepo/pull/12607 * test: Add stdin EOF startup regression coverage by @anthonyshew in https://github.com/vercel/turborepo/pull/12609 * fix: Ignore `SIGINT` in shim after spawning local `turbo` by @anthonyshew in https://github.com/vercel/turborepo/pull/12612 * fix: Support pnpm v11 multi-document lockfiles by @anthonyshew in https://github.com/vercel/turborepo/pull/12616 * fix: Preserve graceful shutdown exit code by @anthonyshew in https://github.com/vercel/turborepo/pull/12620 * fix: Keep Node wrapper alive during graceful shutdown by @anthonyshew in https://github.com/vercel/turborepo/pull/12622 * fix: Preserve PTY graceful shutdown semantics by @anthonyshew in https://github.com/vercel/turborepo/pull/12624 * feat: Move Vercel auth to standard OAuth/device flows by @markandrus in https://github.com/vercel/turborepo/pull/12526 * fix: Preserve legacy Vercel auth compatibility by @anthonyshew in https://github.com/vercel/turborepo/pull/12629 * fix: Recover Vercel auth tokens across login flows by @anthonyshew in https://github.com/vercel/turborepo/pull/12631 * docs: Fix TURBO_PLATFORM_ENV_DISABLED value in docs (true, not false) by @sleitor in https://github.com/vercel/turborepo/pull/12633 * chore: Update flags SDK by @AndyBitz in https://github.com/vercel/turborepo/pull/12646 * ci: Disable AWS-backed sccache by @anthonyshew in https://github.com/vercel/turborepo/pull/12663 * fix: Prevent prune from overmatching gitignore entries by @anthonyshew in https://github.com/vercel/turborepo/pull/12662 * ci: Harden release API commits by @anthonyshew in https://github.com/vercel/turborepo/pull/12664 * ci: Fix release API commit paths by @anthonyshew in https://github.com/vercel/turborepo/pull/12665 * release(turborepo): 2.9.7-canary.14 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12666 * chore: Add `tbx` sandbox helper by @anthonyshew in https://github.com/vercel/turborepo/pull/12668 * fix: Allow npm registry in tbx sandboxes by @anthonyshew in https://github.com/vercel/turborepo/pull/12669 * fix: Install turbo globally in tbx base by @anthonyshew in https://github.com/vercel/turborepo/pull/12670 * docs: Clarify package hash file inputs by @anthonyshew in https://github.com/vercel/turborepo/pull/12671 * fix: Allow tbx sandboxes to use stale bases by @anthonyshew in https://github.com/vercel/turborepo/pull/12672 * fix: Install dotfiles during `tbx base refresh` by @anthonyshew in https://github.com/vercel/turborepo/pull/12673 * fix: Improve tbx sandbox startup by @anthonyshew in https://github.com/vercel/turborepo/pull/12674 * fix: Improve tbx sandbox startup defaults by @anthonyshew in https://github.com/vercel/turborepo/pull/12675 * fix: Support pnpm 11 flat patch lockfiles by @anthonyshew in https://github.com/vercel/turborepo/pull/12676 * docs: Fix link to passthrough variables source code by @Wartijn in https://github.com/vercel/turborepo/pull/12643 * release(turborepo): 2.9.7-canary.15 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12677 * fix: Avoid rerunning non-cacheable watch dependencies by @anthonyshew in https://github.com/vercel/turborepo/pull/12678 * release(turborepo): 2.9.7 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12679 * test: Add regression for gitignored output restore by @anthonyshew in https://github.com/vercel/turborepo/pull/12681 * docs: Clarify root task guidance by @anthonyshew in https://github.com/vercel/turborepo/pull/12683 * fix: Preserve concrete dependency precedence by @anthonyshew in https://github.com/vercel/turborepo/pull/12682 * release(turborepo): 2.9.8-canary.1 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12685 * fix: Resolve Yarn catalog affected packages by @anthonyshew in https://github.com/vercel/turborepo/pull/12684 * release(turborepo): 2.9.8-canary.2 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12687 * fix: Preserve Bun prune lockfile validity by @anthonyshew in https://github.com/vercel/turborepo/pull/12686 * release(turborepo): 2.9.8-canary.3 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12689 * fix: Create prune docker bin stubs by @anthonyshew in https://github.com/vercel/turborepo/pull/12688 * release(turborepo): 2.9.8-canary.4 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12690 * fix: Keep tbx shell connections stable by @anthonyshew in https://github.com/vercel/turborepo/pull/12692 * perf: Reduce `turbo watch` hash memory spikes by @anthonyshew in https://github.com/vercel/turborepo/pull/12695 * release(turborepo): 2.9.8-canary.5 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12696 * fix: Reduce parent-death watchdog CPU usage by @anthonyshew in https://github.com/vercel/turborepo/pull/12697 * release(turborepo): 2.9.8-canary.6 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12698 * release(turborepo): 2.9.8 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12700 * fix: Remove Unix parent death watchdogs by @anthonyshew in https://github.com/vercel/turborepo/pull/12699 * release(turborepo): 2.9.9-canary.1 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12705 * fix: Scope repo index prefixes to Git root by @anthonyshew in https://github.com/vercel/turborepo/pull/12706 * release(turborepo): 2.9.9-canary.2 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12708 * ci: Harden non-release GitHub Actions by @anthonyshew in https://github.com/vercel/turborepo/pull/12707 * docs: Add pnpm workspace flag (-w) to Oxc setup docs by @mattjoll in https://github.com/vercel/turborepo/pull/12655 * fix: Harden OG image signatures by @anthonyshew in https://github.com/vercel/turborepo/pull/12709 * fix: Scope release npm publishing credentials by @anthonyshew in https://github.com/vercel/turborepo/pull/12710 * ci: Harden release workflows by @anthonyshew in https://github.com/vercel/turborepo/pull/12711 * release(turborepo): 2.9.9-canary.3 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12712 * fix: Harden docs security endpoints by @anthonyshew in https://github.com/vercel/turborepo/pull/12713 * ci: Harden internal GitHub Actions by @anthonyshew in https://github.com/vercel/turborepo/pull/12714 * ci: Harden release workflow handling by @anthonyshew in https://github.com/vercel/turborepo/pull/12715 * fix: Preserve lockfiles during dry-run conversion by @anthonyshew in https://github.com/vercel/turborepo/pull/12717 * ci: Fix LSP workflow container matrix by @anthonyshew in https://github.com/vercel/turborepo/pull/12718 * release(turborepo): 2.9.9-canary.4 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12716 * release(turborepo): 2.9.9 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12719 * fix: Respect SCM env vars in `turbo query affected` by @anthonyshew in https://github.com/vercel/turborepo/pull/12722 * ci: Package VSCode extension in release workflow by @anthonyshew in https://github.com/vercel/turborepo/pull/12723 * fix: Avoid some raw `create-turbo` example telemetry by @anthonyshew in https://github.com/vercel/turborepo/pull/12725 * fix: Escape graph HTML payloads by @anthonyshew in https://github.com/vercel/turborepo/pull/12726 * fix: Prevent OTEL token injection to spoofed origins by @anthonyshew in https://github.com/vercel/turborepo/pull/12727 * fix: Retry HTTP status failures by @anthonyshew in https://github.com/vercel/turborepo/pull/12728 * fix: Validate microfrontend proxy Host header by @anthonyshew in https://github.com/vercel/turborepo/pull/12730 * fix: Redact task hash env debug logs by @anthonyshew in https://github.com/vercel/turborepo/pull/12733 * fix: Filter microfrontend proxy environments by @anthonyshew in https://github.com/vercel/turborepo/pull/12732 * fix: Preserve FSEvents mount points for device-relative paths by @anthonyshew in https://github.com/vercel/turborepo/pull/12729 * fix: Validate proxy Host headers by @anthonyshew in https://github.com/vercel/turborepo/pull/12731 * fix: Resolve TypeScript `.js` extension imports to `.ts` files in boundaries by @maschwenk in https://github.com/vercel/turborepo/pull/12644 * fix: Use random temp path for repo downloads by @anthonyshew in https://github.com/vercel/turborepo/pull/12736 * release(turborepo): 2.9.10-canary.1 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12734 * fix: Reject OTel endpoints with userinfo by @anthonyshew in https://github.com/vercel/turborepo/pull/12737 * fix: Authenticate local devtools WebSocket by @anthonyshew in https://github.com/vercel/turborepo/pull/12738 * fix: Handle clipboard exec errors by @anthonyshew in https://github.com/vercel/turborepo/pull/12739 * fix: Restrict Vercel token reuse to trusted API origins by @anthonyshew in https://github.com/vercel/turborepo/pull/12740 * fix: Keep workspace config discovery inside root by @anthonyshew in https://github.com/vercel/turborepo/pull/12741 * fix: Hardening for daemon IPC endpoints by @anthonyshew in https://github.com/vercel/turborepo/pull/12742 * fix: Enforce cache filesystem boundaries by @anthonyshew in https://github.com/vercel/turborepo/pull/12743 * release(turborepo): 2.9.10 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12745 * ci: Publish VS Code extension on release by @anthonyshew in https://github.com/vercel/turborepo/pull/12747 * fix: Start daemon for VSCode Extension from the extension itself by @anthonyshew in https://github.com/vercel/turborepo/pull/12749 * release(turborepo): 2.9.11-canary.1 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12748 * fix: Include file URIs in LSP lifecycle logs by @anthonyshew in https://github.com/vercel/turborepo/pull/12751 * fix: Handle JSON decoration visitor depth by @anthonyshew in https://github.com/vercel/turborepo/pull/12752 * fix: Resolve relative `turbo path` in VS Code extension by @anthonyshew in https://github.com/vercel/turborepo/pull/12753 * fix: Preserve Bun nested dependencies during prune by @anthonyshew in https://github.com/vercel/turborepo/pull/12754 * fix: Prefer installed Turbo for LSP by @anthonyshew in https://github.com/vercel/turborepo/pull/12755 * release(turborepo): 2.9.11-canary.2 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12750 * ci: Parallelize LSP release publishing by @anthonyshew in https://github.com/vercel/turborepo/pull/12758 * fix: Reduce VS Code extension startup popups by @anthonyshew in https://github.com/vercel/turborepo/pull/12759 * fix: Support `turbo.jsonc` in VS Code extension by @anthonyshew in https://github.com/vercel/turborepo/pull/12760 * fix: Remove VS Code task key gradient by @anthonyshew in https://github.com/vercel/turborepo/pull/12761 * release(turborepo): 2.9.11-canary.3 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12756 * chore: Release v2.9.11-canary.4 by @anthonyshew in https://github.com/vercel/turborepo/pull/12762 * ci: Stop VS Code publish from blocking release PR by @anthonyshew in https://github.com/vercel/turborepo/pull/12763 * release(turborepo): 2.9.11-canary.5 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12764 * fix: Publish VS Code extension from release tag by @anthonyshew in https://github.com/vercel/turborepo/pull/12765 * fix: Support shimmed VS Code LSP probes by @anthonyshew in https://github.com/vercel/turborepo/pull/12767 * release(turborepo): 2.9.11-canary.6 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12766 * release(turborepo): 2.9.11-canary.7 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12768 * fix: Allow `$TURBO_EXTENDS$` in LSP diagnostics by @anthonyshew in https://github.com/vercel/turborepo/pull/12770 * release(turborepo): 2.9.11 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12771 * fix: Allow transit nodes in LSP diagnostics by @anthonyshew in https://github.com/vercel/turborepo/pull/12773 * release(turborepo): 2.9.12 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12774 * fix: Restore docs mobile menu by @anthonyshew in https://github.com/vercel/turborepo/pull/12782 * ci: Use `pull_request` for PR title linting by @anthonyshew in https://github.com/vercel/turborepo/pull/12787 * ci: Scope GitHub Actions caches by branch by @anthonyshew in https://github.com/vercel/turborepo/pull/12788 * test: Validate lockfiles without dependency downloads by @anthonyshew in https://github.com/vercel/turborepo/pull/12789 * Removed unneeded import form hash creation script in docs by @dancrumb in https://github.com/vercel/turborepo/pull/12799 * fix: Validate auth callback state by @anthonyshew in https://github.com/vercel/turborepo/pull/12802 * fix: Harden VS Code extension command execution by @anthonyshew in https://github.com/vercel/turborepo/pull/12800 * fix: Avoid project-local Yarn during detection by @anthonyshew in https://github.com/vercel/turborepo/pull/12801 * chore: Release 2.9.13 by @anthonyshew in https://github.com/vercel/turborepo/pull/12803 * release(turborepo): 2.9.14 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12805 * fix: Prune package.json workspaces by @anthonyshew in https://github.com/vercel/turborepo/pull/12808 * fix: Wait for process trees before task completion by @anthonyshew in https://github.com/vercel/turborepo/pull/12809 * release(turborepo): 2.9.15-canary.1 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12810 * ci: Sign macOS release binaries by @anthonyshew in https://github.com/vercel/turborepo/pull/12811 * release(turborepo): 2.9.15-canary.2 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12812 * fix: Prevent cache archive symlink reads by @anthonyshew in https://github.com/vercel/turborepo/pull/12813 * release(turborepo): 2.9.15-canary.3 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12814 * fix: Avoid path-racy chmod during directory restore by @anthonyshew in https://github.com/vercel/turborepo/pull/12815 * fix: Prevent cache restore symlink race writes by @anthonyshew in https://github.com/vercel/turborepo/pull/12817 * chore: Deny Rust panic extraction by default by @anthonyshew in https://github.com/vercel/turborepo/pull/12818 * fix: Make structured log symlink defense race-safe by @anthonyshew in https://github.com/vercel/turborepo/pull/12821 * fix: Preserve Bun alias child packages by @anthonyshew in https://github.com/vercel/turborepo/pull/12822 * fix: Avoid UTF-8 panics at boundaries by @anthonyshew in https://github.com/vercel/turborepo/pull/12823 * fix: Preserve non-UTF-8 Git path boundaries by @anthonyshew in https://github.com/vercel/turborepo/pull/12826 * fix: Create daemon dirs with private permissions by @anthonyshew in https://github.com/vercel/turborepo/pull/12827 * fix: Return Berry lockfile errors instead of panicking by @anthonyshew in https://github.com/vercel/turborepo/pull/12828 * fix: Isolate Corepack state in integration tests by @anthonyshew in https://github.com/vercel/turborepo/pull/12831 * ci: Use larger Windows runners for Rust tests by @anthonyshew in https://github.com/vercel/turborepo/pull/12832 * docs: Add `with-vite-module-federation` example by @gioboa in https://github.com/vercel/turborepo/pull/12794 * test: Run Rust tests without partitioning by @anthonyshew in https://github.com/vercel/turborepo/pull/12833 * chore: Remove `TaskHashTracker`-based `expect()` calls by @anthonyshew in https://github.com/vercel/turborepo/pull/12836 * chore: Deduplicate hash canonicalization by @anthonyshew in https://github.com/vercel/turborepo/pull/12837 * fix: Prevent Windows process drain hangs by @anthonyshew in https://github.com/vercel/turborepo/pull/12838 * fix: Refactor execsync to execfilesync for Shell command built from environment values by @bjormgyg in https://github.com/vercel/turborepo/pull/12829 * test: Bound vt100 random quickcheck by @anthonyshew in https://github.com/vercel/turborepo/pull/12839 * fix: Validate daemon discovery responses by @anthonyshew in https://github.com/vercel/turborepo/pull/12840 * fix: Store `PackageGraph` root invariants by @anthonyshew in https://github.com/vercel/turborepo/pull/12841 * chore: Avoid engine graph node expects by @anthonyshew in https://github.com/vercel/turborepo/pull/12842 * test: Make Rust tests parallel-safe by @anthonyshew in https://github.com/vercel/turborepo/pull/12843 * fix: Avoid graph utility node lookup panics by @anthonyshew in https://github.com/vercel/turborepo/pull/12844 * fix: Avoid graph walker `expect()` calls by @anthonyshew in https://github.com/vercel/turborepo/pull/12845 * fix: Remove fs panic extraction lints by @anthonyshew in https://github.com/vercel/turborepo/pull/12846 * fix: Remove fixed map panic extraction calls by @anthonyshew in https://github.com/vercel/turborepo/pull/12847 * fix: Remove devtools WebSocket panics by @anthonyshew in https://github.com/vercel/turborepo/pull/12850 * fix: Remove json rewrite panic lint allow by @anthonyshew in https://github.com/vercel/turborepo/pull/12848 * fix: Remove turborepo-types panic lint allows by @anthonyshew in https://github.com/vercel/turborepo/pull/12849 * chore: Remove turborepo-hash build expect by @anthonyshew in https://github.com/vercel/turborepo/pull/12851 * fix: Remove napi panic lint allows by @anthonyshew in https://github.com/vercel/turborepo/pull/12852 * fix: Avoid globwatch expect calls by @anthonyshew in https://github.com/vercel/turborepo/pull/12853 * fix: Remove LSP expect callsites by @anthonyshew in https://github.com/vercel/turborepo/pull/12854 * fix: Remove scope panic lint allows by @anthonyshew in https://github.com/vercel/turborepo/pull/12855 * fix: Remove task hash panic lints by @anthonyshew in https://github.com/vercel/turborepo/pull/12856 * fix: Remove frameworks panic lint allows by @anthonyshew in https://github.com/vercel/turborepo/pull/12857 * fix: Remove microfrontends proxy expect lint allow by @anthonyshew in https://github.com/vercel/turborepo/pull/12859 * fix: Avoid API client expect calls by @anthonyshew in https://github.com/vercel/turborepo/pull/12858 * fix: Avoid task executor expect calls by @anthonyshew in https://github.com/vercel/turborepo/pull/12860 * fix: Remove turbo-trace unwrap callsite by @anthonyshew in https://github.com/vercel/turborepo/pull/12863 * fix: Remove Vercel API mock expect usage by @anthonyshew in https://github.com/vercel/turborepo/pull/12862 * fix: Remove vt100 expect lint allow by @anthonyshew in https://github.com/vercel/turborepo/pull/12861 * fix: Remove turborepo-shim expect callsites by @anthonyshew in https://github.com/vercel/turborepo/pull/12864 * test: Deflake daemon existing process test by @anthonyshew in https://github.com/vercel/turborepo/pull/12865 * fix: Avoid repository NAPI unwrap calls by @anthonyshew in https://github.com/vercel/turborepo/pull/12866 * fix: Remove pidlock panic callsites by @anthonyshew in https://github.com/vercel/turborepo/pull/12867 * fix: Remove telemetry panic callsites by @anthonyshew in https://github.com/vercel/turborepo/pull/12868 * chore: Remove Rust re-export shims by @anthonyshew in https://github.com/vercel/turborepo/pull/12870 * fix: Remove turbo-json panic lint allows by @anthonyshew in https://github.com/vercel/turborepo/pull/12869 * fix: Remove `globwalk`'s `expect()` callsites by @anthonyshew in https://github.com/vercel/turborepo/pull/12871 * fix: Remove `turbopath`'s `expect()` callsites by @anthonyshew in https://github.com/vercel/turborepo/pull/12872 * test: Deflake Corepack prepare lock on Windows by @anthonyshew in https://github.com/vercel/turborepo/pull/12873 * fix: Remove signals panic callsites by @anthonyshew in https://github.com/vercel/turborepo/pull/12874 * fix: Remove `turbo-trace`'s `expect()` allow by @anthonyshew in https://github.com/vercel/turborepo/pull/12876 * fix: Remove Vercel API mock unwrap usage by @anthonyshew in https://github.com/vercel/turborepo/pull/12877 * fix: Remove task executor unwrap usage by @anthonyshew in https://github.com/vercel/turborepo/pull/12878 * fix: Remove run summary expect usage by @anthonyshew in https://github.com/vercel/turborepo/pull/12879 * fix: Remove microfrontends proxy unwrap usage by @anthonyshew in https://github.com/vercel/turborepo/pull/12880 * fix: Remove api client unwrap usage by @anthonyshew in https://github.com/vercel/turborepo/pull/12881 * fix: Remove globwalk unwrap usage by @anthonyshew in https://github.com/vercel/turborepo/pull/12883 * fix: Remove UI `expect()` usage by @anthonyshew in https://github.com/vercel/turborepo/pull/12882 * fix: Remove microfrontends expect usage by @anthonyshew in https://github.com/vercel/turborepo/pull/12885 * fix: Remove `boundaries`'s `expect()` usage by @anthonyshew in https://github.com/vercel/turborepo/pull/12887 * fix: Remove `turborepo-process`'s `unwrap()` usage by @anthonyshew in https://github.com/vercel/turborepo/pull/12888 * fix: Remove UI unwrap usage by @anthonyshew in https://github.com/vercel/turborepo/pull/12889 * fix: Remove microfrontends unwrap allow by @anthonyshew in https://github.com/vercel/turborepo/pull/12890 * fix: Remove `turborepo-process`'s `expect()` usage by @anthonyshew in https://github.com/vercel/turborepo/pull/12891 * fix: Remove scm expect usage by @anthonyshew in https://github.com/vercel/turborepo/pull/12893 * fix: Remove auth unwrap usage by @anthonyshew in https://github.com/vercel/turborepo/pull/12886 * fix: Remove `turbopath`'s `unwrap()` usage by @anthonyshew in https://github.com/vercel/turborepo/pull/12884 * fix: Remove `auth`'s `expect()` usage by @anthonyshew in https://github.com/vercel/turborepo/pull/12895 * fix: Remove wax unwrap usage by @anthonyshew in https://github.com/vercel/turborepo/pull/12899 * fix: Remove scm unwrap usage by @anthonyshew in https://github.com/vercel/turborepo/pull/12897 * fix: Remove `turborepo-boundaries`'s `unwrap()` usage by @anthonyshew in https://github.com/vercel/turborepo/pull/12896 * fix: Remove daemon unwrap usage by @anthonyshew in https://github.com/vercel/turborepo/pull/12898 * fix: Include lockfile-changed packages in affected tasks by @anthonyshew in https://github.com/vercel/turborepo/pull/12900 * fix: Remove `turborepo-wax`'s `expect()` usage by @anthonyshew in https://github.com/vercel/turborepo/pull/12901 * fix: Remove `turborepo-filewatch`'s `expect()` usage by @anthonyshew in https://github.com/vercel/turborepo/pull/12903 * fix: Remove `turborepo-cache`'s `expect()` usage by @anthonyshew in https://github.com/vercel/turborepo/pull/12902 * fix: Remove `turborepo-daemon`'s `expect()` usage by @anthonyshew in https://github.com/vercel/turborepo/pull/12904 * fix: Remove `turborepo-engine`'s `unwrap()` usage by @anthonyshew in https://github.com/vercel/turborepo/pull/12906 * fix: Remove filewatch unwrap usage by @anthonyshew in https://github.com/vercel/turborepo/pull/12907 * fix: Remove engine expect usage by @anthonyshew in https://github.com/vercel/turborepo/pull/12908 * fix: Remove cache unwrap usage by @anthonyshew in https://github.com/vercel/turborepo/pull/12909 * fix: Remove `turborepo-lockfiles` `expect()` usage by @anthonyshew in https://github.com/vercel/turborepo/pull/12910 * chore: Set pnpm minimum release age by @anthonyshew in https://github.com/vercel/turborepo/pull/12912 * fix: Remove `turborepo-lockfiles`'s `unwrap()` usage by @anthonyshew in https://github.com/vercel/turborepo/pull/12911 * fix: Remove `turborepo-vt100`'s `unwrap()` usage by @anthonyshew in https://github.com/vercel/turborepo/pull/12913 * release(turborepo): 2.9.15-canary.4 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12905 * fix: Remove `turborepo-lib`'s `unwrap()` usage by @anthonyshew in https://github.com/vercel/turborepo/pull/12915 * fix: Remove `turborepo-lib`'s `expect()` usage by @anthonyshew in https://github.com/vercel/turborepo/pull/12914 * fix: Remove shim test unwrap usage by @anthonyshew in https://github.com/vercel/turborepo/pull/12917 * fix: Remove turbo json test unwrap allowance by @anthonyshew in https://github.com/vercel/turborepo/pull/12918 * fix: Remove run summary test unwrap usage by @anthonyshew in https://github.com/vercel/turborepo/pull/12916 * release(turborepo): 2.9.15-canary.5 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12919 * fix: Restore task completion semantics by @anthonyshew in https://github.com/vercel/turborepo/pull/12923 * fix: Preserve nested Bun workspace dependency versions by @anthonyshew in https://github.com/vercel/turborepo/pull/12924 * release(turborepo): 2.9.15-canary.6 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12925 * fix: Restore release PR auto-merge by @anthonyshew in https://github.com/vercel/turborepo/pull/12927 * perf: Index repo gitignore matchers by @anthonyshew in https://github.com/vercel/turborepo/pull/12928 * ci: Disable incremental Rust test builds by @anthonyshew in https://github.com/vercel/turborepo/pull/12929 * perf: Trim OpenTelemetry crate features by @anthonyshew in https://github.com/vercel/turborepo/pull/12930 * perf: Trim microfrontends proxy HTTP features by @anthonyshew in https://github.com/vercel/turborepo/pull/12931 * fix: Accept `experimentalCI` object config by @anthonyshew in https://github.com/vercel/turborepo/pull/12934 * release(turborepo): 2.9.15-canary.7 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12935 * fix: Restore a few internal invariant checks by @anthonyshew in https://github.com/vercel/turborepo/pull/12933 * fix: Improve profile tracing coverage by @anthonyshew in https://github.com/vercel/turborepo/pull/12936 * fix: Use build-scale OTel duration buckets by @anthonyshew in https://github.com/vercel/turborepo/pull/12939 * fix: Preserve pnpm injected peer package entries by @anthonyshew in https://github.com/vercel/turborepo/pull/12940 * feat: Add heap allocation profiling by @anthonyshew in https://github.com/vercel/turborepo/pull/12943 * release(turborepo): 2.9.15-canary.8 by @anthonyshew in https://github.com/vercel/turborepo/pull/12945 * docs: Correct attribute presence claims in turborepo-otel by @adityasingh2400 in https://github.com/vercel/turborepo/pull/12932 * chore(turbo-codemod): Remove duplicate "in" in transforms path comment by @mvanhorn in https://github.com/vercel/turborepo/pull/12948 * chore: Switch Geist font imports to npm geist package by @christopherkindl in https://github.com/vercel/turborepo/pull/12952 * fix: Respect root gitignore during prune by @anthonyshew in https://github.com/vercel/turborepo/pull/12953 * fix: Harden OTEL endpoint validation by @anthonyshew in https://github.com/vercel/turborepo/pull/12954 * release(turborepo): 2.9.15 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12955 * fix: Avoid hanging PTY shutdown by @anthonyshew in https://github.com/vercel/turborepo/pull/12958 * fix: Retry npm tlog publish failures by @anthonyshew in https://github.com/vercel/turborepo/pull/12959 * release(turborepo): 2.9.16-canary.1 by @anthonyshew in https://github.com/vercel/turborepo/pull/12960 * fix: Preserve nested Bun dependency versions by @anthonyshew in https://github.com/vercel/turborepo/pull/12963 * Revert "fix: Preserve nested Bun dependency versions" by @anthonyshew in https://github.com/vercel/turborepo/pull/12964 * release(turborepo): 2.9.16-canary.2 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12961 * fix: Preserve nested Bun dependency versions by @anthonyshew in https://github.com/vercel/turborepo/pull/12965 * fix: Don't delete existing `.git` when using `--no-git` flag by @anthonyshew in https://github.com/vercel/turborepo/pull/12968 * fix: Keep non-PTY stdin alive for persistent tasks by @anthonyshew in https://github.com/vercel/turborepo/pull/12972 * release(turborepo): 2.9.16 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12970 * release(turborepo): 2.9.17-canary.1 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12973 * fix: Add auth HTTP timeouts by @anthonyshew in https://github.com/vercel/turborepo/pull/12976 * fix: Detect affected root tasks in query by @anthonyshew in https://github.com/vercel/turborepo/pull/12977 * fix: Wait for Windows graceful shutdown by @anthonyshew in https://github.com/vercel/turborepo/pull/12979 * release(turborepo): 2.9.17-canary.2 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/12980 * test: Skip installs for JSON output fixtures by @anthonyshew in https://github.com/vercel/turborepo/pull/12981 * feat: Add Rsbuild examples by @Nsttt in https://github.com/vercel/turborepo/pull/12942 * test: Skip installs for single package dry runs by @anthonyshew in https://github.com/vercel/turborepo/pull/12982 * test: Skip Corepack setup without installs by @anthonyshew in https://github.com/vercel/turborepo/pull/12983 * test: Skip installs for metadata-only Rust tests by @anthonyshew in https://github.com/vercel/turborepo/pull/12985 * test: Skip remaining unnecessary fixture installs by @anthonyshew in https://github.com/vercel/turborepo/pull/12986 * test: Add final hash contract snapshots by @anthonyshew in https://github.com/vercel/turborepo/pull/12984 * test: Trim run logging integration matrix by @anthonyshew in https://github.com/vercel/turborepo/pull/12987 * test: Trim affected query integration matrix by @anthonyshew in https://github.com/vercel/turborepo/pull/12988 * test: Narrow Windows integration test group by @anthonyshew in https://github.com/vercel/turborepo/pull/12989 * test: Trim task dependency integration coverage by @anthonyshew in https://github.com/vercel/turborepo/pull/12990 * test: Trim affected integration coverage by @anthonyshew in https://github.com/vercel/turborepo/pull/12991 * test: Collapse integration test matrices by @anthonyshew in https://github.com/vercel/turborepo/pull/12992 * test: Collapse non-watch integration matrices by @anthonyshew in https://github.com/vercel/turborepo/pull/12993 * test: Collapse summary and caching test setup by @anthonyshew in https://github.com/vercel/turborepo/pull/12994 * test: Trim lockfile-aware caching integration matrix by @anthonyshew in https://github.com/vercel/turborepo/pull/12995 * test: Move inference, env, and otel coverage lower by @anthonyshew in https://github.com/vercel/turborepo/pull/12996 * test: Trim turborepo-scm subprocess tests by @anthonyshew in https://github.com/vercel/turborepo/pull/12998 * test: Remove Windows nextest thread cap by @anthonyshew in https://github.com/vercel/turborepo/pull/12999 * test: Trim workspace config integration tests by @anthonyshew in https://github.com/vercel/turborepo/pull/13000 * test: Trim run logging integration coverage by @anthonyshew in https://github.com/vercel/turborepo/pull/13001 * test: Trim summary inference and single package tests by @anthonyshew in https://github.com/vercel/turborepo/pull/13002 * test: Trim continue and persistent integration tests by @anthonyshew in https://github.com/vercel/turborepo/pull/13004 * test: Trim force and workspace inheritance tests by @anthonyshew in https://github.com/vercel/turborepo/pull/13005 * test: Trim SCM regression matrix by @anthonyshew in https://github.com/vercel/turborepo/pull/13006 * test: Trim miscellaneous integration tests by @anthonyshew in https://github.com/vercel/turborepo/pull/13007 * test: Trim affected and cache integration coverage by @anthonyshew in https://github.com/vercel/turborepo/pull/13008 * refactor: Split engine builder modules by @anthonyshew in https://github.com/vercel/turborepo/pull/13009 * refactor: Split process child module by @anthonyshew in https://github.com/vercel/turborepo/pull/13014 * refactor: Split CLI module by @anthonyshew in https://github.com/vercel/turborepo/pull/13013 * refactor: Split Bun lockfile module by @anthonyshew in https://github.com/vercel/turborepo/pull/13012 * Fix typo in .gitignore comment by @saiteja-madha in https://github.com/vercel/turborepo/pull/13010 * fix: Preserve Bun nested dependency versions by @anthonyshew in https://github.com/vercel/turborepo/pull/13016 * docs: Exclude Next.js dev server output from cache examples by @anthonyshew in https://github.com/vercel/turborepo/pull/13019 * release(turborepo): 2.9.17-canary.3 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/13017 * fix: Highlight active docs sidebar item by @anthonyshew in https://github.com/vercel/turborepo/pull/13023 * fix: Ignore peer dependencies in package graph by @kitten in https://github.com/vercel/turborepo/pull/13025 * release(turborepo): 2.9.17-canary.4 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/13032 * fix: Preserve pnpm override-resolved prune deps by @anthonyshew in https://github.com/vercel/turborepo/pull/13031 * fix: Keep PTY stdin open for tasks by @anthonyshew in https://github.com/vercel/turborepo/pull/13033 * fix: Add TUI pane padding before logs by @anthonyshew in https://github.com/vercel/turborepo/pull/13034 * fix(api-client): Support P-521 ECDSA certificate chains over rustls by @anthonyshew in https://github.com/vercel/turborepo/pull/13036 * chore: Restore aarch64 musl release builds by @anthonyshew in https://github.com/vercel/turborepo/pull/13037 * release(turborepo): 2.9.17-canary.5 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/13038 * docs: Remove ESM warning from gen page by @anthonyshew in https://github.com/vercel/turborepo/pull/13039 * fix: Bypass npm command shim on Windows by @anthonyshew in https://github.com/vercel/turborepo/pull/13040 * feat: Add JIT task input hashing by @anthonyshew in https://github.com/vercel/turborepo/pull/13043 * fix: Defer hashes for JIT task dependents by @anthonyshew in https://github.com/vercel/turborepo/pull/13045 * release(turborepo): 2.9.17-canary.6 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/13044 * release(turborepo): 2.9.17-canary.7 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/13046 * fix: Send Ctrl+C to Windows PTY tasks by @anthonyshew in https://github.com/vercel/turborepo/pull/13041 * release(turborepo): 2.9.17 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/13047 * ci: Fetch version.txt via API in docs alias failure notification by @anthonyshew in https://github.com/vercel/turborepo/pull/13050 * fix: Harden cache archive symlink restore by @anthonyshew in https://github.com/vercel/turborepo/pull/13051 * chore: Remove web UI mode by @anthonyshew in https://github.com/vercel/turborepo/pull/13052 * fix: Harden query server file access by @anthonyshew in https://github.com/vercel/turborepo/pull/13053 * fix: Confine prune patch paths by @anthonyshew in https://github.com/vercel/turborepo/pull/13054 * fix: Prevent git argument injection in SCM refs by @anthonyshew in https://github.com/vercel/turborepo/pull/13055 * fix: Strip special mode bits from cache restore by @anthonyshew in https://github.com/vercel/turborepo/pull/13056 * fix: Contain incremental cache outputs by @anthonyshew in https://github.com/vercel/turborepo/pull/13057 * fix(turborepo): Normalize Windows daemon path hash by @Balance8 in https://github.com/vercel/turborepo/pull/13020 * fix: Preserve vt100 cell byte counts by @anthonyshew in https://github.com/vercel/turborepo/pull/13058 * fix: Separate artifact signature fields by @anthonyshew in https://github.com/vercel/turborepo/pull/13059 * fix: Validate OidHash hex buffers by @anthonyshew in https://github.com/vercel/turborepo/pull/13060 * fix: Block self-hosted login URLs from attempting to use Vercel's SSO by @anthonyshew in https://github.com/vercel/turborepo/pull/13061 * release(turborepo): 2.9.18 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/13062 * fix: Re-authenticate when stored token loses access to linked team by @anthonyshew in https://github.com/vercel/turborepo/pull/13064 * release(turborepo): 2.9.19-canary.1 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/13065 * fix: Stop shim from killing local turbo on Windows Ctrl+C by @anthonyshew in https://github.com/vercel/turborepo/pull/13067 * release(turborepo): 2.9.19-canary.2 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/13068 * ci: Add PR workflow timeouts by @anthonyshew in https://github.com/vercel/turborepo/pull/13070 * fix: Deliver Ctrl-C to ConPTY children during graceful shutdown on Windows by @anthonyshew in https://github.com/vercel/turborepo/pull/13069 * release(turborepo): 2.9.19-canary.3 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/13071 * fix: Use PTY for interactive Windows tasks by @anthonyshew in https://github.com/vercel/turborepo/pull/13073 * fix: Filter pruned pnpm workspace patches by @anthonyshew in https://github.com/vercel/turborepo/pull/13075 * fix: Cache outputs through internal symlinks by @anthonyshew in https://github.com/vercel/turborepo/pull/13076 * fix: Avoid Windows PTY task output by @anthonyshew in https://github.com/vercel/turborepo/pull/13077 * release(turborepo): 2.9.19-canary.4 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/13074 * release(turborepo): 2.9.19-canary.5 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/13079 * fix: Preserve PNPM deps check config by @anthonyshew in https://github.com/vercel/turborepo/pull/13084 * fix: Speed up default create-turbo download by @anthonyshew in https://github.com/vercel/turborepo/pull/13085 * fix: Preserve pnpm peer-resolved prune entries by @anthonyshew in https://github.com/vercel/turborepo/pull/13086 * fix: Precompute unblocked JIT descendants by @anthonyshew in https://github.com/vercel/turborepo/pull/13088 * fix: Use repo package manager for generate by @anthonyshew in https://github.com/vercel/turborepo/pull/13089 * fix: Handle Windows package manager shutdown by @anthonyshew in https://github.com/vercel/turborepo/pull/13090 * release(turborepo): 2.9.19-canary.6 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/13092 * fix: Prevent duplicate PTY graceful shutdown signals by @anthonyshew in https://github.com/vercel/turborepo/pull/13093 * fix: Remove accidental shell commands example changes by @anthonyshew in https://github.com/vercel/turborepo/pull/13094 * release(turborepo): 2.9.19-canary.7 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/13095 * fix: Refine graceful shutdown messaging by @anthonyshew in https://github.com/vercel/turborepo/pull/13098 * fix: Gracefully stop nested PTY processes by @anthonyshew in https://github.com/vercel/turborepo/pull/13100 * fix: Restore TUI force shutdown by @anthonyshew in https://github.com/vercel/turborepo/pull/13102 * release(turborepo): 2.9.19-canary.8 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/13103 * fix: Upgrade tsdown in kitchen-sink api to fix dev script by @anthonyshew in https://github.com/vercel/turborepo/pull/13105 * fix: Soften force shutdown message by @anthonyshew in https://github.com/vercel/turborepo/pull/13104 * fix: Thread `allow_no_package_manager` to daemon and watcher by @kitten in https://github.com/vercel/turborepo/pull/13091 * fix: Preserve bun patchedDependencies during prune by @anthonyshew in https://github.com/vercel/turborepo/pull/13106 * fix: Ignore symlink cycles when caching outputs by @anthonyshew in https://github.com/vercel/turborepo/pull/13107 * release(turborepo): 2.9.19-canary.9 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/13108 * fix: Preserve terminal settings for child PTYs by @anthonyshew in https://github.com/vercel/turborepo/pull/13110 * fix: Upgrade esbuild to patched version by @anthonyshew in https://github.com/vercel/turborepo/pull/13112 * fix(prune): Relocate stranded transitive deps when promoting npm workspace-nested packages by @anthonyshew in https://github.com/vercel/turborepo/pull/13111 * Update Next.js version to 16.2.5 by @hack-313-ip in https://github.com/vercel/turborepo/pull/13081 * fix: Add ComSpec and PATHEXT to default Windows env passthrough by @anthonyshew in https://github.com/vercel/turborepo/pull/13114 * fix: Respect task inputs when stopping interruptible persistent tasks in watch by @anthonyshew in https://github.com/vercel/turborepo/pull/13116 * docs: Fix stderr debugging guidance by @gwagjiug in https://github.com/vercel/turborepo/pull/13122 * feat: Add deferred hashing for task inputs by @anthonyshew in https://github.com/vercel/turborepo/pull/13125 * fix: Restart deferred hash consumers in watch by @anthonyshew in https://github.com/vercel/turborepo/pull/13127 * chore: Update to Rust 1.96.0 by @ognevny in https://github.com/vercel/turborepo/pull/12974 * fix: Improve watch graceful shutdown by @anthonyshew in https://github.com/vercel/turborepo/pull/13128 * fix: Hash selected dependency outputs instead of tasks by @anthonyshew in https://github.com/vercel/turborepo/pull/13129 * release(turborepo): 2.9.19-canary.10 by @github-actions[bot] in https://github.com/vercel/turborepo/pull/13130 ## New Contributors * @eastgold15 made their first contribution in https://github.com/vercel/turborepo/pull/12414 * @JRoy made their first contribution in https://github.com/vercel/turborepo/pull/12548 * @DependerKumarSoni made their first contribution in https://github.com/vercel/turborepo/pull/6747 * @marc-vercel made their first contribution in https://github.com/vercel/turborepo/pull/12595 * @cursor[bot] made their first contribution in https://github.com/vercel/turborepo/pull/12600 * @markandrus made their first contribution in https://github.com/vercel/turborepo/pull/12526 * @AndyBitz made their first contribution in https://github.com/vercel/turborepo/pull/12646 * @Wartijn made their first contribution in https://github.com/vercel/turborepo/pull/12643 * @mattjoll made their first contribution in https://github.com/vercel/turborepo/pull/12655 * @dancrumb made their first contribution in https://github.com/vercel/turborepo/pull/12799 * @gioboa made their first contribution in https://github.com/vercel/turborepo/pull/12794 * @bjormgyg made their first contribution in https://github.com/vercel/turborepo/pull/12829 * @adityasingh2400 made their first contribution in https://github.com/vercel/turborepo/pull/12932 * @mvanhorn made their first contribution in https://github.com/vercel/turborepo/pull/12948 * @christopherkindl made their first contribution in https://github.com/vercel/turborepo/pull/12952 * @Nsttt made their first contribution in https://github.com/vercel/turborepo/pull/12942 * @saiteja-madha made their first contribution in https://github.com/vercel/turborepo/pull/13010 * @kitten made their first contribution in https://github.com/vercel/turborepo/pull/13025 * @Balance8 made their first contribution in https://github.com/vercel/turborepo/pull/13020 * @gwagjiug made their first contribution in https://github.com/vercel/turborepo/pull/13122 **Full Changelog**: https://github.com/vercel/turborepo/compare/v2.9.0...v2.10.0