
Το Notification Guard φιλτράρει τις εισερχόμενες ειδοποιήσεις του Android βάσει προκαθορισμένων προφίλ ησυχίας (νύχτα, μεσημεριανό διάλειμμα, ώρες εργασίας, σαββατοκύριακο) και προαιρετικών κανόνων ανά εφαρμογή. Οι ευαίσθητες εφαρμογές περνούν πάντα μέσω ενός φίλτρου απορρήτου.
| Ιδιότητα | Τιμή |
|---|---|
| Πλατφόρμα | Android 7+ (API 24) |
| Stack | Tauri v2 · Rust · Svelte 5 |
| Γλώσσες | 7 |
| Repository | git.pronix.org/oiv1Ni3o/notification-guard |
flowchart LR
A[Ειδοποιήσεις app] --> B[Τοπική σύλληψη<br/>μόνο στη συσκευή]
B --> C[(Κρυπτογραφημένη τοπική αποθήκευση)]
C --> D[Προβολή χρήστη]
D --> E[Χειροκίνητη εξαγωγή]
B -.->|ποτέ| F[("Cloud / Server")]
style F stroke-dasharray: 5 5,stroke:#c00,color:#c00
Αρχιτεκτονική αποκλειστικά τοπική. Χωρίς διακομιστή, χωρίς λογαριασμό, χωρίς παρακολούθηση, χωρίς analytics. Το Android manifest δεν δηλώνει άδεια διαδικτύου.
android.permission.INTERNET)Το NotificationListenerService βλέπει αναπόφευκτα κάθε ειδοποίηση.
Ένα προ-φίλτρο διαχωρίζει τις ευαίσθητες κατηγορίες εφαρμογών ΠΡΙΝ τις
δει η μηχανή κανόνων — αυτές οι ειδοποιήσεις δεν εισέρχονται ποτέ στον
αποθηκευτικό χώρο και το περιεχόμενό τους δεν διατηρείται ποτέ.
Προστατευμένες κατηγορίες: τραπεζικά (DKB, PayPal, ταμιευτήρια, …), 2FA/authenticator, ασφαλιστικά ταμεία (TK, AOK, Barmer), δημόσιες υπηρεσίες (ομοσπονδιακές υπηρεσίες, Elster).
Έξι αυστηροί αρχιτεκτονικοί περιορισμοί που προέρχονται από τις τρέχουσες πολιτικές του Google Play (Data Safety, Permissions Declaration, Notification Listener). Ο καθένας παρακολουθείται ως issue στο Gitea.
| ID | Απαίτηση | Κατάσταση & υλοποίηση |
|---|---|---|
| C1 | Σαφής γνωστοποίηση και συγκατάθεση | ✓ Πληρούται — Οδηγός 4 βημάτων με γνωστοποίηση, επιλογή προφίλ, επιλογή κατηγοριών, ενεργοποίηση αδειών. Σαφείς σημειώσεις: τοπικά, χωρίς διακομιστή, χωρίς δίκτυο. |
| C2 | Κανένα SYSTEM_ALERT_WINDOW | ✓ Πληρούται — Το manifest δεν δηλώνει την άδεια. Οι επαναειδοποιήσεις περνούν μέσω του NotificationManager. |
| C3 | TTL διατήρησης δεδομένων | ✓ Πληρούται — Ρυθμιζόμενη διατήρηση (προεπιλογή 24 ώρες). Περιοδική εργασία καθαρισμού (Tokio interval, 60 λεπτά). Κουμπί «Διαγραφή όλων» με διάλογο επιβεβαίωσης. |
| C4 | Contact Picker αντί για READ_CONTACTS | ○ Προγραμματισμένο — Θα προστεθεί ως προαιρετικό opt-in module με τον Android Contact Picker — όχι READ_CONTACTS. |
| C5 | Φίλτρο απορρήτου (blocklist ευαίσθητων κατηγοριών) | ✓ Πληρούται — Hardcoded προεπιλεγμένη blocklist ως προ-φίλτρο μέσα στη μηχανή κανόνων. Πρώτος έλεγχος στο evaluate() — ταίριασμα → άμεσο Pass, χωρίς αξιολόγηση, χωρίς αποθήκευση. |
| C6 | Χωρίς επίπεδο δικτύου | ✓ Πληρούται — Manifest επαληθευμένο (aapt dump badging). Καμία εξάρτηση HTTP client σε κανένα Cargo.toml. Η εφαρμογή τρέχει εντελώς σε λειτουργία πτήσης. |
Τέσσερις άδειες manifest, η καθεμία με συγκεκριμένο λειτουργικό σκοπό. Χωρίς runtime permissions, χωρίς restricted special access πέραν του βασικού listener.
android.permission.BIND_NOTIFICATION_LISTENER_SERVICE — Κεντρική λειτουργία. Χωρίς αυτή την άδεια η εφαρμογή δεν μπορεί να διαβάσει ή να φιλτράρει ειδοποιήσεις. Ενεργοποιείται ρητά από τον χρήστη μέσω των ρυθμίσεων συστήματος.android.permission.RECEIVE_BOOT_COMPLETED — Επανασυνδέει την υπηρεσία listener μετά από επανεκκίνηση της συσκευής. Χωρίς αυτή, η εφαρμογή θα ήταν τυφλή μετά από κάθε επανεκκίνηση μέχρι τη χειροκίνητη εκκίνηση.android.permission.WAKE_LOCK — Πυροδοτεί αξιόπιστα τα snooze timers από τη λειτουργία Doze (προγραμματισμένο για τη φάση 2).android.permission.POST_NOTIFICATIONS — Εμφανίζει τις δικές μας επαναειδοποιήσεις (released ή snoozed) — αντί για overlay παράθυρο (βλ. C2).svelte-i18n με ανίχνευση locale OS μέσω tauri-plugin-os. Διαθέσιμες γλώσσες: Αγγλικά, Γερμανικά, Γαλλικά, Ισπανικά, Κινεζικά, Ιαπωνικά, Κορεάτικα.NotificationListenerService γεφυρώνει συμβάντα μέσω του Tauri plugin API προς το Rust pipeline.rusqlite (WAL, foreign keys on). 5 migrations. Αρχείο ιδιωτικό για την εφαρμογή, χωρίς εξωτερική πρόσβαση.notif-listener, rules-engine, notif-store) δεν έχουν cross-dependencies. Η επικοινωνία γίνεται αποκλειστικά μέσω του Tauri host ως μεσολαβητή.Notification Guard — Repository: git.pronix.org/oiv1Ni3o/notification-guard