---
title: 2.7.0 で変わったこと
layout: default
parent: 日本語
nav_order: 1022
---

# 2.7.0 で変わったこと
{: .no_toc }

**2026-07-29** 時点のスナップショットとして書いています。挙動は動きますが、このページは動きません。
最新の内容は各節からリンクしているリファレンスを見てください。

- TOC
{:toc}

---

## 1 つだけ読むなら

**上げてください。新機能はすべて既定で有効で、1 つだけ「切りたければ切る」設定があります。**

```bash
npx mulmoterminal@latest
```

| 手に入るもの | どこ |
|---|---|
| セッションに自分で書く 1 行メモ。常時表示 | セルヘッダ・サイドバー・スマホ |
| セルを拡大したときの境界をドラッグできる | grid view |
| Chrome でも、離れた場所からでも、ファイルのドロップが効く | 全ターミナル |
| バックグラウンドのワーカーがチャット履歴を埋めない | チャット履歴 |
| リロード後にホイールが効く | Claude / Codex セル |

| 直ったもの | どこ |
|---|---|
| 2 つ目の MulmoTerminal が、動いている 1 つ目のセッション設定を消す | 2 つ目の起動 |
| `/clear` しても clear 前のサマリーが残る | cockpit roster |
| 原因でないのに「codex が入っていないのだろう」と言われる | セッション起動 |

---

## セッションに自分の言葉でメモを付ける

セッションの名前は自動で付きます — AI が付けたタイトル、直近のプロンプト、無ければ id。これは
**何が話されたか**の答えであって、**このセッションは何のためか**の答えではありません。

そこを自分で書けるようにしました。

### 使い方

1. セルヘッダのテキストの横にある鉛筆を探します。
2. 押して 1 行入力し、**Enter**。**Esc** で取消、外をクリックしても保存されます。

これだけです。設定は要りません。

![セルヘッダが 2 つ並んでいる。左は ~/work/api-gateway のあとにメモ「do not interrupt - release build」が出ていて鉛筆がアクセント色。右は ~/work/billing のあとにセッション id が出ていて鉛筆は淡色。ヘッダの高さは両方同じ](../images/v2.7.0-session-memo.png)

### 何が変わるか

- メモは行を**増やすのではなく置き換え**ます。**ヘッダの高さは変わりません**。押しのけられた
  タイトルはツールチップに移ります。
- 保存は**セッション単位でホスト側**です。ブラウザではありません。セルを閉じても、サーバを
  再起動しても、そのセッションを resume すればメモは戻ります。
- **サイドバー**、**resume ピッカー**、**スマホのロスター**でも、そのメモがそのセッションの名前に
  なります。

同じリポジトリで複数のセルを開いていて、どれがどれかは自分しか知らない、というときに効きます —
「止めてはいけないやつ」「CI 待ち」「使い捨て」。

> リファレンス: [機能一覧](features.html)

---

## 拡大したセルの境界をドラッグする

grid view でセルを拡大すると、ターミナルとその横の列に分割されます。この境界は固定幅で、
ドラッグもできず、できない変更を覚えることもありませんでした。

これから: **ドラッグできます**。フォーカスして**矢印キー**でも動きます。決めた幅は保持されるので、
リロードしても戻りません。

![grid view で拡大したセル。左に 3 セッションの roster、右にターミナル、その間の境界がドラッグ中でアクセント色に光っている](../images/v2.7.0-zoom-splitter.png)

設定は要りません。

> リファレンス: [基本](basics.html)

---

## ファイルのドロップがどこでも効く

ターミナルにファイルをドロップするとパスが入ります。これはブラウザが実パスを渡してくれるときだけの
話で、**Chrome は渡しません**し、**別のマシンから繋いでいるとき**は常に渡されません。今までその
場合はヒントを出して終わりでした。

これからは、パスが取れないとき**バイトをホストに送って保存し、そのパス**を入れます。

- 実パスが**取れるときは今までどおり**です。そのまま使い、アップロードはしません。
- 他に答えようがないときだけ、この経路に落ちます。

ソファからでも、スマホからでも、Chrome でも、スクリーンショットをセッションに落とせます。

> リファレンス: [基本](basics.html)

---

## バックグラウンドのワーカーをチャット履歴から分ける

コレクションの定期同期のような、自分で始めていない作業もセッションを起こします。それが自分の
会話と並んで一覧に出ていました。

これからは **Background** チップの裏に入ります。既定の **All** には人が始めたチャットだけが出ます。

**消すのではなく分けている**のは、MulmoTerminal のセッションが会話記録ではなく**生きた端末**だから
です。丸ごと消すと、見る手段も止める手段も無くなります。

> リファレンス: [基本](basics.html)

---

