Unreleased
Not yet released
Fixed
viv diagnoseno longer waits without a limit on thephp,gitandcomposerit runs for its version lines. 0.23.0 killed a hungphpin the platform probe but leftviv diagnoseblocked onphp -rfor as long as thephpran. It now appliesVIV_PHP_PROBE_TIMEOUT(30 seconds by default,0for no limit) to each of the three, kills the one that runs past it and printsphp: did not answer within 30s (VIV_PHP_PROBE_TIMEOUT)before carrying on with the remaining lines. Composer is a PHP script, so its line can time out for the same reason. A value that is not a whole number of seconds is printed on those lines instead of stopping the report. In a project with acomposer.lock, an error from the platform probe, such as aphpthat does not answer, is printed on aplatform:line and the report carries on with the plugin lines instead of ending with that error (#368)viv update 'vendor/*'treats the*in a package argument as a wildcard, as Composer does, and--minimal-changesleaves the packages it matches unpinned. viv used to read*as part of a name, so the argument matched no locked package, the update changed nothing, and adist.shasumdeclared by apackagerepository stayed out ofcomposer.lock. A followingviv installtherefore had no shasum to check the download against.viv update --lockstill keeps the locked entries, as Composer does (#399)viv add --no-normalizeandviv rm --no-normalize(and therequireandremovealiases) change only therequireorrequire-deventries they touch and leave every other byte ofcomposer.jsonas it was, ascomposer requireandcomposer removedo. From 0.8 to 0.23 the flag did nothing and printed--no-normalize is a no-op on add since 0.8, soviv rmalways reordered the sections and expanded the inline arrays of the whole file. Without the flag both commands still normalizecomposer.json. The editedrequireorrequire-devsection can change its own layout, as it does in Composer.--sort-packagesandconfig.sort-packagesapply to the edit again, and the flag cannot be combined withviv add --repository, which editsrepositories. A failedviv addorviv rmstill writes the original bytes back (#400)viv update,viv install,viv add,viv rmandviv newinstall the PHP build thatextra.viv.phpnames when it is not downloaded yet, and read the platform's extensions from it. 0.23.0 read that build only when it was already in the cache, so with nophponPATHa firstviv update <package>assumed PHP 8.3.0 with no extensions and refused everyext-*requirement, althoughviv runinstalls the same build on first use. The commands now printinstalling php 8.4.x (os-arch)…on stderr asviv rundoes, and a download that fails stops the command with an error that names the version, instead of checking against thephponPATH. With--offlinethey still read thephponPATH.viv diagnoseandviv lock mergenever download a build (#392)