Quickshell / notifications : limiter les données natives retenues, pas seulement leur affichage #13
Labels
No labels
Agent/Autonomous OK
Agent/Demeter
Agent/Hermes
Agent/Human
Agent/Needs Review
Area/API
Area/Auth
Area/CLI
Area/Data
Area/Docs
Area/Infra
Area/UI
CI/Failing
CI/Flaky
CI/Green
CI/Needs Runner
CI/Needs Workflow
Compat/Backward Compatible
Compat/Breaking
Compat/Migration
Deploy/Ansible
Deploy/Blocked
Deploy/Homelab
Deploy/Needs Config
Deploy/Needs Secret
Deploy/Ready
Deploy/Rollback
Kind/Bug
Kind/Chore
Kind/Design
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Refactor
Kind/Security
Kind/Spike
Kind/Testing
Ops/Backup
Ops/Incident
Ops/Maintenance
Ops/Monitoring
Ops/Upgrade
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Priority
Someday
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Risk
Critical
Risk
High
Risk
Low
Risk
Medium
Security/Auth
Security/Disclosure
Security/Hardening
Security/Secret
Size
L
Size
M
Size
S
Size
XL
Size
XS
Stack/Ansible
Stack/Docker
Stack/Forgejo
Stack/Hermes
Stack/Node
Stack/Postgres
Stack/Python
Stack/Systemd
Status
Abandoned
Status
Blocked
Status
In Progress
Status
In Review
Status
Need More Info
Status
Ready
chantier-racine
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
mathieu/dotfiles#13
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problème confirmé
mathieu/NotificationService.qml:95–114tronque les copies d’affichage puis conserve sans condition les objets natifs avecnotification.tracked = true. Les limites 512/4096 caractères, huit boutons et 100 entrées ne bornent donc pas les octets retenus. Les identifiants d’actions copiés dans les snapshots ne sont pas limités non plus.Reproduction sur Quickshell 0.3.2, bus D-Bus/HOME temporaires : un corps de 2 097 152 caractères reste complet dans
row.notification.body, alors querow.body.lengthvaut 4096. Un objet non transitoire peut rester actif jusqu’à 24 h. Ce constat est une rétention excessive possible, pas une fuite d’objets fermés démontrée.Résultat attendu
Validation
Articulation
À coordonner avec #12, sans attendre une refonte générale. Conserver les limites 100 entrées/24 h et les sémantiques documentées pour les notifications ordinaires.
Référence
Revue du code au commit
5e350a8, avec Quickshell 0.3.2. Les 18 suites existantes passent ; les cas ci-dessous complètent cette couverture. Chantier : #11.Intégré et publié sur
main, contenu distant vérifié au commit 166c763, correction signéeb414a5f. Revue indépendante propre ; gate parent : 21/21 suites passent en environnements privés.Les enveloppes natives, identifiants/actions/hints inspectables et snapshots sont bornés ; un message individuellement valide reste admis, puis les plus anciens sont évincés pour respecter100/24h et la charge cumulée4MiB. Un expéditeur ne peut donc pas remplir une fois le quota et bloquer toutes les applications24h. Les références file:/icônes bornées restent admises ; buffers d’images natifs opaques et hints opaques sont rejetés. Les32 libellés maximum sont observés pour la validation, mais changements cachés valides sans sauvegarde et visibles regroupés en une.
Preuve native rouge : corps65537 unités restait suivi sur ancien code ; vert : expiration/rejet. Nouvelles suites couvrent remplacement invalide/fermeture avant refresh, actions périmées, images et variantes Qt réelles, quota/éviction/autre application, reload et absence d’archive accidentelle. Diagnostics privés compacts, pas de bypass de production.
Mémoire synthétique d’un même processus :40 corps65536 unités =>26 natifs retenus, charge4 132 024octets ; après clear0/0 ; deux cycles de gros corps/images rejetés0/0 et PSS69 965 puis69 969Kio. Ce plateau court n’est pas une preuve d’absence de fuite. La charge4MiB n’est pas un plafond RSS. Allocations/parser/unpacking natifs antérieurs à QML et délai de revalidation coalescée restent explicitement hors garantie ; un plafond d’ingress exige du travail amont.
Aucun reload du checkout actif ni accès aux notifications personnelles. Les limites et leur impact sont dans
quickshell/NOTIFICATIONS.md.