You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Added
Add a portable fast-forward-config consumer skill in resources/skills with version-aware guidance, checked application examples, manual project/global installation and optional llm/skills Composer discovery.
Changed
Give each CachedConfig wrapper an isolated, portable PSR-16 default key whose entries expire after 300 seconds. Cross-instance or cross-request reuse now requires an explicit cacheKey; old class-name entries are not reused.
Removed
Remove the deprecated misspelled LamiasConfigAggregatorConfig class without an autoload alias fallback. This is an intentional compatibility break: replace imports, type declarations, and instantiations with LaminasConfigAggregatorConfig.
Fixed
Normalize each provider or PHP file's dot and slash paths before Laminas merges sources, preserving later-source precedence, list order, merge instructions, lazy loading, and file-cache behavior.
Load, lock, and atomically replace the same resolved PhpFileConfig target, avoiding competing include_path files and anchoring relative inputs on first use across working-directory or Windows drive changes.
Follow current file and directory symlinks, including external retargeting, literal POSIX targets containing URI syntax, and dangling chains or ancestor directories, preserving intermediate links and rejecting cyclic or unresolvable chains before replacement.
Preserve existing POSIX file groups and permission bits during atomic persistence, rejecting replacements with InvalidArgumentException when required metadata cannot be retained or its functions are disabled.
Report unavailable PHP functions required for file-path resolution as InvalidArgumentException before changing persistent configuration.
Preserve native stream-protocol selection and trailing directory separators, preventing URI-like relative paths or malformed file locators from redirecting reads and persistent mutations.
Retain missing-file read defaults for empty locators or paths containing NUL bytes and reject their persistent mutations before creating directories, locks, or files.
Load PHP configuration at every recursive directory depth in deterministic depth-and-path order, preserve filename-pattern overrides, and include resolved files once without traversing child directory symlinks.
Keep accessible configuration available when a child directory is unreadable or disappears during recursive discovery, while preserving root read failures and unrelated errors.
Treat directory path metacharacters literally during top-level and recursive discovery, preventing similarly named sibling directories from contributing configuration.
Include discovered configuration through resolved absolute paths so relative roots cannot load outside namesakes through include_path or changes to the working directory.
Resolve valid source data on cache misses, evictions, non-array entries, and declined initial writes without a has()/get() race or mandatory cache readback, while preserving lazy cache hits.
Report failed persistent cache mutations with RuntimeException when the backend returns false, retaining the local mutation for application recovery.
Resolve PSR-11 container identifiers consistently, require the documented config. prefix, and report empty or unknown configuration identifiers as container not-found errors.
Use core string functions for directory paths and container prefixes so runtime-only PHP 8.3 consumers do not require undeclared multibyte functions or PHP 8.4 polyfills.
Document and test the explicit Laminas config_cache_enabled flag, writable parent requirements, and existing-file reuse for provider and directory file-cache examples.