April 16, 2026
Multi-Photo Chat: The gallery picker in chat now supports multi-select. Photos stage as pending attachments with a thumbnail preview strip above the input bar; review, add, or remove before sending. Sequential upload with progress (#1124, #1139, reported by eric)
Tappable Links in Descriptions: URLs embedded in
item and experience descriptions now render as tappable links via the
new LinkifiedText widget (#1140)
Invisible Android Phone Verification: Play Integrity API is now enabled in prod, so phone number verification on Android release builds skips the reCAPTCHA browser popup (#1150)
Stale Chat from Notifications: Tapping a chat notification navigated to the right conversation but showed stale cached messages. Conversation and context caches are now invalidated before fetch, guaranteeing fresh data on every open (#1133, #1138, reported by bryan)
Text Descriptions Overwritten by AI: When creating an item or experience from typed text and then adding a photo, the LLM was replacing your description with generated text. Text mode now preserves your description verbatim — the LLM still extracts title, metadata, location, time, and value estimates, but leaves the description alone. URL-only mode only triggers when the entire input is a URL. A confirmation dialog warns before switching from text to image mode if it would discard your text (#1105, #1140, reported by lesliehall)
Wrong Location from Event URLs: Creating an experience from an Eventbrite/Meetup/Luma URL sometimes resolved to the wrong place (e.g. Boulder County Jail instead of Boulder Airport) because the LLM’s extracted location was overriding the structured JSON-LD location. JSON-LD location now always wins when present, and geo coordinates from the page flow through to Mapbox as proximity bias for accurate matching (#1134, #1141)
Broken Location Deduplication: The server was discarding Mapbox’s permanent place ID on save, so every location fell back to 50m radius matching — causing genuinely different places within 50m of each other to merge into one record. Saves now capture the external place ID and full administrative hierarchy (locality, region, postal code, neighborhood, county) for correct dedup and richer display (#1142, #1145)
Unified Chat Experience: Removed the standalone ConversationScreen (1,581 lines and 4 exclusive widgets). Portfolio inbox and all conversation entry points now navigate to the item screen with the chat tab selected, giving a consistent in-context chat everywhere (#1029, #1139)
Shared Media Picker: The chat ‘+’ attach button
and the media bar now use the same MediaPickerDialog bottom
sheet with a consistent “Add Media” header and plural labels (#1139)
“Create” Buttons: Renamed “Generate” buttons to “Create” across all creation modals to better reflect what they do (#1140)