4.26.0 — 「already running」と出たまま止まらなくなりました
4.26.0 時点のスナップショットです(2026-09-17 リリース)。 アプリが進めば古くなります — それは 織り込み済みで、生きているリファレンスは各節からリンクしているガイドのほうです。
設定することはありません。 今回は起動時の不具合の修正が中心で、あとはキーボードの前で気づく 変更が 1 つと、細かいものがいくつかです。上げれば直っています:
npx mulmoterminal@latest
何が起きていたか
スクリプトやラッパーから MulmoTerminal を起動したとき — ログイン時に自動で立ち上げ、出力はログ ファイルへ、コンソールウィンドウは出さない、といった使い方です — こう出たきりその先へ進まない ことがありました:
MulmoTerminal is already running (http://localhost:34567).
Running more than one is NOT a supported setup: they share ~/.mulmoterminal,
so they can overwrite each other's session state.
To stop the running one instead: npx mulmoterminal@latest stop
ポートは bind されず、ログもそれ以上出ず、プロセスだけが残ります。報告されたマシンでは 10 分以上 その状態でした(#2090、Windows 11)。 別々の日に 2 回起きていて、どちらのときも MulmoTerminal は動いていませんでした。
原因は独立した 2 つで、その両方が揃ったときだけ起きます。
1. 死んだサーバが、いつまでも生きているように見えることがある。 起動中のサーバは ~/.mulmoterminal/instances/<pid>.json に自分を記録し、次の起動はそれを見て「もう 1 つ動いている」と 言います。強制終了されるとこのファイルは残り、そして「そのプロセスはまだいるか」の判定が 「その pid を誰かが持っているか」 しか見ていませんでした。Windows は持ち主が終了した pid を別の プロセスに配り直すので、再利用されたあと(1 回目は svchost.exe、2 回目は csrss.exe)は死んだ サーバが永久に生きているように見えます。
2. そこで出す質問に、誰も答えられなかった。 もう 1 つ動いていると分かると、ランチャーは 「それでも起動しますか」と聞きます。聞くのは端末がつながっているときだけ — ですが「端末がある」は 「人がいる」ではありません。stdout と stderr だけをリダイレクトして stdin をそのままにしたラッパーは、 誰も打てないコンソールを持ちます。そこで待ち続けていました。
直っているかの見分け方
npx mulmoterminal@latest --version
以前の症状に当たっていた場合、目に見える違いは起動が最後まで進むことです。プロンプトの先へ 進む道は 2 つあります。
- 古いエントリが消えます。 何かを聞く前に、ランチャーは「そのエントリが名乗っているポートを 今誰が持っているか」を OS に聞きます。誰も持っていなければ動いているサーバのものではありえない ので、エントリを削除します。報告されたケースではもうプロンプト自体が出ませんし、ファイルが 無くなるので次の起動でも警告は出ません。
-
質問に締め切りがつきました。 本当にサーバが動いていて、誰も答えなければ、待ち続けずに そう言って先へ進みます:
No answer in 60s — starting the second instance anyway, as with no terminal to ask.これは「聞く端末がそもそも無い」ときに以前からしていたことと同じです。サーバを求めた スクリプトには、サーバを返すべきだからです。
もう手でファイルを消す必要はありません。 ~/.mulmoterminal/instances/<pid>.json を削除して 回避していた場合、それはランチャーの仕事になりました。
待ち時間も無くしたい場合は、ラッパーで stdin もリダイレクトしてください(Windows なら NUL、それ以外は /dev/null)。聞く相手がいないと分かるので、警告だけ出してすぐ先へ進みます。
キーボードの前での変更: あのプロンプトでの Ctrl+C
上の不具合に当たっていない方も、ここだけは知っておいてください。
Start another one anyway? [y/N] と聞かれたときに Ctrl+C または Ctrl+D を押すと、 断って終了します — このリリース以前と同じ挙動で、Ctrl+C を押した人が期待するものです。上の修正を 書いている途中、この 2 つのキーが一時的に「それでも起動する」の意味になっていました。二重起動を 避けようとした人に二重起動を渡してしまうので、レビューで見つけて直し、再発したら落ちるテストを 入れてあります。
y で二重起動するのも、Enter で断るのも従来どおりです。そして 2 つ同時に動かすのは今も非対応です (~/.mulmoterminal を共有してしまうため)。リファレンスの うまくいかないとき を参照してください。
そのほかの変更
いずれも設定することはありません。
- ShapeScript ビューのヘッダが、狭いペインで折り返すようになりました。 これまではタイトルが 1 文字分に潰れ、ボタンが右端からはみ出していました。Download USDZ / GLB / STL は 1 つの Download メニューにまとまり、どの形式が何向けかのヒントが付きます。
- README が日本語と中国語でも読めるようになりました — README.ja.md と README.zh.md。使うかどうかを 決める部分(デモ、何が嬉しいか、インストールと起動)をカバーし、リファレンス部分は英語の README を案内しています。
https://mulmoterminal.comでドキュメントサイトが見られるようになりました(証明書も発行済み)。- 依存更新と、共有プレビューが画面に出ているフレームからのメッセージだけを受け取るようにする修正。