Uh oh!
There was an error while loading. Please reload this page.
chore(dashboard): drop dead vite build config keys - #384
Merged
Conversation
* chore: replace eslint, prettier and biome with oxlint and oxfmt
The dashboard was formatted by two tools that disagreed. Biome owned
`dashboard/` via `yarn lint`, while the pre-commit prettier hook matched
`types_or: [javascript, vue, scss]` with no exclude for `dashboard/`, so it
also reformatted every Vue file on commit. The result was `.ts` files without
semicolons and `.vue` files with them, and 224 `biome check` errors that were
just the two tools undoing each other. Biome had no CI job, so nothing caught
it.
oxlint and oxfmt now cover the whole repo — dashboard, desk scripts and e2e —
with one config each, so `yarn lint`, pre-commit and CI all enforce the same
thing. `linter.yml` already runs pre-commit, so no new workflow is needed.
Notes on the configs:
- Both pre-commit mirrors default to `types_or: [javascript, jsx, ts, tsx]`,
which silently skips every `.vue` file. Both hooks override it.
- `.oxfmtrc.json` sets `useTabs` explicitly because `.editorconfig` covers
`*.js,*.vue,*.css,*.scss,*.html` but not `*.ts`.
- oxfmt also formats JSON, Markdown, YAML, TOML, HTML and CSS. DocType schemas
have Frappe-specific formatting, so `ignorePatterns` restricts oxfmt to
JS/TS/Vue, matching the hook's `types_or`.
- `eslint:recommended` is not a subset of oxlint's correctness and suspicious
categories. The six rules that fall outside them are listed explicitly; all
had zero violations. `no-console` is scoped to `buzz/**/*.js`, the only place
the old `types_or: [javascript]` hook ever applied it.
- The ~90-entry `globals` block in `.eslintrc` existed only to satisfy
`no-undef`, which oxlint ships as a nursery rule. It is dropped, not ported.
- `unicorn/no-empty-file` is off for `buzz/**/*.js`; those are Frappe's
generated doctype stubs.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* fix: resolve oxlint findings across dashboard, desk scripts and e2e
Three of these were real bugs rather than style:
- `RegisterInterest.vue` declared a `campaign` prop and a local `campaign` ref
for the fetched document. In `<script setup>` the local binding shadows the
prop, so the template worked by accident. The ref is now `campaignDoc`.
- `FormFieldSections.vue` declared `sections` inside the `sections` computed,
shadowing it.
- `global.d.ts` nested ambient module declarations inside `declare global`,
which is not legal. Dropping `export {}` makes the file script-scope, so the
`Window` interface and the wildcard modules both work at top level. vue-tsc
never surfaced this.
The rest are mechanical: unused catch bindings, unused parameters and imports,
and redundant regex escapes.
Two suppressions rather than fixes. `unicorn/no-array-sort` wants `toSorted()`,
but Vite does not polyfill built-in methods, and both call sites sort an array
they just created, so the mutation is not observable. `CustomFieldInput`'s
`defineModel` is typed `any` because Frappe field values are heterogeneous and
the template binds the model straight into components that expect a string;
typing it honestly is a refactor, not a lint fix.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* style: reformat with oxfmt
Pure `oxfmt` output, no hand edits. Settles the two-formatter split: `.ts`
files keep the semicolon-free style Biome used, and `.vue` files lose the
semicolons prettier had been adding on every commit.
Two visible differences from before. `sortImports` replaces Biome's
`organizeImports` and uses a different ordering, so import blocks reshuffle.
And oxfmt formats `<template>` and `<style>` blocks, which Biome never touched
— it only handled `<script>` — so Vue markup reflows to the 100 column width.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* chore(dashboard): drop dead vite build config keys
`target` and `chunkSizeWarningLimit` were passed inside
`frappeui({ buildConfig: {...} })`, which never reads either. frappe-ui's
`buildConfig.js` builds its returned `build` object from exactly four keys:
`outDir`, `emptyOutDir`, `commonjsOptions` and `sourcemap`.
The build warning is the proof — it fired at 500 kB, not the 1500 kB the config
asked for, and it still does after this change.
So the effective target has always been Vite's default, currently
`baseline-widely-available`. Setting it explicitly in the same block would be
equally inert, and pinning it at the top level would only restate the default,
so both keys are removed rather than moved.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
(cherry picked from commit b538989)Uh oh!
There was an error while loading. Please reload this page.
harshtandiya pushed a commit
that referenced
this pull request
Aug 27, 2026
Resolves the conflict with #384, which dropped the dead chunkSizeWarningLimit and target keys from the build config now living in vite.config.ts.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Automated backport of #382 to
main.