Skip to content

chore: switch to oxfmt, oxlint - add ci checks#3977

Open
carderne wants to merge 10 commits into
mainfrom
oxfmt-oxlint
Open

chore: switch to oxfmt, oxlint - add ci checks#3977
carderne wants to merge 10 commits into
mainfrom
oxfmt-oxlint

Conversation

@carderne

@carderne carderne commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Currently we have prettier and eslint setup, but no global formatting/linting, and no CI gates on PRs.

Changes:

  • Replace prettier with oxfmt, add a global script
  • Replace eslint with oxlint, add a global script
  • A CI check that checks formatting for all files
  • A CI check that checks linting for all files
  • NB: Many lints are disabled, we can go through them slowly and re-enable when someone has time.

Disabled lints:

  "rules": {
    // eslint
    "no-unused-vars": "off",
    "no-unused-expressions": "off",
    "no-control-regex": "off",
    "no-empty-pattern": "off",
    "no-unused-private-class-members": "off",
    "no-useless-catch": "off",
    "no-unsafe-optional-chaining": "off",
    "no-unreachable": "off",
    "require-yield": "off",
    "no-async-promise-executor": "off",
    "no-unsafe-finally": "off",
    // typescript
    "typescript/consistent-type-imports": "off",
    "typescript/no-this-alias": "off",
    "typescript/no-non-null-asserted-optional-chain": "off",
    "typescript/no-unnecessary-parameter-property-assignment": "off",
    // import
    "import/no-duplicates": "off",
    "import/namespace": "off",
    // react
    "react/jsx-key": "off",
    "react/no-children-prop": "off",
    // react-hooks
    "react-hooks/exhaustive-deps": "off",
    // oxlint treats any use*()/use() call as a React hook, producing false
    // positives in async/test code (testcontainers, cli-v3 e2e).
    "react-hooks/rules-of-hooks": "off"
  }

@changeset-bot

changeset-bot Bot commented Jun 17, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 419eeec

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 Jun 17, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Important

Review skipped

Too many files!

This PR contains 283 files, which is 133 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 69e7e456-9608-42a5-8b7c-d77d2ae709ce

📥 Commits

Reviewing files that changed from the base of the PR and between cde422e and 419eeec.

