Skip to content

chore: adopt stable React Compiler lint rules - #4737

Merged
carderne merged 1 commit into
mainfrom
chore/upgrade-oxlint-react-compiler-rules
Aug 20, 2026
Merged

chore: adopt stable React Compiler lint rules#4737
carderne merged 1 commit into
mainfrom
chore/upgrade-oxlint-react-compiler-rules

Conversation

@carderne

Copy link
Copy Markdown
Collaborator

Summary

  • upgrade Oxlint to 1.79 and replace the removed aggregate React Compiler rule with the stable category-specific rules
  • keep React Compiler enforcement scoped to the webapp while preserving the additional compiler checks covered by the previous cleanup
  • migrate targeted suppressions to their specific rule IDs and remove suppressions for diagnostics the stable compiler no longer reports
  • address newly surfaced lint findings from the Oxlint upgrade

Oxlint 1.79 also begins applying the base no-redeclare rule to ES modules. That rule does not account for TypeScript's separate type and value namespaces, so this disables it for TypeScript files while retaining it for JavaScript.

Reference: https://oxc.rs/blog/2026-08-18-react-compiler-support

Validation

  • pnpm exec oxfmt --check .
  • pnpm run lint
  • pnpm run knip
  • pnpm --filter @trigger.dev/sdk run typecheck
  • pnpm --filter @trigger.dev/core run typecheck
  • pnpm --filter @internal/observability-map run typecheck

@changeset-bot

changeset-bot Bot commented Aug 20, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 048f34f

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@coderabbitai

coderabbitai Bot commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Walkthrough

Updated Oxlint to version ^1.79.0 and replaced broad React Compiler suppressions with targeted React rules. Applied the new suppressions across webapp components, hooks, and routes. Added targeted TanStack Virtual and Table suppressions. Updated MFA response data handling, global initialization, environment-variable type handling, comment parsing documentation, and an end-to-end package-count condition.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 19.61% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly summarizes the primary change: adopting stable, category-specific React Compiler lint rules.
Description check ✅ Passed The description explains the changes and lists validation commands, but it omits the template checklist, issue reference, changelog, and screenshots sections.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/upgrade-oxlint-react-compiler-rules

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@carderne
carderne marked this pull request as ready for review August 20, 2026 12:08

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 1 potential issue.

Open in Devin Review

Comment thread .oxlintrc.json
@carderne
carderne enabled auto-merge (squash) August 20, 2026 12:16
@carderne
carderne merged commit 4392e79 into main Aug 20, 2026
69 of 70 checks passed
@carderne
carderne deleted the chore/upgrade-oxlint-react-compiler-rules branch August 20, 2026 12:17

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
apps/webapp/app/routes/admin.feature-flags.tsx (1)

185-197: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Add one suppression per state setter in each affected effect.

Add directives for setInitialValues, setConfirmOpen, and both error-branch setSaveError calls; setShuffledGoals; setSampleRate and error-branch setError; and setShuffledRoles.

Source: MCP tools

apps/webapp/app/components/dashboard-agent/DashboardAgentPanel.tsx (1)

171-172: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Restore targeted react/set-state-in-effect suppressions for intentional effect updates.

This rule is enabled for apps/webapp/app/**/*.tsx and flags synchronous setters in effect bodies. Restore suppressions for setThinkingChatId, setLoading, setChats, and setSendRequest, or move these updates to event-driven paths.

Source: MCP tools


ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 229a8a0b-a478-4469-94cb-529e0fb8cdf8

📥 Commits

Reviewing files that changed from the base of the PR and between ce40d02 and 048f34f.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (107)
  • .oxlintrc.json
  • apps/webapp/app/components/AskAI.tsx
  • apps/webapp/app/components/DevPresence.tsx
  • apps/webapp/app/components/Feedback.tsx
  • apps/webapp/app/components/LoginPageLayout.tsx
  • apps/webapp/app/components/TriggerRotatingLogo.tsx
  • apps/webapp/app/components/admin/FeatureFlagsDialog.tsx
  • apps/webapp/app/components/admin/backOffice/MaxProjectsSection.tsx
  • apps/webapp/app/components/admin/backOffice/RateLimitSection.tsx
  • apps/webapp/app/components/billing/BillingAlertsSection.tsx
  • apps/webapp/app/components/billing/BillingLimitConfigSection.tsx
  • apps/webapp/app/components/billing/BillingLimitRecoveryPanel.tsx
  • apps/webapp/app/components/code/AIQueryInput.tsx
  • apps/webapp/app/components/code/JSONEditor.tsx
  • apps/webapp/app/components/code/TSQLEditor.tsx
  • apps/webapp/app/components/code/TSQLResultsTable.tsx
  • apps/webapp/app/components/code/TextEditor.tsx
  • apps/webapp/app/components/dashboard-agent/AgentChart.tsx
  • apps/webapp/app/components/dashboard-agent/DashboardAgentChat.tsx
  • apps/webapp/app/components/dashboard-agent/DashboardAgentMessages.tsx
  • apps/webapp/app/components/dashboard-agent/DashboardAgentPanel.tsx
  • apps/webapp/app/components/integrations/VercelOnboardingModal.tsx
  • apps/webapp/app/components/logs/LogDetailView.tsx
  • apps/webapp/app/components/logs/LogsTable.tsx
  • apps/webapp/app/components/metrics/SaveToDashboardDialog.tsx
  • apps/webapp/app/components/navigation/DashboardDialogs.tsx
  • apps/webapp/app/components/navigation/EnvironmentSelector.tsx
  • apps/webapp/app/components/navigation/FavoritesSection.tsx
  • apps/webapp/app/components/navigation/SideMenu.tsx
  • apps/webapp/app/components/navigation/SideMenuHeader.tsx
  • apps/webapp/app/components/navigation/useReorderableList.ts
  • apps/webapp/app/components/primitives/AgentDotMatrix.tsx
  • apps/webapp/app/components/primitives/AnimatedCallout.tsx
  • apps/webapp/app/components/primitives/Buttons.tsx
  • apps/webapp/app/components/primitives/Checkbox.tsx
  • apps/webapp/app/components/primitives/ClipboardField.tsx
  • apps/webapp/app/components/primitives/DateField.tsx
  • apps/webapp/app/components/primitives/DateTime.tsx
  • apps/webapp/app/components/primitives/DurationPicker.tsx
  • apps/webapp/app/components/primitives/InputNumberStepper.tsx
  • apps/webapp/app/components/primitives/MiddleTruncate.tsx
  • apps/webapp/app/components/primitives/Resizable.tsx
  • apps/webapp/app/components/primitives/SearchInput.tsx
  • apps/webapp/app/components/primitives/TooltipPortal.tsx
  • apps/webapp/app/components/primitives/TreeView/TreeView.tsx
  • apps/webapp/app/components/primitives/charts/hooks/useZoomSelection.ts
  • apps/webapp/app/components/query/QueryEditor.tsx
  • apps/webapp/app/components/queues/QueueControls.tsx
  • apps/webapp/app/components/runs/v3/AIFilterInput.tsx
  • apps/webapp/app/components/runs/v3/RunStatusCellTooltip.tsx
  • apps/webapp/app/components/runs/v3/SharedFilters.tsx
  • apps/webapp/app/components/runs/v3/agent/AgentView.tsx
  • apps/webapp/app/components/runs/v3/ai/AIChatMessages.tsx
  • apps/webapp/app/components/scheduled/timezones.tsx
  • apps/webapp/app/components/schedules/PurchaseSchedulesModal.tsx
  • apps/webapp/app/components/webhookConsole/SampleSourcePicker.tsx
  • apps/webapp/app/components/webhookDeliveries/v1/useDeliveriesLiveReload.ts
  • apps/webapp/app/hooks/useAutoRevalidate.ts
  • apps/webapp/app/hooks/useChanged.ts
  • apps/webapp/app/hooks/useDashboardEditor.ts
  • apps/webapp/app/hooks/useDebounce.ts
  • apps/webapp/app/hooks/useElementVisibility.ts
  • apps/webapp/app/hooks/useEventSource.tsx
  • apps/webapp/app/hooks/useMetricResourceQuery.ts
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam._index/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.apikeys/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.branches/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.concurrency/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.dashboards.$dashboardKey/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.dashboards.custom.$dashboardId/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.deployments.$deploymentParam/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.environment-variables/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.logs/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.playground.$agentParam/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.prompts.$promptSlug/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.queues/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.queues_.$queueParam/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs.$runParam/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs._index/useRunsLiveReload.ts
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.sessions.$sessionParam/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.settings.integrations/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.tasks.scheduled.$taskParam/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.test.tasks.$taskParam/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.webhooks.endpoints.$endpointParam/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.sso/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.team/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug_.projects.new/route.tsx
  • apps/webapp/app/routes/account._index/route.tsx
  • apps/webapp/app/routes/admin.feature-flags.tsx
  • apps/webapp/app/routes/admin.queue-metrics.tsx
  • apps/webapp/app/routes/confirm-basic-details.tsx
  • apps/webapp/app/routes/login.mfa/route.tsx
  • apps/webapp/app/routes/resources.account.mfa.setup/useMfaSetup.ts
  • apps/webapp/app/routes/resources.branches.create.tsx
  • apps/webapp/app/routes/resources.metric.tsx
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.github.tsx
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs.$runParam.streams.$streamKey/route.tsx
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.vercel.tsx
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.waitpoints.$waitpointFriendlyId.complete/route.tsx
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.schedules.new.natural-language.tsx
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.select-plan.tsx
  • apps/webapp/app/routes/vercel.onboarding.tsx
  • internal-packages/observability-map/src/suppression.ts
  • package.json
  • packages/cli-v3/e2e/e2e.test.ts
  • packages/core/src/v3/utils/globals.ts
  • packages/trigger-sdk/src/v3/envvars.ts
