Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
839d359
feat(reschedule): dedicated pages, withdrawal, and an auto-confirm th…
teetangh Jul 31, 2026
decc38e
fix(observability): initialise AND flush Sentry in cron job processes…
teetangh Aug 1, 2026
bbcd316
fix(trials): stop trial cancellation from deleting the payment (#1074)
teetangh Aug 1, 2026
9749b68
fix(scheduling): stamp schedulingTimezone from the owning consultant …
teetangh Aug 1, 2026
6256db8
feat(scheduling): open the slot picker on the session you clicked (#1…
teetangh Aug 1, 2026
6fb3601
fix(payments): cancellation and refunds across every booking type (#1…
teetangh Aug 1, 2026
5cf4ba1
fix(stream): session-keyed video rooms, unconditional media teardown,…
teetangh Aug 1, 2026
8516bd4
fix(stream): commit both clients in one settled state
teetangh Aug 1, 2026
1191bd5
fix(csp): allow Stream's real origins and stop 429ing violation reports
teetangh Aug 1, 2026
a042160
fix(appointments): gate Manage Timings on commitment, and give group …
teetangh Aug 1, 2026
ee40805
fix(offerings): open the editor for consultation and subscription plans
teetangh Aug 1, 2026
24955a8
fix(org-workspace): stop the billing page crashing on its own query key
teetangh Aug 1, 2026
7dc8081
docs(stream): correct the provider, CSP and troubleshooting docs
teetangh Aug 1, 2026
1c64bf8
feat(scheduling): preference-scored auto-allocation, never filtered (…
teetangh Aug 1, 2026
0df2ed5
Merge remote-tracking branch 'origin/dev' into fix/offering-editor
teetangh Aug 1, 2026
479eab5
Merge branch 'dev' into fix/stream-client-stability
teetangh Aug 1, 2026
da41d59
fix(offerings): keep editor chrome fixed while the form scrolls
teetangh Aug 1, 2026
ecb87b0
fix(offerings): sticky section nav, load plan by id, clear class star…
teetangh Aug 1, 2026
7d0ec9f
fix(scheduling): fill the slot-picker viewport without nested shell s…
teetangh Aug 1, 2026
a66026d
Merge pull request #1087 from Practitionist/fix/stream-client-stability
teetangh Aug 1, 2026
0009eda
Merge remote-tracking branch 'origin/dev' into fix/offering-editor
teetangh Aug 1, 2026
546592f
Merge pull request #1088 from Practitionist/fix/offering-editor
teetangh Aug 1, 2026
2ed1d91
chore(release): merge prod into the release branch
teetangh Aug 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .github/workflows/advance-program-cycles.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ jobs:
timeout-minutes: 10

env:
# #1066 — jobs run as bare Node processes, so Sentry.init only sees
# what the step env carries. Without the DSN the runner initialises
# a disabled client and every captureException is a no-op again.
NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN || secrets.SENTRY_DSN }}
NEXT_PUBLIC_SENTRY_ENVIRONMENT: production
DATABASE_URL: ${{ secrets.DATABASE_URL }}
DIRECT_URL: ${{ secrets.DIRECT_URL }}
# #476 — fail-closed cron lock: without these the job refuses to run.
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/alert-dispute-deadlines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@ jobs:
timeout-minutes: 10

env:
# #1066 — jobs run as bare Node processes, so Sentry.init only sees
# what the step env carries. Without the DSN the runner initialises
# a disabled client and every captureException is a no-op again.
NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN || secrets.SENTRY_DSN }}
NEXT_PUBLIC_SENTRY_ENVIRONMENT: production
# Database connection (required for Prisma)
DATABASE_URL: ${{ secrets.DATABASE_URL }}
# #476 cron locks load lib/redis at import — every job entry needs these
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/alert-orphaned-payments.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@ jobs:
timeout-minutes: 10

env:
# #1066 — jobs run as bare Node processes, so Sentry.init only sees
# what the step env carries. Without the DSN the runner initialises
# a disabled client and every captureException is a no-op again.
NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN || secrets.SENTRY_DSN }}
NEXT_PUBLIC_SENTRY_ENVIRONMENT: production
# Database connection (required for Prisma)
DATABASE_URL: ${{ secrets.DATABASE_URL }}
# #476 cron locks load lib/redis at import — every job entry needs these
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/archive-webhook-events.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@ jobs:
timeout-minutes: 15