📒 Files selected for processing (283)
  • .claude/REVIEW.md
  • .claude/rules/legacy-v3-code.md
  • .claude/rules/package-installation.md
  • .claude/skills/span-timeline-events/SKILL.md
  • .claude/skills/trigger-dev-tasks/SKILL.md
  • .claude/skills/trigger-dev-tasks/advanced-tasks.md
  • .claude/skills/trigger-dev-tasks/basic-tasks.md
  • .cursor/commands/deslop.md
  • .eslintignore
  • .github/labeler.yml
  • .github/workflows/code-quality.yml
  • .github/workflows/dependabot-critical-alerts.yml
  • .github/workflows/dependabot-weekly-summary.yml
  • .github/workflows/pr_checks.yml
  • .github/workflows/release-helm.yml
  • .github/workflows/workflow-checks.yml
  • .github/zizmor.yml
  • .oxfmtrc.json
  • .oxlintrc.json
  • .prettierignore
  • AGENTS.md
  • CHANGESETS.md
  • CLAUDE.md
  • CODE_OF_CONDUCT.md
  • CONTRIBUTING.md
  • DOCKER_INSTALLATION.md
  • README.md
  • apps/coordinator/package.json
  • apps/coordinator/src/index.ts
  • apps/docker-provider/package.json
  • apps/docker-provider/src/index.ts
  • apps/kubernetes-provider/package.json
  • apps/kubernetes-provider/src/index.ts
  • apps/supervisor/src/backpressure/redisBackpressureSignalSource.test.ts
  • apps/supervisor/src/clients/kubernetes.ts
  • apps/supervisor/src/env.ts
  • apps/supervisor/src/services/computeSnapshotService.test.ts
  • apps/supervisor/src/services/failedPodHandler.ts
  • apps/supervisor/src/services/otlpTraceService.test.ts
  • apps/supervisor/src/services/podCleaner.ts
  • apps/supervisor/src/services/warmStartVerificationService.test.ts
  • apps/supervisor/src/wideEvents/index.ts
  • apps/supervisor/src/wideEvents/middleware.test.ts
  • apps/supervisor/src/workloadManager/compute.test.ts
  • apps/supervisor/src/workloadManager/compute.ts
  • apps/supervisor/src/workloadManager/ecrAuth.ts
  • apps/supervisor/src/workloadManager/kubernetes.ts
  • apps/supervisor/src/workloadManager/types.ts
  • apps/supervisor/src/workloadServer/index.ts
  • apps/webapp/.eslintrc
  • apps/webapp/.prettierignore
  • apps/webapp/CLAUDE.md
  • apps/webapp/app/assets/icons/AIPenIcon.tsx
  • apps/webapp/app/assets/icons/AiProviderIcons.tsx
  • apps/webapp/app/assets/icons/AttemptIcon.tsx
  • apps/webapp/app/assets/icons/ClockIcon.tsx
  • apps/webapp/app/assets/icons/FunctionIcon.tsx
  • apps/webapp/app/assets/icons/InfoIcon.tsx
  • apps/webapp/app/assets/icons/IntegrationsIcon.tsx
  • apps/webapp/app/assets/icons/RightSideMenuIcon.tsx
  • apps/webapp/app/assets/icons/RunFunctionIcon.tsx
  • apps/webapp/app/assets/icons/SlackMonoIcon.tsx
  • apps/webapp/app/assets/icons/StreamsIcon.tsx
  • apps/webapp/app/assets/icons/TextSquareIcon.tsx
  • apps/webapp/app/clientBeforeFirstRender.ts
  • apps/webapp/app/components/AskAI.tsx
  • apps/webapp/app/components/BlankStatePanels.tsx
  • apps/webapp/app/components/DevPresence.tsx
  • apps/webapp/app/components/LoginPageLayout.tsx
  • apps/webapp/app/components/SetupCommands.tsx
  • apps/webapp/app/components/Shortcuts.tsx
  • apps/webapp/app/components/admin/backOffice/ApiRateLimitSection.server.ts
  • apps/webapp/app/components/admin/backOffice/ApiRateLimitSection.tsx
  • apps/webapp/app/components/admin/backOffice/BatchRateLimitSection.server.ts
  • apps/webapp/app/components/admin/backOffice/BatchRateLimitSection.tsx
  • apps/webapp/app/components/admin/backOffice/MaxProjectsSection.tsx
  • apps/webapp/app/components/admin/backOffice/RateLimitSection.server.ts
  • apps/webapp/app/components/admin/backOffice/RateLimitSection.tsx
  • apps/webapp/app/components/admin/debugRun.tsx
  • apps/webapp/app/components/billing/UpgradePrompt.tsx
  • apps/webapp/app/components/code/AIQueryInput.tsx
  • apps/webapp/app/components/code/CodeBlock.tsx
  • apps/webapp/app/components/code/QueryResultsChart.tsx
  • apps/webapp/app/components/code/TSQLResultsTable.tsx
  • apps/webapp/app/components/code/codeMirrorTheme.ts
  • apps/webapp/app/components/code/tsql/index.ts
  • apps/webapp/app/components/code/tsql/tsqlCompletion.ts
  • apps/webapp/app/components/code/tsql/tsqlLinter.test.ts
  • apps/webapp/app/components/code/tsql/tsqlLinter.ts
  • apps/webapp/app/components/errors/ConfigureErrorAlerts.tsx
  • apps/webapp/app/components/integrations/VercelBuildSettings.tsx
  • apps/webapp/app/components/integrations/VercelLogo.tsx
  • apps/webapp/app/components/integrations/VercelOnboardingModal.tsx
  • apps/webapp/app/components/metrics/ModelsFilter.tsx
  • apps/webapp/app/components/metrics/OperationsFilter.tsx
  • apps/webapp/app/components/metrics/PromptsFilter.tsx
  • apps/webapp/app/components/metrics/ProvidersFilter.tsx
  • apps/webapp/app/components/metrics/SaveToDashboardDialog.tsx
  • apps/webapp/app/components/navigation/DashboardList.tsx
  • apps/webapp/app/components/navigation/EnvironmentSelector.tsx
  • apps/webapp/app/components/navigation/HelpAndFeedbackPopover.tsx
  • apps/webapp/app/components/navigation/SideMenu.tsx
  • apps/webapp/app/components/navigation/SideMenuItem.tsx
  • apps/webapp/app/components/navigation/useReorderableList.ts
  • apps/webapp/app/components/primitives/Buttons.tsx
  • apps/webapp/app/components/primitives/Checkbox.tsx
  • apps/webapp/app/components/primitives/ClientTabs.tsx
  • apps/webapp/app/components/primitives/CopyTextLink.tsx
  • apps/webapp/app/components/primitives/DateTime.tsx
  • apps/webapp/app/components/primitives/DetailCell.tsx
  • apps/webapp/app/components/primitives/Dialog.tsx
  • apps/webapp/app/components/primitives/InputNumberStepper.tsx
  • apps/webapp/app/components/primitives/MiddleTruncate.tsx
  • apps/webapp/app/components/primitives/SearchInput.tsx
  • apps/webapp/app/components/primitives/Select.tsx
  • apps/webapp/app/components/primitives/Sheet.tsx
  • apps/webapp/app/components/primitives/SheetV3.tsx
  • apps/webapp/app/components/primitives/ShortcutKey.tsx
  • apps/webapp/app/components/primitives/Slider.tsx
  • apps/webapp/app/components/primitives/Table.tsx
  • apps/webapp/app/components/primitives/Tabs.tsx
  • apps/webapp/app/components/primitives/Timeline.tsx
  • apps/webapp/app/components/primitives/Toast.tsx
  • apps/webapp/app/components/primitives/TooltipPortal.tsx
  • apps/webapp/app/components/primitives/TreeView/TreeView.tsx
  • apps/webapp/app/components/primitives/TreeView/reducer.ts
  • apps/webapp/app/components/primitives/TreeView/utils.ts
  • apps/webapp/app/components/primitives/UnorderedList.tsx
  • apps/webapp/app/components/primitives/charts/Chart.tsx
  • apps/webapp/app/components/primitives/charts/ChartBar.tsx
  • apps/webapp/app/components/primitives/charts/ChartContext.tsx
  • apps/webapp/app/components/primitives/charts/ChartLegendCompound.tsx
  • apps/webapp/app/components/primitives/charts/ChartLine.tsx
  • apps/webapp/app/components/primitives/charts/ChartLoading.tsx
  • apps/webapp/app/components/primitives/charts/ChartRoot.tsx
  • apps/webapp/app/components/primitives/charts/hooks/useZoomSelection.ts
  • apps/webapp/app/components/primitives/charts/useYAxisWidth.ts
  • apps/webapp/app/components/query/QueryEditor.tsx
  • apps/webapp/app/components/run/RunTimeline.tsx
  • apps/webapp/app/components/runs/v3/BatchStatus.tsx
  • apps/webapp/app/components/runs/v3/PromptSpanDetails.tsx
  • apps/webapp/app/components/runs/v3/RunIcon.tsx
  • apps/webapp/app/components/runs/v3/SharedFilters.tsx
  • apps/webapp/app/components/runs/v3/SpanTitle.tsx
  • apps/webapp/app/components/runs/v3/TaskPath.tsx
  • apps/webapp/app/components/runs/v3/WaitpointDetails.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/ai/AIEmbedSpanDetails.tsx
  • apps/webapp/app/components/runs/v3/ai/AIModelSummary.tsx
  • apps/webapp/app/components/runs/v3/ai/AISpanDetails.tsx
  • apps/webapp/app/components/runs/v3/ai/AIToolCallSpanDetails.tsx
  • apps/webapp/app/components/runs/v3/ai/aiHelpers.ts
  • apps/webapp/app/components/runs/v3/ai/extractAISpanData.ts
  • apps/webapp/app/components/runs/v3/ai/extractAISummarySpanData.ts
  • apps/webapp/app/components/schedules/PurchaseSchedulesModal.tsx
  • apps/webapp/app/components/schedules/ScheduleLimitActions.tsx
  • apps/webapp/app/components/sessions/v1/SessionsTable.tsx
  • apps/webapp/app/db.server.ts
  • apps/webapp/app/entry.server.tsx
  • apps/webapp/app/env.server.ts
  • apps/webapp/app/eventLoopMonitor.server.ts
  • apps/webapp/app/hooks/useAppOrigin.ts
  • apps/webapp/app/hooks/useDashboardEditor.ts
  • apps/webapp/app/hooks/useElementVisibility.ts
  • apps/webapp/app/hooks/useEnvironments.ts
  • apps/webapp/app/hooks/useFuzzyFilter.ts
  • apps/webapp/app/hooks/useLazyRef.ts
  • apps/webapp/app/hooks/useList.tsx
  • apps/webapp/app/hooks/useOrganizations.ts
  • apps/webapp/app/hooks/usePostHog.ts
  • apps/webapp/app/hooks/useTypedMatchData.ts
  • apps/webapp/app/metrics.server.ts
  • apps/webapp/app/models/admin.server.ts
  • apps/webapp/app/models/member.server.ts
  • apps/webapp/app/models/message.server.ts
  • apps/webapp/app/models/orgIntegration.server.ts
  • apps/webapp/app/models/runtimeEnvironment.server.ts
  • apps/webapp/app/models/schedules.server.ts
  • apps/webapp/app/models/task.server.ts
  • apps/webapp/app/models/taskQueue.server.ts
  • apps/webapp/app/models/user.server.ts
  • apps/webapp/app/models/vercelIntegration.server.ts
  • apps/webapp/app/models/vercelSdkRecovery.server.ts
  • apps/webapp/app/presenters/NewOrganizationPresenter.server.ts
  • apps/webapp/app/presenters/ProjectPresenter.server.ts
  • apps/webapp/app/presenters/SelectBestEnvironmentPresenter.server.ts
  • apps/webapp/app/presenters/SessionFilters.server.ts
  • apps/webapp/app/presenters/v3/AgentDetailPresenter.server.ts
  • apps/webapp/app/presenters/v3/AgentListPresenter.server.ts
  • apps/webapp/app/presenters/v3/AlertChannelListPresenter.server.ts
  • apps/webapp/app/presenters/v3/ApiBatchResultsPresenter.server.ts
  • apps/webapp/app/presenters/v3/ApiKeysPresenter.server.ts
  • apps/webapp/app/presenters/v3/ApiRetrieveRunPresenter.server.ts
  • apps/webapp/app/presenters/v3/ApiRunListPresenter.server.ts
  • apps/webapp/app/presenters/v3/ApiRunResultPresenter.server.ts
  • apps/webapp/app/presenters/v3/BatchListPresenter.server.ts
  • apps/webapp/app/presenters/v3/BatchPresenter.server.ts
  • apps/webapp/app/presenters/v3/CreateBulkActionPresenter.server.ts
  • apps/webapp/app/presenters/v3/DeploymentListPresenter.server.ts
  • apps/webapp/app/presenters/v3/DeploymentPresenter.server.ts
  • apps/webapp/app/presenters/v3/EnvironmentVariablesPresenter.server.ts
  • apps/webapp/app/presenters/v3/LimitsPresenter.server.ts
  • apps/webapp/app/presenters/v3/LogDetailPresenter.server.ts
  • apps/webapp/app/presenters/v3/MetricDashboardPresenter.server.ts
  • apps/webapp/app/presenters/v3/ModelRegistryPresenter.server.ts
  • apps/webapp/app/presenters/v3/NewAlertChannelPresenter.server.ts
  • apps/webapp/app/presenters/v3/NextRunListPresenter.server.ts
  • apps/webapp/app/presenters/v3/PlaygroundPresenter.server.ts
  • apps/webapp/app/presenters/v3/PromptPresenter.server.ts
  • apps/webapp/app/presenters/v3/QueryPresenter.server.ts
  • apps/webapp/app/presenters/v3/QueueListPresenter.server.ts
  • apps/webapp/app/presenters/v3/QueueRetrievePresenter.server.ts
  • apps/webapp/app/presenters/v3/RegionsPresenter.server.ts
  • apps/webapp/app/presenters/v3/RunPresenter.server.ts
  • apps/webapp/app/presenters/v3/RunStreamPresenter.server.ts
  • apps/webapp/app/presenters/v3/RunTagListPresenter.server.ts
  • apps/webapp/app/presenters/v3/SessionListPresenter.server.ts
  • apps/webapp/app/presenters/v3/SessionPresenter.server.ts
  • apps/webapp/app/presenters/v3/SpanPresenter.server.ts
  • apps/webapp/app/presenters/v3/TaskDetailPresenter.server.ts
  • apps/webapp/app/presenters/v3/TaskListPresenter.server.ts
  • apps/webapp/app/presenters/v3/TaskPresenter.server.ts
  • apps/webapp/app/presenters/v3/TasksDashboardPresenter.server.ts
  • apps/webapp/app/presenters/v3/TestPresenter.server.ts
  • apps/webapp/app/presenters/v3/TestTaskPresenter.server.ts
  • apps/webapp/app/presenters/v3/UsagePresenter.server.ts
  • apps/webapp/app/presenters/v3/VercelSettingsPresenter.server.ts
  • apps/webapp/app/presenters/v3/ViewSchedulePresenter.server.ts
  • apps/webapp/app/presenters/v3/WaitpointListPresenter.server.ts
  • apps/webapp/app/presenters/v3/WaitpointPresenter.server.ts
  • apps/webapp/app/presenters/v3/basePresenter.server.ts
  • apps/webapp/app/presenters/v3/mapRunToLiveFields.server.ts
  • apps/webapp/app/redis.server.ts
  • apps/webapp/app/routes/_app.orgs.$organizationId.subscription.v3.canceled/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationId.subscription.v3.complete/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationId.subscription.v3.failed/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationId.subscription.v3.free_connect_failed/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationId.subscription.v3.free_connect_success/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.invite/route.tsx
  • 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.agents.$agentParam/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.alerts.new/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/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.environment-variables.new/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.errors.$fingerprint/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.limits/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.models.$modelId/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.models._index/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.models.compare/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.prompts._index/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.query/AITabContent.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.query/ExamplesContent.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.query/TRQLGuideContent.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.query/TableSchemaContent.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.regions/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/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs._index/shouldRevalidateRunsList.ts
  • 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.general/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.settings/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.tasks.dashboard/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.tasks.standard.$taskParam/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.test.tasks.$taskParam/AIPayloadTabContent.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.waitpoints.tokens/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.settings._index/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.integrations.vercel.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.private-connections._index/route.tsx
  • apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.private-connections.new/route.tsx

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Walkthrough

