Skip to content

Add Oxlint to frontend linting - #2118

Closed
ejsmith wants to merge 6 commits into
mainfrom
vite-native
Closed

Add Oxlint to frontend linting#2118
ejsmith wants to merge 6 commits into
mainfrom
vite-native

Conversation

@ejsmith

@ejsmith ejsmith commented Feb 17, 2026

Copy link
Copy Markdown
Member

Summary

  • Merged current main at f5c07400 into the branch.
  • Added Oxlint 1.73.0 as a fast syntax and correctness pass for JavaScript, TypeScript, and Svelte <script> blocks.
  • Retained ESLint and eslint-plugin-svelte as the authoritative framework/template linter. eslint-plugin-oxlint disables only overlapping rules already covered by Oxlint.
  • Retained Prettier plus the established Svelte and Tailwind plugins for formatting and editor integration.

Current scope

Vite 8 and the broader frontend dependency refresh have now landed independently on main, so they are no longer changes introduced by this PR. The remaining five-file diff is focused on the incremental Oxlint integration: its configuration, lint script, ESLint overlap handling, dependencies, and generated lockfile entries.

Type-aware oxlint-tsgolint and Oxfmt remain intentionally excluded while their Svelte and TypeScript integrations continue to mature.

Compatibility

  • No backend, public API, persisted-data, WebSocket, or application behavior changes.
  • The established Svelte, ESLint, Prettier, and VS Code workflows remain in place.
  • No breaking Exceptionless contracts.

Dependency review

Verification

  • npm ci — passed; 7 low, 0 moderate, 0 high, 0 critical audit findings
  • npm run validate — Prettier, Svelte diagnostics, syntax-only Oxlint, and ESLint passed
  • npm run build — Vite 8.1.5 production client and SSR build passed
  • npm run test:unit -- --reporter=dot — 30 files, 332 tests passed
  • npm run build-storybook — passed

@ejsmith

ejsmith commented Mar 16, 2026

Copy link
Copy Markdown
Member Author

@copilot update this PR now that vite 8 final is out. Update any deps to latest versions. Get the build working.

Copilot AI commented Mar 16, 2026

Copy link
Copy Markdown
Contributor

@ejsmith I've opened a new pull request, #2152, to work on those changes. Once the pull request is ready, I'll request review from you.

Copilot AI review requested due to automatic review settings March 19, 2026 16:10
@CLAassistant

CLAassistant commented Mar 19, 2026

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

Copilot AI 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.

Pull request overview

This PR updates the ClientApp frontend toolchain to incorporate Oxlint/Oxfmt alongside ESLint/Prettier, and updates Vite-related dependencies/config to use newer native tooling.

Changes:

  • Added Oxlint/Oxfmt configuration and wired them into npm run lint / npm run format.
  • Updated ESLint flat config to integrate eslint-plugin-oxlint and avoid overlapping rules.
  • Updated Vite config to run vite-plugin-oxlint and refreshed frontend dependencies (including Vite).

Reviewed changes

Copilot reviewed 8 out of 9 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
src/Exceptionless.Web/ClientApp/vite.config.ts Adds vite-plugin-oxlint to Vite plugins.
src/Exceptionless.Web/ClientApp/src/routes/(auth)/login/+page.svelte Formatting changes in the password label markup.
src/Exceptionless.Web/ClientApp/src/lib/features/auth/schemas.ts Reformats schema definition for readability.
src/Exceptionless.Web/ClientApp/package.json Adds Oxlint/Oxfmt scripts, adjusts Prettier scope to Svelte, and updates dependencies.
src/Exceptionless.Web/ClientApp/eslint.config.js Integrates eslint-plugin-oxlint, disables a Svelte false-positive rule, and loads Oxlint config.
src/Exceptionless.Web/ClientApp/.oxlintrc.json New Oxlint configuration (plugins, rules, ignores).
src/Exceptionless.Web/ClientApp/.oxfmtrc.json New Oxfmt configuration (style + EOL).
src/Exceptionless.Web/ClientApp/.npmrc Enables legacy-peer-deps.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

Comment thread src/Exceptionless.Web/ClientApp/src/routes/(auth)/login/+page.svelte Outdated
Comment thread src/Exceptionless.Web/ClientApp/.oxfmtrc.json Outdated
@ejsmith

ejsmith commented Mar 19, 2026

Copy link
Copy Markdown
Member Author

@copilot can you rebase this PR

Copilot AI commented Mar 19, 2026

Copy link
Copy Markdown
Contributor

@ejsmith I've opened a new pull request, #2163, to work on those changes. Once the pull request is ready, I'll request review from you.

