# feat #910 Phase 2b — 離れるときに保存する（確認ダイアログを廃止）

エディタは**ターミナルの隣**にいる。ズームはキーでもフィルムストリップのクリックでも動くので、
そのたびに「Discard unsaved changes?」が出るのは、このペインが寄り添うはずの作業の流れを
そのつど止めることになる。

**聞くのをやめて、離れるときに保存する。** Phase 2a で退避先（3 世代）が入ったので、
保存が何かを潰しても取り返せる。

## どこが「離れる」か

| 経路 | 誰が呼ぶか |
|---|---|
| 別のファイルを開く | ペイン自身 |
| ズームが別セルに移る | `TerminalGrid`（張り替えの前） |
| ペインを閉じる（ヘッダのトグル / ペインの close） | `TerminalGrid` / ペイン |
| 全画面ビューのルートが変わる・離脱する | `FilesOverlay` |
| タブを閉じる / リロード | ペイン（`pagehide` ＋ `keepalive`） |

## 別れ際に 409 が返ったら

そのときバナーは出せない（もう離れている）。**バッファを退避先に預けて、ディスクは相手の
版のまま残す。** 上書きして勝つより、預けて負ける方が取り返しがつく。

## 409 バナーの「読み直す」

捨てる前に `PUT .../backup` でバッファを預ける。上書き側はサーバが書き込み直前に
ディスクの内容を退避するので（Phase 2a）、**2 択のどちらを選んでも失われない**という当初の
設計がこれで揃う。

## `pagehide` の穴

`keepalive` の本文はブラウザが 64 KB に制限する。それを超えるバッファはタブを閉じる瞬間には
出て行けない。**自動保存で塞ぎきれない唯一の経路**なので、コメントに書いてある。

## テスト

書き換えたのは「確認ダイアログ」を固定していた 6 件。新しい契約を固定し直した:

- ペイン: 閉じるときに保存して聞かない / 別ファイルを開く前に保存する /
  **別れ際の 409 ではバナーを出さずバッファを預ける**
- 全画面: 切り替え前に保存 / ルート変更前に保存し**古い root 宛てに書く** / 外部ナビで保存
- グリッド: 張り替え前に flush（**flush → reload の順**）/ トグルで閉じる前に flush /
  ペイン自身の close では二重に flush しない