The pull request replaces ESLint and Prettier with oxlint and oxfmt as the monorepo's formatting and linting toolchain. Two new root-level configuration files are added: .oxfmtrc.json defining formatting rules and ignore patterns, and .oxlintrc.json configuring lint plugins, ignore patterns, and rule sets. Package scripts and devDependencies in both the root package.json and apps/webapp/package.json are updated to use the new tools, while all ESLint-related packages and legacy Prettier/ESLint config files are removed. The turbo.json lint pipeline task is removed and remaining entries are reformatted. A new reusable GitHub Actions workflow enforces formatting (blocking) and runs linting (non-blocking) on PR-changed JS/TS files, wired into the existing PR checks workflow.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning PR description lacks required checklist, testing section, changelog, and screenshots from template; contains only basic changes overview. Complete all sections from the description template: checklist items, testing steps, changelog entry, and add screenshots if applicable.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title 'chore: switch to oxfmt, oxlint - add ci checks' accurately summarizes the main changes: switching from Prettier/ESLint to Oxfmt/Oxlint and adding CI checks.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch oxfmt-oxlint

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 and usage tips.

@pkg-pr-new

pkg-pr-new Bot commented Jun 17, 2026

Copy link
Copy Markdown

Open in StackBlitz

@trigger.dev/build

