Releases: oakengine/installer
Release list
1.0.0
Release 1.0.0 – Changelog Summary
This first stable release of the OakEngine Installer delivers the full project installation workflow end to end: a runnable, plugin- and data-installable OakEngine project is now deployed from a central package endpoint, with deterministic updates, environment management, and a self-update channel straight from the installer itself.
-
End-to-End Package Installation
Adds the complete install pipeline for runner, plugin, and data packages, downloaded as archives from a configurable package API endpoint (project_api_url) with optional bearer-token authentication.
This makes OakEngine rollouts reproducible across servers and removes the manual GitHub download dance for project updates. -
Server Endpoint Package Contract
Defines a strict, well-documented list/detail contract for the package endpoint (package_type,package_id,version,channel,archive_*,composer,download_url) withX-Install-UUIDpropagation and optionalAuthorization: Bearersupport.
Integrators now have a single, predictable shape to ship runner, plugin, and data packages against. -
Install Manifest Tracking
IntroducesInstallManifestManagerwith.oak-install-manifest.jsonfiles per package type, storing every extracted file’s SHA1 so each new install can diff against the previous one and remove only the files that actually disappeared (plus empty directories left behind).
Updates stay clean across versions — no more stale files piling up across runner/plugin/data reinstalls. -
Install UUID Propagation
Sends a stable, regenerable UUID v7 (INSTALL_UUID) with every package request so the package endpoint can attribute installs to a server and respect migration state across runs.
Admins can view, edit, or regenerate the UUID from the dashboard. -
App Secret Lifecycle
Auto-generates a strongAPP_SECRET, syncs it on every.env.localwrite, supports explicit user-supplied values (16–128 chars, charset-validated), and exposes a “Regenerate Secret” action.
Application boots never break on a missing secret, and operators can rotate the secret without editing files by hand. -
Database Management in
.env.local
Adds an interactive database manager: add, activate, and removeDATABASE_URLentries directly from the UI, with active/database selection persisted between runs.
Multi-DB environments no longer require manual.env.localediting on the server. -
Self-Update Channel
Ships a built-in installer self-update view that lists GitHub branches and tags for a configurable repository, lets admins pick a ref (with commit SHA back-channel), downloads the zipball, and atomically replaces the installer source while preservingconfig.php.
Operators stay on a known-good version without leaving the browser. -
System / Diagnostics Dashboard
Adds a “System” view with PHP version, loaded modules, upload/post/memory/time limits, project version, and installed runner/plugin/data list.
Onboarding and troubleshooting get a one-page overview of the runtime. -
Authentication & Password Gate
Optionalpassword(plain or hashed) inconfig.phpgates the entire installer UI behind a login form, withevaluateAuthentication()handlinglogin-failed,login-ok,logged-out,show-form, andauthenticatedoutcomes.
Sensitive deployments can ship the installer without exposing configuration to anonymous visitors. -
Migrations & Cache UI
Adds “Run migrations” (Doctrine viabin/console doctrine:migrations:migrate) and “Clear cache” (with safety net to preserve top-levellog/logs) actions surfaced in the dashboard.
Routine Laravel/Symfony-style operations stay inside the installer instead of needing SSH. -
Structured Installer Logging
Writes append-only audit logs (oak-installer.log) to a configurable directory that never lives inside the installed project, withclearCacheDirectory()also protecting top-levellog/logsdirectories inside the cache tree.
Cache clears and first-install cleanups can no longer wipe the audit trail. -
Multi-Language UI
Ships full UI translations for English, German, French, Italian, Spanish, Portuguese, Dutch, Polish, Russian, Japanese, Korean, and Chinese.
Locale can be switched at runtime via the language dropdown and is persisted across requests. -
Modern, Responsive UI
Rebuilds the UI around a dashboard layout with a Lucide-iconed sidebar, dark-mode CSS variables, custom dropdowns, confirmation modals, and a tabbed “Installer” management view.
The installer is now actually pleasant to use on a fresh server from a phone or a desktop. -
Manifest-Based Filesystem Refactor
Centralises filesystem operations inFilesystem,FilesystemSupport,EnvLocalManager,ProjectPackageArchiveExtractor, and the newInstallManifestManager, with permissive failure modes for read-only situations during cleanup.
This makes the install/cleanup logic consistent and unit-testable instead of scattered through the controller. -
100% PHPUnit Coverage Mandate
Locks coverage requirements inAGENTS.mdand the composer scripts (bin-phpunit,bin-phpunit-coverage) so every change must keep classes, methods, and lines at 100% with no stubs, no exclusions, and no ignores.
Future regressions surface immediately in CI rather than silently degrading test confidence. -
Dual PHPStan / ECS / Rector Toolchain
Wiresphpstan,ecs(PHP-CS-Fixer), andrectorthroughbamarni/composer-bin-pluginwith aciaggregate script and aci-coveragevariant.
Style, static analysis, and refactoring checks are first-class composer commands available to every contributor.
Compatibility: First stable release, no migration path required.
Full Changelog: https://github.com/jbsnewmedia/oakengine-installer/commits/1.0.0