Comment thread src/Exceptionless.Web/Controllers/AdminController.cs Dismissed
@niemyjski

Copy link
Copy Markdown
Member

Looks like we need to rebase this again

Copilot AI 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.

Pull request overview

Copilot reviewed 235 out of 240 changed files in this pull request and generated 3 comments.

Comment thread src/Exceptionless.Core/Serialization/JsonSerializerOptionsExtensions.cs Outdated
Comment thread src/Exceptionless.Core/Services/StackService.cs
Comment thread src/Exceptionless.Core/Models/Messaging/ExtendedEntityChanged.cs
@ejsmith ejsmith changed the title Convert to vite native tooling Modernize frontend tooling with Vite 8 and Oxc Jul 24, 2026
@ejsmith ejsmith changed the title Modernize frontend tooling with Vite 8 and Oxc Upgrade frontend tooling to Vite 8 and Oxlint Jul 24, 2026
# Conflicts:
#	src/Exceptionless.Web/ClientApp/package-lock.json
#	src/Exceptionless.Web/ClientApp/package.json

Copy link
Copy Markdown
Member

Follow-up feedback and thermo-nuclear audit completed at 5bb158f28395dd4be51155a20f45001f3b453c9c.

Feedback disposition

  • Queried all 6 review threads, 8 submitted reviews, and 7 PR conversation comments. All six threads are already resolved and outdated; there are no open threads requiring a reply.
  • Login label formatting: outdated / incorrect for the current tree. The file is identical to origin/main, and current Prettier intentionally produces the existing Svelte layout.
  • Oxfmt ignore feedback: superseded by the tooling pivot. Oxfmt and .oxfmtrc.json are no longer in the effective diff; Prettier remains the formatter and Oxlint has explicit generated/vendor/output ignores.
  • Admin controller catch feedback: outdated / superseded by main's Minimal API migration. The reviewed controller no longer exists, and the successor handler is unchanged by this PR.
  • Global IncludeFields, stack-usage cache schema, and ExtendedEntityChanged mutability feedback: historical and outside this PR's current scope. Those files are byte-for-byte unchanged from origin/main; Add Oxlint to frontend linting #2118 neither introduces nor modifies those current-main behaviors.
  • The old requests to update to final Vite 8 and get the build working are satisfied. The rebase requests are superseded by the normal merge commit a38599ac1, which contains current origin/main. Copilot redirect comments, CLA, and coverage comments are informational. The live feedback query contained no Codex-authored item.

RCA and current implementation

The long-lived PR previously contained unrelated backend/UI changes, so GitHub retains comments against a much broader historical diff. After the tooling pivot and merge-forward, the effective diff is five ClientApp tooling files only. It upgrades Vite to 8.1.5 / Rolldown, pairs it with @sveltejs/vite-plugin-svelte 7.2.0, and adds the matched Oxlint / ESLint bridge at 1.73.0. Oxlint 1.75 is newer but does not yet satisfy the repo's seven-day package maturity policy; 1.73 is the newest eligible matched pair.

The thermo-nuclear review found no structural blocker: no application source changes, no file crossing 1,000 lines, no new branching/casts/boundary leaks, no non-atomic state, and no duplicate build-time lint plugin. The focused Svelte probe proved the division of responsibility: Oxlint avoids its known Svelte false positive while ESLint still rejects a genuinely unused Svelte variable. No further code change was warranted.

Verification

  • npm run validate — passed; Svelte check 0 errors / 0 warnings; Prettier, Oxlint, and ESLint passed
  • npm run test:unit — 28 files / 323 tests passed
  • npm run build — Vite 8.1.5 SSR + client production build passed
  • npm run build-storybook — passed with Vite 8.1.5
  • git diff --check — clean; worktree unchanged
  • GitHub CI — version, API, client, E2E, Docker build, and CLA all green

No external blocker remains.

# Conflicts:
#	src/Exceptionless.Web/ClientApp/package-lock.json
#	src/Exceptionless.Web/ClientApp/package.json
@ejsmith ejsmith changed the title Upgrade frontend tooling to Vite 8 and Oxlint Add Oxlint to frontend linting Jul 29, 2026
@github-actions

Copy link
Copy Markdown

Code Coverage

Package Line Rate Branch Rate Complexity Health
Exceptionless.Core 73% 66% 9587
Exceptionless.AppHost 38% 40% 139
Exceptionless.Insulation 37% 35% 286
Exceptionless.Web 84% 67% 6935
Summary 77% (22857 / 29790) 66% (10499 / 16026) 16947

@ejsmith ejsmith closed this Jul 29, 2026
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.

5 participants