
Notification Guard filtra las notificaciones entrantes de Android mediante perfiles horarios predefinidos (noche, pausa de mediodía, horas de trabajo, fin de semana) y reglas opcionales por aplicación. Las aplicaciones sensibles siempre se dejan pasar mediante un filtro de privacidad.
| Propiedad | Valor |
|---|---|
| Plataforma | Android 7+ (API 24) |
| Stack | Tauri v2 · Rust · Svelte 5 |
| Idiomas | 7 |
| Repositorio | git.pronix.org/oiv1Ni3o/notification-guard |
flowchart LR
A[Notificaciones de app] --> B[Captura local<br/>solo en el dispositivo]
B --> C[(Almacenamiento local cifrado)]
C --> D[Vista de usuario]
D --> E[Exportación manual]
B -.->|nunca| F[("Nube / Servidor")]
style F stroke-dasharray: 5 5,stroke:#c00,color:#c00
Arquitectura exclusivamente local. Sin servidor, sin cuenta, sin seguimiento, sin analítica. El manifest de Android no declara permiso de Internet.
android.permission.INTERNET)El NotificationListenerService ve inevitablemente todas las
notificaciones. Un prefiltro descarta las categorías de apps sensibles
ANTES de que el motor de reglas las vea — estas notificaciones no
entran nunca en el almacén y su contenido jamás se persiste.
Categorías protegidas: banca (DKB, PayPal, cajas de ahorros, …), 2FA/autenticador, sanidad (TK, AOK, Barmer), administración pública (servicios federales, Elster).
Seis restricciones arquitectónicas obligatorias derivadas de las políticas actuales de Google Play (Data Safety, Permissions Declaration, Notification Listener). Cada una se rastrea como incidencia en Gitea.
| ID | Requisito | Estado e implementación |
|---|---|---|
| C1 | Divulgación y consentimiento explícitos | ✓ Cumplido — Asistente de 4 pasos con divulgación, selección de perfil, selección de categorías, activación de permisos. Notas claras: local, sin servidor, sin red. |
| C2 | Sin SYSTEM_ALERT_WINDOW | ✓ Cumplido — El manifest no declara este permiso. Las re-notificaciones pasan por NotificationManager. |
| C3 | TTL de retención de datos | ✓ Cumplido — Retención configurable (24 h por defecto). Tarea periódica de limpieza (intervalo Tokio, 60 min). Botón «Borrar todo» con diálogo de confirmación. |
| C4 | Selector de contactos en lugar de READ_CONTACTS | ○ Planificado — Se añadirá como módulo opt-in opcional usando el Contact Picker de Android — sin READ_CONTACTS. |
| C5 | Filtro de privacidad (blocklist de categorías sensibles) | ✓ Cumplido — Blocklist por defecto codificada en duro como prefiltro dentro del motor de reglas. Primera comprobación en evaluate() — coincidencia → Pass inmediato, sin evaluación, sin almacenamiento. |
| C6 | Sin capa de red | ✓ Cumplido — Manifest verificado (aapt dump badging). Sin dependencias HTTP en ningún Cargo.toml. La app funciona enteramente en modo avión. |
Cuatro permisos en el manifest, cada uno con un propósito funcional concreto. Sin permisos de ejecución, sin acceso especial restringido más allá del listener principal.
android.permission.BIND_NOTIFICATION_LISTENER_SERVICE — Función esencial. Sin este permiso la app no puede leer ni filtrar notificaciones. El usuario lo activa explícitamente en los ajustes del sistema.android.permission.RECEIVE_BOOT_COMPLETED — Reconecta el servicio listener tras reiniciar el dispositivo. Sin él, la app quedaría ciega tras cada reinicio hasta abrirla manualmente.android.permission.WAKE_LOCK — Dispara fiablemente temporizadores de snooze desde el modo Doze (planificado para la fase 2).android.permission.POST_NOTIFICATIONS — Muestra nuestras propias re-notificaciones (liberadas o en snooze) — en lugar de una ventana superpuesta (ver C2).svelte-i18n con detección de locale del sistema vía tauri-plugin-os. Idiomas disponibles: inglés, alemán, francés, español, chino, japonés, coreano.NotificationListenerService reenvía eventos a través de la API de plugins de Tauri al pipeline en Rust.rusqlite (WAL, foreign keys activas). 5 migraciones. Archivo privado de la app, sin acceso externo.notif-listener, rules-engine, notif-store) no tienen dependencias cruzadas. La comunicación pasa exclusivamente por el host de Tauri como mediador.Notification Guard — Repositorio: git.pronix.org/oiv1Ni3o/notification-guard