v1.60.0 — Vega: engine-agnostic installer + first-run setup seams
[1.60.0] - 2026-06-19 — Vega
Theme: Engine-agnostic installer + first-run setup seams.
php glueful installnow configures and migrates any database engine (MySQL/PostgreSQL/SQLite), not just SQLite, with reconnected interactive credential prompts. A newGlueful\Installer\toolkit (EnvWriter,ConnectionTester,Installer,DatabaseConfig,InstallState) lets an app drive first-run setup from CLI or a UI without shelling out — under two hard invariants: a failed DB test mutates nothing, and the tested credentials are exactly what migrations run on. Plus.envwrites are now quoted + atomic (oneEnvWriter, replacing two unsafe copies), andMigrationManageraccepts an injectedConnection. Minor release — additive (no breaking API changes, no new env, no migrations). Has### Upgrade Notes(the now-interactiveinstall).
Added
- Engine-agnostic installer +
Glueful\Installer\seams.php glueful installnow configures and migrates any database engine (MySQL/PostgreSQL/SQLite), not just SQLite, with reconnected interactive credential prompts. New reusable services —EnvWriter(atomic, quoting),ConnectionTester(transient probe of explicit creds, typed result, with a short connect timeout so an unreachable host fails fast instead of hanging),Installer(preflight-first pipeline, step-basedInstallResult),DatabaseConfig,InstallState— let an app drive first-run setup from CLI or a UI without shelling out. Two hard invariants: a failed DB connection test mutates nothing (.envuntouched), and the tested credentials are exactly the connection migrations run on.
Changed
MigrationManageraccepts an optional injectedConnection(appended 4th constructor arg) so the installer migrates the just-tested connection rather than the already-loaded config. Behavior is unchanged when none is injected.
Fixed
.envwrites are now quoted/escaped and atomic. The two privateupdateEnvFile()copies (ininstallandgenerate:key) — which wrote unquoted values and could corrupt.envon a password containing spaces/#/=/quotes — are replaced by the singleEnvWriter.
Upgrade Notes
php glueful installis now engine-agnostic and interactive. By default it prompts for the database engine + credentials (previously it silently set up SQLite only). Non-interactive callers (CI, apost-create-project-cmd, scripts) should pass--quietto use the existing.envwithout prompts, or--skip-databaseto skip DB setup/migrations entirely. The bundled api-skeleton'spost-create-project-cmdis updated toinstall --force --quiet. No env or config changes; no migrations.