Quatre filets de sécurité pour vos notes, de l’annulation à l’enregistrement refusé

Productivity

Il existe une catégorie de bugs dont les utilisateurs se croient responsables. Vous appuyez sur la mauvaise touche, une note disparaît, et votre première pensée n’est pas « cette application aurait dû gérer ça », mais « j’aurais dû faire plus attention ».

Vous ne devriez pas avoir à faire plus attention. Une application de prise de notes sert justement à déposer les choses quelque part pour ne plus les garder en tête, et une application qui en perd une de temps en temps a rompu la seule promesse qu’elle faisait.

Notez a quatre mécanismes de récupération distincts. Ils ne font pas doublon : chacun rattrape une défaillance que les autres ne couvrent pas, sur une autre échelle de temps.

Premier niveau : l’annulation, pour les dernières secondes

⌘Z est le niveau que vous utilisez sans y penser. Il couvre cinq actions précises :

  • Suppressions — vous avez mis une note à la corbeille

  • Déplacements de cartes — vous avez fait glisser une carte vers une autre colonne du tableau

  • Modifications de propriétés — vous avez défini ou effacé la valeur d’une propriété personnalisée

  • Captures rapides — vous avez capturé quelque chose et l’avez regretté aussitôt

  • Déplacements de rappels — vous avez fait glisser un rappel vers un autre jour du calendrier

La pile garde vingt actions. Chaque entrée stocke exactement ce qu’il faut pour inverser l’opération. Pour un déplacement de carte, c’est la colonne et la position d’origine, y compris quand la carte venait de « Sans colonne ».

Trois détails de son comportement sont voulus :

Les suppressions et les captures affichent une notification, les déplacements de cartes non. Une notification à chaque glisser-déposer rendrait inutilisable une séance de travail sur un tableau. Les déplacements restent annulables ; ils ne s’annoncent simplement pas.

Une modification de propriété qui ne change rien n’est pas enregistrée. Ouvrir une liste de sélection et choisir la valeur qu’elle avait déjà ne consomme pas de place dans la pile. Gaspiller une place pour un non-événement ferait sortir discrètement du bas de la pile l’action que vous vouliez vraiment annuler.

Les notifications de capture proposent deux actions, Annuler et Ouvrir. Après une capture, on veut le plus souvent non pas l’annuler, mais aller la voir.

La limite importante : la pile d’annulation vit dans la session de votre navigateur. Rechargez la page, et elle est vide. C’est un raccourci pour l’erreur que vous venez de faire, pas un historique durable. L’historique durable, ce sont les deux niveaux suivants.

Deuxième niveau : l’historique des versions, pour les trente derniers jours

Chaque note garde son propre historique de révisions, conservé trente jours.

Un instantané est pris à l’enregistrement, mais pas à chaque enregistrement : au plus un toutes les cinq minutes. Une modification faite par le chat IA ou par un assistant connecté fait exception : elle enregistre toujours un instantané de la note telle qu’elle était avant. La raison est arithmétique. Un éditeur qui enregistre automatiquement pendant la frappe produirait sinon des centaines de versions presque identiques pour un seul après-midi d’écriture, et une liste de quatre cents versions n’est pas un historique exploitable. Avec un instantané toutes les cinq minutes au plus, la liste se lit.

Chaque instantané contient les étiquettes de la note en plus de son contenu. C’est important au moment de restaurer : revenir à la version de mardi dernier ramène aussi les étiquettes de mardi dernier, au lieu de remettre un ancien texte dans une note dont le classement a changé entre-temps sans que personne le remarque.

L’historique des versions couvre la défaillance que l’annulation n’atteint pas. Non pas « je viens de faire une erreur », mais « à un moment ces deux dernières semaines, cette note s’est dégradée, et je ne sais pas quand ». Vous prévisualisez les versions et restaurez celle que vous voulez.

Troisième niveau : la corbeille, pour les suppressions des trente derniers jours

Supprimer une note ne la supprime pas. Notez la marque comme supprimée, enregistre l’heure de la suppression, et la note reste dans cet état trente jours, consultable et restaurable.

Le plus intéressant, c’est ce qui arrive aux sous-notes.

Supprimer une note supprime toute son arborescence. Supprimez la note d’un projet, et toutes les notes imbriquées dessous partent avec elle. C’est le seul comportement raisonnable : une note enfant laissée sans parent est une fuite, pas un sauvetage.

