PCLI2
1.20.0 - 2026-09-04
v1.20.0
Sep 4 2026 at 19:05 UTC
Fixed
asset create --overrideno longer deletes the existing asset before checking the local file - The existing asset was deleted first and the local file was only validated by the upload that followed, so a mistyped filename (or an unsupported extension, a 413, a dropped connection) destroyed the customer's asset and its metadata with no way back. The local file is now checked before anything destructive happens, and if the re-upload still fails after the delete, the deleted asset's UUID and any metadata captured for--restore-metadataare printed so they can be recovered by hand.folder list --folder-uuidnow lists that folder - The argument was accepted by the parser and never read, so the command silently listed the tenant root instead.- The banner no longer corrupts command output - It was printed to stdout whenever any argument equalled
help,-hor--help, including values:env list --name helporasset text-match --text helpemitted ASCII art ahead of their JSON. The banner is now shown only above genuine help output, as decided by the argument parser. --thresholdis validated as a percentage - Values outside 0-100 are rejected at parse time on every matching command (--threshold 500used to go straight to the API;--threshold -5failed with a misleading "unexpected argument"). A value below 1, almost always0.85typed for 85%, is still accepted but produces a warning saying what it actually asks for.--concurrentis validated on every command, so--concurrent 0no longer hangs -asset create-batchsized its semaphore from the flag with no range check, and zero permits made every upload wait forever with no output. The folder match commands only rejected an out-of-range value after resolving the tenant. All concurrent commands now share one parser that accepts 1-10.- The install page links to the right repository -
docs/src/installation.mdpointed the installer script, the release page, the clone URL and the issues link atgithub.com/physna/pcli2, which is not this project.
Changed
- CI is green again on the current stable toolchain - clippy 1.98 flags every
Result<_, CliError>asresult_large_errbecause the CSV writer error embedded in the error enums was several hundred bytes wide. That variant is now boxed in bothFormattingErrorandCliActionError; nothing user-visible changes. - Dependency lockfile refreshed - Clears the
h2advisory (RUSTSEC-2026-0258, reachable through reqwest in the shipped binary) and therandandevent-listenerunsoundness advisories reported bycargo audit.