Skip to content

v1.91.1

Choose a tag to compare

@MichaelSowah MichaelSowah released this 27 Oct 20:14
· 8 commits to main since this release
d93fff6

[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).