feat: startup health check during splash screen (v1.7.20)

- Add ?action=health_check PHP endpoint (early-exit, before rate-limiter)
  Checks: PHP version, required extensions, data/ writability, SQLite DB
  connection + table integrity, .env file, Gemini AI key, Bring! token
- Display animated checklist in splash screen with per-item icons
  (ok/warn/error); critical failures block app launch with clear error
  message and Retry button; optional warnings shown but don't block
- New JS: _runStartupCheck(), _startupRetry(); called first in _initApp()
- New HTML elements in #app-preloader: #preloader-checks, #preloader-error-msg,
  #preloader-retry-btn (hidden until startup check completes)
- New CSS: .preloader-checks, .preloader-check-row, .preloader-error-msg,
  .preloader-retry-btn with state colors (ok=green, warn=amber, error=red)
- Translations: startup.* keys (10 per language) in IT, EN, DE, FR, ES
- Asset version bump: v=20260520a
This commit is contained in:
dadaloop82
2026-05-17 09:40:11 +00:00
parent 8750e44687
commit d3b119c7fe
11 changed files with 294 additions and 6 deletions
+12
View File
@@ -1201,5 +1201,17 @@
"btn_csv": "CSV herunterladen",
"btn_pdf": "PDF / Drucken",
"btn_title": "Exportieren"
},
"startup": {
"check_php": "PHP",
"check_exts": "PHP-Erweiterungen",
"check_data_dir": "Datenverzeichnis",
"check_db": "Datenbank",
"check_env": "Konfiguration (.env)",
"check_gemini": "Gemini-AI-Schlüssel",
"check_bring": "Bring!-Token",
"critical_error": "Kritischer Fehler: Die App kann nicht gestartet werden. Prüfe die Serverlogs.",
"error_network": "Server nicht erreichbar. Bitte Verbindung prüfen.",
"retry": "Erneut versuchen"
}
}
+12
View File
@@ -1201,5 +1201,17 @@
"btn_csv": "Download CSV",
"btn_pdf": "PDF / Print",
"btn_title": "Export"
},
"startup": {
"check_php": "PHP",
"check_exts": "PHP extensions",
"check_data_dir": "Data directory",
"check_db": "Database",
"check_env": "Configuration (.env)",
"check_gemini": "Gemini AI key",
"check_bring": "Bring! token",
"critical_error": "Critical error: the app cannot start. Check your server logs.",
"error_network": "Cannot reach the server. Check your connection.",
"retry": "Retry"
}
}
+12
View File
@@ -1201,5 +1201,17 @@
"btn_csv": "Descargar CSV",
"btn_pdf": "PDF / Imprimir",
"btn_title": "Exportar"
},
"startup": {
"check_php": "PHP",
"check_exts": "Extensiones PHP",
"check_data_dir": "Carpeta de datos",
"check_db": "Base de datos",
"check_env": "Configuración (.env)",
"check_gemini": "Clave Gemini AI",
"check_bring": "Token de Bring!",
"critical_error": "Error crítico: la aplicación no puede iniciarse. Revisa los registros del servidor.",
"error_network": "No se puede contactar con el servidor. Comprueba tu conexión.",
"retry": "Reintentar"
}
}
+12
View File
@@ -1201,5 +1201,17 @@
"btn_csv": "Télécharger CSV",
"btn_pdf": "PDF / Imprimer",
"btn_title": "Exporter"
},
"startup": {
"check_php": "PHP",
"check_exts": "Extensions PHP",
"check_data_dir": "Dossier de données",
"check_db": "Base de données",
"check_env": "Configuration (.env)",
"check_gemini": "Clé Gemini AI",
"check_bring": "Token Bring!",
"critical_error": "Erreur critique : l'application ne peut pas démarrer. Vérifiez les logs du serveur.",
"error_network": "Impossible de contacter le serveur. Vérifiez votre connexion.",
"retry": "Réessayer"
}
}
+12
View File
@@ -1201,5 +1201,17 @@
"btn_csv": "Scarica CSV",
"btn_pdf": "PDF / Stampa",
"btn_title": "Esporta"
},
"startup": {
"check_php": "PHP",
"check_exts": "Estensioni PHP",
"check_data_dir": "Cartella dati",
"check_db": "Database",
"check_env": "Configurazione (.env)",
"check_gemini": "Chiave Gemini AI",
"check_bring": "Token Bring!",
"critical_error": "Errore critico: impossibile avviare l'app. Controlla i log del server.",
"error_network": "Impossibile contattare il server. Controlla la connessione.",
"retry": "Riprova"
}
}