Skip to content

chore(dashboard): drop dead vite build config keys - #384

Merged
harshtandiya merged 1 commit into
mainfrom
backport-382-to-main
Aug 27, 2026
Merged

chore(dashboard): drop dead vite build config keys#384
harshtandiya merged 1 commit into
mainfrom
backport-382-to-main

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

Automated backport of #382 to main.

* 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)
@github-actionsgithub-actionsBot added backport This PR / Issue is a backport for a branch other than develop skip-demo Skip adding a video / screenshot in PR description. Passes the failing CI for demo addition labels Aug 27, 2026
@harshtandiya
harshtandiya merged commit e0851c2 into mainAug 27, 2026
7 checks passed
@harshtandiya
harshtandiya deleted the backport-382-to-main branch August 27, 2026 11:56
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.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backportThis PR / Issue is a backport for a branch other than developskip-demoSkip adding a video / screenshot in PR description. Passes the failing CI for demo addition

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@harshtandiya