💤 Files with no reviewable changes (2)
  • apps/webapp/app/components/logs/LogDetailView.tsx
  • apps/webapp/app/components/primitives/InputNumberStepper.tsx

Included review availability: Your plan provides up to 10 included reviews per hour; 8 remain after this review.

📜 Review details
⏰ Context from checks skipped due to timeout. (7)
  • GitHub Check: packages / 📊 Merge Reports
  • GitHub Check: webapp / 🧪 Unit Tests: Webapp (13, 24)
  • GitHub Check: webapp / 🧪 Unit Tests: Webapp (11, 24)
  • GitHub Check: webapp / 🧪 Unit Tests: Webapp (21, 24)
  • GitHub Check: webapp / 🧪 Unit Tests: Webapp (15, 24)
  • GitHub Check: internal / 🧪 Unit Tests: Internal
  • GitHub Check: e2e / 🧪 CLI v3 tests (warp-windows-latest-x64-8x - npm)
🧰 Additional context used
📓 Path-based instructions (15)
**/*.{ts,tsx}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

**/*.{ts,tsx}: Use types over interfaces for TypeScript
Avoid using enums; prefer string unions or const objects instead

**/*.{ts,tsx}: Prefer static imports over dynamic imports. Only use dynamic import() when:

  • Circular dependencies cannot be resolved otherwise
  • Code splitting is genuinely needed for performance
  • The module must be loaded conditionally at runtime

Files:

  • apps/webapp/app/components/LoginPageLayout.tsx
  • apps/webapp/app/components/TriggerRotatingLogo.tsx
  • apps/webapp/app/components/AskAI.tsx
  • apps/webapp/app/components/Feedback.tsx
  • apps/webapp/app/components/billing/BillingLimitConfigSection.tsx
  • apps/webapp/app/components/billing/BillingAlertsSection.tsx
  • apps/webapp/app/components/billing/BillingLimitRecoveryPanel.tsx
  • apps/webapp/app/components/dashboard-agent/DashboardAgentMessages.tsx
  • apps/webapp/app/components/logs/LogsTable.tsx
  • apps/webapp/app/components/code/JSONEditor.tsx
  • apps/webapp/app/components/admin/FeatureFlagsDialog.tsx
  • apps/webapp/app/components/primitives/AnimatedCallout.tsx
  • apps/webapp/app/components/primitives/MiddleTruncate.tsx
  • apps/webapp/app/components/code/TextEditor.tsx
  • apps/webapp/app/components/navigation/SideMenuHeader.tsx
  • apps/webapp/app/components/navigation/FavoritesSection.tsx
  • apps/webapp/app/components/primitives/AgentDotMatrix.tsx
  • apps/webapp/app/components/primitives/ClipboardField.tsx
  • apps/webapp/app/components/metrics/SaveToDashboardDialog.tsx
  • apps/webapp/app/components/code/TSQLEditor.tsx
  • apps/webapp/app/components/queues/QueueControls.tsx
  • apps/webapp/app/hooks/useChanged.ts
  • apps/webapp/app/components/webhookConsole/SampleSourcePicker.tsx
  • apps/webapp/app/components/navigation/useReorderableList.ts
  • apps/webapp/app/hooks/useEventSource.tsx
  • apps/webapp/app/components/primitives/Resizable.tsx
  • apps/webapp/app/components/admin/backOffice/RateLimitSection.tsx
  • apps/webapp/app/components/DevPresence.tsx
  • apps/webapp/app/components/runs/v3/AIFilterInput.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.apikeys/route.tsx
  • apps/webapp/app/components/primitives/DurationPicker.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam._index/route.tsx
  • apps/webapp/app/components/schedules/PurchaseSchedulesModal.tsx
  • apps/webapp/app/hooks/useAutoRevalidate.ts
  • apps/webapp/app/hooks/useDashboardEditor.ts
  • apps/webapp/app/components/admin/backOffice/MaxProjectsSection.tsx
  • apps/webapp/app/hooks/useElementVisibility.ts
  • apps/webapp/app/routes/account._index/route.tsx
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.schedules.new.natural-language.tsx
  • apps/webapp/app/routes/confirm-basic-details.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.concurrency/route.tsx
  • apps/webapp/app/components/primitives/DateTime.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.webhooks.endpoints.$endpointParam/route.tsx
  • internal-packages/observability-map/src/suppression.ts
  • packages/core/src/v3/utils/globals.ts
  • apps/webapp/app/components/primitives/SearchInput.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.queues/route.tsx
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.vercel.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.logs/route.tsx
  • apps/webapp/app/components/navigation/DashboardDialogs.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.tasks.scheduled.$taskParam/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug_.projects.new/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs.$runParam/route.tsx
  • apps/webapp/app/components/code/TSQLResultsTable.tsx
  • apps/webapp/app/routes/login.mfa/route.tsx
  • apps/webapp/app/routes/admin.feature-flags.tsx
  • apps/webapp/app/components/primitives/Checkbox.tsx
  • apps/webapp/app/components/primitives/DateField.tsx
  • apps/webapp/app/components/integrations/VercelOnboardingModal.tsx
  • apps/webapp/app/components/primitives/Buttons.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.test.tasks.$taskParam/route.tsx
  • packages/trigger-sdk/src/v3/envvars.ts
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.branches/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.dashboards.custom.$dashboardId/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.settings.integrations/route.tsx
  • apps/webapp/app/routes/admin.queue-metrics.tsx
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.github.tsx
  • apps/webapp/app/routes/resources.branches.create.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.team/route.tsx
  • apps/webapp/app/routes/resources.metric.tsx
  • apps/webapp/app/components/dashboard-agent/DashboardAgentChat.tsx
  • apps/webapp/app/components/dashboard-agent/DashboardAgentPanel.tsx
  • apps/webapp/app/components/scheduled/timezones.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.queues_.$queueParam/route.tsx
  • packages/cli-v3/e2e/e2e.test.ts
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.deployments.$deploymentParam/route.tsx
  • apps/webapp/app/components/primitives/TooltipPortal.tsx
  • apps/webapp/app/components/runs/v3/RunStatusCellTooltip.tsx
  • apps/webapp/app/components/primitives/TreeView/TreeView.tsx
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.waitpoints.$waitpointFriendlyId.complete/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.environment-variables/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.sso/route.tsx
  • apps/webapp/app/hooks/useDebounce.ts
  • apps/webapp/app/components/navigation/EnvironmentSelector.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.playground.$agentParam/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs._index/useRunsLiveReload.ts
  • apps/webapp/app/routes/resources.account.mfa.setup/useMfaSetup.ts
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.select-plan.tsx
  • apps/webapp/app/components/navigation/SideMenu.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.sessions.$sessionParam/route.tsx
  • apps/webapp/app/components/query/QueryEditor.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.prompts.$promptSlug/route.tsx
  • apps/webapp/app/hooks/useMetricResourceQuery.ts
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.dashboards.$dashboardKey/route.tsx
  • apps/webapp/app/components/runs/v3/agent/AgentView.tsx
  • apps/webapp/app/components/runs/v3/ai/AIChatMessages.tsx
  • apps/webapp/app/components/runs/v3/SharedFilters.tsx
  • apps/webapp/app/routes/vercel.onboarding.tsx
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs.$runParam.streams.$streamKey/route.tsx
  • apps/webapp/app/components/dashboard-agent/AgentChart.tsx
  • apps/webapp/app/components/code/AIQueryInput.tsx
  • apps/webapp/app/components/primitives/charts/hooks/useZoomSelection.ts
  • apps/webapp/app/components/webhookDeliveries/v1/useDeliveriesLiveReload.ts
{packages/core,apps/webapp}/**/*.{ts,tsx}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

Use zod for validation in packages/core and apps/webapp

