# feat(#1182): マージされたことをセルが知らせ、片付けまで案内する

#1026 の「終わらせる導線」その1。

## いま

片付けの**部品は揃っている**。worktree セルを閉じると keep / remove を必ず聞き、未保存や未 push が
あれば止める（`TerminalCell.vue` の `close` / `removeAndClose`）。

無いのは**きっかけ**。PR がマージされてもセルは何も言わず、ユーザーが自分で気づくまで worktree と
セッションが残る。

そして一番おかしいのは `hasWorkToShow` が `merged` で **false** を返すこと
（`src/composables/useWorkItem.ts:55`）。**作業が終わった瞬間にチップが消える** ——
「もう作業していないから隠す」意味づけだが、片付けを促す立場では**一番知らせたい瞬間に
手がかりが無くなる**。実機でも確認: merged のセルのヘッダーには work item チップが無い。

## やること

`merged` を「隠す状態」から「**片付けを促す状態**」に変える。

- ヘッダーに `#N merged — tidy up` を出す。押すと**既存の close フローに入る**だけ
  （keep/remove の確認と未保存の保護はそこにあるので、**新しい破壊的経路を作らない**）
- × で消せる。**消したら戻らない**が、**PR 番号で覚える**ので、同じセルを次の作業に使い回したら
  また出る（永久に黙る状態を作らない）

## 決めたこと（#1026 の文面「worktree / セッションの片付けを、マージ後のセルから促す」に沿う）

- **worktree セルにだけ出す。** 普通のセルには片付ける部屋が無く、押しても何もできない確認が
  開くだけになる
- **既定動作は作らない。** 押すと既存の確認が開き、keep か remove かはユーザーが選ぶ
- **`hasWorkToShow` は変えない。** チップの意味（いま何を作業しているか）は正しく、
  足りていなかったのは「終わったことを知らせる別の手段」なので、そちらを足す

## 構造

- `src/components/mergedTidy.ts` — **いつ出すか**の純関数。`TerminalCell` は 1900 行超で
  `max-lines` 警告が出ているので、判断はそこに置かない
- `src/components/CellTidyPrompt.vue` — **どう見えるか**と、伝える2つのこと。
  周りの `WorkItemChip` / `GitBranchChip` と同じ粒度。単体でマウントしてテストできる

## テスト

- ルール: worktree でない / `merged` 以外の全 phase / PR 番号が無い / 一度消した / **別の PR なら再度出る**
- コンポーネント: PR 番号を名乗る、2つのイベントが混ざらない
- **実機**: 一時クローンに worktree を作り、マージ済み PR のブランチ名に付け替えて
  `/api/pr-phase` が `merged` を返す状態を作り、グリッドでセルを開いて
  ① prompt が出る ② × で消えて戻らない ③ 押すと keep/remove の確認に到達する を確認する

## やらないこと

- 自動で片付ける（人間の操作を必ず挟む）
- マージそのもの（#1183）、スマホ（#1184）
