Quickshell / partage KDE Connect : figer le destinataire pendant le choix du fichier #14

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

Problème établi par le code

Dans mathieu/DesktopPage.qml:38–39,73–76,174, le bouton ouvre le sélecteur sans capturer le destinataire. onAccepted appelle phoneAction(), qui utilise le phone.id courant. Pendant le dialogue, le polling de desktop-bridge.py:227–236 peut sélectionner un autre appareil joignable.

Avec plusieurs appareils appairés : ouvrir le dialogue pour A, laisser la sélection passer à B, puis accepter le fichier peut l’envoyer à B. Les contrôles backend valident B sans connaître l’intention initiale. Aucun partage réel ni incident utilisateur n’a été effectué/observé pendant la revue.

Résultat attendu

  • Capturer l’identifiant du destinataire lors de l’ouverture et afficher son nom dans le dialogue.
  • Transmettre cet identifiant à l’acceptation, jamais celui d’un nouveau snapshot.
  • Annuler explicitement si le destinataire initial n’est plus disponible ou si le contexte de partage a changé ; ne jamais basculer silencieusement vers un autre appareil.

Validation

  • Dialogue ouvert pour A, snapshot passé à B, acceptation d’un fichier de démonstration : aucun envoi à B.
  • Appareil initial hors ligne, retiré ou désappairé : refus sans envoi.
  • Annulation, fermeture du panneau/changement d’onglet et réouverture : pas de destinataire périmé.
  • Tests QML/backend avec faux appareils et faux appels D-Bus uniquement.

La stabilité du fichier lui-même est un durcissement séparé ; ne pas imposer une copie de fichiers pour corriger ce destinataire.

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 établi par le code Dans `mathieu/DesktopPage.qml:38–39,73–76,174`, le bouton ouvre le sélecteur sans capturer le destinataire. `onAccepted` appelle `phoneAction()`, qui utilise le `phone.id` courant. Pendant le dialogue, le polling de `desktop-bridge.py:227–236` peut sélectionner un autre appareil joignable. Avec plusieurs appareils appairés : ouvrir le dialogue pour A, laisser la sélection passer à B, puis accepter le fichier peut l’envoyer à B. Les contrôles backend valident B sans connaître l’intention initiale. Aucun partage réel ni incident utilisateur n’a été effectué/observé pendant la revue. ## Résultat attendu - Capturer l’identifiant du destinataire lors de l’ouverture et afficher son nom dans le dialogue. - Transmettre cet identifiant à l’acceptation, jamais celui d’un nouveau snapshot. - Annuler explicitement si le destinataire initial n’est plus disponible ou si le contexte de partage a changé ; ne jamais basculer silencieusement vers un autre appareil. ## Validation - [x] Dialogue ouvert pour A, snapshot passé à B, acceptation d’un fichier de démonstration : aucun envoi à B. - [x] Appareil initial hors ligne, retiré ou désappairé : refus sans envoi. - [x] Annulation, fermeture du panneau/changement d’onglet et réouverture : pas de destinataire périmé. - [x] Tests QML/backend avec faux appareils et faux appels D-Bus uniquement. La stabilité du fichier lui-même est un durcissement séparé ; ne pas imposer une copie de fichiers pour corriger ce destinataire. ## 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.

Commit267af7e ; vrai QML hors écran, 16 assertions de destinataire/cancel/hors ligne/onglet/réouverture ; revue indépendante sans P1/P2.

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). Commit267af7e ; vrai QML hors écran, 16 assertions de destinataire/cancel/hors ligne/onglet/réouverture ; revue indépendante sans P1/P2. 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:00 +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#14
No description provided.