Files:

  • apps/webapp/app/components/LoginPageLayout.tsx
  • apps/webapp/app/components/TriggerRotatingLogo.tsx
  • apps/webapp/app/components/AskAI.tsx
  • apps/webapp/app/components/Feedback.tsx
  • apps/webapp/app/components/billing/BillingLimitConfigSection.tsx
  • apps/webapp/app/components/billing/BillingAlertsSection.tsx
  • apps/webapp/app/components/billing/BillingLimitRecoveryPanel.tsx
  • apps/webapp/app/components/dashboard-agent/DashboardAgentMessages.tsx
  • apps/webapp/app/components/logs/LogsTable.tsx
  • apps/webapp/app/components/code/JSONEditor.tsx
  • apps/webapp/app/components/admin/FeatureFlagsDialog.tsx
  • apps/webapp/app/components/primitives/AnimatedCallout.tsx
  • apps/webapp/app/components/primitives/MiddleTruncate.tsx
  • apps/webapp/app/components/code/TextEditor.tsx
  • apps/webapp/app/components/navigation/SideMenuHeader.tsx
  • apps/webapp/app/components/navigation/FavoritesSection.tsx
  • apps/webapp/app/components/primitives/AgentDotMatrix.tsx
  • apps/webapp/app/components/primitives/ClipboardField.tsx
  • apps/webapp/app/components/metrics/SaveToDashboardDialog.tsx
  • apps/webapp/app/components/code/TSQLEditor.tsx
  • apps/webapp/app/components/queues/QueueControls.tsx
  • apps/webapp/app/hooks/useChanged.ts
  • apps/webapp/app/components/webhookConsole/SampleSourcePicker.tsx
  • apps/webapp/app/components/navigation/useReorderableList.ts
  • apps/webapp/app/hooks/useEventSource.tsx
  • apps/webapp/app/components/primitives/Resizable.tsx
  • apps/webapp/app/components/admin/backOffice/RateLimitSection.tsx
  • apps/webapp/app/components/DevPresence.tsx
  • apps/webapp/app/components/runs/v3/AIFilterInput.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.apikeys/route.tsx
  • apps/webapp/app/components/primitives/DurationPicker.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam._index/route.tsx
  • apps/webapp/app/components/schedules/PurchaseSchedulesModal.tsx
  • apps/webapp/app/hooks/useAutoRevalidate.ts
  • apps/webapp/app/hooks/useDashboardEditor.ts
  • apps/webapp/app/components/admin/backOffice/MaxProjectsSection.tsx
  • apps/webapp/app/hooks/useElementVisibility.ts
  • apps/webapp/app/routes/account._index/route.tsx
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.schedules.new.natural-language.tsx
  • apps/webapp/app/routes/confirm-basic-details.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.concurrency/route.tsx
  • apps/webapp/app/components/primitives/DateTime.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.webhooks.endpoints.$endpointParam/route.tsx
  • packages/core/src/v3/utils/globals.ts
  • apps/webapp/app/components/primitives/SearchInput.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.queues/route.tsx
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.vercel.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.logs/route.tsx
  • apps/webapp/app/components/navigation/DashboardDialogs.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.tasks.scheduled.$taskParam/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug_.projects.new/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs.$runParam/route.tsx
  • apps/webapp/app/components/code/TSQLResultsTable.tsx
  • apps/webapp/app/routes/login.mfa/route.tsx
  • apps/webapp/app/routes/admin.feature-flags.tsx
  • apps/webapp/app/components/primitives/Checkbox.tsx
  • apps/webapp/app/components/primitives/DateField.tsx
  • apps/webapp/app/components/integrations/VercelOnboardingModal.tsx
  • apps/webapp/app/components/primitives/Buttons.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.test.tasks.$taskParam/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.branches/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.dashboards.custom.$dashboardId/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.settings.integrations/route.tsx
  • apps/webapp/app/routes/admin.queue-metrics.tsx
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.github.tsx
  • apps/webapp/app/routes/resources.branches.create.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.team/route.tsx
  • apps/webapp/app/routes/resources.metric.tsx
  • apps/webapp/app/components/dashboard-agent/DashboardAgentChat.tsx
  • apps/webapp/app/components/dashboard-agent/DashboardAgentPanel.tsx
  • apps/webapp/app/components/scheduled/timezones.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.queues_.$queueParam/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.deployments.$deploymentParam/route.tsx
  • apps/webapp/app/components/primitives/TooltipPortal.tsx
  • apps/webapp/app/components/runs/v3/RunStatusCellTooltip.tsx
  • apps/webapp/app/components/primitives/TreeView/TreeView.tsx
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.waitpoints.$waitpointFriendlyId.complete/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.environment-variables/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.sso/route.tsx
  • apps/webapp/app/hooks/useDebounce.ts
  • apps/webapp/app/components/navigation/EnvironmentSelector.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.playground.$agentParam/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs._index/useRunsLiveReload.ts
  • apps/webapp/app/routes/resources.account.mfa.setup/useMfaSetup.ts
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.select-plan.tsx
  • apps/webapp/app/components/navigation/SideMenu.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.sessions.$sessionParam/route.tsx
  • apps/webapp/app/components/query/QueryEditor.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.prompts.$promptSlug/route.tsx
  • apps/webapp/app/hooks/useMetricResourceQuery.ts
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.dashboards.$dashboardKey/route.tsx
  • apps/webapp/app/components/runs/v3/agent/AgentView.tsx
  • apps/webapp/app/components/runs/v3/ai/AIChatMessages.tsx
  • apps/webapp/app/components/runs/v3/SharedFilters.tsx
  • apps/webapp/app/routes/vercel.onboarding.tsx
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs.$runParam.streams.$streamKey/route.tsx
  • apps/webapp/app/components/dashboard-agent/AgentChart.tsx
  • apps/webapp/app/components/code/AIQueryInput.tsx
  • apps/webapp/app/components/primitives/charts/hooks/useZoomSelection.ts
  • apps/webapp/app/components/webhookDeliveries/v1/useDeliveriesLiveReload.ts
