Comment nous avons empêché les fichiers d’être corrompus même en cas d’arrêt pendant l’enregistrement
Que devient le document si l’ordinateur s’éteint au moment de l’enregistrement ? Dans mote, la réponse est : « soit avant l’enregistrement, soit après, mais rien entre les deux ».

Que se passe-t-il si l’alimentation est coupée au moment même où vous enregistrez un fichier ?
En temps normal, le fichier peut n’être enregistré qu’à moitié. Cela ne devrait pas arriver avec un éditeur destiné à être utilisé longtemps. C’est pourquoi mote protège le fichier d’origine même en cas d’échec de l’enregistrement.
Il crée d’abord un fichier temporaire dans le même dossier que le document. Après avoir écrit tout le contenu, il le répercute sur le disque et copie les permissions du fichier d’origine. Une fois que tout est prêt, il renomme le fichier temporaire avec le nom d’origine.
Le changement de nom se produit en une seule opération. Même si l’alimentation est coupée pendant cette opération, il ne reste que l’ancien fichier ou le nouveau. Aucun fichier enregistré à moitié ne subsiste.
Les permissions restent également inchangées. Enregistrer consiste à modifier le contenu, pas à changer qui peut lire le fichier.
Les octets du document ne sont pas non plus modifiés inutilement. Les fins de ligne CRLF, le BOM, les différents types de fins de ligne mélangés et même la présence ou l’absence d’un saut de ligne final sont conservés tels quels. Si vous ouvrez un fichier sans rien y modifier, aucun octet ne doit changer lorsque vous l’enregistrez de nouveau. mote teste ce principe à chaque nouvelle version.
Les liens ne sont pas rompus
Même une méthode d’enregistrement sûre ne peut pas être appliquée telle quelle à tous les fichiers.
Remplacer un lien symbolique comme s’il s’agissait d’un fichier ordinaire fait disparaître le lien. Les modifications ne sont pas non plus appliquées au document vers lequel pointait le lien. mote suit le lien et enregistre le fichier réel. Le lien reste intact.
Avec les liens physiques, plusieurs noms désignent le même fichier. Si l’on ne remplace qu’un seul de ces noms par un nouveau fichier, le lien est rompu. Les fichiers possédant des liens physiques sont donc écrasés sur place. L’atomicité est abandonnée, mais le risque est réduit grâce à la sauvegarde créée juste avant l’enregistrement.
Les fichiers qui n’ont pas pu être lus ne sont pas enregistrés
mote commence par lire le fichier sur le disque avant de l’enregistrer.
Si le fichier n’existe pas, il le crée. S’il peut être lu, il le sauvegarde avant de l’enregistrer. Si le fichier existe mais ne peut pas être lu, l’enregistrement est interrompu.
Cela concerne notamment les anciens documents utilisant un encodage non pris en charge, les dossiers et les fichiers pour lesquels vous ne disposez pas des permissions nécessaires. Si un fichier illisible était affiché comme un document vide puis écrasé, tout le contenu que l’utilisateur n’a pas pu voir risquerait de disparaître.
Lorsqu’un fichier ne peut pas être lu, il est également impossible d’en faire une sauvegarde. Ne pas l’enregistrer est donc le seul moyen de le protéger.
Les sauvegardes et les brouillons ne sont pas créés à côté du document
Le fichier tel qu’il était avant l’enregistrement est sauvegardé dans le dossier d’état. Son nom contient le nom du document et l’heure de l’enregistrement.
문서이름.2026-09-07-153914.md
Les 20 sauvegardes les plus récentes sont conservées pour chaque document, et les plus anciennes sont supprimées en premier. Le nom du fichier suffit à savoir quand la sauvegarde a été créée, et celle-ci peut être ouverte directement dans votre éditeur habituel.
Un document qui n’a encore jamais été enregistré ne possède aucun original à sauvegarder. Un brouillon est créé à la place. Une seconde après l’arrêt de la saisie, une copie est enregistrée dans le dossier d’état. Son nom contient l’heure et le premier titre du document.
Lorsque le fichier est enregistré ou que l’utilisateur abandonne le document, le brouillon est également supprimé. Il en va de même à la fermeture de l’application. S’il existe un emplacement où enregistrer le document, celui-ci est enregistré sous forme de fichier ; sinon, il reste sous forme de brouillon.
Les fichiers temporaires laissés par un plantage sont également nettoyés à la prochaine ouverture du document. Toutefois, ils ne sont pas touchés si le processus qui les a créés est encore en cours d’exécution. Une autre fenêtre peut être en train d’effectuer un enregistrement.
Les documents placés dans /tmp ou dans un dossier de cache peuvent disparaître lors d’un redémarrage. Lorsque vous ouvrez un tel document, un message vous invite à l’enregistrer ailleurs.
En dehors de cela, aucun fichier auxiliaire n’est créé dans le dossier du document. Les réglages, les sauvegardes, les brouillons et les informations sur les derniers fichiers ouverts sont tous conservés dans le dossier d’état du répertoire personnel de l’utilisateur. Aucune fonctionnalité nécessitant d’enregistrer séparément un état qui ne peut pas être contenu dans le Markdown n’a été ajoutée.

