d6f7993504
Der Scanner liest den QR jetzt auch aus einer gespeicherten Bilddatei - in der Testumgebung ohne Kamera der einzige Weg, auf dem Telefon der kuerzere (der Token entsteht am Rechner, das Bildschirmfoto liegt ohnehin auf dem Geraet). Gleicher Leser, gleiche Deutung, nur eine andere Quelle; ohne Kamera entfaellt das schwarze Quadrat. Dabei ein echter Fehler in der ersten Fassung, gefunden an der Musterseite: img.decode() loest bei einem GIF in Chromium nie auf - das Blatt haette ohne Meldung ewig gewartet. Jetzt createImageBitmap, als Rueckfall bewusst das load-Ereignis statt decode(). Debug-Mode ist nur noch ein stiller Textknopf am Seitenende, ohne Kachel und ohne Erlaeuterung; der Zugang zu Home Assistant steht als Akkordeon in der Kachel "Zugaenge" darin. Beides auf Vorgabe des Eigentuemers. Die Musterseite kann jetzt auch die Ersteinrichtung (?seite=einrichtung) - damit ist der ganze Weg ohne echten Token nachgewiesen: selbst erzeugter QR mit Token-Text landet zeichengleich im Feld, einer mit http-Adresse im Adressfeld, ein Bild ohne Code meldet das sauber. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
49 lines
1.5 KiB
JSON
49 lines
1.5 KiB
JSON
{
|
|
"name": "datametric360",
|
|
"version": "0.1.0",
|
|
"private": true,
|
|
"description": "DataMetric360 — private Fahrzeug-App (iOS/Android via Capacitor, zusätzlich als Iframe im Home-Assistant-Dashboard). Datenschicht plus Oberfläche auf Basis von @audi-dash/ui.",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"build": "vite build",
|
|
"preview": "vite preview",
|
|
"typecheck": "tsc --noEmit",
|
|
"smoke": "node --experimental-strip-types scripts/smoke.ts",
|
|
"smoke:auth": "node --experimental-strip-types scripts/smoke-auth.ts",
|
|
"ota": "powershell -ExecutionPolicy Bypass -File scripts/ota-paket.ps1 -Bauen",
|
|
"test": "vitest run"
|
|
},
|
|
"dependencies": {
|
|
"@aparajita/capacitor-secure-storage": "^8.0.0",
|
|
"@audi-dash/ui": "*",
|
|
"@capacitor/android": "^8.5.0",
|
|
"@capacitor/app": "^8.1.1",
|
|
"@capacitor/core": "^8.5.0",
|
|
"@capacitor/filesystem": "^8.1.3",
|
|
"@capacitor/ios": "^8.5.0",
|
|
"@capacitor/preferences": "^8.0.1",
|
|
"@capacitor/share": "^8.0.1",
|
|
"@capgo/capacitor-updater": "^8.51.14",
|
|
"jsqr": "^1.4.0",
|
|
"leaflet": "^1.9.4",
|
|
"react": "^18.3.1",
|
|
"react-dom": "^18.3.1"
|
|
},
|
|
"devDependencies": {
|
|
"@capacitor/cli": "^8.5.0",
|
|
"@testing-library/react": "^16.3.2",
|
|
"@types/leaflet": "^1.9.12",
|
|
"@types/node": "^24.13.3",
|
|
"@types/react": "^18.3.12",
|
|
"@types/react-dom": "^18.3.1",
|
|
"@vitejs/plugin-react": "^4.3.4",
|
|
"jsdom": "^29.1.1",
|
|
"qrcode": "^1.5.4",
|
|
"typescript": "^5.7.2",
|
|
"vite": "^6.0.7",
|
|
"vitest": "^2.1.8",
|
|
"xcode": "^3.0.1"
|
|
}
|
|
}
|