crofty 0.17.0 — 放置されないローカルプレビュー
crofty preview は、ブラウザでサイトを確認できるよう、ブロッキングな hugo server をラップします。Control-C で止まります。ですが、AI が作業を続けるために
バックグラウンドへ回すと、押す Control-C がありません。サーバーは止まらず動き続けます。
0.17.0 で、前面の Control-C の使い勝手はそのままに、別プロセスから(人でも エージェントでも)操作できるライフサイクルをプレビューに付けました。
変更前
バックグラウンドのプレビューには、外から止める手段がありませんでした。動作中で あることがどこにも記録されないため、別プロセスからは見つけられず、起動しているか どうかも分からず、止めることもできませんでした。マシンを落とすまで動き続けました。
変更後
動作中、プレビューは .crofty/preview.json(自身の pid・hugo の pid・port・url・
timeout)を記録します。コンテンツではなくマシンの状態で、gitignore 対象です。これに
対して2つのサブコマンドが働きます。
$ crofty preview status
Preview is running at http://localhost:1313/ (pid 87265).
It auto-stops at 2026-07-07T13:02:58+09:00. Stop it now with 'crofty preview stop'.
$ crofty preview stop
Stopping preview (pid 87265, http://localhost:1313/)...
Stopped.
status --json は同じ答えを機械可読なオブジェクトで返します。エージェント向けです。
{
"running": true,
"url": "http://localhost:1313/",
"pid": 87265,
"port": 1313,
"startedAt": "2026-07-07T12:57:58+09:00",
"timeoutAt": "2026-07-07T13:02:58+09:00"
}
さらに2つの歯止めで「延々と動き続ける」を無くします。
--timeout(既定 30m・0 で無効) がプレビューを自動停止します。バックグラウンド のものも、この歯止めを超えて残りません。- シングルトン — 起動時に既存のプレビューを回収するので、プロジェクトごとに動くのは 最大1つ。再実行が、止め忘れを直します。
stop はラッパーと hugo の両方を pid で止めるので、hugo が孤児になりません。crofty agent が stop/status/timeout のライフサイクルを案内するようになり、Windows も対象です
(プロセス制御を build tag で分け、そこでもコンパイル・動作します)。