FR-5: Client Rendering
- The client receives messages with an optional
description field
- If
description is present and non-empty, the message is
rendered as a special “image description” bubble
- The bubble includes:
- A small camera/image icon (Unicode 📷 or a custom sprite) at the
start of the text
- The description text, word-wrapped
- A timestamp
- A subtle visual distinction: lighter or desaturated background tint
(e.g.,
(0, 150, 255) for outgoing,
(210, 210, 210) for incoming)
- The bubble height accounts for the icon + text + timestamp
- If
description is "__ERROR__" or missing,
show a failure placeholder: “[Image — could not describe]”