# feat\(cli\): name managed CLI failures instead of one generic error \(\#297\) · lucenx/codexbar-plasma

[View on GitCafe](https://git.cafe/lucenx/codexbar-plasma/commit/d418e9d9d5cd74437f6360170908e6df57879c57)

Repository: [lucenx/codexbar-plasma](https://git.cafe/lucenx/codexbar-plasma)

Visibility: public

Requested revision: d418e9d9d5cd74437f6360170908e6df57879c57

Requested commit: d418e9d9d5cd74437f6360170908e6df57879c57

Commit: d418e9d9d5cd74437f6360170908e6df57879c57

Tree: d3505c5f30cf2b8e6c0822d97887845703f09953

Author: Simone

Committer: GitHub

## Message

```
feat(cli): name managed CLI failures instead of one generic error (#297)

Every managed CLI failure collapsed into a single "error" status, so a checksum
mismatch, a rejected redirect, an unreachable release server and an unsupported
system all produced the same unactionable message. That hides the one case worth
acting on: a verification failure is a tampering signal, not network noise.

failure_status maps a raised failure onto a bounded status: unverified for a
refused download, network for an unreachable server, unsupported for a system
with no official build, error for everything else. Reasons stay generic; no
path, command output or remote text is exposed. ManagedCli.js accepts the new
statuses and keeps the known installation visible across a failed attempt.
install() also probes the platform before calling the release API.

Also restores missing spaces in the second-copy confirmation translation, which
PO concatenation had glued into "widget.L'installazione", "widget;gli" and
"effettosul" in all five catalogs since the string was introduced.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
```

## Parents

- [c0c05d23e5c777a2ca068ff1acd88360641b6268](https://git.cafe/lucenx/codexbar-plasma/commit/c0c05d23e5c777a2ca068ff1acd88360641b6268?format=markdown)

[Source at this commit](https://git.cafe/lucenx/codexbar-plasma/tree/d418e9d9d5cd74437f6360170908e6df57879c57?format=markdown)