**/*.{ts,tsx,js,jsx}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

Use function declarations instead of default exports

Files:

  • apps/webapp/app/components/LoginPageLayout.tsx
  • apps/webapp/app/components/TriggerRotatingLogo.tsx
  • apps/webapp/app/components/AskAI.tsx
  • apps/webapp/app/components/Feedback.tsx
  • apps/webapp/app/components/billing/BillingLimitConfigSection.tsx
  • apps/webapp/app/components/billing/BillingAlertsSection.tsx
  • apps/webapp/app/components/billing/BillingLimitRecoveryPanel.tsx
  • apps/webapp/app/components/dashboard-agent/DashboardAgentMessages.tsx
  • apps/webapp/app/components/logs/LogsTable.tsx
  • apps/webapp/app/components/code/JSONEditor.tsx
  • apps/webapp/app/components/admin/FeatureFlagsDialog.tsx
  • apps/webapp/app/components/primitives/AnimatedCallout.tsx
  • apps/webapp/app/components/primitives/MiddleTruncate.tsx
  • apps/webapp/app/components/code/TextEditor.tsx
  • apps/webapp/app/components/navigation/SideMenuHeader.tsx
  • apps/webapp/app/components/navigation/FavoritesSection.tsx
  • apps/webapp/app/components/primitives/AgentDotMatrix.tsx
  • apps/webapp/app/components/primitives/ClipboardField.tsx
  • apps/webapp/app/components/metrics/SaveToDashboardDialog.tsx
  • apps/webapp/app/components/code/TSQLEditor.tsx
  • apps/webapp/app/components/queues/QueueControls.tsx
  • apps/webapp/app/hooks/useChanged.ts
  • apps/webapp/app/components/webhookConsole/SampleSourcePicker.tsx
  • apps/webapp/app/components/navigation/useReorderableList.ts
  • apps/webapp/app/hooks/useEventSource.tsx
  • apps/webapp/app/components/primitives/Resizable.tsx
  • apps/webapp/app/components/admin/backOffice/RateLimitSection.tsx
  • apps/webapp/app/components/DevPresence.tsx
  • apps/webapp/app/components/runs/v3/AIFilterInput.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.apikeys/route.tsx
  • apps/webapp/app/components/primitives/DurationPicker.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam._index/route.tsx
  • apps/webapp/app/components/schedules/PurchaseSchedulesModal.tsx
  • apps/webapp/app/hooks/useAutoRevalidate.ts
  • apps/webapp/app/hooks/useDashboardEditor.ts
  • apps/webapp/app/components/admin/backOffice/MaxProjectsSection.tsx
  • apps/webapp/app/hooks/useElementVisibility.ts
  • apps/webapp/app/routes/account._index/route.tsx
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.schedules.new.natural-language.tsx
  • apps/webapp/app/routes/confirm-basic-details.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.concurrency/route.tsx
  • apps/webapp/app/components/primitives/DateTime.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.webhooks.endpoints.$endpointParam/route.tsx
  • internal-packages/observability-map/src/suppression.ts
  • packages/core/src/v3/utils/globals.ts
  • apps/webapp/app/components/primitives/SearchInput.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.queues/route.tsx
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.vercel.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.logs/route.tsx
  • apps/webapp/app/components/navigation/DashboardDialogs.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.tasks.scheduled.$taskParam/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug_.projects.new/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs.$runParam/route.tsx
  • apps/webapp/app/components/code/TSQLResultsTable.tsx
  • apps/webapp/app/routes/login.mfa/route.tsx
  • apps/webapp/app/routes/admin.feature-flags.tsx
  • apps/webapp/app/components/primitives/Checkbox.tsx
  • apps/webapp/app/components/primitives/DateField.tsx
  • apps/webapp/app/components/integrations/VercelOnboardingModal.tsx
  • apps/webapp/app/components/primitives/Buttons.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.test.tasks.$taskParam/route.tsx
  • packages/trigger-sdk/src/v3/envvars.ts
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.branches/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.dashboards.custom.$dashboardId/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.settings.integrations/route.tsx
  • apps/webapp/app/routes/admin.queue-metrics.tsx
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.github.tsx
  • apps/webapp/app/routes/resources.branches.create.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.team/route.tsx
  • apps/webapp/app/routes/resources.metric.tsx
  • apps/webapp/app/components/dashboard-agent/DashboardAgentChat.tsx
  • apps/webapp/app/components/dashboard-agent/DashboardAgentPanel.tsx
  • apps/webapp/app/components/scheduled/timezones.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.queues_.$queueParam/route.tsx
  • packages/cli-v3/e2e/e2e.test.ts
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.deployments.$deploymentParam/route.tsx
  • apps/webapp/app/components/primitives/TooltipPortal.tsx
  • apps/webapp/app/components/runs/v3/RunStatusCellTooltip.tsx
  • apps/webapp/app/components/primitives/TreeView/TreeView.tsx
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.waitpoints.$waitpointFriendlyId.complete/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.environment-variables/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.sso/route.tsx
  • apps/webapp/app/hooks/useDebounce.ts
  • apps/webapp/app/components/navigation/EnvironmentSelector.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.playground.$agentParam/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs._index/useRunsLiveReload.ts
  • apps/webapp/app/routes/resources.account.mfa.setup/useMfaSetup.ts
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.select-plan.tsx
  • apps/webapp/app/components/navigation/SideMenu.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.sessions.$sessionParam/route.tsx
  • apps/webapp/app/components/query/QueryEditor.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.prompts.$promptSlug/route.tsx
  • apps/webapp/app/hooks/useMetricResourceQuery.ts
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.dashboards.$dashboardKey/route.tsx
  • apps/webapp/app/components/runs/v3/agent/AgentView.tsx
  • apps/webapp/app/components/runs/v3/ai/AIChatMessages.tsx
  • apps/webapp/app/components/runs/v3/SharedFilters.tsx
  • apps/webapp/app/routes/vercel.onboarding.tsx
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs.$runParam.streams.$streamKey/route.tsx
  • apps/webapp/app/components/dashboard-agent/AgentChart.tsx
  • apps/webapp/app/components/code/AIQueryInput.tsx
  • apps/webapp/app/components/primitives/charts/hooks/useZoomSelection.ts
  • apps/webapp/app/components/webhookDeliveries/v1/useDeliveriesLiveReload.ts
apps/webapp/**/*.{ts,tsx}

📄 CodeRabbit inference engine (.cursor/rules/webapp.mdc)

apps/webapp/**/*.{ts,tsx}: Access environment variables through the env export of env.server.ts instead of directly accessing process.env
Use subpath exports from @trigger.dev/core package instead of importing from the root @trigger.dev/core path

Files:

  • apps/webapp/app/components/LoginPageLayout.tsx
  • apps/webapp/app/components/TriggerRotatingLogo.tsx
  • apps/webapp/app/components/AskAI.tsx
  • apps/webapp/app/components/Feedback.tsx
  • apps/webapp/app/components/billing/BillingLimitConfigSection.tsx
  • apps/webapp/app/components/billing/BillingAlertsSection.tsx
  • apps/webapp/app/components/billing/BillingLimitRecoveryPanel.tsx
  • apps/webapp/app/components/dashboard-agent/DashboardAgentMessages.tsx
  • apps/webapp/app/components/logs/LogsTable.tsx
  • apps/webapp/app/components/code/JSONEditor.tsx
  • apps/webapp/app/components/admin/FeatureFlagsDialog.tsx
  • apps/webapp/app/components/primitives/AnimatedCallout.tsx
  • apps/webapp/app/components/primitives/MiddleTruncate.tsx
  • apps/webapp/app/components/code/TextEditor.tsx
  • apps/webapp/app/components/navigation/SideMenuHeader.tsx
  • apps/webapp/app/components/navigation/FavoritesSection.tsx
  • apps/webapp/app/components/primitives/AgentDotMatrix.tsx
  • apps/webapp/app/components/primitives/ClipboardField.tsx
  • apps/webapp/app/components/metrics/SaveToDashboardDialog.tsx
  • apps/webapp/app/components/code/TSQLEditor.tsx
  • apps/webapp/app/components/queues/QueueControls.tsx
  • apps/webapp/app/hooks/useChanged.ts
  • apps/webapp/app/components/webhookConsole/SampleSourcePicker.tsx
  • apps/webapp/app/components/navigation/useReorderableList.ts
  • apps/webapp/app/hooks/useEventSource.tsx
  • apps/webapp/app/components/primitives/Resizable.tsx
  • apps/webapp/app/components/admin/backOffice/RateLimitSection.tsx
  • apps/webapp/app/components/DevPresence.tsx
  • apps/webapp/app/components/runs/v3/AIFilterInput.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.apikeys/route.tsx
  • apps/webapp/app/components/primitives/DurationPicker.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam._index/route.tsx
  • apps/webapp/app/components/schedules/PurchaseSchedulesModal.tsx
  • apps/webapp/app/hooks/useAutoRevalidate.ts
  • apps/webapp/app/hooks/useDashboardEditor.ts
  • apps/webapp/app/components/admin/backOffice/MaxProjectsSection.tsx
  • apps/webapp/app/hooks/useElementVisibility.ts
  • apps/webapp/app/routes/account._index/route.tsx
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.schedules.new.natural-language.tsx
  • apps/webapp/app/routes/confirm-basic-details.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.concurrency/route.tsx
  • apps/webapp/app/components/primitives/DateTime.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.webhooks.endpoints.$endpointParam/route.tsx
  • apps/webapp/app/components/primitives/SearchInput.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.queues/route.tsx
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.vercel.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.logs/route.tsx
  • apps/webapp/app/components/navigation/DashboardDialogs.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.tasks.scheduled.$taskParam/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug_.projects.new/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs.$runParam/route.tsx
  • apps/webapp/app/components/code/TSQLResultsTable.tsx
  • apps/webapp/app/routes/login.mfa/route.tsx
  • apps/webapp/app/routes/admin.feature-flags.tsx
  • apps/webapp/app/components/primitives/Checkbox.tsx
  • apps/webapp/app/components/primitives/DateField.tsx
  • apps/webapp/app/components/integrations/VercelOnboardingModal.tsx
  • apps/webapp/app/components/primitives/Buttons.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.test.tasks.$taskParam/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.branches/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.dashboards.custom.$dashboardId/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.settings.integrations/route.tsx
  • apps/webapp/app/routes/admin.queue-metrics.tsx
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.github.tsx
  • apps/webapp/app/routes/resources.branches.create.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.team/route.tsx
  • apps/webapp/app/routes/resources.metric.tsx
  • apps/webapp/app/components/dashboard-agent/DashboardAgentChat.tsx
  • apps/webapp/app/components/dashboard-agent/DashboardAgentPanel.tsx
  • apps/webapp/app/components/scheduled/timezones.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.queues_.$queueParam/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.deployments.$deploymentParam/route.tsx
  • apps/webapp/app/components/primitives/TooltipPortal.tsx
  • apps/webapp/app/components/runs/v3/RunStatusCellTooltip.tsx
  • apps/webapp/app/components/primitives/TreeView/TreeView.tsx
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.waitpoints.$waitpointFriendlyId.complete/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.environment-variables/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.sso/route.tsx
  • apps/webapp/app/hooks/useDebounce.ts
  • apps/webapp/app/components/navigation/EnvironmentSelector.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.playground.$agentParam/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs._index/useRunsLiveReload.ts
  • apps/webapp/app/routes/resources.account.mfa.setup/useMfaSetup.ts
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.select-plan.tsx
  • apps/webapp/app/components/navigation/SideMenu.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.sessions.$sessionParam/route.tsx
  • apps/webapp/app/components/query/QueryEditor.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.prompts.$promptSlug/route.tsx
  • apps/webapp/app/hooks/useMetricResourceQuery.ts
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.dashboards.$dashboardKey/route.tsx
  • apps/webapp/app/components/runs/v3/agent/AgentView.tsx
  • apps/webapp/app/components/runs/v3/ai/AIChatMessages.tsx
  • apps/webapp/app/components/runs/v3/SharedFilters.tsx
  • apps/webapp/app/routes/vercel.onboarding.tsx
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs.$runParam.streams.$streamKey/route.tsx
  • apps/webapp/app/components/dashboard-agent/AgentChart.tsx
  • apps/webapp/app/components/code/AIQueryInput.tsx
  • apps/webapp/app/components/primitives/charts/hooks/useZoomSelection.ts
  • apps/webapp/app/components/webhookDeliveries/v1/useDeliveriesLiveReload.ts
