ADR 0091 – Puces « deviné » / « saisi » et sélecteurs dans la capture
Accepté (2026-10-17, fil B du jalon 4, cadre : ADR 0086, API : ADR 0090)
ADR 0091 – Puces « deviné » / « saisi » et sélecteurs dans la capture
Statut : Accepté (2026-10-17, fil B du jalon 4, cadre : ADR 0086, API : ADR 0090)
La capture en une ligne montre déjà ce qui est reconnu (date, marques, tags). Cet ADR montre aussi ce que l’assistant devine, laisse l’accepter d’un geste, et permet de renseigner projet, contexte, priorité et date sans taper @ # + (mobile).
Décision
Composants. Le composant de capture partagé (shared/capture/quick-capture, utilisé par « + Capturer » de l’en-tête, l’Inbox et le champ de l’accueil) et la palette Ctrl/Cmd+K affichent le même assistant (shared/capture/capture-assistant). La logique pure est dans core/capture/capture-assist.ts.
Puces. « Saisi » : puce pleine. « Deviné » : bord pointillé, infobulle « Deviné · confiance 85 % ». Un toucher sur une puce devinée l’accepte (elle devient pleine) ; un toucher sur une puce acceptée la retire. Tab accepte la devinette la plus sûre encore proposée et ne quitte le champ qu’une fois toutes acceptées (Maj+Tab sort). À l’envoi, accepted ne contient que les champs que l’aperçu courant devine encore (le serveur répond 400 pour les autres, ADR 0090).
Sélecteurs au toucher. Une puce saisie, ou un bouton « + Projet / + Priorité / + Contexte / + Date » (champs ni saisis, ni devinés, ni acceptés), ouvre un sélecteur : valeurs d’énumération du schéma de l’aspect, recherche de nœuds filtrée par x-target pour un champ référence, champ date. Le choix est traduit en marque dans le texte (!haute, @telephone, +"Rénovation chambre", date JJ/MM/AAAA) puis l’aperçu est relancé : le serveur reconnaît une valeur saisie, il n’y a pas d’état parallèle à synchroniser. Une valeur déjà saisie est remplacée dans le texte.
Syntaxe exposée par l’aperçu. Le front ne connaît ni aspects ni champs : CapturePreview.markers (préfixe → champ, depuis config/captures/) dit quel préfixe écrire pour quel champ.
« Projet le plus proche : X ? ». Toute devinette d’un champ référence est posée en question avec Oui / Non plutôt qu’en puce ; « Non » la masque et libère le bouton « + Projet ». Cela couvre aussi un +Projet introuvable (ADR 0090 renvoie alors la devinette en plus de l’avertissement).
Alternatives écartées
- Sélecteurs qui écrivent directement des champs : un second état à fusionner avec l’aperçu et avec
accepted; la traduction en marque garde un seul chemin (le texte). - Repli codé en dur (
tache.projet→+) : proposé par une première version, remplacé parmarkersdans l’aperçu (règle « le domaine vit dansconfig/»).
Limites connues
- Dans la palette, l’assistant n’apparaît que s’il y a un champ reconnu, une devinette ou un avertissement ; les boutons « + champ » d’un texte simple n’y sont pas proposés (l’espace est compté).
- Le rendu des puces et des sélecteurs (mobile compris) est couvert par des tests de composant et par les captures du fil ; pas de test de bout en bout.
- Les dates sont écrites en
JJ/MM/AAAAparce que la capture ne lit pas l’ISO. - Le sélecteur de référence écrit le titre du projet comme marque
+"titre": deux projets de même titre, ou un titre contenant des guillemets, donnent « introuvable » ou le mauvais projet. - Tab accepte la devinette la plus sûre à chaque appui tant qu’il en reste : un utilisateur clavier qui veut atteindre « Capturer » les accepte au passage (l’issue change : nœud typé, hors Inbox). C’est conforme à l’ADR, mais à connaître.