Quickshell / notifications : accepter les clés d’application commençant par un tiret dans les préférences #20

Closed
opened 2026-10-24 13:10:05 +00:00 by mathieu · 1 comment
Owner

Problème confirmé

mathieu/NotificationRuntime.qml:97–101 transmet directement une clé d’application fournie par l’expéditeur à notification-backend.py rule. Une clé telle que -Demo ou --help est interprétée par argparse comme une option, et non comme le nom d’application.

Reproduction avec HOME temporaire : rule -Demo archive false échoue ; rule -- -Demo archive false réussit. --help peut sortir sans enregistrer la préférence. Ce n’est pas une injection shell : les commandes restent des tableaux d’arguments.

Résultat attendu

Insérer le terminateur d’options au bon endroit après la sous-commande rule et conserver la validation de la clé, de l’option et de sa valeur.

Validation

  • Couvrir -Demo, --help, un nom ordinaire et un nom contenant des espaces ; vérifier le contenu effectivement enregistré, pas seulement le code de sortie.
  • Les noms invalides restent refusés et les fichiers de préférences restent atomiques/privés.
  • Aucun titre ou corps de notification écrit dans le fichier de préférences.

Indépendant, petite correction réalisable en parallèle des tickets prioritaires.

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.

  • with pi 🥧
## Problème confirmé `mathieu/NotificationRuntime.qml:97–101` transmet directement une clé d’application fournie par l’expéditeur à `notification-backend.py rule`. Une clé telle que `-Demo` ou `--help` est interprétée par `argparse` comme une option, et non comme le nom d’application. Reproduction avec HOME temporaire : `rule -Demo archive false` échoue ; `rule -- -Demo archive false` réussit. `--help` peut sortir sans enregistrer la préférence. Ce n’est pas une injection shell : les commandes restent des tableaux d’arguments. ## Résultat attendu Insérer le terminateur d’options au bon endroit après la sous-commande `rule` et conserver la validation de la clé, de l’option et de sa valeur. ## Validation - [x] Couvrir `-Demo`, `--help`, un nom ordinaire et un nom contenant des espaces ; vérifier le contenu effectivement enregistré, pas seulement le code de sortie. - [x] Les noms invalides restent refusés et les fichiers de préférences restent atomiques/privés. - [x] Aucun titre ou corps de notification écrit dans le fichier de préférences. Indépendant, petite correction réalisable en parallèle des tickets prioritaires. ## Référence Revue du code [au commit `5e350a8`](https://git.2027a.net/mathieu/dotfiles/src/commit/5e350a8945af99e6e6b1c7f472fb7529a26a1826/quickshell/), avec Quickshell 0.3.2. Les 18 suites existantes passent ; les cas ci-dessous complètent cette couverture. Chantier : #11. - with pi 🥧
Author
Owner

Corrigé et intégré sur main, contenu distant vérifié au commit e8ec9ad.

Commit4df59d4 ; vrai writer QML/helper dans HOME privé : -Demo et --help rouges avant, verts après ; noms ordinaires/espaces, clés invalides refusées par fichier inchangé, mode0600. Revue propre. Limite préexistante non modifiée : le reload de préférences peut effacer rapidement le message d’erreur d’une règle.

Gate parent de composition : 20/20 suites passent, HOME/XDG/bus/audio privés. Commits signés et vérifiés contre la clé publique configurée avec confiance temporaire locale. Aucun service personnel, appareil HA, presse-papiers ou vrai partage piloté. Le portail natif/compositeur n’est pas revendiqué testé.

Publication du code seulement : checkout actif à 5e350a8, sans activation/reload.

  • with pi 🥧
Corrigé et intégré sur `main`, contenu distant vérifié au commit [e8ec9ad](https://git.2027a.net/mathieu/dotfiles/commit/e8ec9ad7563960637ef33c13f0a1431f6bfab132). Commit4df59d4 ; vrai writer QML/helper dans HOME privé : -Demo et --help rouges avant, verts après ; noms ordinaires/espaces, clés invalides refusées par fichier inchangé, mode0600. Revue propre. Limite préexistante non modifiée : le reload de préférences peut effacer rapidement le message d’erreur d’une règle. Gate parent de composition : **20/20 suites passent**, HOME/XDG/bus/audio privés. Commits signés et vérifiés contre la clé publique configurée avec confiance temporaire locale. Aucun service personnel, appareil HA, presse-papiers ou vrai partage piloté. Le portail natif/compositeur n’est pas revendiqué testé. Publication du code seulement : checkout actif à `5e350a8`, sans activation/reload. - with pi 🥧
mathieu 2026-10-24 13:44:03 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
mathieu/dotfiles#20
No description provided.