feat(alarmas): replace one-line reliability button with full diagnostics screen

Surface all six DiagnosticoAlarmasAndroid fields instead of three: the
battery-optimization exemption and native pending-alarm count were
already collected but silently dropped by the old widget. Each failing
signal now offers a "Fix this" action that opens the right system
settings screen (exact alarms, notifications, full-screen intent,
battery optimization), guarded by SDK level and never crashing when a
ROM lacks that screen. Manufacturers known for aggressive background
killing (Xiaomi/Redmi/POCO, Huawei, Oppo, Vivo, OnePlus, Samsung) get
an honest explanation that Autostart must be enabled manually, since
there is no API to detect or grant it.

Notifications now deep-links straight to
ACTION_APP_NOTIFICATION_SETTINGS via a new openNotificationSettings
native method, instead of reusing the runtime permission popup meant
for first-time alarm creation.

New copy is added to all 13 ARB locales with real per-language
translations (not Spanish copies), verified by the ARB parity and
anti-copy tests plus the corruption scanner.
This commit is contained in:
2026-07-31 19:10:52 +02:00
parent ef9705a30e
commit 049ab78acb
35 changed files with 2262 additions and 79 deletions
+73
View File
@@ -1715,4 +1715,77 @@ class AppLocalizationsFr extends AppLocalizations {
@override
String get alarmCardVacationPausedBadge => 'En pause pour les vacances';
@override
String get alarmDiagnosticsExactAlarmsTitle =>
'Programmation d\'alarme précise';
@override
String get alarmDiagnosticsExactAlarmsHint =>
'Permet à l\'alarme de sonner à la minute exacte choisie, même si le téléphone est en veille.';
@override
String get alarmDiagnosticsNotificationsTitle => 'Notifications';
@override
String get alarmDiagnosticsNotificationsHint =>
'Nécessaires pour afficher l\'alarme et l\'avis anticipé.';
@override
String get alarmDiagnosticsFullScreenTitle =>
'Affichage plein écran de l\'alarme';
@override
String get alarmDiagnosticsFullScreenHint =>
'Permet à l\'écran de sonnerie de s\'afficher automatiquement, même si le téléphone est verrouillé.';
@override
String get alarmDiagnosticsBatteryTitle => 'Optimisation de la batterie';
@override
String get alarmDiagnosticsBatteryHint =>
'Empêche le système de fermer PluriWave en arrière-plan pour que l\'alarme puisse quand même sonner.';
@override
String get alarmDiagnosticsNativeCountTitle =>
'Alarmes enregistrées auprès d\'Android';
@override
String alarmDiagnosticsNativeCountValue(int count) {
return 'Actuellement enregistrées : $count';
}
@override
String get alarmDiagnosticsNativeCountAttentionHint =>
'Une alarme est activée, mais aucune n\'est encore enregistrée auprès du système. Rouvrez PluriWave, ou corrigez d\'abord les points ci-dessus.';
@override
String get alarmDiagnosticsManufacturerLabel => 'Fabricant';
@override
String get alarmDiagnosticsSdkLabel => 'Version d\'Android (SDK)';
@override
String get alarmDiagnosticsNeedsAttentionStatus =>
'Nécessite votre attention';
@override
String get alarmDiagnosticsAutostartTitle =>
'Encore une étape manuelle sur ce téléphone';
@override
String alarmDiagnosticsAutostartBody(String manufacturer) {
return 'Les téléphones $manufacturer ferment souvent les applications en arrière-plan pour économiser la batterie. Aucun réglage ne permet à PluriWave de s\'activer lui-même : vous devez activer vous-même le démarrage automatique (parfois appelé \"Autostart\" ou \"Activité en arrière-plan\") pour PluriWave. Cherchez dans les Paramètres, sous Applications ou Batterie, ou dans l\'application Sécurité du téléphone.';
}
@override
String get alarmDiagnosticsFixAction => 'Corriger';
@override
String get alarmDiagnosticsIntentUnavailable =>
'Impossible d\'ouvrir cet écran de paramètres sur ce téléphone. Essayez de le trouver manuellement dans les Paramètres.';
@override
String get alarmDiagnosticsUnavailableHint =>
'Nous n\'avons pas encore pu vérifier vos paramètres d\'alarme.';
}