Les sauvegardes sont nécessaires lorsqu’il n’est plus possible de revenir en arrière avec la fonction Annuler. Par exemple après avoir rouvert l’application, ou lorsque vous vous rendez compte bien plus tard d’un enregistrement erroné. En ouvrant les fichiers de sauvegarde, vous pouvez consulter chaque document exactement tel qu’il était juste avant d’être écrasé par un enregistrement.
Les fichiers et le réseau ne sont utilisés qu’avec l’autorisation de l’utilisateur
L’enregistrement automatique doit être activé manuellement dans les réglages. Vous pouvez également choisir le délai d’attente avant l’enregistrement.
Une fois cette option activée, le document est enregistré lorsque le délai configuré s’est écoulé après l’arrêt de la saisie. La méthode d’enregistrement est la même que pour un enregistrement manuel. Une sauvegarde est d’abord créée, puis un fichier temporaire est créé avant de remplacer le fichier d’origine. L’enregistrement automatique n’est pas une fonction d’enregistrement distincte, mais un minuteur qui déclenche le même enregistrement à votre place. Il ne fonctionne que lorsque le document est modifié.

La recherche des mises à jour doit elle aussi être activée manuellement. Lorsqu’elle est désactivée, mote n’utilise pas le réseau.
Lorsqu’elle est activée, une vérification unique est effectuée en arrière-plan après le démarrage de l’application. La règle « une fois par jour » n’est pas assurée par un décompte du temps dans l’application, mais par un fichier d’horodatage placé dans le dossier d’état. Aucune nouvelle vérification n’est effectuée tant que l’application reste ouverte, et aucun minuteur ne tourne en permanence.
Même lorsqu’une nouvelle version est disponible, elle n’est pas téléchargée immédiatement. Seule une notification s’affiche dans le coin inférieur droit de l’écran. Aucun téléchargement, aucune installation et aucun redémarrage n’ont lieu avant que l’utilisateur ne clique dessus.
AppImage est le seul format que l’application puisse mettre à jour elle-même. Il suffit en effet de remplacer un seul fichier. Si mote a été installé avec apt ou Flatpak, seule la commande appropriée est indiquée. C’est à l’utilisateur de l’exécuter.
Lors de la recherche des mises à jour, seules la plateforme et le canal de distribution sont envoyés. Aucune information permettant d’identifier l’utilisateur ni aucune information sur les documents ouverts n’est transmise.
Un enregistrement sûr n’est pas un enregistrement qui réussit toujours. C’est un enregistrement qui ne perd rien, même lorsqu’il échoue.