Repository navigation
2.11.0
·
12 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
Read the Composer 2.11 Release Announcement for more details on the release highlights.
Full Changelog
- BC Break: Removed the
source-fallbackconfig option which was added in 2.10 as a temporary measure, dist installs no longer fall back to source (#13050) - Security: Fixed package names in
vendor/composer/installed.jsonbeing able to escape the vendor directory during install and reinstall (GHSA-c968-33g3-wh7p) - Security: Fixed inline repository HTTP headers, such as API tokens, being written into
composer.lock(GHSA-fm2w-xgf2-f9fh) - Security: Fixed additional arguments passed to
@composerscripts not being escaped (#13169) - Security: Fixed svn passwords not being redacted from debug output (#13171)
- Security: Sanitize URL-embedded credentials in hg and fossil error output (#13172)
- Security: Reject TLS connections presenting distrusted intermediate certificates (the compromised eMudhra ones) even if the system CA store trusts their roots (#13146)
- Security: Fixed bin proxies embedding package-controlled bin paths and shebangs unescaped, and bin paths containing shell metacharacters are now rejected (#13056)
- Security: Fixed
secure-httpnot catching insecure URLs that are not strictly valid or use git's<transport>::<address>syntax (#13144) - Security: Fixed repository options like custom http headers being sent along to dist URLs on other hosts whose name starts with the repository host (#13142)
- Bumped
composer-plugin-apito2.11.0 - Added a
cooldownpolicy to withhold newly released package versions for a configurable period, reducing exposure to compromised releases (#12692, #13098, #13099, #13100, #13102, #13153) - Added
block-scopeoption to custom policies so they can also block duringinstall(#12990) - Added terminal progress/status reporting via OSC 7501 and OSC 9 escape sequences, which can be configured with
COMPOSER_TERMINAL_STATUS(#13117) - Added
--direct(-D) option toauditto only audit direct dependencies (#13121) - Added support for Bitbucket Cloud's new
ssh.bitbucket.orgSSH hostname, which is also used for the SSH fallback now (#13152) - Added
strict-psr-autoloaderconfig option, the equivalent of the--strict-psr-autoloaderflag (#12893) - Added a warning when an optimized autoload dump contains paths only differing in casing (#13085)
- Added
only-branchesoption to VCS repositories to restrict which branches are loaded (#13086) - Added installed versions of sub-dependencies in
show --tree --format=jsonoutput (#13049) - Added batching of security advisory API queries for projects with a very large number of dependencies (#13051)
- Added support for 429 responses and
Retry-Afterheaders, Composer now waits and retries when a repository asks for it (#13082) - Added AI coding agent to the User-Agent (#13073, #13087)
- Added a prompt in
initto add composer.lock to .gitattributes with export-ignore when creating a library (#13127) - Improved dependency resolution performance and memory usage (#13071, #13072, #13103, #13123, #13124, #13132, #13174)
- Improved performance by not requesting HTTP/3 anymore, which added a delay on every new connection with recent curl versions (#13096)
- Improved performance of
outdatedandshow --latestby loading package metadata in parallel (#13113) - Improved explanations for versions blocked by security advisories in dependency conflict errors (#13108, #13075)
- Fixed the lock file not being flagged as outdated when the
policyconfig changes - this will trigger a lock file change warning if you have apolicyconfig defined (#13149) - Fixed
installto fail when composer.lock has a content-hash merge conflict (#13105) - Fixed truncated zip downloads failing at extraction, they are now retried and never cached (#13094)
- Fixed generated files (autoloader, composer.json, ...) being rewritten in place, which affected hardlinked copies and concurrent readers (#13069)
- Fixed SSH URLs losing their user in git commands, causing auth failures since 2.10.3 (#13081)
- Fixed GitLab CI job token authentication (#12916)
- Fixed
custom-headersfrom a project auth.json orCOMPOSER_AUTHreplacing the global ones instead of being merged (#13141) - Fixed parallel requests failing with "Invalid credentials" instead of retrying with credentials obtained by another request (#13135)
- Fixed the GitHub API rate limit not being reported when the clone fallback fails (#13059)
- Fixed
outdatedreporting packages with no installable version as outdated (#13138) - Fixed
update --minimal-changeswith wildcard package names (#13118) - Fixed
bumpnot handling>=10style constraints and loosening OR constraints (#13133) - Fixed security advisories wrongly applying to named dev branches like
dev-main(#13089) - Fixed the vendor dir not being excluded from root classmap scanning in some cases (#13018)
- Fixed self-update failing with a class not found error while swapping the phar (#13079)
- Fixed
clear-cache --no-cachereporting missing dirs instead of the cache being disabled (#13092) - Fixed empty script commands not being treated as a no-op (#13053)
- Fixed
suggestssilently outputting nothing when filtering on a package that is not installed or excluded by--no-dev, it now errors (#13014) - Fixed
JsonManipulator::addSubNode()modifying a nested key with the same name (#13109) - Fixed repeated warnings from repositories being output multiple times (#13090)
- Fixed plugin capability classes being instantiated before checking they implement the right interfaces (#13139)
- Fixed warnings when finding packages within inline packages without uid (#13148)
- Fixed
configcorrupting composer.json when modifyingextraorscriptsentries which are JSON arrays (#13167) - Fixed archives not being unwrapped correctly when OS/editor metadata entries like
__MACOSXorThumbs.dbsit next to the package's top-level dir (#13168) - Fixed
@scriptreferences with quoted arguments being split on spaces when passed to@composerscripts (#13169)
Full Changelog: 2.10.3...2.11.0