env:
# #1066 — jobs run as bare Node processes, so Sentry.init only sees
# what the step env carries. Without the DSN the runner initialises
# a disabled client and every captureException is a no-op again.
NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN || secrets.SENTRY_DSN }}
NEXT_PUBLIC_SENTRY_ENVIRONMENT: production
# Database connection (required for Prisma)
DATABASE_URL: ${{ secrets.DATABASE_URL }}
# #476 cron locks load lib/redis at import — every job entry needs these
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/auto-complete-appointments.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@ jobs:
timeout-minutes: 10

env:
# #1066 — jobs run as bare Node processes, so Sentry.init only sees
# what the step env carries. Without the DSN the runner initialises
# a disabled client and every captureException is a no-op again.
NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN || secrets.SENTRY_DSN }}
NEXT_PUBLIC_SENTRY_ENVIRONMENT: production
# Database connection (required for Prisma)
DATABASE_URL: ${{ secrets.DATABASE_URL }}
# #476 cron locks load lib/redis at import — every job entry needs these
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/auto-renew-contracts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ jobs:
timeout-minutes: 10

env:
# #1066 — jobs run as bare Node processes, so Sentry.init only sees
# what the step env carries. Without the DSN the runner initialises
# a disabled client and every captureException is a no-op again.
NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN || secrets.SENTRY_DSN }}
NEXT_PUBLIC_SENTRY_ENVIRONMENT: production
DATABASE_URL: ${{ secrets.DATABASE_URL }}
# #476 cron locks load lib/redis at import — every job entry needs these
UPSTASH_REDIS_REST_URL: ${{ secrets.UPSTASH_REDIS_REST_URL }}
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/cascade-refund-earnings.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@ jobs:
timeout-minutes: 10

env:
# #1066 — jobs run as bare Node processes, so Sentry.init only sees
# what the step env carries. Without the DSN the runner initialises
# a disabled client and every captureException is a no-op again.
NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN || secrets.SENTRY_DSN }}
NEXT_PUBLIC_SENTRY_ENVIRONMENT: production
# Database connection (required for Prisma)
DATABASE_URL: ${{ secrets.DATABASE_URL }}
DIRECT_URL: ${{ secrets.DIRECT_URL }}
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/cleanup-abandoned-org-top-ups.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,11 @@ jobs:
timeout-minutes: 10

env:
# #1066 — jobs run as bare Node processes, so Sentry.init only sees
# what the step env carries. Without the DSN the runner initialises
# a disabled client and every captureException is a no-op again.
NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN || secrets.SENTRY_DSN }}
NEXT_PUBLIC_SENTRY_ENVIRONMENT: production
# Database connection (required for Prisma)
DATABASE_URL: ${{ secrets.DATABASE_URL }}
DIRECT_URL: ${{ secrets.DIRECT_URL }}
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/cleanup-abandoned-payments.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@ jobs:
timeout-minutes: 10

env:
# #1066 — jobs run as bare Node processes, so Sentry.init only sees
# what the step env carries. Without the DSN the runner initialises
# a disabled client and every captureException is a no-op again.
NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN || secrets.SENTRY_DSN }}
NEXT_PUBLIC_SENTRY_ENVIRONMENT: production
# Database connection (required for Prisma)
DATABASE_URL: ${{ secrets.DATABASE_URL }}
DIRECT_URL: ${{ secrets.DIRECT_URL }}
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/cleanup-auth-tokens.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@ jobs:
timeout-minutes: 10

env:
# #1066 — jobs run as bare Node processes, so Sentry.init only sees
# what the step env carries. Without the DSN the runner initialises
# a disabled client and every captureException is a no-op again.
NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN || secrets.SENTRY_DSN }}
NEXT_PUBLIC_SENTRY_ENVIRONMENT: production
# Database connection (required for Prisma)
DATABASE_URL: ${{ secrets.DATABASE_URL }}
# #476 cron locks load lib/redis at import — every job entry needs these
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/cleanup-invalid-appointments.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@ jobs:
timeout-minutes: 10

env:
# #1066 — jobs run as bare Node processes, so Sentry.init only sees
# what the step env carries. Without the DSN the runner initialises
# a disabled client and every captureException is a no-op again.
NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN || secrets.SENTRY_DSN }}
NEXT_PUBLIC_SENTRY_ENVIRONMENT: production
# Database connection (required for Prisma)
DATABASE_URL: ${{ secrets.DATABASE_URL }}
# #476 cron locks load lib/redis at import — every job entry needs these
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/cleanup-old-stream-recordings.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,11 @@ jobs:
timeout-minutes: 10

