Skip to content

Commit fbed456

Browse files
Merge branch 'main' into issue/ffmpegv7
2 parents 8461558 + a8b3c70 commit fbed456

File tree

148 files changed

+14386
-5429
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

148 files changed

+14386
-5429
lines changed

.cursor/mcp.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@
44
"url": "http://localhost:3333/sse"
55
}
66
}
7-
}
7+
}

.cursor/rules/writing-tasks.mdc

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
description: Guidelines for writing Trigger.dev tasks
3-
globs: **/trigger/**/*.ts, **/trigger/**/*.tsx
3+
globs: **/trigger/**/*.ts, **/trigger/**/*.tsx,**/trigger/**/*.js,**/trigger/**/*.jsx
44
alwaysApply: false
55
---
66
# How to write Trigger.dev tasks
@@ -832,7 +832,7 @@ npm add @trigger.dev/react-hooks
832832

833833
All hooks require a Public Access Token. You can provide it directly to each hook:
834834

835-
```typescriptx
835+
```typescript
836836
import { useRealtimeRun } from "@trigger.dev/react-hooks";
837837

838838
function MyComponent({ runId, publicAccessToken }) {
@@ -845,7 +845,7 @@ function MyComponent({ runId, publicAccessToken }) {
845845

846846
Or use the `TriggerAuthContext` provider:
847847

848-
```typescriptx
848+
```typescript
849849
import { TriggerAuthContext } from "@trigger.dev/react-hooks";
850850

851851
function SetupTrigger({ publicAccessToken }) {
@@ -859,7 +859,7 @@ function SetupTrigger({ publicAccessToken }) {
859859

860860
For Next.js App Router, wrap the provider in a client component:
861861

862-
```typescriptx
862+
```typescript
863863
// components/TriggerProvider.tsx
864864
"use client";
865865

@@ -879,7 +879,7 @@ export function TriggerProvider({ accessToken, children }) {
879879
Several approaches for Next.js App Router:
880880

881881
1. **Using cookies**:
882-
```typescriptx
882+
```typescript
883883
// Server action
884884
export async function startRun() {
885885
const handle = await tasks.trigger<typeof exampleTask>("example", { foo: "bar" });
@@ -899,7 +899,7 @@ export default function RunPage({ params }) {
899899
```
900900

901901
2. **Using query parameters**:
902-
```typescriptx
902+
```typescript
903903
// Server action
904904
export async function startRun() {
905905
const handle = await tasks.trigger<typeof exampleTask>("example", { foo: "bar" });
@@ -908,7 +908,7 @@ export async function startRun() {
908908
```
909909

910910
3. **Server-side token generation**:
911-
```typescriptx
911+
```typescript
912912
// Page component
913913
export default async function RunPage({ params }) {
914914
const publicAccessToken = await generatePublicAccessToken(params.id);
@@ -938,7 +938,7 @@ export async function generatePublicAccessToken(runId: string) {
938938

939939
Data fetching hooks that use SWR for caching:
940940

941-
```typescriptx
941+
```typescript
942942
"use client";
943943
import { useRun } from "@trigger.dev/react-hooks";
944944
import type { myTask } from "@/trigger/myTask";

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,3 +58,5 @@ apps/**/public/build
5858
.yarn
5959
*.tsbuildinfo
6060
/packages/cli-v3/src/package.json
61+
.husky
62+
/packages/react-hooks/src/package.json

.vscode/launch.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -138,15 +138,15 @@
138138
"type": "node-terminal",
139139
"request": "launch",
140140
"name": "Debug RunEngine tests",
141-
"command": "pnpm run test --filter @internal/run-engine",
142-
"cwd": "${workspaceFolder}",
141+
"command": "pnpm run test ./src/engine/tests/releaseConcurrencyQueue.test.ts -t 'Should manage token bucket and queue correctly'",
142+
"cwd": "${workspaceFolder}/internal-packages/run-engine",
143143
"sourceMaps": true
144144
},
145145
{
146146
"type": "node-terminal",
147147
"request": "launch",
148148
"name": "Debug RunQueue tests",
149-
"command": "pnpm run test ./src/engine/tests/waitpoints.test.ts",
149+
"command": "pnpm run test ./src/run-queue/index.test.ts",
150150
"cwd": "${workspaceFolder}/internal-packages/run-engine",
151151
"sourceMaps": true
152152
}

.vscode/settings.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,6 @@
55
"search.exclude": {
66
"**/node_modules/**": true,
77
"packages/cli-v3/e2e": true
8-
}
8+
},
9+
"vitest.disableWorkspaceWarning": true
910
}
185 KB
Loading

apps/webapp/app/components/BlankStatePanels.tsx

Lines changed: 21 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
ClockIcon,
77
PlusIcon,
88
RectangleGroupIcon,
9+
RectangleStackIcon,
910
ServerStackIcon,
1011
Squares2X2Icon,
1112
} from "@heroicons/react/20/solid";
@@ -368,35 +369,28 @@ export function AlertsNoneDeployed() {
368369
);
369370
}
370371

371-
function AlertsNoneProd() {
372+
export function QueuesHasNoTasks() {
373+
const organization = useOrganization();
374+
const project = useProject();
375+
const environment = useEnvironment();
376+
372377
return (
373-
<div className="space-y-8">
374-
<InfoPanel
375-
icon={BellAlertIcon}
376-
iconClassName="text-red-500"
377-
title="Adding alerts"
378-
panelClassName="max-w-full"
378+
<InfoPanel
379+
title="You have no queues"
380+
icon={RectangleStackIcon}
381+
iconClassName="text-purple-500"
382+
panelClassName="max-w-full"
383+
>
384+
<Paragraph spacing variant="small">
385+
This means you haven't got any tasks yet in this environment.
386+
</Paragraph>
387+
<LinkButton
388+
to={v3EnvironmentPath(organization, project, environment)}
389+
variant="tertiary/medium"
379390
>
380-
<Paragraph spacing variant="small">
381-
You can get alerted when deployed runs fail.
382-
</Paragraph>
383-
<Paragraph spacing variant="small">
384-
We don't support alerts in the Development environment. Switch to a deployed environment
385-
to setup alerts.
386-
</Paragraph>
387-
<div className="flex gap-3">
388-
<LinkButton
389-
to={docsPath("troubleshooting-alerts")}
390-
variant="docs/medium"
391-
LeadingIcon={BookOpenIcon}
392-
className="inline-flex"
393-
>
394-
How to setup alerts
395-
</LinkButton>
396-
</div>
397-
</InfoPanel>
398-
<SwitcherPanel />
399-
</div>
391+
Add tasks
392+
</LinkButton>
393+
</InfoPanel>
400394
);
401395
}
402396

apps/webapp/app/components/ImpersonationBanner.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1+
import { UserMinusIcon } from "@heroicons/react/20/solid";
12
import { Form } from "@remix-run/react";
2-
import { Paragraph } from "./primitives/Paragraph";
33
import { Button } from "./primitives/Buttons";
4-
import { UserMinusIcon } from "@heroicons/react/20/solid";
54

65
export function ImpersonationBanner() {
76
return (
@@ -13,6 +12,7 @@ export function ImpersonationBanner() {
1312
LeadingIcon={UserMinusIcon}
1413
fullWidth
1514
textAlignLeft
15+
className="text-amber-400"
1616
>
1717
Stop impersonating
1818
</Button>

apps/webapp/app/components/SetupCommands.tsx

Lines changed: 42 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
import { createContext, useContext, useState } from "react";
22
import { useAppOrigin } from "~/hooks/useAppOrigin";
33
import { useProject } from "~/hooks/useProject";
4-
import { InlineCode } from "./code/InlineCode";
54
import {
65
ClientTabs,
76
ClientTabsContent,
87
ClientTabsList,
98
ClientTabsTrigger,
109
} from "./primitives/ClientTabs";
1110
import { ClipboardField } from "./primitives/ClipboardField";
12-
import { Paragraph } from "./primitives/Paragraph";
11+
import { Header3 } from "./primitives/Headers";
1312

1413
type PackageManagerContextType = {
1514
activePackageManager: string;
@@ -61,7 +60,12 @@ function getApiUrlArg() {
6160
return apiUrl ? `-a ${apiUrl}` : undefined;
6261
}
6362

64-
export function InitCommandV3() {
63+
// Add title prop to the component interfaces
64+
type TabsProps = {
65+
title?: string;
66+
};
67+
68+
export function InitCommandV3({ title }: TabsProps) {
6569
const project = useProject();
6670
const projectRef = project.externalRef;
6771
const apiUrlArg = getApiUrlArg();
@@ -77,30 +81,33 @@ export function InitCommandV3() {
7781
value={activePackageManager}
7882
onValueChange={setActivePackageManager}
7983
>
80-
<ClientTabsList>
81-
<ClientTabsTrigger value={"npm"}>npm</ClientTabsTrigger>
82-
<ClientTabsTrigger value={"pnpm"}>pnpm</ClientTabsTrigger>
83-
<ClientTabsTrigger value={"yarn"}>yarn</ClientTabsTrigger>
84-
</ClientTabsList>
84+
<div className="flex items-center gap-4">
85+
{title && <span>{title}</span>}
86+
<ClientTabsList className={title ? "ml-auto" : ""}>
87+
<ClientTabsTrigger value={"npm"}>npm</ClientTabsTrigger>
88+
<ClientTabsTrigger value={"pnpm"}>pnpm</ClientTabsTrigger>
89+
<ClientTabsTrigger value={"yarn"}>yarn</ClientTabsTrigger>
90+
</ClientTabsList>
91+
</div>
8592
<ClientTabsContent value={"npm"}>
8693
<ClipboardField
87-
variant="primary/medium"
94+
variant="secondary/medium"
8895
iconButton
8996
className="mb-4"
9097
value={`npx ${initCommand}`}
9198
/>
9299
</ClientTabsContent>
93100
<ClientTabsContent value={"pnpm"}>
94101
<ClipboardField
95-
variant="primary/medium"
102+
variant="secondary/medium"
96103
iconButton
97104
className="mb-4"
98105
value={`pnpm dlx ${initCommand}`}
99106
/>
100107
</ClientTabsContent>
101108
<ClientTabsContent value={"yarn"}>
102109
<ClipboardField
103-
variant="primary/medium"
110+
variant="secondary/medium"
104111
iconButton
105112
className="mb-4"
106113
value={`yarn dlx ${initCommand}`}
@@ -110,7 +117,7 @@ export function InitCommandV3() {
110117
);
111118
}
112119

113-
export function TriggerDevStepV3() {
120+
export function TriggerDevStepV3({ title }: TabsProps) {
114121
const { activePackageManager, setActivePackageManager } = usePackageManager();
115122

116123
return (
@@ -119,30 +126,33 @@ export function TriggerDevStepV3() {
119126
value={activePackageManager}
120127
onValueChange={setActivePackageManager}
121128
>
122-
<ClientTabsList>
123-
<ClientTabsTrigger value={"npm"}>npm</ClientTabsTrigger>
124-
<ClientTabsTrigger value={"pnpm"}>pnpm</ClientTabsTrigger>
125-
<ClientTabsTrigger value={"yarn"}>yarn</ClientTabsTrigger>
126-
</ClientTabsList>
129+
<div className="flex items-center gap-4">
130+
{title && <Header3>{title}</Header3>}
131+
<ClientTabsList className={title ? "ml-auto" : ""}>
132+
<ClientTabsTrigger value={"npm"}>npm</ClientTabsTrigger>
133+
<ClientTabsTrigger value={"pnpm"}>pnpm</ClientTabsTrigger>
134+
<ClientTabsTrigger value={"yarn"}>yarn</ClientTabsTrigger>
135+
</ClientTabsList>
136+
</div>
127137
<ClientTabsContent value={"npm"}>
128138
<ClipboardField
129-
variant="primary/medium"
139+
variant="secondary/medium"
130140
iconButton
131141
className="mb-4"
132142
value={`npx trigger.dev@${v3PackageTag} dev`}
133143
/>
134144
</ClientTabsContent>
135145
<ClientTabsContent value={"pnpm"}>
136146
<ClipboardField
137-
variant="primary/medium"
147+
variant="secondary/medium"
138148
iconButton
139149
className="mb-4"
140150
value={`pnpm dlx trigger.dev@${v3PackageTag} dev`}
141151
/>
142152
</ClientTabsContent>
143153
<ClientTabsContent value={"yarn"}>
144154
<ClipboardField
145-
variant="primary/medium"
155+
variant="secondary/medium"
146156
iconButton
147157
className="mb-4"
148158
value={`yarn dlx trigger.dev@${v3PackageTag} dev`}
@@ -152,7 +162,7 @@ export function TriggerDevStepV3() {
152162
);
153163
}
154164

155-
export function TriggerLoginStepV3() {
165+
export function TriggerLoginStepV3({ title }: TabsProps) {
156166
const { activePackageManager, setActivePackageManager } = usePackageManager();
157167

158168
return (
@@ -161,30 +171,33 @@ export function TriggerLoginStepV3() {
161171
value={activePackageManager}
162172
onValueChange={setActivePackageManager}
163173
>
164-
<ClientTabsList>
165-
<ClientTabsTrigger value={"npm"}>npm</ClientTabsTrigger>
166-
<ClientTabsTrigger value={"pnpm"}>pnpm</ClientTabsTrigger>
167-
<ClientTabsTrigger value={"yarn"}>yarn</ClientTabsTrigger>
168-
</ClientTabsList>
174+
<div className="flex items-center gap-4">
175+
{title && <span>{title}</span>}
176+
<ClientTabsList className={title ? "ml-auto" : ""}>
177+
<ClientTabsTrigger value={"npm"}>npm</ClientTabsTrigger>
178+
<ClientTabsTrigger value={"pnpm"}>pnpm</ClientTabsTrigger>
179+
<ClientTabsTrigger value={"yarn"}>yarn</ClientTabsTrigger>
180+
</ClientTabsList>
181+
</div>
169182
<ClientTabsContent value={"npm"}>
170183
<ClipboardField
171-
variant="primary/medium"
184+
variant="secondary/medium"
172185
iconButton
173186
className="mb-4"
174187
value={`npx trigger.dev@${v3PackageTag} login`}
175188
/>
176189
</ClientTabsContent>
177190
<ClientTabsContent value={"pnpm"}>
178191
<ClipboardField
179-
variant="primary/medium"
192+
variant="secondary/medium"
180193
iconButton
181194
className="mb-4"
182195
value={`pnpm dlx trigger.dev@${v3PackageTag} login`}
183196
/>
184197
</ClientTabsContent>
185198
<ClientTabsContent value={"yarn"}>
186199
<ClipboardField
187-
variant="primary/medium"
200+
variant="secondary/medium"
188201
iconButton
189202
className="mb-4"
190203
value={`yarn dlx trigger.dev@${v3PackageTag} login`}

0 commit comments

Comments
 (0)