npm i https://pkg.pr.new/@trigger.dev/build@034b2e0

trigger.dev

npm i https://pkg.pr.new/trigger.dev@034b2e0

@trigger.dev/core

npm i https://pkg.pr.new/@trigger.dev/core@034b2e0

@trigger.dev/python

npm i https://pkg.pr.new/@trigger.dev/python@034b2e0

@trigger.dev/react-hooks

npm i https://pkg.pr.new/@trigger.dev/react-hooks@034b2e0

@trigger.dev/redis-worker

npm i https://pkg.pr.new/@trigger.dev/redis-worker@034b2e0

@trigger.dev/rsc

npm i https://pkg.pr.new/@trigger.dev/rsc@034b2e0

@trigger.dev/schema-to-json

npm i https://pkg.pr.new/@trigger.dev/schema-to-json@034b2e0

@trigger.dev/sdk

npm i https://pkg.pr.new/@trigger.dev/sdk@034b2e0

commit: 034b2e0

@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

🧹 Nitpick comments (1)
apps/webapp/package.json (1)

280-281: ⚡ Quick win

Remove unused Prettier dependencies.

prettier and prettier-plugin-tailwindcss are still in devDependencies but are no longer used after switching to oxfmt. Consider removing them to keep dependencies clean.


ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 76cce126-8ee3-44af-8b51-bd7dd1f767db

