da236643f2
Post-M2 self-walkthrough polish, batched into one commit. Map / heat: - fix heat-layer white-screen crash after login (add layer to map before setLatLngs; an off-map leaflet.heat layer has a null _map and throws) - normalize each heat layer to the densest pixel cell visible in the CURRENT viewport (maxZoom:0 so intensity factor f=1) and recompute on moveend/zoomend, so sparse poo data reaches red and stays normalized at any zoom level - dark CARTO basemap tiles when the color scheme is dark UI: - dark-mode toggle in the top-right, beside the settings gear - switch top-right nav (records / theme / settings / logout) to Feather icons with hover tooltips - home: Grafana-style quick time-range presets + back/forward shift buttons, placed between the From/To pickers and Apply; fix Select/tooltip z-index (Leaflet stacking) and the shift-button height alignment API client: - stop flooding GET /api/session with 401s: the session probe and the login endpoint own their 401s (no global redirect), which fixes the logout hang and the spinning login page Compose: - rename docker-compose.override.yml -> docker-compose.dev.yml as an explicit, non-auto-layered dev stack (8001, -dev container names, prod-copy ./data DB); update tests/test_deployment.py (read dev.yml, tolerate the !override tag) and the README "Docker Compose" section Tests: - pixel-grid peak counter, time-range presets, heat-layer ordering regression, and 401-redirect regression
50 lines
1.4 KiB
JSON
50 lines
1.4 KiB
JSON
{
|
|
"name": "home-automation-frontend",
|
|
"private": true,
|
|
"version": "0.0.0",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"build": "tsc -b && vite build",
|
|
"preview": "vite preview",
|
|
"lint": "eslint .",
|
|
"typecheck": "tsc --noEmit",
|
|
"test": "vitest run",
|
|
"codegen": "openapi-typescript ../openapi/openapi.json -o ./src/api/schema.d.ts"
|
|
},
|
|
"dependencies": {
|
|
"@mantine/core": "^7.17.8",
|
|
"@mantine/hooks": "^7.17.8",
|
|
"@tanstack/react-query": "^5.101.0",
|
|
"@types/leaflet": "^1.9.21",
|
|
"@types/leaflet.markercluster": "^1.5.6",
|
|
"leaflet": "^1.9.4",
|
|
"leaflet.heat": "^0.2.0",
|
|
"leaflet.markercluster": "^1.5.3",
|
|
"openapi-fetch": "^0.17.0",
|
|
"react": "^18.3.1",
|
|
"react-dom": "^18.3.1",
|
|
"react-feather": "^2.0.10",
|
|
"react-leaflet": "^4.2.1",
|
|
"react-router-dom": "^6.30.4"
|
|
},
|
|
"devDependencies": {
|
|
"@eslint/js": "^9.39.4",
|
|
"@testing-library/jest-dom": "^6.9.1",
|
|
"@testing-library/react": "^14.3.1",
|
|
"@testing-library/user-event": "^14.6.1",
|
|
"@types/react": "^18.3.31",
|
|
"@types/react-dom": "^18.3.7",
|
|
"@vitejs/plugin-react": "^4.7.0",
|
|
"eslint": "^9.39.4",
|
|
"eslint-plugin-react": "^7.37.5",
|
|
"eslint-plugin-react-hooks": "^7.1.1",
|
|
"jsdom": "^29.1.1",
|
|
"openapi-typescript": "^7.13.0",
|
|
"typescript": "^5.9.3",
|
|
"typescript-eslint": "^8.61.0",
|
|
"vite": "^6.4.3",
|
|
"vitest": "^4.1.8"
|
|
}
|
|
}
|