Skip to content

feat(doctor): make the site doctor framework-agnostic#686

Merged
geodro merged 1 commit into
mainfrom
feat/framework-agnostic-doctor
Jun 29, 2026
Merged

feat(doctor): make the site doctor framework-agnostic#686
geodro merged 1 commit into
mainfrom
feat/framework-agnostic-doctor

Conversation

@geodro

@geodro geodro commented Jun 29, 2026

Copy link
Copy Markdown
Member

Closes #685.

The site doctor was Laravel only. This rebuilds it as a framework-agnostic engine that runs a universal baseline for every site, the env file being present, env drift against the example, the application key, composer and node dependency install plus lockfile state, composer and npm security audits, and the PHP version range, alongside each framework's own checks declared in the lerd-frameworks store. The store checks are fully declarative through four typed evaluators, env_key_set, env_combo, symlink, and command, so a framework gains doctor coverage by editing the store rather than Go, and Laravel's app_debug, storage_link, and migrations checks move into that model unchanged.

The doctor is now available everywhere rather than gated to Laravel: the web button and the TUI tab show for every site, there is a new lerd site:doctor command with a --json flag, and the MCP diag tool gains a site_doctor action. Each check carries a readable label, and the dependency and audit findings expose a Fix button that runs an allowlisted package manager command through a loopback-only endpoint that streams its output into the existing command run modal.

The Laravel doctor checks ship through the lerd-frameworks store, so this depends on a companion change adding the doctor sections to the Laravel store definitions.

The site doctor was Laravel only. This rebuilds it as a framework-agnostic engine that runs a universal baseline for every site, the env file being present, env drift against the example, the application key, composer and node dependency install plus lockfile state, composer and npm security audits, and the PHP version range, alongside each framework's own checks declared in the lerd-frameworks store. The store checks are fully declarative through four typed evaluators (env_key_set, env_combo, symlink, command), so a framework gains doctor coverage by editing the store rather than Go, and Laravel's app_debug, storage_link, and migrations checks move into that model unchanged.

The doctor is now available everywhere rather than gated to Laravel: the web button and the TUI tab show for every site, there is a new lerd site:doctor command with a --json flag, and the MCP diag tool gains a site_doctor action. Each check carries a readable label, and the dependency and audit findings expose a Fix button that runs an allowlisted package manager command (composer install, composer update, npm install, npm audit fix) through a loopback-only endpoint that streams its output into the existing command run modal.

The Laravel doctor checks ship through the lerd-frameworks store, so this depends on the companion change adding the doctor sections to the Laravel store definitions.
@geodro geodro merged commit 0e079d3 into main Jun 29, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Make the site doctor framework-agnostic

1 participant