Drop structured CLI values from display text instead of coercing them

SafeText.boundedDisplayText coerced anything non-nullish, so a malformed
CLI payload reached the popup as text: a structured displayName rendered as
"[object Object]" in the provider title, and a structured date became an
"[object Object]" label on a cost chart axis. The value was never a string
the CLI meant to show; it was a shape bug printed as if it were content.

Display text now drops objects and arrays and lets the caller's own fallback
show. Scalars still coerce, because a numeric or boolean CLI field is
something the popup can legitimately print.

The guard is on boundedDisplayText only, not on the shared
boundedInspectionText. Diagnostics and credential redaction keep coercing on
purpose: there, seeing the malformed shape beats seeing an empty string.

Two tests in tst_provider_normalizer.qml were pinned to the old coerced
output and marked KNOWN GAP; they now assert the dropped value, which is the
deliberate update that marking was there to force. Added coverage that a
session with structured optional fields degrades those fields without
dropping the whole session.

This also uncovered a separate pre-existing bug, left unfixed and pinned by
test_boundedDisplayTextStillSwallowsFalsyScalars: `String(value || "")`
inside boundedInspectionText swallows numeric zero and false. That helper
feeds credential redaction, so it needs its own commit and its own review -
configProviders.qml already works around the same class of bug with its own
descriptorValueText.

make check: 146 QML tests pass, up from 143. Verified at runtime with
./install.sh; plasmashell logs show no ReferenceError, TypeError or
SyntaxError.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
20c9ceb568Simone committed on 8/18/2026, 11:21:07 PMparent5dc8e15

Checks

All checks passed
2 files changedLine totals unavailable