La restauration est plus prudente que la suppression. Quand vous restaurez une note, ses descendantes reviennent aussi, mais seulement celles dont l’horodatage de suppression correspond exactement au sien. C’est l’empreinte de « supprimée dans cette même cascade ».

Voyez ce que ferait une version naïve. En mars, vous supprimez une note de réunion devenue inutile. En août, vous supprimez tout le projet, puis vous changez d’avis et le restaurez. Une restauration naïve ramène toute l’arborescence, y compris la note de mars que vous aviez jetée exprès cinq mois plus tôt. Il faudrait la retrouver et la supprimer de nouveau, à condition de l’avoir remarquée.

Avec la comparaison des horodatages, une restauration annule exactement une suppression et ne touche à aucune décision antérieure.

Quatrième niveau : l’enregistrement refusé

Les trois premiers niveaux rattrapent vos erreurs. Le quatrième existe parce qu’un espace de travail peut réunir plusieurs personnes, et que la défaillance y est d’une autre nature : personne ne se trompe, et du travail disparaît quand même.

Deux personnes ouvrent la même note. Toutes deux la modifient. Toutes deux enregistrent. La seconde à enregistrer écrase la première, sans erreur, sans avertissement et sans la moindre trace de l’autre version. La première personne s’en aperçoit des jours plus tard, si elle s’en aperçoit.

Notez refuse cet enregistrement.

Chaque note porte un compteur de version du contenu, incrémenté à chaque enregistrement du contenu. Quand votre éditeur enregistre, il envoie la version dont il est parti. Si la note a changé depuis, l’enregistrement est rejeté pour conflit au lieu d’être appliqué, et un message vous indique que la note a été modifiée ailleurs et qu’il faut la recharger pour continuer.

La vérification a lieu deux fois : une fois sur la note telle qu’elle a été lue, puis comme condition de la mise à jour elle-même. Ce n’est pas un excès de prudence. Entre la lecture d’une ligne et son écriture, il existe une vraie fenêtre où l’enregistrement de quelqu’un d’autre peut arriver, et seule la condition posée sur l’écriture elle-même la referme.

Vous perdez les quelques secondes écoulées depuis votre dernier enregistrement. Vous ne perdez pas l’après-midi de l’autre personne.

C’est ce que j’ai choisi à la place de la coédition en temps réel. Fusionner automatiquement deux modifications simultanées d’un texte enrichi est possible, et c’est aussi comme ça qu’on obtient un paragraphe qu’aucun des deux auteurs n’a écrit. Refuser le second enregistrement est brutal, mais toujours compréhensible : l’un de vous recharge la page, et les deux versions existent encore.

Comment les niveaux se partagent le travail

Échelle de temps

Mécanisme

Survit à un rechargement ?

Secondes

Pile d’annulation ⌘Z, 20 dernières actions

Non

De quelques minutes à 30 jours

Historique des versions, un instantané toutes les 5 minutes au plus

Oui

Jusqu’à 30 jours

La corbeille, avec une restauration qui respecte la cascade

Oui

Immédiatement

Protection contre les conflits d’enregistrement

Oui

Les limites, pour que vous sachiez où s’arrête chaque niveau :

  • L’annulation vaut pour une session. Fermez l’onglet, et elle disparaît.

  • L’historique des versions et la corbeille s’arrêtent tous deux à trente jours. Aucun des deux n’est une archive de sauvegarde.

  • L’annulation ne couvre pas les modifications du contenu des notes : c’est le rôle de l’historique des versions.

  • Il n’y a pas d’édition hors ligne, donc pas de conflit hors ligne à résoudre.

Ce qui compte vraiment

Aucune de ces quatre fonctions n’est difficile à construire. Piles d’annulation, suppressions logiques, tables d’instantanés et compteurs de version relèvent d’une ingénierie bien connue.

Elles passent pourtant à la trappe, parce que chacune ne sert que le jour où quelque chose tourne mal et reste invisible tous les autres jours. D’où toute une catégorie d’applications de notes qui brillent en démo et font perdre à quelqu’un un après-midi de travail au quatrième mois.

On note une chose pour ne plus avoir à la porter. Cela ne marche que si l’on peut aussi cesser de s’en inquiéter.

À lire aussi