1.10.0 Summary
This is a release focused mostly on type safety & static analysis. We have made comprehensive improvements to PHPDoc annotations, generic types, null-safety, and PHP 8.3+ compatibility.✨ Features & Improvements
Type Safety Enhancements (All Packages)
- Generic Type Support: Added comprehensive
@template,@param, and@returnPHPDoc annotations across collections, operators, and state processors - PHP 8.3+ Compatibility: Added
#[\Override]attributes to 300+ method implementations for compile-time verification - Strict Type Checking: Applied
strict_types=1declarations and strict comparison operators throughout - Callable Signatures: Enhanced PHPDoc with precise callable type hints (e.g.,
callable(Section): bool)
Null-Safety Improvements
- schema: Fixed nullable type handling in
TypeDetails,SignatureField, and reflection classes - instructor: Better null handling in deserialization layer (
CustomObjectNormalizer,FlexibleDateDenormalizer) - messages: Fixed null pointer issues in
Messages::firstRole(),Messages::lastRole(), and filter operations - auxiliary: Added type guards in
Codebase::getMethodParams()andRawHtml::convertToAbsoluteUrls() - dynamic: Explicit null initialization for
Field::$valueandField::$validatorproperties
Collection API Standardization (utils)
- Renamed
ArrayList::get()→ArrayList::itemAt()for interface consistency - Added comprehensive generic type annotations to
ArrayList,ArrayMap,ArraySet - Improved
TagMaptype safety with proper tag storage annotations
Result Monad Enhancements (utils)
Helper methods for batch operations:CompositeException for better debugging.
State Processing (addons)
- Added
forceThrowOnFailureparameter toChatclass for graceful error handling - Enhanced generic type constraints in
StateProcessors,ContinuationCriteria, and middleware chains - Added
ChatFactory::defaultProcessors()helper method
🐛 Bug Fixes
File Operations
- doctor: Fixed
glob()returningfalseinstead of empty arrays (multiple files) - doctor: Fixed unhandled
falsereturns fromfile_get_contents(),realpath(), andpreg_replace() - instructor: Fixed file operation error handling with runtime exceptions
Type Safety
- auxiliary: Fixed null safety in parameter extraction and DOM element handling
- dynamic: Fixed schema immutability violations in
Field::withName()andField::withDescription() - messages: Added runtime exceptions for empty collection operations instead of returning null
- schema: Improved nullable type handling with proper null coalescing and type guards
- pipeline: Better null handling in
StepTimingTag::startDateTime()
Array Operations
- evals: Fixed array key conflicts in
MakeObservationsandSelectObservationsusingarray_values() - schema: Added strict type comparisons to all
in_array()calls