You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
[1.91.1] - 2026-10-27 — Alshain
Fixed
migrate:run no longer fails in development on the query log's path. With APP_ENV=development the development query monitor logs each query to a file, but it was never
given the application context, so it resolved the path from the framework's own folder — vendor/glueful/storage/logs in an app — and a fresh app's migrate:run died on file_put_contents(). The monitor now receives the context at boot, writes to <app>/storage/logs (creating it), skips the file without a context, and never lets a failed log
write break the command or request it observes.
scaffold:model writes models the app can autoload. Models go to app/Models (App\Models)
when app/ exists instead of api/Models; the legacy path is kept only for projects without app/. Its "next steps" no longer suggest the nonexistent Model::where().
scaffold:model --migration generates a runnable migration. It writes database/migrations/NNN_Create<Table>Table.php implementing MigrationInterface (a hasTable-guarded createTable, dropTableIfExists on rollback, honouring --table) instead of
a fatal file using nonexistent Migration / Blueprint classes.
migrate:create generates migrations the runner can load. It wrote 001_create_tasks_table.php declaring class CreateTasksTable, but the runner takes the class
name from the filename, so migrate:run failed with "Migration class … not found". Files are now
named after their class (001_CreateTasksTable.php), and the command writes into the app it is
given rather than the directory it was started from.
event:listener prints a working registration. The generated handler gets #[AsListener(Event::class)] and the hint is EventService::subscribe(Listener::class), replacing
a [Listener::class, 'method'] that isn't callable for an instance method.
scaffold:factory / scaffold:seeder use autoloaded namespaces. In an app they generate App\Database\Factories / App\Database\Seeders under app/Database/; the seeder hint names the
full class.
db:seed UserSeeder finds app seeders. A short name was only looked up in Database\Seeders\;
it now tries App\Database\Seeders\ first, then Database\Seeders\ (as does the default DatabaseSeeder lookup).
scaffold:test --feature extends the app's TestCase. Feature tests extend App\Tests\TestCase when tests/TestCase.php exists, so they boot the application instead of
extending bare PHPUnit.
Console commands run against the app they are given. 19 commands (install, serve, db:status, db:reset, db:profile, the cache:* commands, extensions:list / info / summary / cache, system:memory, system:production) declared __construct() with no
parameters, discarding the booted container and context the console passes in. BaseCommand then
built a fresh context from the working directory and a container that never booted, so cache:*
read an unconfigured store and extensions:* saw no app-registered extensions. They now forward
the injected container and context (or inherit BaseCommand's constructor).