保存中に終了してもファイルが壊れないようにした方法
保存する瞬間にノートパソコンの電源が切れたら、文書はどうなるのでしょうか。moteでの答えは「保存前か保存後か、そのどちらか」です。

ファイルを保存する瞬間に電源が切れたら、どうなるのでしょうか?
通常は、ファイルが半分だけ保存されてしまうことがあります。長く使うエディターなら、このようなことがあってはいけません。そこでmoteは、保存に失敗しても元のファイルを守ります。
まず、文書と同じフォルダーに一時ファイルを作ります。内容をすべて書き込んだあとディスクに反映し、元のファイルの権限をコピーします。準備が整ったら、一時ファイルを元の名前に変更します。
名前を変更する処理は一度に行われます。途中で電源が切れても、残るのは以前のファイルか新しいファイルです。半分だけ保存されたファイルは残りません。
権限もそのまま維持します。保存とは内容を変えることであって、誰がファイルを読めるかを変えることではないからです。
文書のバイトにも手を加えません。CRLF改行、BOM、混在している改行、末尾の改行の有無まで、そのまま保存します。ファイルを開いて何も修正していなければ、もう一度保存しても1バイトも変わらないはずです。moteはリリースするたびに、この原則をテストします。
リンクは切りません
安全な保存方法も、すべてのファイルにそのまま使えるわけではありません。
シンボリックリンクを通常のファイルのように置き換えると、リンクが消えてしまいます。編集した内容も、リンク先の文書には反映されません。moteはリンクをたどって実際のファイルを保存します。リンクはそのまま残ります。
ハードリンクでは、複数の名前が同じファイルを指しています。一方の名前だけを新しいファイルに置き換えると、つながりが切れてしまいます。そのため、ハードリンクのあるファイルはその場で上書きします。アトミック性は諦めますが、保存直前に作成したバックアップでリスクを減らします。
読めなかったファイルは保存しません
moteは保存する前に、まずディスク上のファイルを読み込みます。
ファイルがなければ新しく作ります。読み込める場合はバックアップしてから保存します。ファイルはあるものの読み込めない場合は、保存を中止します。
未対応の文字エンコーディングを使った古い文書やフォルダー、権限のないファイルがこれに当たります。読み込めなかったファイルを空の文書のように表示してから上書きすると、ユーザーが見られなかった内容まですべて失われる可能性があります。
読み込めなければ、バックアップも作れません。そのため、保存しないことがファイルを守る唯一の方法です。
バックアップと下書きは文書の隣に作りません
保存前のファイルは状態フォルダーにバックアップします。名前には文書名と保存時刻を入れます。
文書名.2026-09-07-153914.md
文書ごとに最新のバックアップを20個保管し、古いものから削除します。ファイル名を見るだけでいつ作成したバックアップなのかが分かり、普段使っているエディターですぐに開けます。
一度も保存していない文書には、バックアップする元ファイルがありません。代わりに下書きを作ります。編集を止めてから1秒が経過すると、状態フォルダーにコピーを保存します。名前には時刻と文書の最初の見出しを入れます。
ファイルを保存したり、ユーザーが文書を破棄したりすると、下書きも削除されます。アプリが終了するときも同じです。保存先があればファイルとして保存し、なければ下書きとして残します。
クラッシュによって残った一時ファイルも、次に文書を開いたときに整理します。ただし、そのファイルを作成したプロセスがまだ実行中であれば、手を付けません。別のウィンドウが保存している可能性があるためです。
/tmpやキャッシュフォルダー内の文書は、再起動すると消える可能性があります。このような文書を開くと、別の場所に保存するよう案内を表示します。
それ以外では、文書フォルダーに補助ファイルを一切作りません。設定、バックアップ、下書き、最後に開いたファイルの情報は、すべてユーザーのホームディレクトリにある状態フォルダーに保管します。Markdownに含められない状態を別途保存する必要がある機能は追加していません。

バックアップは、元に戻す操作では戻れないときに必要です。アプリを再び開いたあとや、誤って保存したことにずっとあとで気づいたときです。バックアップファイルを開けば、それぞれの保存で上書きされる直前の文書をそのまま確認できます。
ファイルとネットワークに触れるのはユーザーが許可したときだけです
自動保存は、設定で自分で有効にする必要があります。保存までの待ち時間も選べます。
有効にしておくと、編集を止めてから設定した時間が経過したあとに保存します。保存方法は手動で保存するときと同じです。まずバックアップし、一時ファイルを作ってから元のファイルと入れ替えます。自動保存は別個の保存機能ではなく、同じ保存処理を代わりに開始するタイマーです。編集したときだけ動作します。

更新の確認も、自分で有効にする必要があります。無効にしておくと、moteはネットワークを使用しません。
有効にしておくと、アプリの起動後にバックグラウンドで一度確認します。「1日1回」はアプリが時間を計るのではなく、状態フォルダーのスタンプファイルによって守られます。有効になっている間は再確認せず、常時動作するタイマーもありません。
新しいバージョンがあっても、すぐにはダウンロードしません。画面右下に通知だけを表示します。ユーザーがクリックするまでは、ダウンロードも、インストールも、再起動もしません。
アプリが直接更新できる形式はAppImageだけです。ファイルを1つ置き換えれば済むためです。aptやFlatpakでインストールした場合は、適切なコマンドだけを案内します。実行するのはユーザー自身です。
更新を確認するときは、プラットフォームと配布チャンネルだけを送信します。ユーザーを識別する情報や、開いている文書の情報は送信しません。
安全な保存とは、常に成功する保存ではありません。失敗しても失わない保存です。