Quantum PHP Framework (core) v3.0.0 Release Notes

Release Date: 2026-05-28 // 24 days ago
  • What's Changed

    • ⬆️ Pull Request: Upgrade to PHP 7.4+ with PHP 8.0/8.1 support by @Wiltzsu in #389
    • 🔋 Feature/php 8.1 compatability related fixes by @armanist in #390
    • 371 integrate php stan for static analysis in quantum framework by @armanist in #391
    • 155 integrate php cs fixer by @armanist in #392
    • 🛠 Fix: Resolve DBAL contract violation with truncate() method (#387) by @Wiltzsu in #393
    • ✨ Enhance CONTRIBUTING.md with new setup steps by @armanist in #394
    • 396 qt command crashes on symfony 5+ when $help or $description is not defined by @armanist in #397
    • 🛠 Fix/php81 nullable deprecations by @Wiltzsu in #398
    • ✅ 400 make http client testable by allowing curl and multi curl injection and removing external api dependency from tests by @armanist in #401
    • 🛠 Fix Translator to merge shared and module translations by @armanist in #403
    • Backend validation errors are not displayed in Toolkit forms by @Tigranuhi-A in #405
    • 🛠 Fix issue where pagination state is lost after viewing a single post by @live-soft in #395
    • 👌 Improve serve Command Reliability by @armanist in #406
    • 🔨 Refactor Router and ModuleLoader: Decouple module loading from route building by @armanist in #409
    • 🔋 Feature/native cron runner 291 by @charoyan88 in #408
    • 🔨 Refactor model architecture introduce base model and database model separation by @armanist in #410
    • ➕ Add Optional Timestamps Support to Models by @armanist in #411
    • ➕ Add Di::set() instance binding support to DI container by @armanist in #414
    • 🔨 Refactor routing core, introduce route collection and route finder to reduce router responsibilities by @armanist in #415
    • 🐛 Bug: "Array" rendered inside pagination HTML by @armanist in #417
    • 🔨 419 refactor flatten libraries directory into top level src folder by @armanist in #420
    • ➕ Adding types to class properties, updating method signatures, and organizing use statements across multiple classes and packages. by @armanist in #422
    • ➕ Adding declare(strict_types=1) to all classes via rector by @armanist in #424
    • 🚚 Making sure to remove 'id' from user data by @armanist in #425
    • 0️⃣ Converting request defaults to strings by @armanist in #426
    • ➕ Adding new resetContainer method to Di class and updating tests by @armanist in #427
    • Update ob_implicit_flush for PHP 8+ and ensure string type for search… by @armanist in #428
    • Cast search parameter to string before trimming in PostController templates by @armanist in #429
    • Changing the getPagination method first value to be boolean to follow… by @armanist in #430
    • 📦 Enforce PHPStan level 6 compliance across all packages by @armanist in #432
    • ✂ Remove shared StorageInterface in favor of package-level contracts by @armanist in #434
    • ⬇️ Reduce bcrypt cost in Auth and Hasher tests for faster test execution by @armanist in #436
    • 437 extract adapter type constants from main classes into dedicated enum classes by @armanist in #438
    • ➕ Add Resend mailer adapter by @grigoryanmartin20 in #440
    • ⬆️ 441 upgrade php stan analysis from level 6 to level 7 by @armanist in #442
    • 🔨 Refactor Module Templates to use DTOs in Services and Controllers by @armanist in #444
    • ➕ Adding rector commands in composer.json and fixing issues found by rector by @armanist in #445
    • ➕ Added missing @method annotations to App and DbModel by @armanist in #446
    • Remember-me cookie in SessionAuthAdapter missing httpOnly and secure flags by @armanist in #450
    • Inject auth config into adapters via AuthFactory by @armanist in #451
    • 🔨 Refactor App Bootstrapping & DI Ownership Model by @armanist in #457
    • 🔨 [#458] Refactor debugbar() helper for structural and behavioral consi… by @armanist in #463
    • 🔨 [#459] Refactor view() helper to service locator and rename QtView to View by @armanist in #464
    • [#460] Introduce db() helper to encapsulate Database DI lookup by @armanist in #465
    • [#462] Normalize router helper surface through Request proxies by @armanist in #466
    • Issue/467 di registry container split by @armanist in #468
    • [#470] Enforce response-returning route dispatch by @armanist in #475
    • 🔨 Issue/471 middleware hook refactor by @armanist in #476
    • 🔨 [#472] Refactor web flow to explicit response pipeline by @armanist in #477
    • 🔨 [#473] Refactor console termination to explicit return flow by @armanist in #478
    • Issue/474 stop cleanup by @armanist in #480
    • 👻 Issue/481 enum exception coverage by @armanist in #484
    • Issue/479 command coverage by @armanist in #485
    • ✅ [#483] Increase Tracer ErrorHandler unit-test coverage by @armanist in #486
    • 📦 [#482] Expand migration package unit test coverage by @armanist in #487
    • ✅ [#488] Raise console command coverage and silence serve test logs by @armanist in #489
    • 🔋 Feature/490 errorhandler refactor by @armanist in #491
    • [#492] Prevent Request bootstrap circular dependency via UploadedFile lazy init by @armanist in #493
    • 🔨 [#494] Refactor UploadedFile into upload collaborators by @armanist in #495
    • 🚚 496 remove response param in templates by @armanist in #497
    • [#498] Fix missing Response import and redirect return in templates by @armanist in #499
    • Issue/500 qt prefix class rename by @armanist in #501
    • Issue/502 request context cleanup by @armanist in #503
    • Issue/504 load modules boot stage by @armanist in #505
    • ⚡️ CHANGELOG.md and CONTRIBUTING.md updates by @armanist in #506
    • [#290] Add first-class route rate limiting with global backend by @armanist in #507
    • 👍 [#508] Support related criteria paths in SleekDB joins by @armanist in #509
    • [#511] Fix RouteBuilder post-group modifier chaining context by @armanist in #512
    • Issue/510 rate limit demoapi by @armanist in #513
    • [#514] Preserve SleekDB criteria state across paginator count by @armanist in #515
    • [#516] Standardize middleware validation rule signatures by @armanist in #517
    • [#518] Fix middleware template signature mismatches by @armanist in #519
    • [#520] Fix OpenAPI generated routes response contract by @armanist in #521
    • Issue/522 demoapi openapi coverage by @armanist in #523
    • 🚀 Finalize RC release notes link and rector-typed terminal closure by @armanist in #524
    • ⚡️ Chore/update contact email by @armanist in #525
    • Issue/526 request multi file fields by @armanist in #527
    • 📄 docs: Add Code of Conduct and RE...

Previous changes from v3.0.0-rc