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>
Simone committed on 8/18/2026, 11:21:07 PMparent5dc8e15
2 files changedLine totals unavailable