All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Resolve embed cache dependencies before HAL rendering: child resources' ETag headers are now collected before
HalRendererstripsRequestinstances from the body, so the parent'sSurrogate-Keyreliably includes all embedded children (#174) - Include async embed children in dependency resolution: walk by
AbstractRequestinstead of the concreteRequest, soAsyncRequest(and otherAbstractRequestsubclasses) are no longer silently skipped
- Cache dependency resolution moved from
EtagSetter/DevEtagSetterintoQueryRepository::put()(runs on HTTP 200 only, before persistence) QueryRepository::__construct()now requiresCacheDependencyInterfaceEtagSetter::__construct()andDevEtagSetter::__construct()no longer acceptCacheDependencyInterface- DI users via
QueryRepositoryModuleare unaffected; only callers that directlynewthese classes need to update their constructor calls
- HAL embed cache dependency test (
tests/CacheDependencyTest.php) - Non-Cacheable embed child test fixtures and
continuepath coverage
- Add
ServerContextInterfacefor coroutine-safe request handling in Swoole/RoadRunner environments - Add
GlobalServerContextas default implementation using$_SERVERsuperglobal - Add
RepositoryLoggerInterfacewithreset()method for long-running process support
- Bind
ServerContextInterfacetoGlobalServerContextinQueryRepositoryModule - Use
ServerContextInterfaceinResourceStorageinstead of direct$_SERVERaccess
- Add LLM documentation (
docs/llms.txt,docs/llms-full.txt) for AI-assisted development - Add JSON schema for RepositoryLogger output (
docs/schemas/repository-log.json) - Add cache dependency demos for AI log analysis (
demo/run-dependency.php,demo/run-donut.php) - Add cache dependency test coverage documentation (
tests/CACHE_DEPENDENCY_TESTS.md) - Add test resources for cache dependency patterns (ParentA, ParentB, ChildC)
- Change RepositoryLogger output to JSON format for structured logging
- Update
.gitattributesto exclude development files from release - Require
ray/aop^2.19.1 andray/di^2.20 for PHP 8.5 compatibility - Update copyright year to 2026
- Fix UriTagTest typo in documentation
- Migration Tools: Added
rector-migrate.phpfor automated annotation-to-attribute migration - Migration Guide: Added
ANNOTATION_TO_ATTRIBUTE.mdwith comprehensive migration instructions - Add CLAUDE.md with comprehensive codebase architecture and development guide
- Add marshaller configuration support for Redis with compression options (deflate)
- Add
MarshallerTypeenum for type-safe marshaller selection - Add support for
RelayClusterinRedisDsnProvider - Add Japanese README (README.ja.md)
- Add
#[Override]PHP attribute across all applicable methods and classes - Add Memcached EtagPool module with TagAwareAdapter support
- Add Redis DSN module (
StorageRedisDsnModule) with provider implementation - Add TagsPool annotation and binding to QueryRepositoryModule
- Add validation to ensure FastlyPurgeModule is installed when used
- Add Dependabot configuration
- Add PHP 8.4 support to CI workflow
- Add PHP 8.5 support to CI workflow
- PHP 8 Attributes Migration: Removed
doctrine/annotationsanddoctrine/cachedependencies, migrated to native PHP 8 attributes - Minimum PHP Version: Updated requirement from PHP 8.1 to PHP 8.2
- Update development tools: PHP_CodeSniffer to 4.0, Doctrine Coding Standard to 14.0, Slevomat Coding Standard to 8.24, PHPUnit to 11.5
- Optimize readonly class declarations for PHP 8.2 (class-level modifier)
- Improve cache attribute and interceptor documentation with usage examples
- Improve
rector-migrate.phpto support vendor installation by removing hardcoded paths - Update
ANNOTATION_TO_ATTRIBUTE.mdmigration guide following Ray.AuraSqlModule pattern - Improve marshaller provider error handling with better exception messages
- Enhance Memcached module with TagAwareAdapter support
- Update Symfony Cache to support version ^7.3
- Update
symfony/polyfill-php83dependency to^v1.32.0 - Update
mobiledetect/mobiledetectlibto support version ^4.8 - Update composer dependencies (
madapaja/twig-module,phpunit/phpunit,predis/predis,twig/twig,symfony/process) - Update
vimeo/psalmto version 6.12 - Update
ray/aopdependency to ^2.16 - Update
ray/didependency to ^2.17.2 - Set
ResourceStorageto singleton scope for better performance - Refactor
ResourceStoragewithProviderInterfacefor serialization support - Improve UriTag test coverage for consistent key generation across parameter order
- Normalize URI separators in generated cache keys for cross-platform compatibility
- Simplify ETag and surrogate key generation logic
- Handle both forward slashes and backslashes in surrogate key generation
- Sanitize ETags to replace reserved characters
- Replace symlink with actual file for cross-platform compatibility
- Enable package sorting in composer.json
- Refactor CI workflow for expanded PHP version and OS coverage
- Update copyright year to 2025
- Remove Sodium marshaller related code
- Remove
bear/fastly-modulefrom production dependencies (moved to dev dependencies) - Remove unnecessary singleton scopes from bindings
- Remove unused PSR cache annotations and RedisAdapter binding
- Remove unused MemcachedAdapter bindings
- Remove redundant
assertstatements from codebase - Remove unused dependencies from composer.json
- Deprecate
StorageApcModuleTest - Deprecate
StorageRedisModuleTest(useStorageRedisDsnModuleinstead) - Deprecate
StorageRedisMemcachedModule - Deprecate
BcModule - Deprecate
NamespacedCacheProviderclass - Deprecate
ResourceStorageCacheableTrait
- Fix type casting in headers
- Fix path separator replacement for cross-platform compatibility (Windows/macOS/Linux)
- Fix typo in deprecated notice
- Fix README file extension issue
(Previous releases not documented yet)