## クロージングサマリーの指示を切る

MulmoTerminal が起動するセッションには、返答の最後に短いまとめを書くよう指示が付いていました。
grid を一目で読めるのはこれのおかげですが、アプリはこれを解析していないので、要らない人にとっては
ノイズでしかありません。

**このリリースで唯一の設定で、UI はありません。** ファイルを直接編集します。

`~/.mulmoterminal/config.json`:

```json
{
  "appendSystemPrompt": false
}
```

サーバを再起動してください。ディレクトリ側の `.mulmoterminal.json` がグローバルより優先します。

```json
{
  "appendSystemPrompt": true
}
```

- **既定は ON。** このキーが無い既存の設定は、今までとまったく同じ挙動です。
- クローン名の行（`prWorkdirFooter`）とは独立です。両方 off ならフラグ自体を渡しません。
- **効いたかの確かめ方:** セッションを起動して何か小さいことを聞いてください。off なら、答えが
  終わったところで返答が終わります。まとめのブロックが付きません。

> リファレンス: [設定](config.html)

---

## 2 つの MulmoTerminal が互いのセッションを消さない

**2 つ目の MulmoTerminal を起動したことがあるなら、ここだけは読んでください。**

起動時に「置き去りの」セッション設定 — 死んだサーバが残したファイル — を掃除していました。この
ルールは*前の生存期間*に対しては正しく、*同時に動いているもの*に対しては誤りです。2 つ目は 1 つ目の
生きたセッションを見られないので、**全部を置き去りとみなして消します**。発見された現場では、
**生きている 8 セッション分の設定が消えました。**

直しました。あわせて、2 つ目を起動しようとすると**ポートに関係なく**そう言います。

```
MulmoTerminal is already running (http://localhost:8080).
  Running more than one is NOT a supported setup: they share ~/.mulmoterminal,
  so they can overwrite each other's session state.
Start another one anyway? [y/N]
```

今まではこの質問が**ポートがぶつかったときだけ**出ていたので、`--port <空きポート>` を付けると
2 つ目が黙って立ち上がっていました。問題はポートではなく、共有している `~/.mulmoterminal` です。

---

## リロード後にホイールが効く

Claude / Codex のセルで、ホイールでの履歴スクロールと、エージェントが描いた要素のクリックが、
**再アタッチのたび**に効かなくなっていました — リロード、サイドバーでのセッション切り替え、
別タブ、WebSocket の再接続。

原因は、セッション開始時に 1 回だけ流れる制御シーケンスです。再アタッチしたブラウザが受け取る
リプレイには、それが決して含まれません。これからは **tmux に現在の状態を尋ねて**、リプレイの前に
復元します。

**効いたかの確かめ方:** Claude のセルでページをリロードして、ホイールで上にスクロールしてください。
スクロールします。

---

## `/clear` が roster の行も本当に消す

`/clear` した後も、cockpit roster に **clear 前のサマリーと返答**が出続けていました。直後はいったん
消えるのに、次のターンが終わると戻ってきます。

`/clear` でエージェントは新しい会話ログに移りますが、MulmoTerminal は clear の時点で凍結された
古いログを読み続けていました。直しました。

---

## 起動できないとき、理由が出る

「codex が入っていないのだろう」は**推測**でした。本当のエラーは catch して捨てられていたのです。
実測すると、この文言が正しいのは Windows だけで、Mac では未インストールでも緑の `[session ended]` に
なっていました。症状と説明が入れ替わっていたことになります。

これからは spawn の**前に**、ターミナルが実際に受け取る環境でバイナリを診断し、わかったことを
そのまま報告します。サーバログには、tmux が**既存セッションに attach したのか、作成したのか**も
記録されます。attach する resume はエージェントを一度も起動しないので、これが元の問題の切り分けを
難しくしていた正体でした。

---

## その他

- **型**: `exactOptionalPropertyTypes` をプロジェクト全体で有効にしました。`{ work: undefined }` は
  もう型検査を通りません — 2.6.0 でスマホの一覧を全滅させたのが、まさにこの形でした。
- **リモートホスト**: 再接続のリングと生存プローブを `@mulmoclaude/core` に移しました（こちらは
  298 行削除）。core 側の再試行ウィンドウと歩調がずれており、資格情報が死んだホストが再認証を
  促さないまま永久に再起動を繰り返しうる状態でした。
- **Feeds**: コレクションの定期 refresh が失敗したとき、記録されずに消えることがなくなりました。
- **CI**: Windows の daily ビルドが緑に戻りました。テスト側の移植性バグ 2 件で、製品コードは
  正しく動いていました。

全件は[チェンジログ](https://github.com/receptron/mulmoterminal/blob/main/docs/ChangeLog.md)を
見てください。
