What's Changed
- refactor(database): extract HasUniqueStringIds trait to reduce code duplication by @huangdijia in #7590
- refactor(logger): optimize logger configuration structure by @huangdijia in #7563
- Fixed BC when validation rule not define. by @xuanyanwow in #7596
- chore(ci): remove symfony/console version constraint in test workflow by @huangdijia in #7595
- refactor(cache): refactor cache configuration pattern by @huangdijia in #7594
- feat: Add Htmlable contract interface for HTTP responses by @huangdijia in #6794
- Added PDO subclass support for PHP 8.4 by @huangdijia in #7019
- [3.2]Enhance array shuffle method to support custom random engines by @huangdijia in #7142
- refactor(testing): optimize ClassLoader detection in phpunit-patch by @huangdijia in #7592
- chore(ci): upgrade Swoole version from v6.1.0 to v6.1.1 by @huangdijia in #7588
- Added
Hyperf\Collection\Arr::sole()method by @huangdijia in #7600 - feat(async-queue): add result handling for job processing by @huangdijia in #7601
- fix(async-queue): relax type hint for callback message parameter by @huangdijia in #7602
- refactor(async-queue): strengthen Result type handling in Driver and AfterHandle event by @huangdijia in #7603
- Optimized AnnotationJob to support call protected / private methods. by @huangdijia in #7604
- refactor(testing): add NonCoroutine attribute for flexible test execution control by @huangdijia in #7605
- refactor(async-queue): remove JobMessage backward compatibility code by @huangdijia in #7609
- docs(command): add @param-closure-this annotation for better IDE support by @huangdijia in #7611
- refactor: remove deprecated code scheduled for v3.2 removal by @huangdijia in #7610
- Fixed setlocale set failed by @xuanyanwow in #7612
- refactor(async-queue): rename $queue property to $pool in ConsumerProcess by @huangdijia in #7615
- feat(async-queue): add automatic consumer process registration based on configuration by @huangdijia in #7618
- feat(framework): Add Symfony 7.4 compatibility with batch command registration by @Copilot in #7620
- refactor(async-queue): rename getQueueName to getPoolName for consistency by @huangdijia in #7625
Full Changelog: v3.2.0-alpha.3...v3.2.0-alpha.4