📥 Commits

Reviewing files that changed from the base of the PR and between 015106d and 8b7c9bd.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (13)
  • .eslintignore
  • .github/workflows/code-quality.yml
  • .github/workflows/pr_checks.yml
  • .oxfmtrc.json
  • .oxlintrc.json
  • .prettierignore
  • apps/webapp/.eslintrc
  • apps/webapp/.prettierignore
  • apps/webapp/package.json
  • apps/webapp/prettier.config.js
  • package.json
  • prettier.config.js
  • turbo.json
💤 Files with no reviewable changes (6)
  • .eslintignore
  • .prettierignore
  • apps/webapp/prettier.config.js
  • apps/webapp/.eslintrc
  • prettier.config.js
  • apps/webapp/.prettierignore
📜 Review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (39)
  • GitHub Check: webapp / 🧪 Unit Tests: Webapp (5, 10)
  • GitHub Check: internal / 🧪 Unit Tests: Internal (12, 12)
  • GitHub Check: sdk-compat / Node.js 22.12 (ubuntu-latest)
  • GitHub Check: webapp / 🧪 Unit Tests: Webapp (10, 10)
  • GitHub Check: webapp / 🧪 Unit Tests: Webapp (3, 10)
  • GitHub Check: internal / 🧪 Unit Tests: Internal (6, 12)
  • GitHub Check: internal / 🧪 Unit Tests: Internal (3, 12)
  • GitHub Check: code-quality / code-quality
  • GitHub Check: e2e / 🧪 CLI v3 tests (ubuntu-latest - pnpm)
  • GitHub Check: internal / 🧪 Unit Tests: Internal (11, 12)
  • GitHub Check: internal / 🧪 Unit Tests: Internal (8, 12)
  • GitHub Check: internal / 🧪 Unit Tests: Internal (2, 12)
  • GitHub Check: internal / 🧪 Unit Tests: Internal (5, 12)
  • GitHub Check: internal / 🧪 Unit Tests: Internal (7, 12)
  • GitHub Check: webapp / 🧪 Unit Tests: Webapp (9, 10)
  • GitHub Check: internal / 🧪 Unit Tests: Internal (9, 12)
  • GitHub Check: internal / 🧪 Unit Tests: Internal (10, 12)
  • GitHub Check: internal / 🧪 Unit Tests: Internal (1, 12)
  • GitHub Check: webapp / 🧪 Unit Tests: Webapp (4, 10)
  • GitHub Check: packages / 🧪 Unit Tests: Packages (1, 3)
  • GitHub Check: sdk-compat / Node.js 20.20 (ubuntu-latest)
  • GitHub Check: e2e / 🧪 CLI v3 tests (windows-latest - npm)
  • GitHub Check: packages / 🧪 Unit Tests: Packages (3, 3)
  • GitHub Check: webapp / 🧪 Unit Tests: Webapp (1, 10)
  • GitHub Check: typecheck / typecheck
  • GitHub Check: webapp / 🧪 Unit Tests: Webapp (2, 10)
  • GitHub Check: e2e / 🧪 CLI v3 tests (ubuntu-latest - npm)
  • GitHub Check: e2e-webapp / 🧪 E2E Tests: Webapp
  • GitHub Check: e2e / 🧪 CLI v3 tests (windows-latest - pnpm)
  • GitHub Check: webapp / 🧪 Unit Tests: Webapp (6, 10)
  • GitHub Check: internal / 🧪 Unit Tests: Internal (4, 12)
  • GitHub Check: sdk-compat / Cloudflare Workers
  • GitHub Check: webapp / 🧪 Unit Tests: Webapp (8, 10)
  • GitHub Check: webapp / 🧪 Unit Tests: Webapp (7, 10)
  • GitHub Check: sdk-compat / Deno Runtime
  • GitHub Check: sdk-compat / Bun Runtime
  • GitHub Check: packages / 🧪 Unit Tests: Packages (2, 3)
  • GitHub Check: Analyze (javascript-typescript)
  • GitHub Check: Build and publish previews
