Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions apps/fixtures/deployment-enabled-repro/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
node_modules
.vercel
.eve
.env*.local
25 changes: 25 additions & 0 deletions apps/fixtures/deployment-enabled-repro/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# `git.deploymentEnabled` repro

This fixture isolates [#438](https://github.com/vercel/eve/issues/438): creating an eve project with the eve CLI does not forward the repository's root `vercel.ts` `git.deploymentEnabled` configuration to the Vercel project.

The three apps share this repository and the same root [`vercel.ts`](./vercel.ts). `web` and `docs` are identical minimal Next.js controls. The only meaningful difference is how their Vercel projects are created:

- `apps/web` and `apps/docs`: `vercel link`
- `apps/agent`: `eve link`

## Reproduce

These steps require a live Vercel team and GitHub repository. The resulting preview-deployment behavior cannot be observed purely locally.

1. Push this fixture to a GitHub repository whose default branch is `master`.
2. From `apps/web` and `apps/docs`, run `vercel link` and create one Vercel project for each app. This is the control path: the Vercel CLI reads the root `vercel.ts` configuration when it creates the projects.
3. From `apps/agent`, run `eve link` and create its Vercel project. This is the variable path under test.
4. Create a branch such as `feature/repro`, change a file in each app, commit, and push the branch.

## Expected and actual behavior

The root configuration enables deployments only for `master`, so all three projects should skip preview deployments for `feature/repro`.

Before the fix proposed in [#447](https://github.com/vercel/eve/pull/447), the controls behave as expected: `web` and `docs` are skipped. The agent project is created without the configuration, so it creates a deployment that later cancels or skips instead of being suppressed at the Git-integration decision.

To prove that project creation is the cause, delete and recreate the agent project with `vercel link` rather than `eve link`, then repeat step 4. The agent project is suppressed like the controls. That is the behavior #447 changes.
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { defineAgent } from "eve";

export default defineAgent({
model: "anthropic/claude-sonnet-5",
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import { eveChannel } from "eve/channels/eve";
import { localDev, placeholderAuth, vercelOidc } from "eve/channels/auth";

export default eveChannel({
auth: [
// Lets the eve TUI and your Vercel deployments reach the deployed agent.
vercelOidc(),
// Open on localhost for `eve dev` and the REPL; ignored in production.
localDev(),
// This placeholder will not allow browser requests in production.
// Replace it with your app's auth provider, like Auth.js or Clerk,
// or use none() for a public demo.
placeholderAuth(),
],
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Identity

You are a helpful assistant.
11 changes: 11 additions & 0 deletions apps/fixtures/deployment-enabled-repro/apps/agent/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"name": "deployment-enabled-repro-agent",
"private": true,
"type": "module",
"dependencies": {
"@vercel/connect": "0.4.2",
"ai": "^7.0.34",
"eve": "^0.27.6",
"zod": "4.4.3"
}
}
3 changes: 3 additions & 0 deletions apps/fixtures/deployment-enabled-repro/apps/docs/app/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export default function Page() {
return <main>docs control</main>;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
/// <reference types="next" />
/// <reference types="next/image-types/global" />
import "./.next/types/routes.d.ts";
import "./.next/types/root-params.d.ts";

// NOTE: This file should not be edited
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
18 changes: 18 additions & 0 deletions apps/fixtures/deployment-enabled-repro/apps/docs/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"name": "deployment-enabled-repro-docs",
"private": true,
"scripts": {
"build": "next build"
},
"dependencies": {
"next": "16.3.0-preview.6",
"react": "19.2.6",
"react-dom": "19.2.6"
},
"devDependencies": {
"@types/node": "25.9.1",
"@types/react": "19.2.15",
"@types/react-dom": "19.2.3",
"typescript": "6.0.3"
}
}
31 changes: 31 additions & 0 deletions apps/fixtures/deployment-enabled-repro/apps/docs/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{
"compilerOptions": {
"target": "ES2017",
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"skipLibCheck": true,
"strict": false,
"noEmit": true,
"incremental": true,
"module": "esnext",
"esModuleInterop": true,
"moduleResolution": "bundler",
"resolveJsonModule": true,
"isolatedModules": true,
"jsx": "react-jsx",
"plugins": [
{
"name": "next"
}
]
},
"include": [
"next-env.d.ts",
".next/types/**/*.ts",
".next/dev/types/**/*.ts",
"**/*.mts",
"**/*.ts",
"**/*.tsx"
],
"exclude": ["node_modules"]
}
3 changes: 3 additions & 0 deletions apps/fixtures/deployment-enabled-repro/apps/web/app/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export default function Page() {
return <main>web control</main>;
}
7 changes: 7 additions & 0 deletions apps/fixtures/deployment-enabled-repro/apps/web/next-env.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
/// <reference types="next" />
/// <reference types="next/image-types/global" />
import "./.next/types/routes.d.ts";
import "./.next/types/root-params.d.ts";

// NOTE: This file should not be edited
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
18 changes: 18 additions & 0 deletions apps/fixtures/deployment-enabled-repro/apps/web/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"name": "deployment-enabled-repro-web",
"private": true,
"scripts": {
"build": "next build"
},
"dependencies": {
"next": "16.3.0-preview.6",
"react": "19.2.6",
"react-dom": "19.2.6"
},
"devDependencies": {
"@types/node": "25.9.1",
"@types/react": "19.2.15",
"@types/react-dom": "19.2.3",
"typescript": "6.0.3"
}
}
31 changes: 31 additions & 0 deletions apps/fixtures/deployment-enabled-repro/apps/web/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{
"compilerOptions": {
"target": "ES2017",
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"skipLibCheck": true,
"strict": false,
"noEmit": true,
"incremental": true,
"module": "esnext",
"esModuleInterop": true,
"moduleResolution": "bundler",
"resolveJsonModule": true,
"isolatedModules": true,
"jsx": "react-jsx",
"plugins": [
{
"name": "next"
}
]
},
"include": [
"next-env.d.ts",
".next/types/**/*.ts",
".next/dev/types/**/*.ts",
"**/*.mts",
"**/*.ts",
"**/*.tsx"
],
"exclude": ["node_modules"]
}
10 changes: 10 additions & 0 deletions apps/fixtures/deployment-enabled-repro/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"name": "deployment-enabled-repro",
"private": true,
"workspaces": [
"apps/*"
],
"engines": {
"node": "24.x"
}
}
Loading