env:
# #1066 — jobs run as bare Node processes, so Sentry.init only sees
# what the step env carries. Without the DSN the runner initialises
# a disabled client and every captureException is a no-op again.
NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN || secrets.SENTRY_DSN }}
NEXT_PUBLIC_SENTRY_ENVIRONMENT: production
DATABASE_URL: ${{ secrets.DATABASE_URL }}
# #476 cron locks load lib/redis at import — every job entry needs these
UPSTASH_REDIS_REST_URL: ${{ secrets.UPSTASH_REDIS_REST_URL }}
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/cleanup-stale-invitations.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,11 @@ jobs:
timeout-minutes: 10

env:
# #1066 — jobs run as bare Node processes, so Sentry.init only sees
# what the step env carries. Without the DSN the runner initialises
# a disabled client and every captureException is a no-op again.
NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN || secrets.SENTRY_DSN }}
NEXT_PUBLIC_SENTRY_ENVIRONMENT: production
DATABASE_URL: ${{ secrets.DATABASE_URL }}
DIRECT_URL: ${{ secrets.DIRECT_URL }}
UPSTASH_REDIS_REST_URL: ${{ secrets.UPSTASH_REDIS_REST_URL }}
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/cleanup-stale-pending-consultations.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@ jobs:
timeout-minutes: 10

env:
# #1066 — jobs run as bare Node processes, so Sentry.init only sees
# what the step env carries. Without the DSN the runner initialises
# a disabled client and every captureException is a no-op again.
NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN || secrets.SENTRY_DSN }}
NEXT_PUBLIC_SENTRY_ENVIRONMENT: production
# Database connection (required for Prisma)
DATABASE_URL: ${{ secrets.DATABASE_URL }}
# #476 cron locks load lib/redis at import — every job entry needs these
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/cleanup-tentative-slots.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@ jobs:
timeout-minutes: 10

env:
# #1066 — jobs run as bare Node processes, so Sentry.init only sees
# what the step env carries. Without the DSN the runner initialises
# a disabled client and every captureException is a no-op again.
NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN || secrets.SENTRY_DSN }}
NEXT_PUBLIC_SENTRY_ENVIRONMENT: production
# Database connection (required for Prisma)
DATABASE_URL: ${{ secrets.DATABASE_URL }}
# #476 cron locks load lib/redis at import — every job entry needs these
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/consent-retention-sweeper.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,11 @@ jobs:
timeout-minutes: 15

env:
# #1066 — jobs run as bare Node processes, so Sentry.init only sees
# what the step env carries. Without the DSN the runner initialises
# a disabled client and every captureException is a no-op again.
NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN || secrets.SENTRY_DSN }}
NEXT_PUBLIC_SENTRY_ENVIRONMENT: production
DATABASE_URL: ${{ secrets.DATABASE_URL }}
DIRECT_URL: ${{ secrets.DIRECT_URL }}
UPSTASH_REDIS_REST_URL: ${{ secrets.UPSTASH_REDIS_REST_URL }}
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/create-payout-batch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,11 @@ jobs:
timeout-minutes: 15

env:
# #1066 — jobs run as bare Node processes, so Sentry.init only sees
# what the step env carries. Without the DSN the runner initialises
# a disabled client and every captureException is a no-op again.
NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN || secrets.SENTRY_DSN }}
NEXT_PUBLIC_SENTRY_ENVIRONMENT: production
# Database connection (required for Prisma)
DATABASE_URL: ${{ secrets.DATABASE_URL }}
# #476 cron locks load lib/redis at import — every job entry needs these
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/databreach-deadline-alerts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ jobs:
timeout-minutes: 5

env:
# #1066 — jobs run as bare Node processes, so Sentry.init only sees
# what the step env carries. Without the DSN the runner initialises
# a disabled client and every captureException is a no-op again.
NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN || secrets.SENTRY_DSN }}
NEXT_PUBLIC_SENTRY_ENVIRONMENT: production
DATABASE_URL: ${{ secrets.DATABASE_URL }}
# #476 cron locks load lib/redis at import — every job entry needs these
UPSTASH_REDIS_REST_URL: ${{ secrets.UPSTASH_REDIS_REST_URL }}
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/deactivate-expired-discounts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@ jobs:
timeout-minutes: 10