apps/webapp/app/**/*.{ts,tsx}

📄 CodeRabbit inference engine (apps/webapp/CLAUDE.md)

apps/webapp/app/**/*.{ts,tsx}: For dashboard changes, visually verify the running Remix app with Chrome DevTools MCP, using snapshots, screenshots, interaction, and console-message checks as appropriate.
Use useCallback and useMemo only for context provider values, expensive derived data used as a dependency, or stable references required by dependency arrays; do not wrap ordinary event handlers or trivial computations.
Use named constants for sentinel or placeholder values instead of scattering raw string literals across comparisons.

Files:

  • apps/webapp/app/components/LoginPageLayout.tsx
  • apps/webapp/app/components/TriggerRotatingLogo.tsx
  • apps/webapp/app/components/AskAI.tsx
  • apps/webapp/app/components/Feedback.tsx
  • apps/webapp/app/components/billing/BillingLimitConfigSection.tsx
  • apps/webapp/app/components/billing/BillingAlertsSection.tsx
  • apps/webapp/app/components/billing/BillingLimitRecoveryPanel.tsx
  • apps/webapp/app/components/dashboard-agent/DashboardAgentMessages.tsx
  • apps/webapp/app/components/logs/LogsTable.tsx
  • apps/webapp/app/components/code/JSONEditor.tsx
  • apps/webapp/app/components/admin/FeatureFlagsDialog.tsx
  • apps/webapp/app/components/primitives/AnimatedCallout.tsx
  • apps/webapp/app/components/primitives/MiddleTruncate.tsx
  • apps/webapp/app/components/code/TextEditor.tsx
  • apps/webapp/app/components/navigation/SideMenuHeader.tsx
  • apps/webapp/app/components/navigation/FavoritesSection.tsx
  • apps/webapp/app/components/primitives/AgentDotMatrix.tsx
  • apps/webapp/app/components/primitives/ClipboardField.tsx
  • apps/webapp/app/components/metrics/SaveToDashboardDialog.tsx
  • apps/webapp/app/components/code/TSQLEditor.tsx
  • apps/webapp/app/components/queues/QueueControls.tsx
  • apps/webapp/app/hooks/useChanged.ts
  • apps/webapp/app/components/webhookConsole/SampleSourcePicker.tsx
  • apps/webapp/app/components/navigation/useReorderableList.ts
  • apps/webapp/app/hooks/useEventSource.tsx
  • apps/webapp/app/components/primitives/Resizable.tsx
  • apps/webapp/app/components/admin/backOffice/RateLimitSection.tsx
  • apps/webapp/app/components/DevPresence.tsx
  • apps/webapp/app/components/runs/v3/AIFilterInput.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.apikeys/route.tsx
  • apps/webapp/app/components/primitives/DurationPicker.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam._index/route.tsx
  • apps/webapp/app/components/schedules/PurchaseSchedulesModal.tsx
  • apps/webapp/app/hooks/useAutoRevalidate.ts
  • apps/webapp/app/hooks/useDashboardEditor.ts
  • apps/webapp/app/components/admin/backOffice/MaxProjectsSection.tsx
  • apps/webapp/app/hooks/useElementVisibility.ts
  • apps/webapp/app/routes/account._index/route.tsx
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.schedules.new.natural-language.tsx
  • apps/webapp/app/routes/confirm-basic-details.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.concurrency/route.tsx
  • apps/webapp/app/components/primitives/DateTime.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.webhooks.endpoints.$endpointParam/route.tsx
  • apps/webapp/app/components/primitives/SearchInput.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.queues/route.tsx
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.vercel.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.logs/route.tsx
  • apps/webapp/app/components/navigation/DashboardDialogs.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.tasks.scheduled.$taskParam/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug_.projects.new/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs.$runParam/route.tsx
  • apps/webapp/app/components/code/TSQLResultsTable.tsx
  • apps/webapp/app/routes/login.mfa/route.tsx
  • apps/webapp/app/routes/admin.feature-flags.tsx
  • apps/webapp/app/components/primitives/Checkbox.tsx
  • apps/webapp/app/components/primitives/DateField.tsx
  • apps/webapp/app/components/integrations/VercelOnboardingModal.tsx
  • apps/webapp/app/components/primitives/Buttons.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.test.tasks.$taskParam/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.branches/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.dashboards.custom.$dashboardId/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.settings.integrations/route.tsx
  • apps/webapp/app/routes/admin.queue-metrics.tsx
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.github.tsx
  • apps/webapp/app/routes/resources.branches.create.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.team/route.tsx
  • apps/webapp/app/routes/resources.metric.tsx
  • apps/webapp/app/components/dashboard-agent/DashboardAgentChat.tsx
  • apps/webapp/app/components/dashboard-agent/DashboardAgentPanel.tsx
  • apps/webapp/app/components/scheduled/timezones.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.queues_.$queueParam/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.deployments.$deploymentParam/route.tsx
  • apps/webapp/app/components/primitives/TooltipPortal.tsx
  • apps/webapp/app/components/runs/v3/RunStatusCellTooltip.tsx
  • apps/webapp/app/components/primitives/TreeView/TreeView.tsx
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.waitpoints.$waitpointFriendlyId.complete/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.environment-variables/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.sso/route.tsx
  • apps/webapp/app/hooks/useDebounce.ts
  • apps/webapp/app/components/navigation/EnvironmentSelector.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.playground.$agentParam/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs._index/useRunsLiveReload.ts
  • apps/webapp/app/routes/resources.account.mfa.setup/useMfaSetup.ts
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.select-plan.tsx
  • apps/webapp/app/components/navigation/SideMenu.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.sessions.$sessionParam/route.tsx
  • apps/webapp/app/components/query/QueryEditor.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.prompts.$promptSlug/route.tsx
  • apps/webapp/app/hooks/useMetricResourceQuery.ts
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.dashboards.$dashboardKey/route.tsx
  • apps/webapp/app/components/runs/v3/agent/AgentView.tsx
  • apps/webapp/app/components/runs/v3/ai/AIChatMessages.tsx
  • apps/webapp/app/components/runs/v3/SharedFilters.tsx
  • apps/webapp/app/routes/vercel.onboarding.tsx
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs.$runParam.streams.$streamKey/route.tsx
  • apps/webapp/app/components/dashboard-agent/AgentChart.tsx
  • apps/webapp/app/components/code/AIQueryInput.tsx
  • apps/webapp/app/components/primitives/charts/hooks/useZoomSelection.ts
  • apps/webapp/app/components/webhookDeliveries/v1/useDeliveriesLiveReload.ts
**/*

📄 CodeRabbit inference engine (AGENTS.md)

**/*: Add crumbs as you write code — not just when debugging. Mark lines with
// @Crumbs or wrap blocks in `// `#region` `@crumbs. They stay on the
branch throughout development and are stripped by agentcrumbs strip
before merge.
Do not invent new namespaces — pick from this table or ask first.
Do not flag // @Crumbs markers, `#region `@crumbs blocks, or agentcrumbs
imports in reviews. These are temporary debug instrumentation stripped
before merge. Data logged in crumbs (IDs, names, values) never reaches
production.

