The channel share and the contact card built the identical renderable — intro, code, URL — by hand, one copy each. share_popup in ui/qr.py is now the single spelling; callers bring their own intro and URL builder (housekeeping H-001). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>