turbo 2.11.10 → 2.11.11-canary.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/turbo CHANGED
@@ -537,9 +537,18 @@ function runTurboChild(env, useCtrlCPipe) {
537
537
  }
538
538
  };
539
539
 
540
+ const handleSighup = () => {
541
+ if (!child.killed) {
542
+ child.kill("SIGHUP");
543
+ }
544
+ };
545
+
540
546
  const cleanup = () => {
541
547
  process.off("SIGINT", handleSigint);
542
548
  process.off("SIGTERM", handleSigterm);
549
+ if (process.platform !== "win32") {
550
+ process.off("SIGHUP", handleSighup);
551
+ }
543
552
  process.stdin.off("data", handleInput);
544
553
  restoreStdin();
545
554
  ctrlCPipe?.destroy();
@@ -547,6 +556,9 @@ function runTurboChild(env, useCtrlCPipe) {
547
556
 
548
557
  process.on("SIGINT", handleSigint);
549
558
  process.on("SIGTERM", handleSigterm);
559
+ if (process.platform !== "win32") {
560
+ process.on("SIGHUP", handleSighup);
561
+ }
550
562
 
551
563
  child.once("error", (error) => {
552
564
  cleanup();
@@ -93,7 +93,7 @@ As your codebase and CI grow, you may start to look for more ways to get even fa
93
93
  <Step>
94
94
  ### Checkout the repository
95
95
 
96
- Start by cloning your repository. A clone with sufficient history is necessary for comparisons — if the checkout is too shallow, all packages will be considered changed. For example, cloning with `--filter=blob:none --depth=0` will ensure the right history is available.
96
+ Start by cloning your repository. A clone with sufficient history is necessary for comparisons — if the checkout is too shallow, all packages will be considered changed. For example, a blobless clone with full history (`git clone --filter=blob:none`, without `--depth`) gives the comparison the history it needs. With `actions/checkout`, set `filter: blob:none` and `fetch-depth: 0`.
97
97
 
98
98
  By default, `turbo query affected` compares against the merge-base with your default branch.
99
99
 
@@ -1,9 +1,9 @@
1
1
  ---
2
2
  title: Vercel
3
- description: Learn how to use Turborepo on Vercel.
3
+ description: Learn how to deploy your Turborepo and run tasks with Vercel CI.
4
4
  product: turborepo
5
5
  type: integration
6
- summary: Deploy your Turborepo on Vercel with zero-config Remote Caching.
6
+ summary: Deploy your Turborepo on Vercel and run tasks with Vercel CI using zero-config Remote Caching.
7
7
  prerequisites:
8
8
  - /docs/guides/ci-vendors
9
9
  related:
@@ -19,6 +19,12 @@ To deploy your Turborepo on Vercel, [create a new project](https://vercel.com/ne
19
19
 
20
20
  For more information about deploying your Turborepo to Vercel, [visit the Vercel documentation](https://vercel.com/docs/monorepos/turborepo).
21
21
 
22
+ ## Vercel CI
23
+
24
+ [Vercel CI](https://vercel.com/docs/ci) runs your Turborepo tasks, such as tests, linting, and type checks, when you push code. It uses your Task Graph to run tasks in dependency order, skips unaffected tasks, and reuses cached results with zero-config Vercel Remote Cache. Each task runs in its own isolated compute instance.
25
+
26
+ To get started, follow the [Vercel CI setup instructions](https://vercel.com/docs/ci) to enable CI for your repository and select which tasks to run. For more details, see the [configuration reference](https://vercel.com/docs/ci/configuration) for task dependencies and resource sizing, and the [environment variables guide](https://vercel.com/docs/ci/environment-variables) for secrets and other values your tasks need.
27
+
22
28
  ## Filtered installs
23
29
 
24
30
  You can speed up installs by only installing the dependencies for the application being deployed and its Workspace dependencies. Set a custom Install Command in the application's `vercel.json` or [in your project's Build and Deployment settings](https://vercel.com/d?to=%2F%5Bteam%5D%2F%5Bproject%5D%2Fsettings%2Fbuild-and-deployment%23framework-settings&title=Build+and+Deployment+settings):
@@ -26,7 +26,7 @@ Ideally, you would do a quick check to see if any of that work needs to happen i
26
26
  checkout. If the checkout is too shallow, then all packages will be considered
27
27
  changed.
28
28
 
29
- For example, setting up Git to check out with `--filter=blob:none --depth=0` will ensure `turbo query affected` has the right history to work correctly.
29
+ For example, a blobless clone with full history (`git clone --filter=blob:none`, without `--depth`) gives `turbo query affected` the history it needs. With `actions/checkout`, set `filter: blob:none` and `fetch-depth: 0`.
30
30
 
31
31
  </Callout>
32
32
 
@@ -13,7 +13,7 @@ import { CreateTurboCallout } from "./create-turbo-callout.tsx";
13
13
 
14
14
  [Prisma](https://www.prisma.io/) unlocks a new level of developer experience when working with databases thanks to its intuitive data model, automated migrations, type-safety & auto-completion.
15
15
 
16
- [Their official guide](https://www.prisma.io/docs/guides/turborepo) describes how to integrate Prisma into a Turborepo, including:
16
+ [Their official guide](https://www.prisma.io/docs/guides/deployment/turborepo) describes how to integrate Prisma into a Turborepo, including:
17
17
 
18
18
  - Prisma client initialization
19
19
  - Packaging the client as an [Internal Package](/docs/core-concepts/internal-packages)
@@ -18,7 +18,7 @@ To get started with shadcn/ui in a new monorepo, run:
18
18
  <Tab value="pnpm">
19
19
 
20
20
  ```bash title="Terminal"
21
- pnpm dlx shadcn@canary init
21
+ pnpm dlx shadcn@latest init
22
22
  ```
23
23
 
24
24
  </Tab>
@@ -26,7 +26,7 @@ pnpm dlx shadcn@canary init
26
26
  <Tab value="yarn">
27
27
 
28
28
  ```bash title="Terminal"
29
- npx shadcn@canary init
29
+ npx shadcn@latest init
30
30
  ```
31
31
 
32
32
  </Tab>
@@ -34,7 +34,7 @@ npx shadcn@canary init
34
34
  <Tab value="npm">
35
35
 
36
36
  ```bash title="Terminal"
37
- npx shadcn@canary init
37
+ npx shadcn@latest init
38
38
  ```
39
39
 
40
40
  </Tab>
@@ -42,7 +42,7 @@ npx shadcn@canary init
42
42
  <Tab value="bun">
43
43
 
44
44
  ```bash title="Terminal"
45
- bunx shadcn@canary init
45
+ bunx shadcn@latest init
46
46
  ```
47
47
 
48
48
  </Tab>
@@ -50,7 +50,7 @@ bunx shadcn@canary init
50
50
  <Tab value="nub">
51
51
 
52
52
  ```bash title="Terminal"
53
- nubx shadcn@canary init
53
+ nubx shadcn@latest init
54
54
  ```
55
55
 
56
56
  </Tab>
@@ -58,7 +58,7 @@ nubx shadcn@canary init
58
58
  <Tab value="aube">
59
59
 
60
60
  ```bash title="Terminal"
61
- aubx shadcn@canary init
61
+ aubx shadcn@latest init
62
62
  ```
63
63
 
64
64
  </Tab>
@@ -74,7 +74,7 @@ To add a component, run:
74
74
  <Tab value="pnpm">
75
75
 
76
76
  ```bash title="Terminal"
77
- pnpm dlx shadcn@canary add [COMPONENT]
77
+ pnpm dlx shadcn@latest add [COMPONENT]
78
78
  ```
79
79
 
80
80
  </Tab>
@@ -82,7 +82,7 @@ pnpm dlx shadcn@canary add [COMPONENT]
82
82
  <Tab value="yarn">
83
83
 
84
84
  ```bash title="Terminal"
85
- npx shadcn@canary add [COMPONENT]
85
+ npx shadcn@latest add [COMPONENT]
86
86
  ```
87
87
 
88
88
  </Tab>
@@ -90,7 +90,7 @@ npx shadcn@canary add [COMPONENT]
90
90
  <Tab value="npm">
91
91
 
92
92
  ```bash title="Terminal"
93
- npx shadcn@canary add [COMPONENT]
93
+ npx shadcn@latest add [COMPONENT]
94
94
  ```
95
95
 
96
96
  </Tab>
@@ -98,7 +98,7 @@ npx shadcn@canary add [COMPONENT]
98
98
  <Tab value="bun">
99
99
 
100
100
  ```bash title="Terminal"
101
- bunx shadcn@canary add [COMPONENT]
101
+ bunx shadcn@latest add [COMPONENT]
102
102
  ```
103
103
 
104
104
  </Tab>
@@ -106,7 +106,7 @@ bunx shadcn@canary add [COMPONENT]
106
106
  <Tab value="nub">
107
107
 
108
108
  ```bash title="Terminal"
109
- nubx shadcn@canary add [COMPONENT]
109
+ nubx shadcn@latest add [COMPONENT]
110
110
  ```
111
111
 
112
112
  </Tab>
@@ -114,7 +114,7 @@ nubx shadcn@canary add [COMPONENT]
114
114
  <Tab value="aube">
115
115
 
116
116
  ```bash title="Terminal"
117
- aubx shadcn@canary add [COMPONENT]
117
+ aubx shadcn@latest add [COMPONENT]
118
118
  ```
119
119
 
120
120
  </Tab>
@@ -308,6 +308,24 @@ Enable experimental features that will become the default behavior in future ver
308
308
  cache](/docs/crafting-your-repository/caching).
309
309
  </Callout>
310
310
 
311
+ #### `hashFilePermissions`
312
+
313
+ Default: `false`
314
+
315
+ Include executable permissions in file hashes for task inputs and global dependencies. With this flag enabled, changing an input file from non-executable to executable, or back, changes the task hash even when its contents stay the same.
316
+
317
+ On Unix, a regular file is executable if any owner, group, or other executable bit is set. On Windows, regular files are treated as non-executable. Symlink permissions and read or write permission bits do not affect hashes.
318
+
319
+ Enabling this flag changes all task hashes. Existing cache entries are not reused. With the flag disabled, Turborepo preserves content-only file hashing.
320
+
321
+ ```jsonc title="./turbo.json"
322
+ {
323
+ "futureFlags": {
324
+ "hashFilePermissions": true,
325
+ },
326
+ }
327
+ ```
328
+
311
329
  #### `errorsOnlyShowHash`
312
330
 
313
331
  Default: `false`
@@ -241,7 +241,7 @@ turbo query affected [flags]
241
241
  checkout. If the checkout is too shallow, then all packages will be considered
242
242
  changed.
243
243
 
244
- For example, setting up Git to check out with `--filter=blob:none --depth=0` will ensure `turbo query affected` has the right history to work correctly.
244
+ For example, a blobless clone with full history (`git clone --filter=blob:none`, without `--depth`) gives `turbo query affected` the history it needs. With `actions/checkout`, set `filter: blob:none` and `fetch-depth: 0`.
245
245
 
246
246
  </Callout>
247
247
 
@@ -69,7 +69,7 @@ By default, the flag is equivalent to `--filter=...[main...HEAD]`. This consider
69
69
  checkout. If the checkout is too shallow, then all packages will be considered
70
70
  changed.
71
71
 
72
- For example, setting up Git to check out with `--filter=blob:none --depth=0` will ensure `--affected` has the right history to work correctly.
72
+ For example, a blobless clone with full history (`git clone --filter=blob:none`, without `--depth`) gives `--affected` the history it needs. With `actions/checkout`, set `filter: blob:none` and `fetch-depth: 0`.
73
73
 
74
74
  </Callout>
75
75
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "turbo",
3
- "version": "2.11.10",
3
+ "version": "2.11.11-canary.2",
4
4
  "description": "Turborepo is the build system for coding agents.",
5
5
  "homepage": "https://turborepo.dev",
6
6
  "bugs": "https://github.com/vercel/turborepo/issues",
@@ -19,12 +19,12 @@
19
19
  ],
20
20
  "main": "./bin/turbo",
21
21
  "optionalDependencies": {
22
- "@turbo/darwin-64": "2.11.10",
23
- "@turbo/darwin-arm64": "2.11.10",
24
- "@turbo/linux-64": "2.11.10",
25
- "@turbo/linux-arm64": "2.11.10",
26
- "@turbo/windows-64": "2.11.10",
27
- "@turbo/windows-arm64": "2.11.10"
22
+ "@turbo/darwin-64": "2.11.11-canary.2",
23
+ "@turbo/darwin-arm64": "2.11.11-canary.2",
24
+ "@turbo/linux-64": "2.11.11-canary.2",
25
+ "@turbo/linux-arm64": "2.11.11-canary.2",
26
+ "@turbo/windows-64": "2.11.11-canary.2",
27
+ "@turbo/windows-arm64": "2.11.11-canary.2"
28
28
  },
29
29
  "scripts": {
30
30
  "postversion": "node bump-version.js"
package/schema.json CHANGED
@@ -444,6 +444,11 @@
444
444
  "default": false,
445
445
  "type": "boolean"
446
446
  },
447
+ "hashFilePermissions": {
448
+ "description": "Include file executable permissions in task hashes. Disabled by default. Enabling this flag changes all task hashes. On Unix, any executable bit marks a regular file as executable. On Windows, files are non-executable. Symlink permissions and other permission bits do not affect hashes.",
449
+ "default": false,
450
+ "type": "boolean"
451
+ },
447
452
  "longerSignatureKey": {
448
453
  "description": "Enforce a minimum length of 32 bytes for `TURBO_REMOTE_CACHE_SIGNATURE_KEY` when `remoteCache.signature` is enabled. Short keys weaken the HMAC-SHA256 signature, making brute-force tag collision feasible.",
449
454
  "default": false,
@@ -1155,9 +1160,9 @@
1155
1160
  ]
1156
1161
  },
1157
1162
  "ToolPolicy": {
1158
- "description": "How `turbo setup` prepares a toolchain's tools. `managed` provisions the locked version for this repository. `verify-system` uses an installed tool after verifying that it matches the locked version. `skip` neither provisions nor verifies the tool, which also skips the toolchain's dependencies.",
1163
+ "description": "How `turbo setup` prepares a toolchain's tools. `managed` provisions the locked version for this repository. `skip` neither provisions nor verifies the tool, which also skips the toolchain's dependencies.",
1159
1164
  "type": "string",
1160
- "enum": ["managed", "verify-system", "skip"]
1165
+ "enum": ["managed", "skip"]
1161
1166
  },
1162
1167
  "ToolchainSetupPolicy": {
1163
1168
  "description": "Setup policy for one toolchain. Omitted values use the root `setup` values, then the inferred default.",