Pendy cards now handle numeric synthetic IDs correctly. Previously, if an ID, phone, or name arrived as a JSON number rather than a string, the card endpoint would throw entirely. That's fixed.
Cards also degrade more gracefully when optional fields are missing or malformed. If brand, role, description, or context aren't present, they're simply omitted from the rendered card rather than showing as "undefined" or rejecting the whole request. A card only falls back to a text bubble when there's genuinely nothing renderable — not just because one field was incomplete.
Caller-supplied width and height values are no longer accepted by the card render endpoint. An unbounded viewport could cause memory issues in the rendering function, so dimensions are now fixed to the standard portrait canvas.