Au cœur de la synchronisation

L'article « Comment fonctionne la synchronisation » décrit ce que vous voyez. Celui-ci descend d'un niveau, dans ce que chaque appareil et le serveur font réellement de vos modifications.

Chaque modification devient une opération

Quand vous modifiez une note, votre appareil fait deux choses d'un coup : il enregistre le nouveau texte dans sa base de données locale, et il ajoute une opération à une file, un petit enregistrement qui dit « cette note a changé, voici la nouvelle version ». Créer, modifier, épingler, étiqueter, archiver et supprimer une note sont autant d'opérations.

Avant d'envoyer la file, votre appareil y fait un peu de ménage. Dix modifications rapides de la même note n'en font plus qu'une. Si vous épinglez une note pendant que vous y tapez encore, l'épingle et le nouveau texte sont fusionnés en une seule opération, et aucun des deux changements n'est perdu. Seul l'ordre de la file compte : un changement plus récent l'emporte toujours sur un plus ancien, quelle que soit l'heure indiquée par l'appareil.

Une opération ne quitte la file qu'une fois confirmée par le serveur. Si la connexion tombe en cours de route, ou si vous fermez l'app en pleine synchronisation, la file est toujours là la fois suivante et rien n'est perdu.

Envoyer, puis récupérer

La synchronisation, ce sont deux conversations simples avec le serveur :

  • Envoi. Votre appareil envoie ses opérations en attente par lots. Le serveur applique chacune d'elles et l'inscrit dans un journal des modifications propre à votre compte, en donnant à chaque entrée le numéro suivant dans la séquence.
  • Récupération. Votre appareil demande : « qu'est-ce qui a changé depuis le numéro 1 234 ? » Le serveur répond avec chaque entrée du journal postérieure à ce numéro, et l'appareil les applique à sa base de données locale.

Comme chaque appareil retient le dernier numéro qu'il a vu, il ne télécharge que ce qui est nouveau. Peu importe combien de temps un appareil est resté hors ligne : il reprend exactement là où il s'était arrêté.

Tout ce qui modifie vos notes passe par ce journal, y compris les changements faits via l'API ou par un outil d'IA connecté via MCP. C'est pourquoi une note qu'un assistant IA écrit pour vous apparaît sur tous vos appareils comme n'importe quelle autre.

Comment les conflits sont détectés

Chaque modification envoyée par votre appareil indique la dernière version de cette note qu'il a vue. Si la copie du serveur a changé depuis, parce qu'un autre appareil l'a modifiée entre-temps, le serveur n'écrase rien. Il répond plutôt avec sa propre copie.

Votre appareil tente alors une fusion à trois voies, la technique qu'utilisent les outils de gestion de versions. Il compare trois textes : la version dont les deux appareils sont partis, la vôtre et celle du serveur. Si les modifications touchent des parties différentes de la note, il les combine et envoie le résultat fusionné, sans que vous le remarquiez. Caliu ne vous demande quelle version conserver que lorsque les deux appareils ont modifié les mêmes lignes. Voyez l'article « Résoudre les conflits de synchronisation ».

Certains changements ne peuvent jamais entrer en conflit. Épingler une note, l'archiver ou la passer en lecture seule ne compte pas comme une modification de son texte : ces changements se fusionnent proprement avec n'importe quoi.

Les mêmes règles sur chaque appareil

Les apps web, Apple et Android sont écrites dans trois langages différents, mais elles suivent les mêmes règles de synchronisation. Les règles de ménage de la file sont vérifiées sur les trois avec un même jeu de cas de test partagé, si bien qu'un changement fait sur un appareil est traité de la même façon par tous les autres.

Sans compte

Sans compte, rien ne quitte jamais votre appareil. Quand vous vous connectez, les notes déjà présentes sur votre appareil rejoignent votre compte et sont envoyées comme n'importe quelle autre modification.