chore: drop ESLint in favor of Biome#108
Conversation
Next 16 removed the built-in ESLint integration (next lint), and ESLint wasn't wired into CI or the build, so eslint-config-next's @next/next rules weren't being enforced anyway. Biome (run in the CI lint job) owns linting + formatting + import organization going forward. - Remove the 'lint': 'eslint' script and the eslint / eslint-config-next devDependencies from frontend/package.json. - Delete frontend/eslint.config.mjs. - Drop 'eslint.enable' from .vscode/settings.json (Biome is the formatter). - Update root pnpm-lock.yaml (removes eslint + 300 transitive deps). Verified locally: frozen install, pnpm typecheck, and biome ci all pass.
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
Greptile SummaryThis PR removes ESLint from the frontend package and consolidates linting under Biome, which is already configured at the monorepo root. The
Confidence Score: 5/5Safe to merge — this is a straightforward tooling swap with no production code changes. All changes are confined to dev tooling: ESLint and its transitive Babel deps are removed, Biome (already present and configured at the monorepo root) takes over linting for the entire workspace. The lockfile correctly reflects the removal. No application logic is touched. No files require special attention.
|
| Filename | Overview |
|---|---|
| frontend/package.json | Removes eslint/eslint-config-next devDependencies and the lint script; root-level biome check takes over linting. |
| frontend/eslint.config.mjs | File deleted — ESLint flat-config removed entirely as part of the Biome migration. |
| .vscode/settings.json | Removes eslint.enable: true; all remaining settings already point to Biome. |
| pnpm-lock.yaml | Lockfile updated: ESLint, eslint-config-next, and all Babel transitive deps removed; next peer resolution simplified (no @babel/core). |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart TD
Dev([Developer])
subgraph Before
A["frontend/eslint.config.mjs"] --> B["eslint (v9)"]
B --> C["frontend lint script"]
end
subgraph After
D["biome.json (root)"] --> E["@biomejs/biome (v2.1.2)"]
E --> F["root lint script: biome check ."]
F --> G["Covers entire workspace"]
end
Dev -->|pnpm lint| F
Reviews (2): Last reviewed commit: "Merge branch 'main' into reopen/104-biom..." | Re-trigger Greptile
* fix(backend): resolve auto-fixable clippy lints Addresses 6 of the 8 clippy findings surfaced by the new rust CI job: - needless_return (server.rs) - match_like_matches_macro (server.rs) - ptr_arg: &Vec<T> -> &[T] (event_filter.rs) - needless_borrow (event_filter.rs) - manual_is_multiple_of (event_listener.rs) - clone_on_copy (serializable_event.rs) Remaining (require manual judgment, deferred): large_enum_variant (server.rs), should_implement_trait for from_str (event_listener.rs). * fix(backend): resolve non-auto-fixable clippy lints - large_enum_variant: box the 640-byte Event variant of EventDataOrMetrics (Event(Box<EventData>)). Since From::from infers its parameter type from the argument (deref coercion does not apply), the match-site call passes &*event_data to select From<&EventData>; construction uses Box::new(..). - should_implement_trait: rename inherent EventName::from_str -> from_name (and its single caller) so it no longer shadows std::str::FromStr::from_str. * fix(backend): remove redundant u64 casts in client (unnecessary_cast) Surfaced once the lib compiled clean: timestamp_ns is u64, so the (u64 - u64) as u64 casts are redundant; drop the cast and parens.
* ci: unified frontend workflow (lint + typecheck + build) * ci: add rust job (fmt + clippy + build) * ci: run rust job in rust:1.91-slim container for libclang/bindgen parity * fix(backend): resolve auto-fixable clippy lints Addresses 6 of the 8 clippy findings surfaced by the new rust CI job: - needless_return (server.rs) - match_like_matches_macro (server.rs) - ptr_arg: &Vec<T> -> &[T] (event_filter.rs) - needless_borrow (event_filter.rs) - manual_is_multiple_of (event_listener.rs) - clone_on_copy (serializable_event.rs) Remaining (require manual judgment, deferred): large_enum_variant (server.rs), should_implement_trait for from_str (event_listener.rs). * fix(backend): resolve non-auto-fixable clippy lints - large_enum_variant: box the 640-byte Event variant of EventDataOrMetrics (Event(Box<EventData>)). Since From::from infers its parameter type from the argument (deref coercion does not apply), the match-site call passes &*event_data to select From<&EventData>; construction uses Box::new(..). - should_implement_trait: rename inherent EventName::from_str -> from_name (and its single caller) so it no longer shadows std::str::FromStr::from_str. * fix(backend): remove redundant u64 casts in client (unnecessary_cast) Surfaced once the lib compiled clean: timestamp_ns is u64, so the (u64 - u64) as u64 casts are redundant; drop the cast and parens. --------- Co-authored-by: Camillebzd <bcamille99@gmail.com>
# Conflicts: # .github/workflows/ci.yml # frontend/package.json
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
|
Warning Review the following alerts detected in dependencies. According to your organization's Security Policy, it is recommended to resolve "Warn" alerts. Learn more about Socket for GitHub.
|
Replacement for #104, which GitHub marked as merged into the #103 branch before the changes landed on main.\n\nStacked on #103 to keep this PR focused on removing ESLint in favor of Biome.