* Alerts v1
* Encrypt alert webhook secrets and allow them to be generated by the server
* Alert v1 UI
* Remove unnecessary emails
* Move to using `@react-email/components`
* WIP slack alerts
* More slack alerts WIP
* Update pnpm lock after rebase
* Finish implementing Slack alerts
* Use a more error like emoji
* New secondary variant for the segmented control
* Added a simple checkbox style variant to storybook
* Style tweak to the segmented control
* UI improvements to the alert modal
* Use searchable Select for alerts. Changed default variant for SegmentedControl
* Secondary button now using secondary colour
* segmented control style tweak
* Improved the channel column in the alerts table
* Updated logo-mono.png
* Updated email styles
* Email templates updated to new styles
* Don’t log the decrypted secret
* await enqueing the deployment alert when an index fails
* await enqueing the timeout alert
---------
Co-authored-by: James Ritchie <james@jamesritchie.co.uk>
Co-authored-by: Matt Aitken <matt@mattaitken.com>
* Improvement: Added more context to Shopify webhook registering errors
Co-authored-by: Ahmed Ramadan <ahmedramadan1337@gmail.com>
* revert: shopify reference jobs
* fix: added error handling to some shopify client edge cases
* small changes to crud error handling
---------
Co-authored-by: Ahmed Ramadan <ahmedramadan1337@gmail.com>
Co-authored-by: nicktrn <55853254+nicktrn@users.noreply.github.com>
* Extract out useFilterTasks
* WIP on Combobox
* Revert "WIP on Combobox"
This reverts commit f0a9b2e57c67f24d5e0876630e17a54252ceb86b.
* Added ariakit
* Started adding a Listbox component
* Listbox WIP
* More WIP on the list box
* More work on the Listbox
* WIP on filterable Listbox using headless… but it’s going to be a nightmare to make it good. Wrong approach
* WIP using Ariakit
* Multiple selection working
* WIP in reworking it so search is built in and it’s easier to use
* Nicer API for listbox
* Allow sections to be rendered with filtering
* More progress on the styling of the menu
* The empty state
* Removed focus outline
* Allow filtering based on the section title
* Render the shortcut correctly
* Allow passing static children to Select and render a separator if a section has no title
* Static example and added subtle focus
* Allow static data with no items array passed in
* Allow shortcuts on select items
* Only how heading if true
* Tooltip for keyboard shortcut
* useShortcutKeys fixes
- Can be passed an undefined definition (so we render the same number of hooks always).
- Fix for enabledOnInputElements not being used…
* Shortcut keys working with lists
* Don’t render shortcut numbers higher than 0
* More improvements
* WIP on a Link row
* Nicer API for the children function
* Much nicer shortcut key support
* Separated SelectTrigger out
* Heading separated out
* More styled elements created
* Removed unused element
* Reordered statuses
* Added search context
* Fixes for default values
* Removed tab elements
* Combo box
* Simplified it more
* Started work on Filter menu
* Experiments with filter menu
* Filter menu proof of concept working
* Nice hook for using a search param
* The escape key goes back to the previous menu
* Added filter page to storybook
* Added other variants
* Renamed Select file to OldSelect, implemented Feedback form
* Added placeholder support
* Added an optional dropdown icon (defaults to a chevron down)
* Feedback new Select
* Feedback just use static items
* New project page
* Renamed storybook pages
* Lots of progress on the new run filters
* Added new tasks filters
* Show the applied filters
* Added period filtering
* Fix for escape resetting the period value to the previous value when escape is pressed
* Show the Clear button sooner
* Removed unused code
* Reworked useSearchParams so multiple values can be set at once…
* Renamed file: OldSelect -> SImpleSelect
* Fix for new Select not working in forms because props weren’t being passed through
* New Select on the schedules page
* Better layout when there are lots of run filters
* Many style improvements to run filters
* Status filter allows you to select as well
* Rolled out the menus for the other files
* Minor improvements to schedule page and page padding
* Latest lockfile
* fix spacing for delete hints
* don't try to resume deps on wait resume
* sending duration wait resumes is not an error anymore
* set correct status with new wait resume flow
* cancel checkpoint schema v2
* don't mix messages and schemas
* prevent unintended case fallthrough in tree view
* completely switch to platform-led duration wait resumes
* prevent infinite restores
* some entries for the catalog
* add pg to additional packages
* add checkpoint safe timeout
* prevent duplicate spans after restore
* wait for post start
* add sdk version to deploy tab
* fail on impossible checkpoint scenarios
* remove debug logs
* TaskListPresenter: if there are no tasks then don’t do stats queries
* RunListPresenter, use BasePresenter and the read replica
* Added populate script
* Simplified the Runs list query, added live timer
* Added TaskRun indexes for the RunList
* Status can’t be null now we’re using the TaskRun status
* Use defer so the page loads and shows a spinner
* Improved the loading style
* Get rid of latest run info from the tasks table super slow
* Fix for the activity graph tooltip getting clipped
* Added a code comment crediting the GitHub issue with the portal fix
* Add search to the tasks list
* Padding
* Fix for the schedules columns not being UTC
* Remove unused function
* lotsOfLogs task now outputs much larger logs
* Removed tree view collapse/expand animation
* JSDocs for useDebounce
* WIP moving filtering into the state
* Reworked the reducer to do the filtering
* Fix for #1066. Correct environment username if dev
* WIP changing the form
* WIP on the form
* WIP on repository
* Adding environment variables en masse is working
* WIP on pasting
* useList hook with reducer
* Got bulk insert working with pasting… it was a pain
* Allow overwriting of values
* Set a max height on the new env var form
* Fix for “overridden” spelling mistake
* Make the task function names grey instead of yellow
* The task page now shows each task once
* Blankline
* WIP on activity bars
* Correct size of the graphs
* Add data for all days, even if there are no runs
* Activity graph is working and has a tooltip
* No activity label
* Got the bar bg working
* Activity chart now has a bg
* Added a compound id to make the activity graphs appear faster
* Improvements to the activity graph
* Tried to disable the bg from animating
* Added read replica support to the app, using Nick’s code from his batching PR
* Added the read replica to BasePresenter
* Added the queued and running columns to the Tasks list
* Added avg duration column
* Included completed but failed runs in the average duration
* Get rid of the old useDevEnvironment hook and remove API keys from the projects query
* Unified getting environment info to using a function and doing it in presenters
* Removed the path from the tasks table
* Onboarding for dev for 2nd+ user. Improved environment sorting.
* Removed log
* Improved the spacing
* Enable staging for new v3 projects
* Adds support for `emitDecoratorMetadata: true` and `experimentalDecorators: true` in your tsconfig
* Implement task.onSuccess/onFailure and config.onSuccess/onFailure
* Added onStart and more docs for lifecycle functions
* Use onStart instead of init for TypeORM
* prettier login command output
* fix for trying to login again after revoking cli token
* changeset
* improve errors when logging in with revoked or invalid token
* fix builds.. again
* Fixes an issue that was treating v2 trigger directories as v3
* Make msw a normal dependency (for now) to fix Module Not Found error in Next.js.
* Extract out all the zod* stuff from core so the SDK does not import it
* Add a changeset
* Fixing typecheck errors in the webapp
* Export the Task and TaskOptions types
* Extract additional exports from core/v3 that aren’t used in the SDK
* Move to our global system from AsyncLocalStorage for the current task context storage
* Update the esbuild core bundling plugin for the new core v3 exports
* Fix v3 CLI telemetry
* Add support for tasks located in subdirectories inside trigger dirs
* Remove the env var check during deploy (too many false negatives)
* fix package manager detection
* fix cli update check while in beta
* add update command and warn on mismatches
* update fixes and better integration with dev and deploy
* fix for ci
* update docs
* changeset
* be more specific about prompts before updates
* fail on version mismatch during ci
* update github actions docs
* fix package manager copypasta
* remove ncu
* ignore companyicons
* improve warnings and errors
* Query param for span using history.replaceState is working
* When clicking again on a node, don’t collapse it
* Close the span view using the same replacing of the search param
* Conditional rendering of the resize panels was causing the tree view re-rendering and collapsing…
* Live reloading moved to where the parent label is
* Span action bar is now deeper
* WIP on trace view navigation changes with shortcuts
* Shortcuts for expanding and collapsing en masse
* Number keys expand/collapse levels
* Changed duration toggle to a shortcut key
* Option + click expands/collapse at that level
* Option/alt left/right expands/collapse at that level
* Removed unused imports
* Link from the runs table to the specific span
* Latest lockfile
* Sorted imports
* When doing a test link directly to a span
* Replay links to the span
* CLI log links go directly to a span
* Keyboard shortcuts are in a popover if the width is narrow
* If holding alt only collapse level
* Don’t expand the individual node if you’re holding alt
* fix additionalFiles for paths up the tree
* warn if additionalFiles pattern produced no matches
* improve deploy warnings and errors, fail early
* changeset
* Fixes various issues with triggerAndWait and batchTriggerAndWait
When using idempotency keys, triggerAndWait and batchTriggerAndWait will still work even if the existing runs have already been completed (or even partially completed, in the case of batchTriggerAndWait)
- TaskRunExecutionResult.id is now the run friendlyId, not the attempt friendlyId
- A single TaskRun can now have many batchItems, in the case of batchTriggerAndWait while using idempotency keys
- A run’s idempotencyKey is now added to the ctx as well as the TaskEvent and displayed in the span view
- When resolving batchTriggerAndWait, the runtimes no longer reject promises, leading to an error in the parent task
* Remove the default queue concurrency limit as we now have env and org concurrency limits
* Use the run friendlyId in the completion result id
* Added some error logging
* graceful exit with timeout
* handle and display graceful timeout errors
* fix for very long waits
* changeset
* increase termination grace period to an hour
* fix dev dependecy resumes
* add catalog entry with multiple trigger waits
* update docker provider lifecycle command
* switch to x for clearing run filters
* Revert "fix dev dependecy resumes"
This reverts commit b4061f2ae71f21889adcf061928e2e77c436f0ed.
* fix dependency resumes, properly this time
* add catalog entry for dependency waits in loops
* advice in docs re parallel dependency waits
* fix link from v3 to v2 docs
* move lifecycle command logging to debug only
* Removed batchOptions from the trigger options and the docs
---------
Co-authored-by: Matt Aitken <matt@mattaitken.com>
* add custom validation to db url env vars
* extract schema from db url and use in all raw queries
* use qualified names in scheduling raw queries
* cook a few raw queries
* Added missing raw query schema specifier to DeploymentListPresenter
---------
Co-authored-by: Matt Aitken <matt@mattaitken.com>
I’ve also added a “rebalancer worker” that will periodically rebalance parent queues, in case have been any issues with rebalancing (basically a “sweeper of entropy” process)
* Improve the SDK function types and expose a new APIError instead of the APIResult type
* Skip triggering scheduled tasks if the task isn’t found in the current deployment
Also fixes an issue when editing the environments of a schedule
* Database schema and migrations for schedules
* Added schedules to the side menu
* The pagination can optionally hide the page numbers for a compactive mode
* Filters for the schedule page
* Added triggerSource (“STANDARD”, “SCHEDULED”) to BackgroundWorkerTask
* Added the ability to disabled a LinkButton
* Started work on the schedule page
* Environment buttons
* The new schedule form styles
* Added a cxouple of extra fields
* Allow a checkbox to have a rich label
* Added cronstrue package to the webapp
* WIP creating tasks using the form
* Improved the form styling
* Creating schedules is working in the UI
* Minor improvements
* Basic schedule table is displaying
* Creating tasks with triggerSource = scheduled. Refactored how task metadata is stored and accessed to be cleaner
* Resource route
* Fixes in the form
* Added a gap between the environments
* WIP on OpenAI generating CRON expressions
* AI generated CRON expressions is working
* Fix for the CRON field being uneditable after an AI generation
* Improvements
* Table padding
* useThrottle now behaves correctly
* Added filtering to the schedules list
* Improved the layout and fixed CRON search
* Fixed pagination for the schedules list. Just use a regular Prisma query
* Page size of 20
* Added links to the schedule rows
* Get rid of the Last run column for now
* Implement triggered scheduled tasks
Also implemented superjson payloads and dev runtime environment “presence” with RuntimeEnvironmentSession
* Move CronPattern and CreateSchedule into a common client-accessible file
* Latest UI changes
* Fix for creating a task schedule with a blank dedup key
* Refactor the human to cron stuff into a separate file and use json_object OpenAI response format
* Fix for trying to use a hook on the server-side…
* A couple of fixes to the new schedule form
* WIP on viewing a scheduled run
* Make the filters all optional
* Use the RunListPresenter from the schedule presenter
* Display a table of runs… the wrong runs but still
* Runs from the schedule
* Deleting schedules from the UI
* Tidied imports and fixed name of options object
* Disabling a schedule
* Editing schedules
* Tidied imports
* Added icons to the task list, needs some design love
* Added a tooltip for CRON pattersn
* Show the last run in the schedules table
* Some tweaks
* Added a placeholder to the CRON AI field
* Improved the trigger source icon
* Dim out disabled schedules
* Scheduled tasks have the correct icon in a run
* Added the task source icon to the test task list
* Added the date field component to storybook
* Style improvements to the date field
* Implement Task Schedule API
* added a medium sized variant to the date field
* Fixed replay run for superjson payload types
Also now linking from the replaying run to the original run (using span links)
Also added a project metrics prometheus endpoint to detect the state of the queues
* WIP on allowing different forms for testing
* If you pass a string to prettyPrintPacket which is json or superjson, safeParse it first
* Test page, deal json and superjson. Started splitting UI for schedules
* WIP on schedule form
* Removed the Label from the DateField
* WIP on test schedule form
* Fix for the runs page showing the wrong message when there are no runs from time filtering
* Removed labels from the DateField
* Fixes for the form
* Test runs are working for schedules
* Fix for nextScheduledTimestamps in triggerScheduledTask
* Implement idempotency key support and fix issue with cancelled runs causing concurrency usage
* Added API documentation for the schedule API
* Remove log
* Removed console log from runs page
* Transform the recent runs test data on the server
* Fix for hydration mismatch
* Current date as the default for the test form
* Recent payloads working
* Delete schedule modal
* Deal with empty strings from the form
* Set the initial value for the scheduled test form
* Add option to print console logs in the dev CLI locally (issue #1014)
* Export queue from the SDK
* Fix for schedules list when you have no schedule tasks
* Blank states improved
* Make task schedules more generic, to support additional schedule generators in the future
* Removed log from maqrs
* Removed “v3/schedules” export from the SDK
---------
Co-authored-by: Eric Allam <eallam@icloud.com>
Co-authored-by: James Ritchie <james@jamesritchie.co.uk>
* fix: otlp-importer script
* update pluginPath
* Refactor script to ensure compatibility with both Windows and Unix platforms
* Revert command changes
* Fix: Init command was failing on Windows because of bad template paths
* Removed resolveInternalFilePath
* Path fixes for the dev command
* Fix for the import paths being wrong on Windows because the contain backslashes
* The metaOutputKey should have forward slashes in it
* Print the banner immediately, otherwise with bad internet you get a blank console for a long time
* Try normalizing the trigger.config import path
* Allow tsx and jsx files
* Improved task file names and paths
* Removed closing bracket for the upgrade message
* Log out the metafile outputs for debugging
* Log out the entryPointContents before esbuild
* Log the metafile out
* ballmerize the cli
* replace npm-watch with plain old nodemon
* fix text inputs on windows
* changeset
---------
Co-authored-by: Kritik Jiyaviya <kritikjiyaviya07@gmail.com>
Co-authored-by: Matt Aitken <matt@mattaitken.com>
* add waiting for deploy status
* sort tasks filter
* marqs: optional timestamp on enqueue
* add new status to consts
* detect and execute tasks waiting for deploy
* display runs list even without any deploys
* ensure we only execute after the run creation tx has completed
* ensure correct execution order after waiting for deploy
* Don’t swallow some error messages when deploying
* Try and resolve dependency versions using pnpm/npm/yarn
* Adding some debug logs around dependency resolution
* Use npm list instead of npm show to resolve deps
* Improve the dependency resolution
* WIP on replaying a task from the run page
* Don’t pass the existing runs idempotency key, it will cause the replay to always return the original run
* Replay from the run list
* Don’t use fetchers in the replay/cancel dialogs
* API endpoint for replaying a run
* REST API docs (mostly coming soon) but added replay run
* replayRun function added to the SDK
* Cancel run added to the SDK
* v3-catalog file to test canceling and replaying
* Changed the SDK to be runs.replay and runs.cancel
* Removed comment
* Latest lockfile
* WIP fixing pnpm nested install strat
* Add changeset
* Pass (and log) cwd during background worker initialization
* Log out the env
* manually add the .pnpm/node_modules to NODE_PATH if in a pnpm repo
* Remove supports color dep
* WIP on adding versioning to the docs to make it less confusing
* Link to v3 from v2 and vice versa. Also added a warning to the v2 docs
* Make v3 the default
* Trigger config docs about bundling
* Next stpe to triggering guide from tasks overview
* Server actions guidance for triggering
* Moved the trigger.config docs to the end of fundamentals
* Upgrades to MarQS
- It’s “queue choosing” algorithm is now MUCH better (pretty much didn’t work before) and should be performant even when we have a bunch of prod queues
- There are now concurrency limits at the environment and organization level, as well as the task/queue level. So if any of them are at capacity the message won’t be dequeued. This means we can have an org wide concurrency limit, as well as different limits for dev/prod/staging
- I’ve added an admin API that can be used to update the org/env concurrency limits
* More MarQS upgrades
- Extract the queue priortity choosing strategy into an interface
- Implement a much better weighted average strategy
- “Slide the window” of queue candidates if the parent queue sends all at-capacity queues (so we won’t get stuck attempting to choose the same 12 full queues)
- Added some unit tests for the priority stuff
- Added some ideas for expanding the priority choosing strategy with more dynamic features
* Fixes an issue with the shared queue consumer relying on the queue name to get the env id
* Better error output when an ESM only package is required
* Add better errors for npm package errors, and bring deploy errors to the dev CLI
* Handle depot build errors and write out a temporary file to view the build logs
* Add changeset
* v3: implement configurable log levels via config file and TRIGGER_LOG_LEVEL
Also, test runs automatically set the TRIGGER_LOG_LEVEL to debug
* Fix type error and changeset
* Added a Node.js runtime check for the CLI dev command
* v3: Dynamically import superjson and fix some bundling issues
* Added changeset
* Better error handling in the registry proxy and catch uncaught exceptions and unhandled promise rejections instead of crashing the server
* Await the prettyPrintPackage
* add and use machine config
* assign tasks to worker nodes only
* add secure flag to zod connection
* changeset
* add pre stop hook
* don't use secure connection by default
* pass more identifiers to provider and apply labels
* Add missing API keys docs and link from the web app to them. Renamed Server API keys to Secret keys
* Correct link to env var docs
* Duplicate image fixed on environment variables docs
Adds support for `emitDecoratorMetadata: true` and `experimentalDecorators: true` in your tsconfig using the [`@anatine/esbuild-decorators`](https://github.com/anatine/esbuildnx/tree/main/packages/esbuild-decorators) package. This allows you to use libraries like TypeORM:
```ts orm/index.ts
import "reflect-metadata";
import { DataSource } from "typeorm";
import { Entity, Column, PrimaryColumn } from "typeorm";
@Entity()
export class Photo {
@PrimaryColumn()
id!: number;
@Column()
name!: string;
@Column()
description!: string;
@Column()
filename!: string;
@Column()
views!: number;
@Column()
isPublished!: boolean;
}
export const AppDataSource = new DataSource({
type: "postgres",
host: "localhost",
port: 5432,
username: "postgres",
password: "postgres",
database: "v3-catalog",
entities: [Photo],
synchronize: true,
logging: false,
});
```
And then in your trigger.config.ts file you can initialize the datasource using the new `init` option:
```ts trigger.config.ts
import type { TriggerConfig } from "@trigger.dev/sdk/v3";
Updates the `trigger`, `batchTrigger` and their `*AndWait` variants to use the first parameter for the payload/items, and the second parameter for options.
We've also changed the API of the `triggerAndWait` result. Before, if the subtask that was triggered finished with an error, we would automatically "rethrow" the error in the parent task.
Now instead we're returning a `TaskRunResult` object that allows you to discriminate between successful and failed runs in the subtask:
When using idempotency keys, triggerAndWait and batchTriggerAndWait will still work even if the existing runs have already been completed (or even partially completed, in the case of batchTriggerAndWait)
- TaskRunExecutionResult.id is now the run friendlyId, not the attempt friendlyId
- A single TaskRun can now have many batchItems, in the case of batchTriggerAndWait while using idempotency keys
- A run’s idempotencyKey is now added to the ctx as well as the TaskEvent and displayed in the span view
- When resolving batchTriggerAndWait, the runtimes no longer reject promises, leading to an error in the parent task
Fixes an issue that caused failed tasks when resuming after calling `triggerAndWait` or `batchTriggerAndWait` in prod/staging (this doesn't effect dev).
The version of Node.js we use for deployed workers (latest 20) would crash with an out-of-memory error when the checkpoint was restored. This crash does not happen on Node 18x or Node21x, so we've decided to upgrade the worker version to Node.js21x, to mitigate this issue.
You'll need to re-deploy to production to fix the issue.
> The Trigger.dev v3 developer preview is now open. For more information and to get early access, check out our [developer preview launch post](https://trigger.dev/blog/v3-developer-preview-launch/).
## About Trigger.dev
Create long-running jobs directly in your codebase with features like API integrations, webhooks, scheduling and delays.
@@ -48,30 +50,6 @@ View every Task in every Run so you can tell exactly what happened.
Easily integrate with hundreds of third-party APIs – including your own. Use API keys (which never leave your server) or let us handle OAuth for you. Install our integration packages and easily subscribe to webhooks and perform common tasks, or you can easily use your existing favorite Node.JS SDKs and get resumability and idempotency through our `runTask` function.
## Our progress
We’re building the most comprehensive and easy-to-use background jobs framework for developers.
Click the links to join the discussions about our upcoming features.
options={concurrencyTiers.map((c)=>({label:`Up to ${c.upto}`,value: c.code}))}
fullWidth
value={concurrentBracketCode}
variant="primary"
onChange={(v)=>setConcurrentBracketCode(v)}
/>
<divclassName="py-6">
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.