Ablation (PHASE2-FINDINGS.md) attributed the memory win to the serverExternalPackages line and the integrations barrel diet. These three measured at exactly zero and were most of the file churn, so they go: next-cache-handler: orphaned. cacheHandlers and cacheComponents are both already gone from next.config.ts and nothing imported the package — it was reachable only through a stale dependency entry. cache-tags / cache-invalidation: there is no "use cache", cacheTag, cacheLife or unstable_cache anywhere in app source, so revalidateTag was firing on tags nothing registers, with no handler to receive them, inside a catch that swallowed the resulting out-of-scope error. Removing the calls also removed the SELECTs that existed only to supply a board name or member list to them, so board.ts, group.ts, user.ts, serverSettings.ts, section-router.ts and change-search-preferences.ts return to the merge-base exactly. The live in-process integration data cache is untouched. Redis 6 -> 2 client consolidation: no measurable effect at idle (139.3 vs 139.2 MiB) or under load. Reverted, but the pubSub:last:* TTL is kept — that one is an unbounded-growth fix, not a consolidation. 23 files, -883 lines. Diff vs merge-base: 100 files/3336 insertions -> 82 files/2484. pnpm test 144/144 files, 1795 tests, 0 failures; typecheck and lint clean; app and Docker image build.
121 lines
4.2 KiB
JSON
121 lines
4.2 KiB
JSON
{
|
|
"name": "@homarr/nextjs",
|
|
"version": "0.1.0",
|
|
"private": true,
|
|
"type": "module",
|
|
"scripts": {
|
|
"build": "HOMARR_VERSION=$(node -p \"require('../../package.json').version\") pnpm with-env next build",
|
|
"clean": "git clean -xdf .next .turbo node_modules",
|
|
"dev": "pnpm with-env next dev",
|
|
"format": "oxfmt .",
|
|
"lint": "oxlint",
|
|
"start": "pnpm with-env next start",
|
|
"typecheck": "tsc --noEmit",
|
|
"with-env": "dotenv -e ../../.env --"
|
|
},
|
|
"dependencies": {
|
|
"@dnd-kit/core": "catalog:",
|
|
"@dnd-kit/modifiers": "catalog:",
|
|
"@dnd-kit/sortable": "catalog:",
|
|
"@dnd-kit/utilities": "catalog:",
|
|
"@gfazioli/mantine-onboarding-tour": "catalog:",
|
|
"@homarr/analytics": "workspace:^0.1.0",
|
|
"@homarr/api": "workspace:^0.1.0",
|
|
"@homarr/auth": "workspace:^0.1.0",
|
|
"@homarr/boards": "workspace:^0.1.0",
|
|
"@homarr/common": "workspace:^0.1.0",
|
|
"@homarr/core": "workspace:^0.1.0",
|
|
"@homarr/cron-job-status": "workspace:^0.1.0",
|
|
"@homarr/db": "workspace:^0.1.0",
|
|
"@homarr/definitions": "workspace:^0.1.0",
|
|
"@homarr/docker": "workspace:^0.1.0",
|
|
"@homarr/form": "workspace:^0.1.0",
|
|
"@homarr/forms-collection": "workspace:^0.1.0",
|
|
"@homarr/gridstack": "catalog:",
|
|
"@homarr/icons": "workspace:^0.1.0",
|
|
"@homarr/image-proxy": "workspace:^0.1.0",
|
|
"@homarr/integrations": "workspace:^0.1.0",
|
|
"@homarr/modals": "workspace:^0.1.0",
|
|
"@homarr/modals-collection": "workspace:^0.1.0",
|
|
"@homarr/notifications": "workspace:^0.1.0",
|
|
"@homarr/old-import": "workspace:^0.1.0",
|
|
"@homarr/old-schema": "workspace:^0.1.0",
|
|
"@homarr/redis": "workspace:^0.1.0",
|
|
"@homarr/server-settings": "workspace:^0.1.0",
|
|
"@homarr/settings": "workspace:^0.1.0",
|
|
"@homarr/spotlight": "workspace:^0.1.0",
|
|
"@homarr/tasks": "workspace:^0.1.0",
|
|
"@homarr/translation": "workspace:^0.1.0",
|
|
"@homarr/ui": "workspace:^0.1.0",
|
|
"@homarr/validation": "workspace:^0.1.0",
|
|
"@homarr/websocket": "workspace:^0.1.0",
|
|
"@homarr/widgets": "workspace:^0.1.0",
|
|
"@mantine/colors-generator": "catalog:",
|
|
"@mantine/core": "catalog:",
|
|
"@mantine/dropzone": "catalog:",
|
|
"@mantine/hooks": "catalog:",
|
|
"@mantine/modals": "catalog:",
|
|
"@mantine/tiptap": "catalog:",
|
|
"@modelcontextprotocol/sdk": "catalog:",
|
|
"@scalar/api-reference-react": "catalog:",
|
|
"@tabler/icons-react": "catalog:",
|
|
"@tanstack/react-devtools": "catalog:",
|
|
"@tanstack/react-query": "catalog:",
|
|
"@tanstack/react-query-devtools": "catalog:",
|
|
"@tanstack/react-query-next-experimental": "catalog:",
|
|
"@trpc/client": "catalog:",
|
|
"@trpc/next": "catalog:",
|
|
"@trpc/react-query": "catalog:",
|
|
"@trpc/server": "catalog:",
|
|
"@xterm/addon-canvas": "catalog:",
|
|
"@xterm/addon-fit": "catalog:",
|
|
"@xterm/xterm": "catalog:",
|
|
"adm-zip": "catalog:",
|
|
"babel-plugin-react-compiler": "catalog:",
|
|
"better-sqlite3": "catalog:",
|
|
"chroma-js": "catalog:",
|
|
"clsx": "catalog:",
|
|
"dayjs": "catalog:",
|
|
"dompurify": "catalog:",
|
|
"dotenv": "catalog:",
|
|
"drizzle-orm": "catalog:",
|
|
"flag-icons": "catalog:",
|
|
"glob": "catalog:",
|
|
"jotai": "catalog:",
|
|
"jszip": "catalog:",
|
|
"linkedom": "catalog:",
|
|
"lucide-react": "catalog:",
|
|
"mantine-datatable": "catalog:",
|
|
"mantine-react-table": "catalog:",
|
|
"mcp-handler": "catalog:",
|
|
"next": "catalog:",
|
|
"postcss-preset-mantine": "catalog:",
|
|
"posthog-js": "catalog:",
|
|
"prismjs": "catalog:",
|
|
"react": "catalog:",
|
|
"react-dom": "catalog:",
|
|
"react-error-boundary": "catalog:",
|
|
"react-simple-code-editor": "catalog:",
|
|
"sass": "catalog:",
|
|
"sql.js": "catalog:",
|
|
"superjson": "catalog:",
|
|
"trpc-to-mcp": "catalog:",
|
|
"use-deep-compare-effect": "catalog:",
|
|
"yaml": "catalog:",
|
|
"zod": "catalog:"
|
|
},
|
|
"devDependencies": {
|
|
"@homarr/tsconfig": "workspace:^0.1.0",
|
|
"@types/adm-zip": "catalog:",
|
|
"@types/better-sqlite3": "catalog:",
|
|
"@types/chroma-js": "catalog:",
|
|
"@types/node": "catalog:",
|
|
"@types/prismjs": "catalog:",
|
|
"@types/react": "catalog:",
|
|
"@types/react-dom": "catalog:",
|
|
"concurrently": "catalog:",
|
|
"node-loader": "catalog:",
|
|
"typescript": "catalog:"
|
|
}
|
|
}
|