mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-08 12:32:43 +00:00
The harness landed in v1.30.35, after the slices that built this release were already cut — so the reaction line's prompt module was never registered, and its own docblock's warning against the two-locale collapse was untested. Registering it surfaced a real gap: the meaning-first instruction lived only in the system prompt's own words, never in the user prompt in the family's shared phrasing, which is where the rest of the surfaces carry it and where the tone contract checks for it. The German body carried no such instruction at all. Threads locale through the user-prompt builder so the fixed instruction line matches the reader's own reply language, and wires the per-user per-day opener-archetype rotation the milestone spec called for and the first implementation had not connected.
150 lines
4.5 KiB
JSON
150 lines
4.5 KiB
JSON
{
|
|
"name": "healthlog",
|
|
"version": "1.31.0",
|
|
"description": "Self-hosted personal-health-tracking PWA with Withings integration, AI insights, and doctor-report PDF export.",
|
|
"license": "PolyForm-Noncommercial-1.0.0",
|
|
"homepage": "https://healthlog.dev",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git+https://github.com/MBombeck/HealthLog.git"
|
|
},
|
|
"bugs": {
|
|
"url": "https://github.com/MBombeck/HealthLog/issues"
|
|
},
|
|
"keywords": [
|
|
"health-tracking",
|
|
"self-hosted",
|
|
"pwa",
|
|
"blood-pressure",
|
|
"withings",
|
|
"next.js",
|
|
"prisma",
|
|
"passkey"
|
|
],
|
|
"private": true,
|
|
"packageManager": "pnpm@10.31.0",
|
|
"scripts": {
|
|
"prepare": "lefthook install || echo 'lefthook install skipped (no git repo or binary unavailable)'",
|
|
"dev": "next dev",
|
|
"predev": "node scripts/generate-i18n-boot.mjs",
|
|
"prebuild": "node scripts/generate-sw-version.mjs && node scripts/generate-i18n-boot.mjs",
|
|
"build": "next build",
|
|
"analyze": "ANALYZE=1 next build",
|
|
"bundle-report": "node scripts/check-bundle-budget.mjs",
|
|
"bundle-check": "node scripts/check-bundle-budget.mjs --check",
|
|
"start": "next start",
|
|
"lint": "eslint",
|
|
"db:generate": "prisma generate",
|
|
"db:push": "prisma db push",
|
|
"db:migrate": "prisma migrate dev",
|
|
"db:migrate:deploy": "prisma migrate deploy",
|
|
"db:studio": "prisma studio",
|
|
"format": "prettier --write .",
|
|
"format:check": "prettier --check .",
|
|
"typecheck": "tsc --noEmit",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest",
|
|
"test:integration": "vitest run --config vitest.integration.config.mts",
|
|
"e2e": "playwright test",
|
|
"e2e:ui": "playwright test --ui",
|
|
"openapi:generate": "npx tsx scripts/generate-openapi.ts",
|
|
"openapi:check": "npx tsx scripts/check-openapi.ts",
|
|
"check-env": "npx tsx scripts/check-env.ts",
|
|
"mcp:stdio": "npx tsx src/cli/mcp-stdio.ts"
|
|
},
|
|
"dependencies": {
|
|
"@aws-sdk/client-s3": "^3.1075.0",
|
|
"@dnd-kit/core": "^6.3.1",
|
|
"@dnd-kit/sortable": "^10.0.0",
|
|
"@dnd-kit/utilities": "^3.2.2",
|
|
"@hookform/resolvers": "^5.4.0",
|
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
"@napi-rs/canvas": "0.1.80",
|
|
"@node-rs/argon2": "^2.0.2",
|
|
"@parse/node-apn": "^8.1.0",
|
|
"@prisma/adapter-pg": "^7.8.0",
|
|
"@prisma/client": "^7.8.0",
|
|
"@simplewebauthn/browser": "^13.3.0",
|
|
"@simplewebauthn/server": "^13.3.2",
|
|
"@tanstack/react-query": "5.101.2",
|
|
"@tanstack/react-virtual": "^3.14.5",
|
|
"@types/sax": "^1.2.7",
|
|
"class-variance-authority": "^0.7.1",
|
|
"clsx": "^2.1.1",
|
|
"date-fns": "^4.4.0",
|
|
"dotenv": "^17.4.2",
|
|
"fflate": "^0.8.3",
|
|
"jose": "^6.2.3",
|
|
"jspdf": "^4.2.1",
|
|
"jspdf-autotable": "^5.0.8",
|
|
"lucide-react": "^1.18.0",
|
|
"mmdb-lib": "^3.0.2",
|
|
"next": "16.2.10",
|
|
"next-themes": "^0.4.6",
|
|
"nodemailer": "9.0.3",
|
|
"otpauth": "^9.5.1",
|
|
"p-limit": "^7.3.0",
|
|
"pg-boss": "^12.26.0",
|
|
"prisma": "^7.8.0",
|
|
"qrcode": "^1.5.4",
|
|
"radix-ui": "^1.6.0",
|
|
"react": "19.2.7",
|
|
"react-day-picker": "^10.0.1",
|
|
"react-dom": "19.2.7",
|
|
"react-hook-form": "7.81.0",
|
|
"recharts": "^3.8.1",
|
|
"rrule": "^2.8.1",
|
|
"sax": "^1.6.0",
|
|
"sonner": "^2.0.7",
|
|
"tailwind-merge": "^3.6.0",
|
|
"tesseract.js": "^7.0.0",
|
|
"undici": "^8.5.0",
|
|
"web-push": "^3.6.7",
|
|
"yaml": "^2.8.4",
|
|
"zod": "^4.4.3",
|
|
"zod-openapi": "^6.0.0",
|
|
"zxcvbn-typescript": "^5.0.1"
|
|
},
|
|
"devDependencies": {
|
|
"@axe-core/playwright": "^4.12.1",
|
|
"@next/bundle-analyzer": "^16.2.9",
|
|
"@playwright/test": "^1.60.0",
|
|
"@tailwindcss/postcss": "^4",
|
|
"@testcontainers/postgresql": "^12.0.3",
|
|
"@types/node": "26.1.1",
|
|
"@types/nodemailer": "^8.0.1",
|
|
"@types/pg": "^8.20.0",
|
|
"@types/qrcode": "^1.5.6",
|
|
"@types/react": "^19",
|
|
"@types/react-dom": "^19",
|
|
"@types/web-push": "^3.6.4",
|
|
"@vitejs/plugin-react": "^5.1.4",
|
|
"@vitest/coverage-v8": "^4.1.5",
|
|
"eslint": "^9",
|
|
"eslint-config-next": "16.2.6",
|
|
"knip": "^6.16.1",
|
|
"lefthook": "^2.1.10",
|
|
"pdf-parse": "^2.4.5",
|
|
"pdfjs-dist": "5.4.296",
|
|
"pg": "^8.22.0",
|
|
"prettier": "^3.9.1",
|
|
"prettier-plugin-tailwindcss": "^0.8.0",
|
|
"shadcn": "^4.13.0",
|
|
"tailwindcss": "^4",
|
|
"testcontainers": "^12.0.3",
|
|
"tw-animate-css": "^1.4.0",
|
|
"typescript": "^6",
|
|
"vitest": "^4.1.5"
|
|
},
|
|
"pnpm": {
|
|
"onlyBuiltDependencies": [
|
|
"prisma",
|
|
"@prisma/engines"
|
|
],
|
|
"overrides": {
|
|
"hono@<4.12.25": "^4.12.25",
|
|
"picomatch@<4.0.4": "^4.0.4"
|
|
}
|
|
}
|
|
}
|