Commit Graph

4742 Commits

Author SHA1 Message Date
github-actions[bot] 0a845767a0 chore: Update version for release (beta) (#1049)
* chore: Update version for release (beta)

* update lockfile

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: nicktrn <55853254+nicktrn@users.noreply.github.com>
@trigger.dev/airtable@3.0.0-beta.16 @trigger.dev/astro@3.0.0-beta.16 @trigger.dev/cli@3.0.0-beta.16 @trigger.dev/core-backend@3.0.0-beta.16 @trigger.dev/core@3.0.0-beta.16 @trigger.dev/eslint-plugin@3.0.0-beta.16 @trigger.dev/github@3.0.0-beta.16 @trigger.dev/hono@3.0.0-beta.16 @trigger.dev/integration-kit@3.0.0-beta.16 @trigger.dev/linear@3.0.0-beta.16 @trigger.dev/nextjs@3.0.0-beta.16 @trigger.dev/openai@3.0.0-beta.16 @trigger.dev/otlp-importer@3.0.0-beta.16 @trigger.dev/plain@3.0.0-beta.16 @trigger.dev/react@3.0.0-beta.16 @trigger.dev/remix@3.0.0-beta.16 @trigger.dev/replicate@3.0.0-beta.16 @trigger.dev/resend@3.0.0-beta.16 @trigger.dev/sdk@3.0.0-beta.16 @trigger.dev/sendgrid@3.0.0-beta.16 @trigger.dev/shopify@3.0.0-beta.16 @trigger.dev/slack@3.0.0-beta.16 @trigger.dev/stripe@3.0.0-beta.16 @trigger.dev/supabase@3.0.0-beta.16 @trigger.dev/sveltekit@3.0.0-beta.16 @trigger.dev/typeform@3.0.0-beta.16 @trigger.dev/yalt@3.0.0-beta.16 trigger.dev@3.0.0-beta.16 @trigger.dev/nestjs@3.0.0-beta.16 @trigger.dev/express@3.0.0-beta.16 @trigger.dev/testing@3.0.0-beta.16
2024-04-21 15:07:11 +01:00
nicktrn ed2a26c865 v3: fix additionalFiles, uncaught exceptions, and improve errors (#1048)
* fix additionalFiles for paths up the tree

* warn if additionalFiles pattern produced no matches

* improve deploy warnings and errors, fail early

* changeset
2024-04-21 15:03:00 +01:00
Eric Allam 4a68e71583 Fix pnpm lock file @trigger.dev/airtable@3.0.0-beta.15 @trigger.dev/cli@3.0.0-beta.15 @trigger.dev/core-backend@3.0.0-beta.15 @trigger.dev/core@3.0.0-beta.15 @trigger.dev/eslint-plugin@3.0.0-beta.15 @trigger.dev/express@3.0.0-beta.15 @trigger.dev/github@3.0.0-beta.15 @trigger.dev/hono@3.0.0-beta.15 @trigger.dev/integration-kit@3.0.0-beta.15 @trigger.dev/nestjs@3.0.0-beta.15 @trigger.dev/nextjs@3.0.0-beta.15 @trigger.dev/openai@3.0.0-beta.15 @trigger.dev/otlp-importer@3.0.0-beta.15 @trigger.dev/plain@3.0.0-beta.15 @trigger.dev/react@3.0.0-beta.15 @trigger.dev/remix@3.0.0-beta.15 @trigger.dev/replicate@3.0.0-beta.15 @trigger.dev/resend@3.0.0-beta.15 @trigger.dev/sdk@3.0.0-beta.15 @trigger.dev/sendgrid@3.0.0-beta.15 @trigger.dev/shopify@3.0.0-beta.15 @trigger.dev/slack@3.0.0-beta.15 @trigger.dev/stripe@3.0.0-beta.15 @trigger.dev/supabase@3.0.0-beta.15 @trigger.dev/sveltekit@3.0.0-beta.15 @trigger.dev/testing@3.0.0-beta.15 @trigger.dev/typeform@3.0.0-beta.15 @trigger.dev/yalt@3.0.0-beta.15 trigger.dev@3.0.0-beta.15 @trigger.dev/linear@3.0.0-beta.15 @trigger.dev/astro@3.0.0-beta.15 2024-04-19 19:20:01 +01:00
github-actions[bot] b657eb6555 chore: Update version for release (beta) (#1044)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-04-19 19:19:11 +01:00
Eric Allam 62c9a5b712 Fix restoring after waiting for task/batch 2024-04-19 18:59:02 +01:00
Matt Aitken f339b41ef3 Added some basic Defer migration details for CRON 2024-04-19 18:30:58 +01:00
Eric Allam ae40ce3995 Fix the management file 2024-04-19 16:14:57 +01:00
Eric Allam 374edef020 Updates the trigger, batchTrigger and their *AndWait variants to use the first parameter for the payload/items, and the second parameter for options (#1045)
Also always returns a `TaskRunResult` object from `triggerAndWait` instead of rethrowing subtask errors in the parent
2024-04-19 14:51:51 +01:00
Eric Allam b82db67b81 Add additional logging around cleaning up dev workers, and always kill them after 5 seconds if they haven't already exited 2024-04-19 11:14:20 +01:00
Eric Allam 26093896d2 v3: Fixes for using (batch)triggerAndWait with idempotency keys (#1043)
* 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
2024-04-19 10:54:43 +01:00
github-actions[bot] e7bd1ee676 chore: Update version for release (beta) (#1042)
* chore: Update version for release (beta)

* update lockfile

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: nicktrn <55853254+nicktrn@users.noreply.github.com>
@trigger.dev/airtable@3.0.0-beta.14 @trigger.dev/astro@3.0.0-beta.14 @trigger.dev/cli@3.0.0-beta.14 @trigger.dev/core-backend@3.0.0-beta.14 @trigger.dev/core@3.0.0-beta.14 @trigger.dev/eslint-plugin@3.0.0-beta.14 @trigger.dev/express@3.0.0-beta.14 @trigger.dev/github@3.0.0-beta.14 @trigger.dev/hono@3.0.0-beta.14 @trigger.dev/integration-kit@3.0.0-beta.14 @trigger.dev/linear@3.0.0-beta.14 @trigger.dev/nestjs@3.0.0-beta.14 @trigger.dev/nextjs@3.0.0-beta.14 @trigger.dev/openai@3.0.0-beta.14 @trigger.dev/otlp-importer@3.0.0-beta.14 @trigger.dev/plain@3.0.0-beta.14 @trigger.dev/react@3.0.0-beta.14 @trigger.dev/remix@3.0.0-beta.14 @trigger.dev/replicate@3.0.0-beta.14 @trigger.dev/resend@3.0.0-beta.14 @trigger.dev/sdk@3.0.0-beta.14 @trigger.dev/sendgrid@3.0.0-beta.14 @trigger.dev/shopify@3.0.0-beta.14 @trigger.dev/slack@3.0.0-beta.14 @trigger.dev/stripe@3.0.0-beta.14 @trigger.dev/supabase@3.0.0-beta.14 @trigger.dev/sveltekit@3.0.0-beta.14 @trigger.dev/testing@3.0.0-beta.14 @trigger.dev/typeform@3.0.0-beta.14 @trigger.dev/yalt@3.0.0-beta.14 trigger.dev@3.0.0-beta.14
2024-04-18 17:53:33 +01:00
nicktrn 584c7da5df v3: prod worker graceful shutdown (#1034)
* graceful exit with timeout

* handle and display graceful timeout errors

* fix for very long waits

* changeset

* increase termination grace period to an hour
2024-04-18 15:46:14 +01:00
nicktrn c9e1a3e9c5 v3: fix dependency trigger and wait (#1030)
* 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>
2024-04-18 14:48:43 +01:00
nicktrn 2f5b4a8471 v3: fix raw queries for custom schemas (#1033)
* 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>
2024-04-18 12:01:38 +01:00
Eric Allam 69f6891687 Fixed rebalancing when message is acked
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)
2024-04-17 21:00:39 +01:00
Matt Aitken acd7681e58 Scheduled task docs (#1039)
* Scheduled docs v1

* Improved copy

* Rejigged the docs some more. Added a dynamic section
2024-04-17 17:41:16 +01:00
Eric Allam 180a5ef01d Fix pnpm lock file @trigger.dev/airtable@3.0.0-beta.13 @trigger.dev/astro@3.0.0-beta.13 @trigger.dev/cli@3.0.0-beta.13 @trigger.dev/core-backend@3.0.0-beta.13 @trigger.dev/eslint-plugin@3.0.0-beta.13 @trigger.dev/express@3.0.0-beta.13 @trigger.dev/github@3.0.0-beta.13 @trigger.dev/hono@3.0.0-beta.13 @trigger.dev/integration-kit@3.0.0-beta.13 @trigger.dev/linear@3.0.0-beta.13 @trigger.dev/nextjs@3.0.0-beta.13 @trigger.dev/openai@3.0.0-beta.13 @trigger.dev/otlp-importer@3.0.0-beta.13 @trigger.dev/react@3.0.0-beta.13 @trigger.dev/remix@3.0.0-beta.13 @trigger.dev/replicate@3.0.0-beta.13 @trigger.dev/resend@3.0.0-beta.13 @trigger.dev/sdk@3.0.0-beta.13 @trigger.dev/sendgrid@3.0.0-beta.13 @trigger.dev/shopify@3.0.0-beta.13 @trigger.dev/stripe@3.0.0-beta.13 @trigger.dev/sveltekit@3.0.0-beta.13 @trigger.dev/testing@3.0.0-beta.13 @trigger.dev/typeform@3.0.0-beta.13 @trigger.dev/yalt@3.0.0-beta.13 trigger.dev@3.0.0-beta.13 @trigger.dev/slack@3.0.0-beta.13 @trigger.dev/nestjs@3.0.0-beta.13 @trigger.dev/core@3.0.0-beta.13 @trigger.dev/plain@3.0.0-beta.13 @trigger.dev/supabase@3.0.0-beta.13 2024-04-17 16:34:14 +01:00
github-actions[bot] 62544d3234 chore: Update version for release (beta) (#1038)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-04-17 16:33:23 +01:00
Eric Allam 9b045071d8 Better errors when trying to delete a schedule that doesn’t exist 2024-04-17 16:05:51 +01:00
Eric Allam 618d2207c6 Fixed the deployed scheduled task check by looking at the slug, not the task.id 2024-04-17 15:38:39 +01:00
Eric Allam 36d8bee14a Don’t delete task runs if the attached task schedule or instance is deleted 2024-04-17 15:26:35 +01:00
Eric Allam 44e1b87547 v3: various schedule fixes (#1040)
* 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
2024-04-17 15:10:23 +01:00
Matt Aitken 71b0ef8f77 Don’t allow editing the Deduplication key when updating a schedule 2024-04-17 14:42:18 +01:00
Matt Aitken f66543c9c7 When updating a schedule in the UI, it now says “Schedule updated” 2024-04-17 14:33:11 +01:00
Matt Aitken 03b104a3d5 Added JSDocs to the schedule options in the SDK 2024-04-17 14:25:40 +01:00
Eric Allam fde939a30e Fixed empty strings making their way into schedule externalId 2024-04-17 11:59:29 +01:00
Matt Aitken 4986bfda2e Scheduled tasks (#1036)
* 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>
2024-04-17 11:14:23 +01:00
Matt Aitken a3abe4ca08 Documentation edits made through Mintlify web editor 2024-04-17 09:08:08 +01:00
Matt Aitken fad32a79dd Documentation edits made through Mintlify web editor 2024-04-17 09:07:16 +01:00
Matt Aitken 9d843caf83 Documentation edits made through Mintlify web editor 2024-04-16 14:33:07 +01:00
nicktrn 5eaf7bca34 don't require git for build 2024-04-12 19:02:38 +01:00
nicktrn 4a0368dec3 lockfile @trigger.dev/airtable@3.0.0-beta.12 @trigger.dev/astro@3.0.0-beta.12 @trigger.dev/cli@3.0.0-beta.12 @trigger.dev/core-backend@3.0.0-beta.12 @trigger.dev/core@3.0.0-beta.12 @trigger.dev/eslint-plugin@3.0.0-beta.12 @trigger.dev/express@3.0.0-beta.12 @trigger.dev/github@3.0.0-beta.12 @trigger.dev/hono@3.0.0-beta.12 @trigger.dev/integration-kit@3.0.0-beta.12 @trigger.dev/linear@3.0.0-beta.12 @trigger.dev/nestjs@3.0.0-beta.12 @trigger.dev/nextjs@3.0.0-beta.12 @trigger.dev/openai@3.0.0-beta.12 @trigger.dev/otlp-importer@3.0.0-beta.12 @trigger.dev/plain@3.0.0-beta.12 @trigger.dev/react@3.0.0-beta.12 @trigger.dev/remix@3.0.0-beta.12 @trigger.dev/resend@3.0.0-beta.12 @trigger.dev/sendgrid@3.0.0-beta.12 @trigger.dev/shopify@3.0.0-beta.12 @trigger.dev/slack@3.0.0-beta.12 @trigger.dev/stripe@3.0.0-beta.12 @trigger.dev/supabase@3.0.0-beta.12 @trigger.dev/sveltekit@3.0.0-beta.12 @trigger.dev/testing@3.0.0-beta.12 @trigger.dev/typeform@3.0.0-beta.12 @trigger.dev/yalt@3.0.0-beta.12 trigger.dev@3.0.0-beta.12 @trigger.dev/sdk@3.0.0-beta.12 @trigger.dev/replicate@3.0.0-beta.12 2024-04-12 18:18:49 +01:00
github-actions[bot] f10f120e55 chore: Update version for release (beta) (#1028)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-04-12 18:18:03 +01:00
nicktrn d3a18fbdf6 v3: cli and misc fixes for windows (#1027)
* 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>
2024-04-12 18:12:01 +01:00
nicktrn b82a07ad1c add missing ca certs to prod worker 2024-04-12 18:07:54 +01:00
Eric Allam fa81bf356a Fix pnpm lock file @trigger.dev/airtable@3.0.0-beta.11 @trigger.dev/astro@3.0.0-beta.11 @trigger.dev/cli@3.0.0-beta.11 @trigger.dev/core-backend@3.0.0-beta.11 @trigger.dev/core@3.0.0-beta.11 @trigger.dev/eslint-plugin@3.0.0-beta.11 @trigger.dev/express@3.0.0-beta.11 @trigger.dev/github@3.0.0-beta.11 @trigger.dev/hono@3.0.0-beta.11 @trigger.dev/integration-kit@3.0.0-beta.11 @trigger.dev/linear@3.0.0-beta.11 @trigger.dev/nestjs@3.0.0-beta.11 @trigger.dev/nextjs@3.0.0-beta.11 @trigger.dev/openai@3.0.0-beta.11 @trigger.dev/otlp-importer@3.0.0-beta.11 @trigger.dev/plain@3.0.0-beta.11 @trigger.dev/react@3.0.0-beta.11 @trigger.dev/remix@3.0.0-beta.11 @trigger.dev/replicate@3.0.0-beta.11 @trigger.dev/resend@3.0.0-beta.11 @trigger.dev/sdk@3.0.0-beta.11 @trigger.dev/sendgrid@3.0.0-beta.11 @trigger.dev/shopify@3.0.0-beta.11 @trigger.dev/slack@3.0.0-beta.11 @trigger.dev/stripe@3.0.0-beta.11 @trigger.dev/supabase@3.0.0-beta.11 @trigger.dev/sveltekit@3.0.0-beta.11 @trigger.dev/testing@3.0.0-beta.11 @trigger.dev/typeform@3.0.0-beta.11 @trigger.dev/yalt@3.0.0-beta.11 trigger.dev@3.0.0-beta.11 2024-04-12 12:34:32 +01:00
github-actions[bot] fec4dc3bef chore: Update version for release (beta) (#1025)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-04-12 12:34:02 +01:00
Eric Allam a80089c88f Fix the package version of trigger.dev with the rest of the @trigger.dev/* packages 2024-04-12 11:19:04 +01:00
nicktrn 63a643b7c9 v3: fix digest extraction (#1024)
* fix image digest extraction

* fix project ref cli arg override

* Create late-steaks-behave.md

---------

Co-authored-by: Eric Allam <eric@trigger.dev>
2024-04-12 11:10:52 +01:00
nicktrn efd970a901 v3: correctly handle triggering tasks prior to deploy (#1019)
* 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
2024-04-12 11:03:22 +01:00
Eric Allam 89a5e9f7da Move gc to it’s own admin endpoint 2024-04-11 16:24:40 +01:00
James Ritchie 404931e224 Made the message when you’re in a developer preview project punchier 2024-04-11 14:34:45 +01:00
Eric Allam 57bf98307a Run gc before taking heapsnapshot 2024-04-11 13:53:14 +01:00
Eric Allam 7551adfeb6 Add ability to disable tracing to test if it’s the cause of the memory leak 2024-04-11 13:14:02 +01:00
Matt Aitken 69117e8ba1 Re-arrange the mint.json file so the v3 docs become the default 2024-04-11 11:22:18 +01:00
Eric Allam b580d53b59 Better identifiy heap snapshots 2024-04-11 11:13:36 +01:00
Eric Allam d81e21d2ec Remove admin config endpoint 2024-04-11 10:44:26 +01:00
Matt Aitken 826a64fe6f If your dev run hasn’t started, display an info panel saying you need to run the CLI 2024-04-11 10:36:44 +01:00
Eric Allam d1849b0ea9 Adding admin config endpoint (temp) 2024-04-11 10:30:45 +01:00
Eric Allam 3aa634d2b8 Add a metric for number of event repo subscribers and project subscribers 2024-04-11 10:30:37 +01:00