mirror of
https://github.com/mudler/LocalAI.git
synced 2026-05-29 19:19:19 -04:00
* Curate the highlight.js build to ~29 languages (lib/core + the common set) instead of the full ~190-grammar default: -787 KB raw / -230 KB gz on the base bundle. * Code-split every route via React.lazy with a per-layout <Suspense> in App.jsx so the sidebar stays mounted on navigation. Initial entry chunk drops from 3194 KB raw / 887 KB gz to 397 KB / 122 KB (-87%). Warm chunks on sidebar hover/focus/touch via a preload registry so the click finds the chunk already in flight or cached. * Migrate Playwright coverage from istanbul (build-time counters) to native Chromium V8 coverage, with per-worker accumulation + conversion. Suite drops from 71s to 30s at 20 workers (~58%) at the non-instrumented floor. * Keep the coverage gate bundling-invariant: the coverage build inlines dynamic imports so every shipped source file lands in the denominator (otherwise untested page chunks silently drop out and inflate the percentage). Production builds stay code-split. * Add UI_TEST_WORKERS=N Makefile knob; tighten coverage tolerance to 0.8pp now that jitter sits near istanbul's ~0.5pp again. Assisted-by: Claude:claude-opus-4-7 [Claude Code] Signed-off-by: Richard Palethorpe <io@richiejp.com>
61 lines
1.8 KiB
JSON
61 lines
1.8 KiB
JSON
{
|
|
"name": "localai-react-ui",
|
|
"private": true,
|
|
"version": "0.0.1",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"build": "vite build",
|
|
"preview": "vite preview",
|
|
"lint": "eslint .",
|
|
"i18n:extract": "i18next-parser",
|
|
"test:e2e": "playwright test",
|
|
"test:e2e:ui": "playwright test --ui",
|
|
"build:coverage": "COVERAGE=true vite build",
|
|
"build:coverage-v8": "COVERAGE_V8=true vite build",
|
|
"coverage:report": "nyc report"
|
|
},
|
|
"dependencies": {
|
|
"@codemirror/autocomplete": "^6.18.6",
|
|
"@codemirror/commands": "^6.8.1",
|
|
"@codemirror/lang-yaml": "^6.1.2",
|
|
"@codemirror/language": "^6.11.0",
|
|
"@codemirror/lint": "^6.8.5",
|
|
"@codemirror/search": "^6.5.10",
|
|
"@codemirror/state": "^6.5.2",
|
|
"@codemirror/view": "^6.36.8",
|
|
"@fontsource-variable/geist": "^5.2.8",
|
|
"@fontsource-variable/geist-mono": "^5.2.7",
|
|
"@fortawesome/fontawesome-free": "^6.7.2",
|
|
"@lezer/highlight": "^1.2.1",
|
|
"@modelcontextprotocol/ext-apps": "^1.2.2",
|
|
"@modelcontextprotocol/sdk": "^1.25.1",
|
|
"dompurify": "^3.4.0",
|
|
"highlight.js": "^11.11.1",
|
|
"i18next": "^26.0.8",
|
|
"i18next-browser-languagedetector": "^8.2.1",
|
|
"i18next-http-backend": "^3.0.6",
|
|
"marked": "^15.0.7",
|
|
"react": "^19.1.0",
|
|
"react-dom": "^19.1.0",
|
|
"react-i18next": "^17.0.6",
|
|
"react-router-dom": "^7.6.1",
|
|
"yaml": "^2.8.3"
|
|
},
|
|
"devDependencies": {
|
|
"@bcoe/v8-coverage": "^1.0.2",
|
|
"@eslint/js": "^9.27.0",
|
|
"@playwright/test": "1.58.2",
|
|
"@vitejs/plugin-react": "^6.0.2",
|
|
"eslint": "^9.27.0",
|
|
"eslint-plugin-react-hooks": "^5.2.0",
|
|
"eslint-plugin-react-refresh": "^0.4.20",
|
|
"globals": "^16.1.0",
|
|
"i18next-parser": "^9.4.0",
|
|
"nyc": "^18.0.0",
|
|
"v8-to-istanbul": "^9.3.0",
|
|
"vite": "^8.0.14",
|
|
"vite-plugin-istanbul": "^9.0.0"
|
|
}
|
|
}
|