Files:

  • apps/webapp/app/components/LoginPageLayout.tsx
  • apps/webapp/app/components/TriggerRotatingLogo.tsx
  • apps/webapp/app/components/AskAI.tsx
  • apps/webapp/app/components/Feedback.tsx
  • apps/webapp/app/components/billing/BillingLimitConfigSection.tsx
  • apps/webapp/app/components/billing/BillingAlertsSection.tsx
  • apps/webapp/app/components/billing/BillingLimitRecoveryPanel.tsx
  • apps/webapp/app/components/dashboard-agent/DashboardAgentMessages.tsx
  • apps/webapp/app/components/logs/LogsTable.tsx
  • apps/webapp/app/components/code/JSONEditor.tsx
  • apps/webapp/app/components/admin/FeatureFlagsDialog.tsx
  • apps/webapp/app/components/primitives/AnimatedCallout.tsx
  • apps/webapp/app/components/primitives/MiddleTruncate.tsx
  • apps/webapp/app/components/code/TextEditor.tsx
  • apps/webapp/app/components/navigation/SideMenuHeader.tsx
  • apps/webapp/app/components/navigation/FavoritesSection.tsx
  • apps/webapp/app/components/primitives/AgentDotMatrix.tsx
  • apps/webapp/app/components/primitives/ClipboardField.tsx
  • apps/webapp/app/components/metrics/SaveToDashboardDialog.tsx
  • apps/webapp/app/components/code/TSQLEditor.tsx
  • apps/webapp/app/components/queues/QueueControls.tsx
  • apps/webapp/app/hooks/useChanged.ts
  • apps/webapp/app/components/webhookConsole/SampleSourcePicker.tsx
  • apps/webapp/app/components/navigation/useReorderableList.ts
  • apps/webapp/app/hooks/useEventSource.tsx
  • apps/webapp/app/components/primitives/Resizable.tsx
  • apps/webapp/app/components/admin/backOffice/RateLimitSection.tsx
  • apps/webapp/app/components/DevPresence.tsx
  • apps/webapp/app/components/runs/v3/AIFilterInput.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.apikeys/route.tsx
  • apps/webapp/app/components/primitives/DurationPicker.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam._index/route.tsx
  • apps/webapp/app/components/schedules/PurchaseSchedulesModal.tsx
  • apps/webapp/app/hooks/useAutoRevalidate.ts
  • apps/webapp/app/hooks/useDashboardEditor.ts
  • apps/webapp/app/components/admin/backOffice/MaxProjectsSection.tsx
  • apps/webapp/app/hooks/useElementVisibility.ts
  • apps/webapp/app/routes/account._index/route.tsx
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.schedules.new.natural-language.tsx
  • apps/webapp/app/routes/confirm-basic-details.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.concurrency/route.tsx
  • apps/webapp/app/components/primitives/DateTime.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.webhooks.endpoints.$endpointParam/route.tsx
  • internal-packages/observability-map/src/suppression.ts
  • packages/core/src/v3/utils/globals.ts
  • apps/webapp/app/components/primitives/SearchInput.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.queues/route.tsx
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.vercel.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.logs/route.tsx
  • apps/webapp/app/components/navigation/DashboardDialogs.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.tasks.scheduled.$taskParam/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug_.projects.new/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs.$runParam/route.tsx
  • apps/webapp/app/components/code/TSQLResultsTable.tsx
  • apps/webapp/app/routes/login.mfa/route.tsx
  • apps/webapp/app/routes/admin.feature-flags.tsx
  • apps/webapp/app/components/primitives/Checkbox.tsx
  • apps/webapp/app/components/primitives/DateField.tsx
  • apps/webapp/app/components/integrations/VercelOnboardingModal.tsx
  • apps/webapp/app/components/primitives/Buttons.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.test.tasks.$taskParam/route.tsx
  • packages/trigger-sdk/src/v3/envvars.ts
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.branches/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.dashboards.custom.$dashboardId/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.settings.integrations/route.tsx
  • apps/webapp/app/routes/admin.queue-metrics.tsx
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.github.tsx
  • apps/webapp/app/routes/resources.branches.create.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.team/route.tsx
  • apps/webapp/app/routes/resources.metric.tsx
  • apps/webapp/app/components/dashboard-agent/DashboardAgentChat.tsx
  • apps/webapp/app/components/dashboard-agent/DashboardAgentPanel.tsx
  • apps/webapp/app/components/scheduled/timezones.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.queues_.$queueParam/route.tsx
  • packages/cli-v3/e2e/e2e.test.ts
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.deployments.$deploymentParam/route.tsx
  • apps/webapp/app/components/primitives/TooltipPortal.tsx
  • apps/webapp/app/components/runs/v3/RunStatusCellTooltip.tsx
  • package.json
  • apps/webapp/app/components/primitives/TreeView/TreeView.tsx
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.waitpoints.$waitpointFriendlyId.complete/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.environment-variables/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.sso/route.tsx
  • apps/webapp/app/hooks/useDebounce.ts
  • apps/webapp/app/components/navigation/EnvironmentSelector.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.playground.$agentParam/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs._index/useRunsLiveReload.ts
  • apps/webapp/app/routes/resources.account.mfa.setup/useMfaSetup.ts
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.select-plan.tsx
  • apps/webapp/app/components/navigation/SideMenu.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.sessions.$sessionParam/route.tsx
  • apps/webapp/app/components/query/QueryEditor.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.prompts.$promptSlug/route.tsx
  • apps/webapp/app/hooks/useMetricResourceQuery.ts
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.dashboards.$dashboardKey/route.tsx
  • apps/webapp/app/components/runs/v3/agent/AgentView.tsx
  • apps/webapp/app/components/runs/v3/ai/AIChatMessages.tsx
  • apps/webapp/app/components/runs/v3/SharedFilters.tsx
  • apps/webapp/app/routes/vercel.onboarding.tsx
  • apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs.$runParam.streams.$streamKey/route.tsx
  • apps/webapp/app/components/dashboard-agent/AgentChart.tsx
  • apps/webapp/app/components/code/AIQueryInput.tsx
  • apps/webapp/app/components/primitives/charts/hooks/useZoomSelection.ts
  • apps/webapp/app/components/webhookDeliveries/v1/useDeliveriesLiveReload.ts
**/*.ts

📄 CodeRabbit inference engine (.cursor/rules/otel-metrics.mdc)

**/*.ts: When creating or editing OTEL metrics (counters, histograms, gauges), ensure metric attributes have low cardinality by using only enums, booleans, bounded error codes, or bounded shard IDs
Do not use high-cardinality attributes in OTEL metrics such as UUIDs/IDs (envId, userId, runId, projectId, organizationId), unbounded integers (itemCount, batchSize, retryCount), timestamps (createdAt, startTime), or free-form strings (errorMessage, taskName, queueName)
When exporting OTEL metrics via OTLP to Prometheus, be aware that the exporter automatically adds unit suffixes to metric names (e.g., 'my_duration_ms' becomes 'my_duration_ms_milliseconds', 'my_counter' becomes 'my_counter_total'). Account for these transformations when writing Grafana dashboards or Prometheus queries

Files:

  • apps/webapp/app/hooks/useChanged.ts
  • apps/webapp/app/components/navigation/useReorderableList.ts
  • apps/webapp/app/hooks/useAutoRevalidate.ts
  • apps/webapp/app/hooks/useDashboardEditor.ts
  • apps/webapp/app/hooks/useElementVisibility.ts
  • internal-packages/observability-map/src/suppression.ts
  • packages/core/src/v3/utils/globals.ts
  • packages/trigger-sdk/src/v3/envvars.ts
  • packages/cli-v3/e2e/e2e.test.ts
  • apps/webapp/app/hooks/useDebounce.ts
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs._index/useRunsLiveReload.ts
  • apps/webapp/app/routes/resources.account.mfa.setup/useMfaSetup.ts
  • apps/webapp/app/hooks/useMetricResourceQuery.ts
  • apps/webapp/app/components/primitives/charts/hooks/useZoomSelection.ts
  • apps/webapp/app/components/webhookDeliveries/v1/useDeliveriesLiveReload.ts
apps/webapp/app/**/*.ts

📄 CodeRabbit inference engine (apps/webapp/CLAUDE.md)

apps/webapp/app/**/*.ts: Never use request.signal to detect client disconnects. Use getRequestAbortSignal() from app/services/httpAsyncStorage.server.ts, which is wired to Express response close events.
Access environment variables through the env export from app/env.server.ts; never use process.env directly.
Always use Prisma findFirst instead of findUnique.
Always use the $transaction helper from ~/db.server, never call prisma.$transaction or $replica.$transaction directly. Pass isolation levels as strings, use Serializable for correctness-critical read-then-write invariants, and guard possibly undefined helper results when a definite value is required.

Files:

  • apps/webapp/app/hooks/useChanged.ts
  • apps/webapp/app/components/navigation/useReorderableList.ts
  • apps/webapp/app/hooks/useAutoRevalidate.ts
  • apps/webapp/app/hooks/useDashboardEditor.ts
  • apps/webapp/app/hooks/useElementVisibility.ts
  • apps/webapp/app/hooks/useDebounce.ts
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs._index/useRunsLiveReload.ts
  • apps/webapp/app/routes/resources.account.mfa.setup/useMfaSetup.ts
  • apps/webapp/app/hooks/useMetricResourceQuery.ts
  • apps/webapp/app/components/primitives/charts/hooks/useZoomSelection.ts
  • apps/webapp/app/components/webhookDeliveries/v1/useDeliveriesLiveReload.ts
packages/core/**/*.{ts,tsx,js,jsx}

📄 CodeRabbit inference engine (packages/core/CLAUDE.md)

Never import the root package (@trigger.dev/core). Always use subpath imports such as @trigger.dev/core/v3, @trigger.dev/core/v3/utils, @trigger.dev/core/logger, or @trigger.dev/core/schemas

