chatwoot/app/presenters
Vishnu Narayanan ce34f93917
fix: index email subject from conversation for outbound messages (#14122)
## Summary

Outbound email messages never populate
`content_attributes.email.subject`. The subject lives only on the parent
conversation's `additional_attributes.mail_subject`. The search index
doc built by `Messages::SearchDataPresenter` pulls from the
message-level field only, so outbound email subjects are unsearchable
for accounts on the advanced_search (Elasticsearch) path.

This change makes the presenter fall back to
`conversation.additional_attributes.mail_subject` when the message-level
subject is blank. Inbound email messages keep their existing behavior
(message-level subject takes precedence).

Closes https://linear.app/chatwoot/issue/CW-6877

## What changes

- `Messages::SearchDataPresenter#content_attributes_data` now falls back
to the conversation's `mail_subject` when the message-level subject is
blank.
- Added specs covering the fallback, precedence, and the neither-set
case.

## What does not change

- No schema changes, no migrations, no backfill of existing OpenSearch
documents.
- Searchkick's `after_commit :reindex_for_search` on `Message` will pick
up the new field for all newly created or updated messages via the
existing indexing path.
- Postgres search path (free accounts, fallback) is untouched. Broader
subject search for those users is a separate follow-up.
2026-04-22 20:36:35 +05:30
..
conversations fix: strip markdown hard-break backslashes from webhook payloads (#13950) 2026-04-16 13:19:35 +05:30
inbox feat: Add inbox webhook events (#8006) 2023-09-28 15:28:10 -07:00
messages fix: index email subject from conversation for outbound messages (#14122) 2026-04-22 20:36:35 +05:30
reports feat(v4): Update the report pages to show aggregate values (#10766) 2025-01-28 09:19:18 +05:30
agent_bot_presenter.rb Chore: API Improvements (#3469) 2021-11-27 00:48:46 +05:30
html_parser.rb Fix: parse verification mail (#3864) 2022-01-27 15:45:26 -08:00
mail_presenter.rb fix(mailbox): handle malformed sender address headers (#13486) 2026-02-11 11:02:38 -08:00
message_content_presenter.rb fix: strip markdown hard-break backslashes from webhook payloads (#13950) 2026-04-16 13:19:35 +05:30