env:
# #1066 — jobs run as bare Node processes, so Sentry.init only sees
# what the step env carries. Without the DSN the runner initialises
# a disabled client and every captureException is a no-op again.
NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN || secrets.SENTRY_DSN }}
NEXT_PUBLIC_SENTRY_ENVIRONMENT: production
# Database connection (required for Prisma)
DATABASE_URL: ${{ secrets.DATABASE_URL }}
# #476 cron locks load lib/redis at import — every job entry needs these
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/detect-consultant-no-shows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@ jobs:
timeout-minutes: 10

env:
# #1066 — jobs run as bare Node processes, so Sentry.init only sees
# what the step env carries. Without the DSN the runner initialises
# a disabled client and every captureException is a no-op again.
NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN || secrets.SENTRY_DSN }}
NEXT_PUBLIC_SENTRY_ENVIRONMENT: production
# Database connection (required for Prisma)
DATABASE_URL: ${{ secrets.DATABASE_URL }}
DIRECT_URL: ${{ secrets.DIRECT_URL }}
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/dispatch-outbound-webhooks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,11 @@ jobs:
timeout-minutes: 5

env:
# #1066 — jobs run as bare Node processes, so Sentry.init only sees
# what the step env carries. Without the DSN the runner initialises
# a disabled client and every captureException is a no-op again.
NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN || secrets.SENTRY_DSN }}
NEXT_PUBLIC_SENTRY_ENVIRONMENT: production
# Database connection (required for Prisma)
DATABASE_URL: ${{ secrets.DATABASE_URL }}
# #476 cron locks load lib/redis at import — every job entry needs these
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/dunning.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,11 @@ jobs:
timeout-minutes: 10

env:
# #1066 — jobs run as bare Node processes, so Sentry.init only sees
# what the step env carries. Without the DSN the runner initialises
# a disabled client and every captureException is a no-op again.
NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN || secrets.SENTRY_DSN }}
NEXT_PUBLIC_SENTRY_ENVIRONMENT: production
DATABASE_URL: ${{ secrets.DATABASE_URL }}
DIRECT_URL: ${{ secrets.DIRECT_URL }}
# #476 — fail-closed cron lock: without these the job refuses to run.
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/expire-contracts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ jobs:
timeout-minutes: 10

env:
# #1066 — jobs run as bare Node processes, so Sentry.init only sees
# what the step env carries. Without the DSN the runner initialises
# a disabled client and every captureException is a no-op again.
NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN || secrets.SENTRY_DSN }}
NEXT_PUBLIC_SENTRY_ENVIRONMENT: production
DATABASE_URL: ${{ secrets.DATABASE_URL }}
# #476 cron locks load lib/redis at import — every job entry needs these
UPSTASH_REDIS_REST_URL: ${{ secrets.UPSTASH_REDIS_REST_URL }}
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/expire-reschedule-proposals.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,11 @@ jobs:
timeout-minutes: 10

env:
# #1066 — jobs run as bare Node processes, so Sentry.init only sees
# what the step env carries. Without the DSN the runner initialises
# a disabled client and every captureException is a no-op again.
NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN || secrets.SENTRY_DSN }}
NEXT_PUBLIC_SENTRY_ENVIRONMENT: production
# Database connection (required for Prisma)
DATABASE_URL: ${{ secrets.DATABASE_URL }}
# #476 cron locks load lib/redis at import — every job entry needs these
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/expire-stale-requests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@ jobs:
timeout-minutes: 10

env:
# #1066 — jobs run as bare Node processes, so Sentry.init only sees
# what the step env carries. Without the DSN the runner initialises
# a disabled client and every captureException is a no-op again.
NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN || secrets.SENTRY_DSN }}
NEXT_PUBLIC_SENTRY_ENVIRONMENT: production
# Database connection (required for Prisma)
DATABASE_URL: ${{ secrets.DATABASE_URL }}
# #476 cron locks load lib/redis at import — every job entry needs these
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/expire-unpaid-trials.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,11 @@ jobs:
timeout-minutes: 10

env:
# #1066 — jobs run as bare Node processes, so Sentry.init only sees
# what the step env carries. Without the DSN the runner initialises
# a disabled client and every captureException is a no-op again.
NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN || secrets.SENTRY_DSN }}
NEXT_PUBLIC_SENTRY_ENVIRONMENT: production
# Database connection (required for Prisma)
DATABASE_URL: ${{ secrets.DATABASE_URL }}
# #476 cron locks load lib/redis at import — every job entry needs these
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/generate-subscription-invoices.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,11 @@ jobs:
timeout-minutes: 15

