Treat v6.7.0 as a fresh-install baseline, not an in-place upgrade target. The release is explicitly scoped to new installations on PHP 8.4+ / Laravel 13, and is built from the v6.3.8 codebase rather than the most recent v6 line — so version numbers do not imply a linear feature progression.
First steps:
composer.json (php, laravel/framework) before composer require. On Laravel 11/12 or PHP < 8.4 you cannot adopt v6.7.0; stay pinned to your existing 6.3.x constraint and treat this release as unavailable to you."^6.7.0" only if you have verified the tag) rather than a floating *, because the v6 line contains divergent branches (6.3.8-derived vs. later) and a loose constraint can silently move you between them.laravel new project first, inspect the extracted vendor/ tree, and only then roll it into anything real..env, config, storage, database) before repeating anywhere else.First use case: a brand-new Laravel 13 project on PHP 8.4 where you use the package's installer to bootstrap credentials and environment configuration, then immediately disable the installer surface.
Installer-as-one-shot, not installer-as-feature. The credential handling changes in this release reinforce that the installer is a bootstrapping tool. A workable workflow:
INSTALLER_ENABLED=true) and a non-production check in a service provider or route file.Credential handling. Since this release touches installer credential handling, avoid any pattern where the installer mints a credential you don't control. Prefer a flow where you supply the initial admin email/password via environment at install time, or where the installer emits a one-time token you immediately exchange and rotate. Never let a generated credential land in version control — check .env.example vs .env and confirm .env is gitignored before you start.
Environment encoding discipline. The env-encoding fixes are a hint about real-world breakage. Standardise:
.env and .env.example; add an editor/CI check if your team edits these on Windows.#, spaces, or $, and prefer base64 or single-quoted strings for secrets with special characters.Fronting the installer behind a proxy, CDN, or tunnel. The CSRF fixes are relevant here. If the installer POSTs fail with a 419 behind a load balancer or ngrok-style tunnel, the cause is usually a session/domain or cookie mismatch rather than a package bug. Configure trusted proxies, SESSION_DOMAIN, SESSION_SECURE_COOKIE, and a stable APP_URL that matches the URL you actually browse.
Integration into a provisioning pipeline. The most leverage comes from wrapping the installer in your own artisan command or CI job that: writes env from secrets, invokes the install steps non-interactively, asserts expected rows/credentials exist, and then disables the installer. That gives you idempotency the raw installer won't provide.
Archive integrity in CI. Add composer validate --strict, composer audit, and a lockfile diff check to the pipeline. Because the release notes distinguish "reviewed candidate" from "published archive", treat dist archives as something to verify, not assume.
public/, bootstrap/, config/, and vendor/ against a clean skeleton, grep for unexpected eval/base64_decode/assert and obfuscated payloads, inspect web-server access logs for odd POSTs, review composer.lock and any repositories overrides, and rotate APP_KEY, database credentials, mail credentials, and all admin passwords. Assume persistence outside the package directory.array is not), cookie domain, and whether a reverse proxy is stripping cookies. Also confirm you aren't caching the installer page..env can produce null config values that surface as confusing auth or database errors far from the cause. Run php artisan config:clear and dump the parsed value when debugging.config:cache during an install writes stale values; php artisan optimize:clear afterwards prevents a whole class of "it works in tinker, not in the browser" issues.vendor:publish --tag=...) and package events/commands over editing vendor files. Anything you patch in vendor/ is lost on the next composer update and won't survive the archive-integrity checks you should be running.How can I help you explore Laravel packages today?