v1.25.0
Lerd 1.25.0
Lerd — Podman-powered local PHP dev environment for Linux & macOS.
Install on Linux
curl -fsSL https://raw.githubusercontent.com/geodro/lerd/main/install.sh | bashOr if already installed:
lerd updateInstall on macOS
brew tap geodro/lerd
brew install lerd
lerd installOr if already installed:
brew upgrade lerd
lerd installChangelog
Features
- fce496c feat(dashboard): accurate CPU and lerd's own processes in Resources
- f8848e5 feat(doctor): make the Laravel Doctor worktree-aware and only warn on required env keys
- a534973 feat(frankenphp): extension and debug-tooling parity with FPM
- 935d2e4 feat(idle): activity-driven worker suspension
- 018ae88 feat(mcp): add a logs tool to read every log source with filtering
- bbda4d8 feat(node): add js:runtime to pin a site's JS runtime from the CLI
- c1b1bf0 feat(octane): per-project auto-reload for FrankenPHP worker mode
- 7ac229f feat(pest): in-container Pest browser testing on musl chromium
- cb5eece feat(php:bun): add a remove command to clear the in-container bun
- 5ead1a1 feat(services): embed RabbitMQ and RedisInsight dashboards via a same-origin proxy
- c970e0b feat(sites): add a Clear logs button to reclaim disk in the App Logs tab
- 63597ab feat(sites): add a Laravel Doctor panel to the site detail view
- 8373295 feat(sites): finish Clear logs translations and right-align the log toolbar actions
- 319e5a3 feat(sites): refine the Laravel Doctor panel and source its fixes from the framework definition
- 1b19dfb feat(sites): show Laravel APP_NAME on the dashboard tiles
- 61629d8 feat(tui): add the Laravel Doctor as an on-demand site tab
- 0cae06a feat(tui): label a site by its Laravel APP_NAME in the detail header
- fd2d0ca feat(tui): limit a FrankenPHP site's PHP picker to versions it can run
- ad5f3f9 feat(tui): offer bun in the Node picker as a JS-runtime toggle
- d4d0d87 feat(tui): open a service's dashboard in the browser with O
- 22c78d5 feat(tui): show idle-suspended workers as suspended rather than stopped
- 28bfd93 feat(tui): sub-group the services pane's workers by owning site
- d18a591 feat(ui): limit a FrankenPHP site's PHP dropdown to versions it can run
- e2ac640 feat(xdebug): pause into running workers via the control socket, plus on-demand mode
- 84c605e feat: bun option in the site Node dropdown to toggle js_runtime
- b1dcbc2 feat: bun support for JS tooling and an opt-in in-container bun
- 804d504 feat: php:pkg adds extra Alpine packages to the FPM image
- 9347ed9 feat: serve PHP sites from a custom Containerfile image
Bug Fixes
- 03887f3 fix(frankenphp): run the site's PHP 8.5 image instead of silently downgrading to 8.4
- baa7fef fix(idle): bind access feed test socket within macOS sun_path limit
- ec6525e fix(idle): keep suspended workers down through install and reconcile against reality
- ba9c6bf fix(idle): keep suspended worktree workers down across restarts and unstrand pinned worktrees
- c364520 fix(idle): re-suspend workers left running after an install
- 5f3b7fb fix(idle): resume every worker when idle-suspend is turned off
- 0ac91ef fix(idle): sleep idle sites on enable and resume robustly on disable
- 8027a70 fix(init): preserve a committed HTTPS choice through the wizard on a localhost box
- 9313749 fix(link): keep a committed frankenphp runtime from silently upgrading PHP
- 7c4f727 fix(link): keep secured projects on http when DNS is disabled
- 2330fce fix(link): reconcile a stale FrankenPHP container when a re-linked site is no longer FrankenPHP
- e9825ee fix(npm): keep lerd's php shim ahead of a global php for node child processes
- a8e086d fix(octane): keep --watch through lerd install and refine the reload control
- 5e6a024 fix(pause): stop a paused runtime site's container from autostarting at boot
- d398dcf fix(secure): gate securing behind managed DNS in SetSecured so the UI and MCP match the CLI
- 54a6baf fix(sites): treat default APP_NAME as uncustomised
- 71acd03 fix(stop): retry systemd stop jobs reported "canceled" so lerd stop doesn't leave containers running
- 22465b5 fix(tui): reflect worker suspend state in the services pane and drop the worker site count
- da5ffd6 fix(ui): bump esbuild, vite, and form-data to clear dependency advisories
- 1a99506 fix(workers): keep workers healthy when switching a site's PHP runtime
- f871b35 fix(xdebug): apply the dashboard toggle to FrankenPHP and custom-FPM containers
- 8390d2f fix: bun dropdown entry reads 'bun', not 'Node bun'
- 18db51b fix: harden FrankenPHP downgrades, log filtering, dashboard proxy and idle reconcile
- 4466199 fix: honour quoted Exec= when translating FrankenPHP worker quadlets to launchd on macOS
- be405d5 fix: make .localhost mode consistent across init, secure, and the installer
- 2ef9ceb fix: reset-failed host workers when toggling JS runtime so a crash-looped vite heals
- 3dc5cc3 fix: resolve bugs and regressions found reviewing the v1.24.1 work
- 5a6ba84 fix: resolve bugs and regressions found reviewing the v1.24.x work before release
- 8a613d8 fix: resolve regressions and bugs found reviewing the post-1.24.1 work
- 2e20971 fix: resolve worker and doc issues found smoke-testing the v1.24.x work
- 904db13 fix: respect paused sites and scope the bun toggle to the main site
- 47bb50e fix: seed node shim in macOS host-worker test so lerdManagesNode is true
Other
- 8923900 Merge remote-tracking branch 'origin/main' into feat/php-pkg
- 006657b i18n: add Chinese, Japanese, Romanian, Italian, Polish, and Vietnamese
- 0454fa9 perf(siteinfo): cache the Laravel APP_NAME read against the .env mod time
- 257e69f refactor(idle): move the suspend engine into lerd-watcher
- 8bbb8cf refactor(sites): confirm log clearing with a modal
- f7bf805 refactor(sites): make Laravel Doctor an on-demand modal
- 5ccb9e6 refactor(tui): address review findings across the post-1.24 work
- 022423b release: v1.25.0
Full Changelog: v1.24.1...v1.25.0