What's new in v0.15.12
Inbox label safety
- The label picker now resets and reloads when operators switch conversations, preventing labels from one selected thread appearing on another.
- Inbox list rows and selected conversation hydration now read from
conversation_labelsandconversation_label_linksinstead of the legacyconversations.tagsarray.
Filter conversations by tag
/api/inbox/conversationsaccepts label filters and applies them server-side through the normalized conversation-label join table.- Label filtering stays workspace-scoped and supports combining label IDs and label names.
Campaign response labeling
- Campaign response routes can now use
tag_conversationto label the related inbox conversation. - Existing
tag_contactremains the canonical path for contact/audience tags, keeping campaign segmentation distinct from operator triage labels.