env:
# #1066 — jobs run as bare Node processes, so Sentry.init only sees
# what the step env carries. Without the DSN the runner initialises
# a disabled client and every captureException is a no-op again.
NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN || secrets.SENTRY_DSN }}
NEXT_PUBLIC_SENTRY_ENVIRONMENT: production
DATABASE_URL: ${{ secrets.DATABASE_URL }}
DIRECT_URL: ${{ secrets.DIRECT_URL }}
UPSTASH_REDIS_REST_URL: ${{ secrets.UPSTASH_REDIS_REST_URL }}
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/handle-lost-disputes.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@ jobs:
timeout-minutes: 10

env:
# #1066 — jobs run as bare Node processes, so Sentry.init only sees
# what the step env carries. Without the DSN the runner initialises
# a disabled client and every captureException is a no-op again.
NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN || secrets.SENTRY_DSN }}
NEXT_PUBLIC_SENTRY_ENVIRONMENT: production
# Database connection (required for Prisma)
DATABASE_URL: ${{ secrets.DATABASE_URL }}
DIRECT_URL: ${{ secrets.DIRECT_URL }}
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/handle-stuck-payouts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@ jobs:
timeout-minutes: 15

env:
# #1066 — jobs run as bare Node processes, so Sentry.init only sees
# what the step env carries. Without the DSN the runner initialises
# a disabled client and every captureException is a no-op again.
NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN || secrets.SENTRY_DSN }}
NEXT_PUBLIC_SENTRY_ENVIRONMENT: production
# Database connection (required for Prisma)
DATABASE_URL: ${{ secrets.DATABASE_URL }}
DIRECT_URL: ${{ secrets.DIRECT_URL }}
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/irp-uploader.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,11 @@ jobs:
if: ${{ vars.ENABLE_IRP_UPLOADER == 'true' || github.event_name == 'workflow_dispatch' }}

env:
# #1066 — jobs run as bare Node processes, so Sentry.init only sees
# what the step env carries. Without the DSN the runner initialises
# a disabled client and every captureException is a no-op again.
NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN || secrets.SENTRY_DSN }}
NEXT_PUBLIC_SENTRY_ENVIRONMENT: production
DATABASE_URL: ${{ secrets.DATABASE_URL }}
# #476 cron locks load lib/redis at import — every job entry needs these
UPSTASH_REDIS_REST_URL: ${{ secrets.UPSTASH_REDIS_REST_URL }}
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/mark-expired-recordings.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@ jobs:
timeout-minutes: 5

env:
# #1066 — jobs run as bare Node processes, so Sentry.init only sees
# what the step env carries. Without the DSN the runner initialises
# a disabled client and every captureException is a no-op again.
NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN || secrets.SENTRY_DSN }}
NEXT_PUBLIC_SENTRY_ENVIRONMENT: production
DATABASE_URL: ${{ secrets.DATABASE_URL }}
# #476 cron locks load lib/redis at import — every job entry needs these
UPSTASH_REDIS_REST_URL: ${{ secrets.UPSTASH_REDIS_REST_URL }}
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/msme-payment-alerts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ jobs:
timeout-minutes: 10

env:
# #1066 — jobs run as bare Node processes, so Sentry.init only sees
# what the step env carries. Without the DSN the runner initialises
# a disabled client and every captureException is a no-op again.
NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN || secrets.SENTRY_DSN }}
NEXT_PUBLIC_SENTRY_ENVIRONMENT: production
DATABASE_URL: ${{ secrets.DATABASE_URL }}
# #476 cron locks load lib/redis at import — every job entry needs these
UPSTASH_REDIS_REST_URL: ${{ secrets.UPSTASH_REDIS_REST_URL }}
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/process-data-exports.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ jobs:
timeout-minutes: 15

env:
# #1066 — jobs run as bare Node processes, so Sentry.init only sees
# what the step env carries. Without the DSN the runner initialises
# a disabled client and every captureException is a no-op again.
NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN || secrets.SENTRY_DSN }}
NEXT_PUBLIC_SENTRY_ENVIRONMENT: production
DATABASE_URL: ${{ secrets.DATABASE_URL }}
# #476 cron locks load lib/redis at import — every job entry needs these
UPSTASH_REDIS_REST_URL: ${{ secrets.UPSTASH_REDIS_REST_URL }}
Expand Down
Loading
Loading