diff --git a/docs/bulk-actions.mdx b/docs/bulk-actions.mdx
new file mode 100644
index 0000000000..0e2b4468a3
--- /dev/null
+++ b/docs/bulk-actions.mdx
@@ -0,0 +1,40 @@
+---
+title: "Bulk actions"
+description: "Perform actions like replay and cancel on multiple runs at once."
+---
+
+Bulk actions allow you to perform operations like replaying or canceling on multiple runs at once. This is especially useful when you need to retry a batch of failed runs with a new version of your code, or when you need to cancel multiple in-progress runs.
+
+## Bulk replaying
+
+You can replay multiple runs at once by selecting them from the table on the Runs page using the checkbox on the left hand side of the row. Then click the "Replay runs" button from the bulk action bar that appears at the bottom of the screen.
+
+This is especially useful if you have lots of failed runs and want to run them all again. To do this, first filter the runs by the status you want, then select all the runs you want to replay and click the "Replay runs" button from the bulk action bar at the bottom of the page.
+
+
+
+## Bulk canceling
+
+Similar to replaying multiple runs, you can cancel multiple runs at once. This is particularly useful when you have a batch of runs that you want to stop, perhaps because they were triggered with incorrect parameters or are no longer needed.
+
+To cancel multiple runs:
+
+1. Filter the runs table to show the runs you want to cancel (e.g., all runs with status "QUEUED" or "EXECUTING")
+2. Use the checkboxes on the left side of the runs table to select the runs you want to cancel
+3. Click the "Cancel runs" button in the bulk action bar that appears at the bottom of the screen
+
+After confirming, all selected runs that can be canceled (those in appropriate states like QUEUED or EXECUTING) will be canceled. The status of these runs will change to "CANCELED" and they will not be resumed.
+
+
+ You can only cancel runs that are in states that allow cancellation (like QUEUED or EXECUTING).
+ Runs that are already completed, failed, or in other final states cannot be canceled.
+
\ No newline at end of file
diff --git a/docs/guides/example-projects/realtime-fal-ai.mdx b/docs/guides/example-projects/realtime-fal-ai.mdx
index 76953fd3ca..e0dc0f6f3e 100644
--- a/docs/guides/example-projects/realtime-fal-ai.mdx
+++ b/docs/guides/example-projects/realtime-fal-ai.mdx
@@ -36,10 +36,9 @@ This video walks through the process of creating this task in a Next.js project.
height="100%"
src="https://www.youtube.com/embed/BWZqYfUaigg?si=XpqVUEIf1j4bsYZ4"
title="Trigger.dev walkthrough"
- frameborder="0"
allow="accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
- referrerpolicy="strict-origin-when-cross-origin"
- allowfullscreen
+ referrerPolicy="strict-origin-when-cross-origin"
+ allowFullScreen
/>
diff --git a/docs/guides/examples/fal-ai-image-to-cartoon.mdx b/docs/guides/examples/fal-ai-image-to-cartoon.mdx
index 681fbefd9b..9275d09cb9 100644
--- a/docs/guides/examples/fal-ai-image-to-cartoon.mdx
+++ b/docs/guides/examples/fal-ai-image-to-cartoon.mdx
@@ -9,7 +9,7 @@ description: "This example task generates an image from a URL using Fal.ai and u
This video walks through the process of creating this task in a Next.js project.
-
+
## Prerequisites
diff --git a/docs/guides/examples/fal-ai-realtime.mdx b/docs/guides/examples/fal-ai-realtime.mdx
index 4771ccb467..52f5ede9fd 100644
--- a/docs/guides/examples/fal-ai-realtime.mdx
+++ b/docs/guides/examples/fal-ai-realtime.mdx
@@ -25,10 +25,9 @@ This video walks through the process of creating this task in a Next.js project.
height="100%"
src="https://www.youtube.com/embed/BWZqYfUaigg?si=XpqVUEIf1j4bsYZ4"
title="Trigger.dev walkthrough"
- frameborder="0"
allow="accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
- referrerpolicy="strict-origin-when-cross-origin"
- allowfullscreen
+ referrerPolicy="strict-origin-when-cross-origin"
+ allowFullScreen
/>
diff --git a/docs/guides/examples/scrape-hacker-news.mdx b/docs/guides/examples/scrape-hacker-news.mdx
index 8b42f31fa9..7b869757ea 100644
--- a/docs/guides/examples/scrape-hacker-news.mdx
+++ b/docs/guides/examples/scrape-hacker-news.mdx
@@ -13,10 +13,9 @@ import ScrapingWarning from "/snippets/web-scraping-warning.mdx";
height="100%"
src="https://www.youtube.com/embed/6azvzrZITKY?si=muKtsBiS9TJGGKWg"
title="YouTube video player"
- frameborder="0"
allow="accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
- referrerpolicy="strict-origin-when-cross-origin"
- allowfullscreen
+ referrerPolicy="strict-origin-when-cross-origin"
+ allowFullScreen
/>
diff --git a/docs/introduction.mdx b/docs/introduction.mdx
index 2d42c1f7f3..0f0caa54f6 100644
--- a/docs/introduction.mdx
+++ b/docs/introduction.mdx
@@ -24,10 +24,9 @@ We're [open source](https://github.com/triggerdotdev/trigger.dev) and you can ch
height="100%"
src="https://www.youtube.com/embed/YH_4c0K7fGM?si=5JzZmZseuqI5aciM"
title="Trigger.dev walkthrough"
- frameborder="0"
allow="accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
- referrerpolicy="strict-origin-when-cross-origin"
- allowfullscreen
+ referrerPolicy="strict-origin-when-cross-origin"
+ allowFullScreen
/>
diff --git a/docs/mint.json b/docs/mint.json
index 747d276ce3..ef6f932ac9 100644
--- a/docs/mint.json
+++ b/docs/mint.json
@@ -1,10 +1,7 @@
{
"$schema": "https://mintlify.com/schema.json",
"name": "Trigger.dev",
- "openapi": [
- "/openapi.yml",
- "/v3-openapi.yaml"
- ],
+ "openapi": ["/openapi.yml", "/v3-openapi.yaml"],
"api": {
"playground": {
"mode": "simple"
@@ -126,43 +123,27 @@
"navigation": [
{
"group": "Getting Started",
- "pages": [
- "introduction",
- "quick-start",
- "video-walkthrough",
- "how-it-works",
- "limits"
- ]
+ "pages": ["introduction", "quick-start", "video-walkthrough", "how-it-works", "limits"]
},
{
"group": "Fundamentals",
"pages": [
{
"group": "Tasks",
- "pages": [
- "tasks/overview",
- "tasks/schemaTask",
- "tasks/scheduled"
- ]
+ "pages": ["tasks/overview", "tasks/schemaTask", "tasks/scheduled"]
},
"triggering",
"runs",
"apikeys",
{
"group": "Configuration",
- "pages": [
- "config/config-file",
- "config/extensions/overview"
- ]
+ "pages": ["config/config-file", "config/extensions/overview"]
}
]
},
{
"group": "Development",
- "pages": [
- "cli-dev",
- "run-tests"
- ]
+ "pages": ["cli-dev", "run-tests"]
},
{
"group": "Deployment",
@@ -172,9 +153,7 @@
"github-actions",
{
"group": "Deployment integrations",
- "pages": [
- "vercel-integration"
- ]
+ "pages": ["vercel-integration"]
}
]
},
@@ -186,13 +165,7 @@
"errors-retrying",
{
"group": "Wait",
- "pages": [
- "wait",
- "wait-for",
- "wait-until",
- "wait-for-event",
- "wait-for-request"
- ]
+ "pages": ["wait", "wait-for", "wait-until", "wait-for-event", "wait-for-request"]
},
"queue-concurrency",
"versioning",
@@ -203,7 +176,8 @@
"tags",
"runs/metadata",
"run-usage",
- "context"
+ "context",
+ "bulk-actions"
]
},
{
@@ -237,10 +211,7 @@
"management/overview",
{
"group": "Tasks API",
- "pages": [
- "management/tasks/trigger",
- "management/tasks/batch-trigger"
- ]
+ "pages": ["management/tasks/trigger", "management/tasks/batch-trigger"]
},
{
"group": "Runs API",
@@ -279,9 +250,7 @@
},
{
"group": "Projects API",
- "pages": [
- "management/projects/runs"
- ]
+ "pages": ["management/projects/runs"]
}
]
},
@@ -328,17 +297,11 @@
},
{
"group": "Help",
- "pages": [
- "community",
- "help-slack",
- "help-email"
- ]
+ "pages": ["community", "help-slack", "help-email"]
},
{
"group": "",
- "pages": [
- "guides/introduction"
- ]
+ "pages": ["guides/introduction"]
},
{
"group": "Frameworks",
@@ -412,15 +375,11 @@
},
{
"group": "Dashboard",
- "pages": [
- "guides/dashboard/creating-a-project"
- ]
+ "pages": ["guides/dashboard/creating-a-project"]
},
{
"group": "Migrations",
- "pages": [
- "guides/use-cases/upgrading-from-v2"
- ]
+ "pages": ["guides/use-cases/upgrading-from-v2"]
}
],
"footerSocials": {
@@ -428,4 +387,4 @@
"github": "https://github.com/triggerdotdev",
"linkedin": "https://www.linkedin.com/company/triggerdotdev"
}
-}
\ No newline at end of file
+}
diff --git a/docs/realtime/overview.mdx b/docs/realtime/overview.mdx
index 9521956422..4a102d7767 100644
--- a/docs/realtime/overview.mdx
+++ b/docs/realtime/overview.mdx
@@ -18,10 +18,9 @@ The Realtime API is built on top of [Electric SQL](https://electric-sql.com/), a
height="100%"
src="https://www.youtube.com/embed/RhJAbSGkS88?si=4Z72SfygeklNI3As"
title="YouTube video player"
- frameborder="0"
allow="accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
- referrerpolicy="strict-origin-when-cross-origin"
- allowfullscreen
+ referrerPolicy="strict-origin-when-cross-origin"
+ allowFullScreen
>
diff --git a/docs/replaying.mdx b/docs/replaying.mdx
index 8b21de6ac4..0e348dcd58 100644
--- a/docs/replaying.mdx
+++ b/docs/replaying.mdx
@@ -54,17 +54,4 @@ export const simpleChildTask = task({
### Bulk replaying
-You can replay multiple runs at once by selecting them from the table on the Runs page using the checkbox on the left hand side of the row. Then click the "Replay runs" button from the bulk action bar that appears at the bottom of the screen.
-
-This is especially useful if you have lots of failed runs and want to run them all again. To do this, first filter the runs by the status you want, then select all the runs you want to replay and click the "Replay runs" button from the bulk action bar at the bottom of the page.
-
-
\ No newline at end of file
+See [Bulk actions](/bulk-actions) for more information.
\ No newline at end of file
diff --git a/docs/video-walkthrough.mdx b/docs/video-walkthrough.mdx
index 217744bbaf..ae75a17fd7 100644
--- a/docs/video-walkthrough.mdx
+++ b/docs/video-walkthrough.mdx
@@ -4,7 +4,7 @@ description: "Go from zero to a working task in your Next.js app in 10 minutes."
---