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つの歯止めで「延々と動き続ける」を無くします。

stop はラッパーと hugo の両方を pid で止めるので、hugo が孤児になりません。crofty agent が stop/status/timeout のライフサイクルを案内するようになり、Windows も対象です (プロセス制御を build tag で分け、そこでもコンパイル・動作します)。