Files:

  • packages/core/src/v3/utils/globals.ts
packages/core/**/*.{ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

Import subpaths only (never root).

Files:

  • packages/core/src/v3/utils/globals.ts
packages/trigger-sdk/**/*.{ts,tsx}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

In the Trigger.dev SDK (packages/trigger-sdk), prefer isomorphic code like fetch and ReadableStream instead of Node.js-specific code

Files:

  • packages/trigger-sdk/src/v3/envvars.ts
packages/trigger-sdk/**/*.{js,ts,jsx,tsx}

📄 CodeRabbit inference engine (packages/trigger-sdk/CLAUDE.md)

Always import from @trigger.dev/sdk. Never use @trigger.dev/sdk/v3 (deprecated path alias)

Files:

  • packages/trigger-sdk/src/v3/envvars.ts
packages/trigger-sdk/**/*.ts

📄 CodeRabbit inference engine (AGENTS.md)

Always import from @trigger.dev/sdk. Never use @trigger.dev/sdk/v3 or deprecated client.defineJob.

Files:

  • packages/trigger-sdk/src/v3/envvars.ts
**/*.{test,spec}.{ts,tsx}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

Use vitest for all tests in the Trigger.dev repository

**/*.{test,spec}.{ts,tsx}: We use vitest exclusively. Never mock anything - use testcontainers instead.
Test files go next to source files (e.g., MyService.ts -> MyService.test.ts).

Files:

  • packages/cli-v3/e2e/e2e.test.ts
apps/webapp/app/routes/**/*.ts

📄 CodeRabbit inference engine (apps/webapp/CLAUDE.md)

apps/webapp/app/routes/**/*.ts: Use Remix flat-file route conventions with dot-separated segments; for example, api.v1.tasks.$taskId.trigger.ts maps to /api/v1/tasks/:taskId/trigger.
PAT-authenticated API routes must resolve their target organization or project within the caller's membership scope, using a membership filter or a helper such as findProjectByRef or resolveOrganizationForApiUser; RBAC authorization alone is insufficient.

Files:

  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs._index/useRunsLiveReload.ts
  • apps/webapp/app/routes/resources.account.mfa.setup/useMfaSetup.ts
🧠 Learnings (1)
📚 Learning: 2026-07-15T18:37:08.044Z
Learnt from: CR
Repo: triggerdotdev/trigger.dev PR: 0
File: apps/webapp/CLAUDE.md:0-0
Timestamp: 2026-07-15T18:37:08.044Z
Learning: Applies to apps/webapp/app/**/*.{ts,tsx} : Use `useCallback` and `useMemo` only for context provider values, expensive derived data used as a dependency, or stable references required by dependency arrays; do not wrap ordinary event handlers or trivial computations.

Applied to files:

  • apps/webapp/app/components/billing/BillingAlertsSection.tsx

Comment on lines +227 to 228
// oxlint-disable-next-line react/set-state-in-effect, react/no-deriving-state-in-effects -- Programmatic filter changes intentionally reset the debounced input draft.
setValue(initialValue);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

fd -H -t f -E node_modules -E dist 'oxlint|package\.json' . \
  | xargs -r rg -n 'react(-hooks)?/(refs|set-state-in-effect|no-deriving-state-in-effects|incompatible-library)|jsPlugins|plugins'

pnpm exec oxlint --rules \
  | rg 'react(-hooks)?/(refs|set-state-in-effect|no-deriving-state-in-effects|incompatible-library)'

pnpm exec oxlint \
  apps/webapp/app/components/code/TSQLResultsTable.tsx \
  --report-unused-disable-directives

Repository: triggerdotdev/trigger.dev

Length of output: 1853


🏁 Script executed:

#!/bin/bash
set -u

printf '%s\n' '--- effective Oxlint configuration ---'
cat -n .oxlintrc.json | sed -n '1,170p'

printf '%s\n' '--- Oxlint version declarations ---'
rg -n '"oxlint"|oxlint@' package.json pnpm-lock.yaml apps/webapp/package.json . 2>/dev/null | head -80

printf '%s\n' '--- CLI availability ---'
pnpm exec oxlint --version 2>&1 || true
pnpm exec oxlint --help 2>&1 | sed -n '1,180p' || true

printf '%s\n' '--- directives in the reviewed file ---'
rg -n 'oxlint-disable|react/(refs|set-state-in-effect|no-deriving-state-in-effects|incompatible-library)' apps/webapp/app/components/code/TSQLResultsTable.tsx

Repository: triggerdotdev/trigger.dev

Length of output: 16510


🏁 Script executed:

#!/bin/bash
set +e

printf '%s\n' '--- registered rule IDs ---'
pnpm exec oxlint --rules 2>&1 \
  | rg -n -C 1 'react/(refs|set-state-in-effect|no-deriving-state-in-effects|incompatible-library)' \
  || true

printf '%s\n' '--- effective file configuration ---'
pnpm exec oxlint --print-config apps/webapp/app/components/code/TSQLResultsTable.tsx 2>&1 \
  | rg -n -C 1 'react/(refs|set-state-in-effect|no-deriving-state-in-effects|incompatible-library)' \
  || true

printf '%s\n' '--- unused-directive check ---'
pnpm exec oxlint \
  apps/webapp/app/components/code/TSQLResultsTable.tsx \
  --report-unused-disable-directives 2>&1 \
  | rg -n -C 2 'unused|directive|react/(refs|set-state-in-effect|no-deriving-state-in-effects|incompatible-library)' \
  || true

Repository: triggerdotdev/trigger.dev

Length of output: 259


🏁 Script executed:

#!/bin/bash
set +e

printf '%s\n' '--- registered rules (raw, filtered by compiler namespace) ---'
pnpm exec oxlint --rules 2>&1 | head -40

printf '%s\n' '--- effective config (raw) ---'
pnpm exec oxlint --print-config apps/webapp/app/components/code/TSQLResultsTable.tsx 2>&1 | head -80

printf '%s\n' '--- file lint (raw) ---'
pnpm exec oxlint apps/webapp/app/components/code/TSQLResultsTable.tsx \
  --report-unused-disable-directives 2>&1 | head -160

Repository: triggerdotdev/trigger.dev

Length of output: 6059


🌐 Web query:

Oxlint 1.79.0 react plugin rules incompatible-library refs set-state-in-effect no-deriving-state-in-effects

💡 Result:

In Oxlint v1.79.0, React Compiler support has been integrated, introducing several specific rules within the react plugin that are powered by the React Compiler's analysis [1][2]. Regarding your specific inquiries: 1. react/incompatible-library: This rule is officially supported in Oxlint [3]. It warns about the usage of library APIs known to be incompatible with manual or automatic memoization (e.g., react-hook-form's watch, TanStack Table's useReactTable) [3]. It is categorized under the "correctness" category [2]. 2. react/refs: This rule is officially supported [4]. It validates the correct usage of refs, specifically ensuring that ref.current is not read or written during the render phase [4]. It is categorized under the "correctness" category [2]. 3. react/set-state-in-effect: This rule is officially supported [5]. It disallows calling setState synchronously inside an effect body, as this triggers unnecessary extra render passes and often indicates an anti-pattern (such as deriving state in an effect) [5][6]. It is categorized under the "correctness" category [2]. 4. no-deriving-state-in-effects: There is no native Oxlint rule with the exact name "no-deriving-state-in-effects" in the core react plugin [2]. However, the behavior of deriving state in effects is targeted by the react/set-state-in-effect rule [5][6]. Additionally, the rule react/no-deriving-state-in-effects is explicitly listed as being "off" and assigned to the "perf" category in Oxlint's recent configuration documentation [2]. If you require specific coverage for these anti-patterns, you may also look into community plugins like oxlint-plugin-react-doctor, which includes rules such as no-derived-state-effect [7]. To enable these rules, you can add them to your.oxlintrc.json or oxlint.config.ts configuration under the react plugin section [3][4][5]. For further details, consult the official Oxlint documentation [8][2].

Citations:


Remove react/no-deriving-state-in-effects. Oxlint 1.79 supports the other three rules, but not this rule. Remove it from the configuration and this directive.

Source: MCP tools

Comment on lines +126 to 127

renderedPathRef.current = location.pathname;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

pnpm exec oxlint \
  apps/webapp/app/components/dashboard-agent/DashboardAgentChat.tsx \
  --report-unused-disable-directives

Repository: triggerdotdev/trigger.dev

Length of output: 2089


🏁 Script executed:

#!/bin/bash
set -euo pipefail

file="apps/webapp/app/components/dashboard-agent/DashboardAgentChat.tsx"

printf '%s\n' '--- relevant source ---'
cat -n "$file" | sed -n '95,145p;195,225p;345,420p'

printf '%s\n' '--- ref declarations and suppressions ---'
rg -n -C 2 'renderedPathRef|orderRef|navigatedRef|watchProposedRef|teardownRef|messagesRef|react/refs|eslint-disable' "$file"

printf '%s\n' '--- repository lint configuration references ---'
rg -n -S 'react/refs|oxlint|eslint-plugin-react-hooks|react-hooks' \
  --glob '!node_modules/**' \
  --glob '!dist/**' \
  --glob '!build/**' \
  .oxlintrc* package.json pnpm-lock.yaml 2>/dev/null || true

printf '%s\n' '--- package files ---'
git ls-files '*oxlint*' '*eslint*' 'package.json' | sed -n '1,120p'

Repository: triggerdotdev/trigger.dev

Length of output: 15588


🌐 Web query:

React eslint-plugin-react-hooks refs rule official documentation render ref.current

💡 Result:

The official eslint-plugin-react-hooks includes a specific rule, react-hooks/refs, designed to enforce the correct usage of React refs [1][2][3]. This rule prohibits reading or writing to ref.current during the component render phase, as doing so can lead to unpredictable behavior, stale data, or inconsistent application state [1][4][5]. Key points regarding this rule and React ref usage include: 1. Rule Intent: The rule prevents reading or writing ref.current during rendering [1][4][3]. Because refs are meant for storing mutable values that do not trigger re-renders, accessing them during render—where React expects pure operations—breaks established React patterns [1][5][6]. 2. Acceptable Usage: - Effects and Event Handlers: You should read or write ref.current inside useEffect, useLayoutEffect, or event handlers (like onClick), where side effects are intended and allowed [1][4][3]. - Lazy Initialization: A specific, allowed exception is lazy initialization of a ref, such as if (!ref.current) ref.current = new ExpensiveValue, provided it is performed safely during the render phase [1][5][3]. 3. How the Linter Identifies Refs: The plugin uses a name-based heuristic to identify refs [1][4]. If a variable is named ref or ends in Ref, the linter tracks it as a ref object [1][3]. If you are using an object to hold non-ref mutable data and are receiving false positives from this rule, you can resolve it by renaming the variable (e.g., to box or data) so the linter no longer infers it as a React ref [1][4][3]. 4. Distinction from exhaustive-deps: While react-hooks/refs targets direct access to ref.current during render, the separate react-hooks/exhaustive-deps rule warns against including ref.current in dependency arrays [7][8]. This is because refs are mutable and their updates do not trigger re-renders; therefore, they should not be treated as dependencies that require re-running effects [7][8]. For more details, consult the official React documentation on the refs lint rule and the useRef hook [1][5].

Citations:


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '--- Oxlint configuration ---'
cat -n .oxlintrc.json | sed -n '1,180p'

printf '%s\n' '--- Change that removed the directives ---'
git diff --unified=8 -- apps/webapp/app/components/dashboard-agent/DashboardAgentChat.tsx

printf '%s\n' '--- Available Oxlint rule/config capabilities ---'
pnpm exec oxlint --version
pnpm exec oxlint --help | sed -n '1,180p'

Repository: triggerdotdev/trigger.dev

Length of output: 15744


🏁 Script executed:

#!/bin/bash
set -euo pipefail

file="apps/webapp/app/components/dashboard-agent/DashboardAgentChat.tsx"

printf '%s\n' '--- parent version around the affected code ---'
git show HEAD^:"$file" 2>/dev/null | nl -ba | sed -n '115,140p;200,220p;350,420p' || true

printf '%s\n' '--- ref-rule suppression conventions ---'
rg -n -C 1 'react/refs|eslint-disable.*refs|oxlint-disable.*refs' \
  --glob '!node_modules/**' \
  --glob '!dist/**' \
  --glob '!build/**' \
  . 2>/dev/null || true

printf '%s\n' '--- locked Oxlint version ---'
sed -n '120,150p;12355,12380p;27365,27385p' pnpm-lock.yaml

Repository: triggerdotdev/trigger.dev

Length of output: 20178


🌐 Web query:

Oxlint 1.79.0 react/refs rule react plugin

💡 Result:

In Oxlint 1.79.0, the react/refs rule is officially supported as part of the React plugin's integration with the React Compiler [1][2][3]. Following a major update in version 1.79.0, Oxlint split the experimental, monolithic react/react-compiler rule into distinct, category-specific rules that align with upstream React Compiler presets [2][3]. The react/refs rule is now one of these native implementations, categorized under correctness [2]. To use the rule, ensure you have enabled the React plugin [1][4]. You can enable the rule via your configuration file or the command line: Configuration file (oxlint.json or equivalent): { "plugins": ["react"], "rules": { "react/refs": "error" } } Command line: oxlint --deny react/refs --react-plugin This rule validates that refs are not read or written during the render phase, which is crucial for preventing stale UI and ensuring component correctness [1]. If you were previously using the experimental react/react-compiler rule, it is recommended to remove it from your configuration and replace it with these specific rules [2].

Citations:


🏁 Script executed:

#!/bin/bash
set -euo pipefail

file="apps/webapp/app/components/dashboard-agent/DashboardAgentChat.tsx"

printf '%s\n' '--- parent source at affected ranges ---'
git show HEAD^:"$file" 2>/dev/null | cat -n | sed -n '115,140p;200,220p;350,420p' || true

printf '%s\n' '--- parent-to-current diff ---'
git diff --unified=3 HEAD^ HEAD -- "$file" 2>/dev/null | sed -n '1,240p' || true

printf '%s\n' '--- Oxlint refs rule documentation ---'
curl -fsSL https://oxc.rs/docs/guide/usage/linter/rules/react/refs.html | \
  sed -n '1,220p' | grep -E -i -C 3 'lazy|render|current|disable' || true

Repository: triggerdotdev/trigger.dev

Length of output: 50381


Restore targeted react/refs suppressions for intentional render-time ref access.

react/refs is enabled for this file. Restore the repository’s oxlint-disable-next-line react/refs comments before the six intentional accesses. Keep lazy-initialization writes unsuppressed when they match the rule exception.

Source: MCP tools

Comment on lines +1776 to 1778
// oxlint-disable-next-line react/set-state-in-effect -- This effect intentionally synchronizes route state after an external or lifecycle change.
setIsModalOpen(false);
setShowCreatedSuccessMessage(true);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

file='apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.test.tasks.$taskParam/route.tsx'

awk '
/setIsModalOpen\(false\)/ || /setShowCreatedSuccessMessage\(true\)/ {
  if (previous !~ /oxlint-disable-next-line react\/set-state-in-effect/) {
    print "Missing suppression before: " $0
    exit 1
  }
}
{ previous = $0 }
' "$file"

pnpm exec oxlint --deny react/set-state-in-effect --report-unused-disable-directives "$file"

Repository: triggerdotdev/trigger.dev

Length of output: 233


🏁 Script executed:

#!/bin/bash
set -euo pipefail

file='apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.test.tasks.$taskParam/route.tsx'

printf '%s\n' '--- relevant source ---'
sed -n '1578,1594p;1768,1784p' "$file"

printf '%s\n' '--- directives and target setters in the file ---'
rg -n -C 2 'oxlint-disable-next-line react/set-state-in-effect|setIsModalOpen\(false\)|setShowCreatedSuccessMessage\(true\)' "$file"

printf '%s\n' '--- local tool availability ---'
command -v oxlint || true
command -v pnpm || true

Repository: triggerdotdev/trigger.dev

Length of output: 2517


🏁 Script executed:

#!/bin/bash
set -u

file='apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.test.tasks.$taskParam/route.tsx'

oxlint --deny react/set-state-in-effect --report-unused-disable-directives "$file"
status=$?

printf '\noxlint exit status: %s\n' "$status"
exit 0

Repository: triggerdotdev/trigger.dev

Length of output: 1547


🌐 Web query:

Oxlint ignore comments disable-next-line applies only to the next line rule diagnostic

💡 Result:

Yes, the Oxlint ignore comment // oxlint-disable-next-line applies exclusively to the line immediately following the comment [1]. According to official Oxlint documentation: * // oxlint-disable-next-line disables one or more specified rules only on the line that follows the comment [1]. * The rules are automatically re-enabled for all subsequent lines in the file [1]. This behavior is distinct from other inline directives such as // oxlint-disable-line, which disables rules only for the current line, and // oxlint-disable, which disables rules from the point of the comment until the end of the file or until they are re-enabled [1]. Note that while these comments are designed to control rule diagnostics, there have been historical technical limitations—such as issues with type-aware rules not respecting disable comments [2] or file-scope rules remaining unaffected by certain inline disable directives [3]—though these are generally considered bugs or specific edge cases rather than intended functionality of the disable-next-line directive itself.

Citations:


Add a suppression before setShowCreatedSuccessMessage(true)

The existing oxlint-disable-next-line directive applies only to setIsModalOpen(false). Add a second directive before setShowCreatedSuccessMessage(true).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants