Skip to content

Commit 3149b80

Browse files
Merge branch 'main' into issue/ffmpegv7
2 parents 6044302 + 61232ab commit 3149b80

File tree

58 files changed

+2274
-358
lines changed

Some content is hidden

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

58 files changed

+2274
-358
lines changed

.changeset/four-needles-add.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
---
2+
"@trigger.dev/redis-worker": major
3+
"@trigger.dev/react-hooks": major
4+
"@trigger.dev/sdk": major
5+
"trigger.dev": major
6+
"@trigger.dev/python": major
7+
"@trigger.dev/build": major
8+
"@trigger.dev/core": major
9+
"@trigger.dev/rsc": major
10+
---
11+
12+
Trigger.dev v4 release. Please see our upgrade to v4 docs to view the full changelog: https://trigger.dev/docs/upgrade-to-v4

.changeset/pre.json

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
{
2+
"mode": "pre",
3+
"tag": "v4-beta",
4+
"initialVersions": {
5+
"coordinator": "0.0.1",
6+
"docker-provider": "0.0.1",
7+
"kubernetes-provider": "0.0.1",
8+
"supervisor": "0.0.1",
9+
"webapp": "1.0.0",
10+
"@trigger.dev/build": "3.3.17",
11+
"trigger.dev": "3.3.17",
12+
"@trigger.dev/core": "3.3.17",
13+
"@trigger.dev/python": "3.3.17",
14+
"@trigger.dev/react-hooks": "3.3.17",
15+
"@trigger.dev/redis-worker": "3.3.17",
16+
"@trigger.dev/rsc": "3.3.17",
17+
"@trigger.dev/sdk": "3.3.17"
18+
},
19+
"changesets": [
20+
"breezy-turtles-talk",
21+
"four-needles-add",
22+
"honest-files-decide",
23+
"nice-colts-boil",
24+
"red-wasps-cover",
25+
"smart-coins-hammer",
26+
"weak-jobs-hide"
27+
]
28+
}

apps/supervisor/src/util.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@ export function getDockerHostDomain() {
55
return isMacOs || isWindows ? "host.docker.internal" : "localhost";
66
}
77

8-
export function getRunnerId(runId: string) {
9-
return `runner-${runId.replace("run_", "")}`;
8+
export function getRunnerId(runId: string, attemptNumber?: number) {
9+
const parts = ["runner", runId.replace("run_", "")];
10+
11+
if (attemptNumber && attemptNumber > 1) {
12+
parts.push(`attempt-${attemptNumber}`);
13+
}
14+
15+
return parts.join("-");
1016
}

apps/supervisor/src/workloadManager/docker.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export class DockerWorkloadManager implements WorkloadManager {
2222
async create(opts: WorkloadManagerCreateOptions) {
2323
this.logger.log("[DockerWorkloadProvider] Creating container", { opts });
2424

25-
const runnerId = getRunnerId(opts.runFriendlyId);
25+
const runnerId = getRunnerId(opts.runFriendlyId, opts.nextAttemptNumber);
2626

2727
const runArgs = [
2828
"run",

apps/supervisor/src/workloadManager/kubernetes.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export class KubernetesWorkloadManager implements WorkloadManager {
3131
async create(opts: WorkloadManagerCreateOptions) {
3232
this.logger.log("[KubernetesWorkloadManager] Creating container", { opts });
3333

34-
const runnerId = getRunnerId(opts.runFriendlyId);
34+
const runnerId = getRunnerId(opts.runFriendlyId, opts.nextAttemptNumber);
3535

3636
try {
3737
await this.k8s.core.createNamespacedPod({

apps/webapp/app/components/navigation/SideMenu.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -473,7 +473,7 @@ function SwitchOrganizations({
473473

474474
return (
475475
<Popover onOpenChange={(open) => setMenuOpen(open)} open={isMenuOpen}>
476-
<div onMouseEnter={handleMouseEnter} onMouseLeave={handleMouseLeave}>
476+
<div onMouseEnter={handleMouseEnter} onMouseLeave={handleMouseLeave} className="flex">
477477
<PopoverTrigger className="w-full justify-between overflow-hidden focus-custom">
478478
<ButtonContent
479479
variant="small-menu-item"

apps/webapp/app/components/run/RunTimeline.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ function buildTimelineItems(run: TimelineSpanRun): TimelineItem[] {
248248
items.push({
249249
type: "line",
250250
id: "executing",
251-
title: formatDuration(run.executedAt, run.updatedAt),
251+
title: formatDuration(run.executedAt, run.completedAt ?? run.updatedAt),
252252
state,
253253
shouldRender: true,
254254
variant: "normal",
@@ -271,7 +271,7 @@ function buildTimelineItems(run: TimelineSpanRun): TimelineItem[] {
271271
items.push({
272272
type: "line",
273273
id: "legacy-executing",
274-
title: formatDuration(run.startedAt, run.updatedAt),
274+
title: formatDuration(run.startedAt, run.completedAt ?? run.updatedAt),
275275
state,
276276
shouldRender: true,
277277
variant: "normal",
@@ -296,7 +296,7 @@ function buildTimelineItems(run: TimelineSpanRun): TimelineItem[] {
296296
type: "event",
297297
id: "finished",
298298
title: "Finished",
299-
date: run.updatedAt,
299+
date: run.completedAt ?? run.updatedAt,
300300
previousDate: run.executedAt ?? run.startedAt ?? undefined,
301301
state,
302302
shouldRender: true,

apps/webapp/app/components/runs/v3/TaskRunsTable.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,15 +73,14 @@ export function TaskRunsTable({
7373
allowSelection = false,
7474
variant = "dimmed",
7575
}: RunsTableProps) {
76-
const user = useUser();
7776
const organization = useOrganization();
7877
const project = useProject();
7978
const environment = useEnvironment();
8079
const checkboxes = useRef<(HTMLInputElement | null)[]>([]);
8180
const { selectedItems, has, hasAll, select, deselect, toggle } = useSelectedItems(allowSelection);
8281
const { isManagedCloud } = useFeatures();
8382

84-
const showCompute = user.admin && isManagedCloud;
83+
const showCompute = isManagedCloud;
8584

8685
const navigateCheckboxes = useCallback(
8786
(event: React.KeyboardEvent<HTMLInputElement>, index: number) => {
@@ -371,7 +370,9 @@ export function TaskRunsTable({
371370
</TableCell>
372371
{showCompute && (
373372
<TableCell to={path} className="tabular-nums">
374-
{run.costInCents > 0 ? formatCurrencyAccurate(run.costInCents / 100) : "–"}
373+
{run.costInCents > 0
374+
? formatCurrencyAccurate((run.costInCents + run.baseCostInCents) / 100)
375+
: "–"}
375376
</TableCell>
376377
)}
377378
<TableCell to={path}>

apps/webapp/app/env.server.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -444,7 +444,9 @@ const EnvironmentSchema = z.object({
444444
// Run Engine 2.0
445445
RUN_ENGINE_WORKER_COUNT: z.coerce.number().int().default(4),
446446
RUN_ENGINE_TASKS_PER_WORKER: z.coerce.number().int().default(10),
447+
RUN_ENGINE_WORKER_CONCURRENCY_LIMIT: z.coerce.number().int().default(10),
447448
RUN_ENGINE_WORKER_POLL_INTERVAL: z.coerce.number().int().default(100),
449+
RUN_ENGINE_WORKER_IMMEDIATE_POLL_INTERVAL: z.coerce.number().int().default(100),
448450
RUN_ENGINE_TIMEOUT_PENDING_EXECUTING: z.coerce.number().int().default(60_000),
449451
RUN_ENGINE_TIMEOUT_PENDING_CANCEL: z.coerce.number().int().default(60_000),
450452
RUN_ENGINE_TIMEOUT_EXECUTING: z.coerce.number().int().default(60_000),

apps/webapp/app/presenters/v3/RunListPresenter.server.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,7 @@ export class RunListPresenter extends BasePresenter {
209209
lockedAt: Date | null;
210210
delayUntil: Date | null;
211211
updatedAt: Date;
212+
completedAt: Date | null;
212213
isTest: boolean;
213214
spanId: string;
214215
idempotencyKey: string | null;
@@ -238,6 +239,7 @@ export class RunListPresenter extends BasePresenter {
238239
tr."delayUntil" AS "delayUntil",
239240
tr."lockedAt" AS "lockedAt",
240241
tr."updatedAt" AS "updatedAt",
242+
tr."completedAt" AS "completedAt",
241243
tr."isTest" AS "isTest",
242244
tr."spanId" AS "spanId",
243245
tr."idempotencyKey" AS "idempotencyKey",
@@ -383,7 +385,9 @@ WHERE
383385
startedAt: startedAt ? startedAt.toISOString() : undefined,
384386
delayUntil: run.delayUntil ? run.delayUntil.toISOString() : undefined,
385387
hasFinished,
386-
finishedAt: hasFinished ? run.updatedAt.toISOString() : undefined,
388+
finishedAt: hasFinished
389+
? run.completedAt?.toISOString() ?? run.updatedAt.toISOString()
390+
: undefined,
387391
isTest: run.isTest,
388392
status: run.status,
389393
version: run.version,

0 commit comments

Comments
 (0)