🧰 Additional context used
📓 Path-based instructions (1)
**/*.{js,ts,tsx,jsx,css,json,md}

📄 CodeRabbit inference engine (AGENTS.md)

Use Prettier for code formatting and run pnpm run format before committing

Files:

  • package.json
  • turbo.json
  • apps/webapp/package.json
🧠 Learnings (6)
📚 Learning: 2026-04-13T21:43:58.707Z
Learnt from: ericallam
Repo: triggerdotdev/trigger.dev PR: 3368
File: apps/webapp/app/services/taskIdentifierRegistry.server.ts:49-58
Timestamp: 2026-04-13T21:43:58.707Z
Learning: In `apps/webapp/app/services/taskIdentifierRegistry.server.ts` (and closely related task registry/sync code in this module), an empty deployment (zero tasks) is not a realistic/expected scenario. Do not flag or require special handling or fallback logic for missing empty-task cases in this registry/sync flow.

Applied to files:

  • .oxlintrc.json
  • .oxfmtrc.json
📚 Learning: 2026-04-23T13:26:27.529Z
Learnt from: ericallam
Repo: triggerdotdev/trigger.dev PR: 3430
File: apps/webapp/app/presenters/v3/RunStreamPresenter.server.ts:0-0
Timestamp: 2026-04-23T13:26:27.529Z
Learning: In this codebase’s SSE implementation (notably `apps/webapp/app/utils/sse.ts` and its SSE callers such as `apps/webapp/app/presenters/v3/RunStreamPresenter.server.ts`), do not treat `.abort()` vs `.abort("<reason string>")` differences as a heap retention/memory leak issue on Node 20. Heap deltas are identical once `AbortSignal.any` is not involved; the investigated SSE memory leak root cause was `AbortSignal.any` (via FinalizationRegistry behavior on abort). When reviewing, focus on whether `AbortSignal.any` (or similar signal-combining/finalization patterns) is used in the SSE abort path rather than the presence/contents of the abort reason string. Named abort-reason sentinel constants (e.g., `ABORT_REASON_*`) are for readability/style only, not correctness.

Applied to files:

  • .oxlintrc.json
  • .oxfmtrc.json
📚 Learning: 2026-04-30T21:28:35.705Z
Learnt from: samejr
Repo: triggerdotdev/trigger.dev PR: 3473
File: internal-packages/database/prisma/schema.prisma:59-60
Timestamp: 2026-04-30T21:28:35.705Z
Learning: In this repo, session-duration lower-bound validation is intentionally enforced only at the app layer (via `isAllowedSessionDuration` and `SESSION_DURATION_OPTIONS`), where the minimum allowed value is 300 seconds (5 minutes). `User.sessionDuration` is `Int` (non-nullable) and `Organization.maxSessionDuration` is `Int?` (nullable). There are currently no DB-level `CHECK` constraints for these fields anywhere in the migrations, so future reviews should not flag the absence of DB `CHECK` constraints on these session-duration fields—focus validation on the app-layer logic instead.

Applied to files:

  • .oxlintrc.json
  • .oxfmtrc.json
📚 Learning: 2026-05-12T06:43:09.116Z
Learnt from: ericallam
Repo: triggerdotdev/trigger.dev PR: 3558
File: internal-packages/run-engine/src/run-queue/index.ts:420-424
Timestamp: 2026-05-12T06:43:09.116Z
Learning: In internal-packages/run-engine/src/run-queue/index.ts, the RunQueue “read-path” counter/concurrency methods (e.g., lengthOfQueue/lengthOfQueues/currentConcurrencyOfQueues) intentionally “fail open” on transient Redis pipeline result errors. If you see pipeline result errors (e.g., baseErr/ctrErr) being coerced to 0 (treating Redis command errors the same as missing keys) rather than surfaced/thrown, do not flag it as a bug and do not suggest propagating those errors in future reviews.

Applied to files:

  • .oxlintrc.json
  • .oxfmtrc.json
📚 Learning: 2026-05-19T21:04:49.990Z
Learnt from: ericallam
Repo: triggerdotdev/trigger.dev PR: 3671
File: packages/trigger-sdk/src/v3/ai.ts:724-769
Timestamp: 2026-05-19T21:04:49.990Z
Learning: In packages/trigger-sdk/src/v3/ai.ts, when reviewing recovery/replay of turns, do NOT flag “lost metadata on recovered turns” if the recovered turns are reconstructed via the recovery boot queue that maps metadata by message.id (using replaySessionInTail’s {message, metadata, seqNum} per session.in record). If a message has no matching session.in record (e.g., hook-synthesized messages), the code intentionally falls back to the current boot payload’s metadata—this fallback is expected behavior.

Applied to files:

  • .oxlintrc.json
  • .oxfmtrc.json
📚 Learning: 2026-04-27T16:46:03.861Z
Learnt from: nicktrn
Repo: triggerdotdev/trigger.dev PR: 3456
File: apps/webapp/package.json:152-152
Timestamp: 2026-04-27T16:46:03.861Z
Learning: In `apps/webapp/package.json`, treat the `effect` npm package as an intentional runtime dependency (not unused/misplaced) for the Schedule + Fiber-based metadata update logic. This should apply when reviewing `apps/webapp` code paths used by `apps/webapp/app/utils/updateMetadata.server.ts` (and closely related modules) that use Effect APIs such as `Duration.divide`, `STM.cond`, namespace exports for `Effect`/`Schedule`/`Duration`/`Fiber`, and the `Fiber.RuntimeFiber` type.

Applied to files:

  • apps/webapp/package.json
🪛 Biome (2.5.0)
.oxfmtrc.json

[error] 24-24: Expected an array, an object, or a literal but instead found ']'.

(parse)

🔇 Additional comments (8)
.oxlintrc.json (1)

1-25: LGTM!

package.json (1)

21-23: LGTM!

apps/webapp/package.json (1)

13-14: LGTM!

turbo.json (1)

1-106: LGTM!

.github/workflows/code-quality.yml (2)

34-63: LGTM!


68-73: Oxlint config auto-discovery is working as expected.

Oxlint automatically discovers .oxlintrc.json by walking up the directory tree from each file's location. The CI invocation (pnpm exec oxlint $FILES) will correctly resolve to the root config without an explicit flag. The explicit -c ../../.oxlintrc.json in apps/webapp/package.json is redundant but harmless.

			> Likely an incorrect or invalid review comment.
.github/workflows/pr_checks.yml (2)

105-108: LGTM!


159-170: LGTM!

Comment thread .oxfmtrc.json
Comment thread .oxfmtrc.json
Comment thread package.json Outdated
@carderne carderne marked this pull request as ready for review June 17, 2026 15:28
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