Quickshell / qualité : extraire l’orchestration du collage de shell.qml #23
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#23
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 de maintenance
mathieu/shell.qmlcumule IPC, focus, sondes, moniteurs, dictée et collage. Le collage est réparti entre l’étatpendingPaste*, les résultats dedesktopBridge,pasteDelay,pasteProcessetrequestPaste(), avec des retours d’erreur qui rouvrent le panneau.Cette orchestration sensible est difficile à tester et à relire isolément. Le ticket vise une extraction mécanique limitée, pas une nouvelle architecture générale.
Résultat attendu
Extraire un petit contrôleur de collage à interface explicite (demande, résultat, annulation, erreur), en gardant les responsabilités de visibilité/navigation dans le shell. Conserver les vérifications de fenêtre, commandes en tableaux d’arguments, absence de frappe globale et interdiction des retries incertains.
Éviter la duplication d’état et les callbacks circulaires ; nommer les étapes et expliquer leurs invariants plutôt que multiplier les abstractions.
Validation
panel-paste.pyet focus conservés ; aucune frappe vers une vraie application.Dépendance
Stabiliser auparavant le comportement de sélection décrit dans #19, ou garder ce travail dans un changement distinct clairement validé. Les autres corrections urgentes ne doivent pas attendre cette extraction.
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.#19 est stabilisé, revu et intégré sur main65fa842 (gate combiné24/24). L’extraction mécanique démarre dans
quickshell-paste-controller/pi/quickshell-paste-controller, basée exactement sur ce main : mêmes gardes, délais, ciblage, annulations et limites meilleure-effort. Le shell garde visibilité/navigation/messages ; petit contrôleur QML à entrées/signaux explicites, sans nouvelle machine générique ni changement de comportement. Tests natifs adaptés pour charger le vrai composant, pas recopier ses transitions.Intégré sur main cfa42c0, fichiers distants exacts vérifiés. Commit signé5886639, revue indépendante sans constat. Gate parent combiné25/25 suites passent, dont21 cas natifs du contrôleur (15 gardes conservés +6 cas de câblage/lifecycle),11 tests du helper et suite de focus.
Extraction mécanique de l’état/fonctions/timers/process vers
PasteController.qml, interface explicitecopyProvider/clients/panelOpened, signaux dismiss/reveal/message,busyreadonly. Le shell conserve visibilité/navigation/message et route la demande/réponse ; aucun état de collage miroir ni écriture interne du contrôleur. Délais150ms/7s/2s, ordre de remise à zéro avant callbacks, révisions UI, IDs de copie, cible capturée, deux vérifications helper et PID positif avant TERM/KILL inchangés. Pas de nouvelle garantie de sélection ou de rollback, aucune frappe globale/retry incertain.La fixture charge le composant réel copié inchangé, le câblage réel du shell et le handler réel du panneau ; le helper est faux sous le shellDir privé, sans remplacer les tableaux d’arguments. Refus/concurrence/busy, changement de cible/onglet, timeout, réponses tardives, fermeture avant message différé, démarrage annulé et reload couverts. Getter interdit contrôlé avec témoin positif ; observation toujours passive et sans contenu. Aucun vrai presse-papiers/compositeur/service/appareil utilisé. Tests parent réalisés avant le nouveau lot de mesures#22, pour ne pas polluer ses essais.
Publication≠activation : checkout actif non avancé.