Come abbiamo impedito che un file si corrompa anche se l’app si chiude durante il salvataggio
Cosa succede al documento se il computer si spegne proprio durante il salvataggio? In mote la risposta è: «O è ancora quello precedente al salvataggio, oppure è già quello successivo».

Cosa succede se l’alimentazione si interrompe proprio mentre si salva un file?
Di solito, il file potrebbe venire salvato solo a metà. In un editor pensato per durare nel tempo, una cosa del genere non dovrebbe accadere. Per questo mote protegge il file originale anche quando il salvataggio non riesce.
Per prima cosa crea un file temporaneo nella stessa cartella del documento. Dopo averne scritto tutto il contenuto, lo sincronizza con il disco e copia i permessi del file originale. Quando tutto è pronto, rinomina il file temporaneo con il nome originale.
La rinomina avviene in un’unica operazione. Anche se l’alimentazione si interrompe durante il processo, ciò che rimane è il file precedente oppure quello nuovo. Non rimane alcun file salvato solo a metà.
Anche i permessi restano invariati. Salvare significa modificare il contenuto, non cambiare chi può leggere il file.
Non vengono alterati neppure i byte del documento. Le interruzioni di riga CRLF, il BOM, le interruzioni di riga miste e persino la presenza o l’assenza dell’interruzione di riga finale vengono conservati esattamente. Se si apre un file senza modificare nulla, dopo averlo salvato di nuovo non dovrebbe risultare diverso nemmeno di un byte. mote verifica questo principio a ogni rilascio.
I collegamenti non vengono interrotti
Nemmeno un metodo di salvataggio sicuro può essere applicato allo stesso modo a tutti i file.
Se si sostituisce un collegamento simbolico come se fosse un normale file, il collegamento scompare. Inoltre, le modifiche non vengono applicate al documento a cui puntava. mote segue il collegamento e salva il file effettivo. Il collegamento rimane invariato.
Con gli hard link, più nomi puntano allo stesso file. Se si sostituisce con un nuovo file soltanto uno di questi nomi, il collegamento si interrompe. Per questo, i file con hard link vengono sovrascritti sul posto. Si rinuncia all’atomicità, ma si riduce il rischio grazie al backup creato immediatamente prima del salvataggio.
I file che non è stato possibile leggere non vengono salvati
Prima di salvare, mote legge innanzitutto il file sul disco.
Se il file non esiste, ne crea uno nuovo. Se è leggibile, ne esegue il backup e poi lo salva. Se il file esiste ma non può essere letto, il salvataggio viene interrotto.
Rientrano in questo caso i vecchi documenti con codifiche non supportate, le cartelle e i file per cui non si dispone dei permessi necessari. Se un file illeggibile venisse mostrato come un documento vuoto e poi sovrascritto, potrebbe scomparire anche tutto il contenuto che l’utente non ha potuto vedere.
Se un file non può essere letto, non è possibile crearne nemmeno un backup. Perciò non salvarlo è l’unico modo per proteggerlo.
Backup e bozze non vengono creati accanto al documento
Il file precedente al salvataggio viene copiato come backup nella cartella di stato. Il nome contiene quello del documento e l’ora del salvataggio.
문서이름.2026-09-07-153914.md
Per ogni documento vengono conservati i 20 backup più recenti, eliminando prima quelli più vecchi. Basta guardare il nome del file per sapere quando è stato creato il backup, che può essere aperto immediatamente con l’editor usato abitualmente.
Un documento mai salvato non ha un originale di cui eseguire il backup. Al suo posto viene creata una bozza. Trascorso un secondo dall’interruzione delle modifiche, una copia viene salvata nella cartella di stato. Il nome contiene l’ora e il primo titolo del documento.
Quando il file viene salvato o l’utente scarta il documento, viene eliminata anche la bozza. Lo stesso accade alla chiusura dell’app. Se è stata scelta una posizione di salvataggio, il documento viene salvato come file; in caso contrario, rimane come bozza.
Anche i file temporanei rimasti dopo un arresto anomalo vengono rimossi alla successiva apertura del documento. Tuttavia, non vengono toccati se il processo che li ha creati è ancora in esecuzione. Questo perché un’altra finestra potrebbe essere impegnata nel salvataggio.
I documenti che si trovano in /tmp o nella cartella della cache potrebbero scomparire al riavvio. Quando si apre uno di questi documenti, viene mostrato un avviso che invita a salvarlo altrove.
A parte questo, nella cartella del documento non viene creato alcun file ausiliario. Le impostazioni, i backup, le bozze e le informazioni sull’ultimo file aperto vengono conservati tutti nella cartella di stato della home dell’utente. Non sono state introdotte funzionalità che richiedano di salvare separatamente stati non rappresentabili in Markdown.

I backup servono quando non è più possibile tornare indietro con la funzione Annulla. Per esempio, dopo aver riaperto l’app oppure quando ci si accorge solo molto tempo dopo di aver salvato qualcosa per errore. Aprendo i file di backup, è possibile vedere esattamente com’era il documento immediatamente prima di ogni sovrascrittura.
File e rete vengono toccati soltanto con il consenso dell’utente
Il salvataggio automatico deve essere attivato esplicitamente nelle impostazioni. È possibile scegliere anche quanto tempo attendere prima di salvare.
Quando è attivo, il documento viene salvato una volta trascorso il tempo impostato dall’interruzione delle modifiche. Il metodo di salvataggio è lo stesso di quello manuale. Prima viene creato il backup, poi un file temporaneo, che infine sostituisce il file originale. Il salvataggio automatico non è una funzione di salvataggio separata, ma un timer che avvia al posto dell’utente lo stesso salvataggio. Si attiva soltanto quando si modifica il documento.

Anche il controllo degli aggiornamenti deve essere attivato esplicitamente. Quando è disattivato, mote non utilizza la rete.
Quando è attivo, viene eseguito un unico controllo in background dopo l’avvio dell’app. Il limite di «una volta al giorno» non viene gestito dall’app contando il tempo, bensì tramite un file marcatore nella cartella di stato. Finché l’app rimane aperta non viene effettuato un altro controllo e non esiste alcun timer in esecuzione continua.
Anche quando è disponibile una nuova versione, questa non viene scaricata immediatamente. Viene mostrata soltanto una notifica nell’angolo inferiore destro dello schermo. Finché l’utente non la seleziona, non vengono eseguiti né il download, né l’installazione, né il riavvio.
L’unico formato che l’app può aggiornare direttamente è AppImage. Questo perché è sufficiente sostituire un solo file. Se l’installazione è stata effettuata tramite apt o Flatpak, vengono mostrati soltanto i comandi appropriati. È l’utente a eseguirli personalmente.
Durante il controllo degli aggiornamenti vengono inviati soltanto la piattaforma e il canale di distribuzione. Non vengono inviate informazioni che identificano l’utente né dati sui documenti aperti.
Un salvataggio sicuro non è un salvataggio che riesce sempre. È un salvataggio che non perde dati nemmeno quando fallisce.