The privacy story is incomplete without a way to actually hand the
data over. New Export section in the Privacy tab streams matching
messages to a Markdown, JSON or CSV file using Dalamud's file
dialog and a background thread, so the settings UI stays
responsive even when the export crawls a 150k-message archive.
MessageStore.StreamForExport returns a MessageEnumerator over
non-deleted rows filtered by ChatType list and date range, sorted
ascending. MessageExporter.ExportToFile takes that enumerator,
optionally narrows by SenderSource.TextValue substring (case-
insensitive), and writes one of three formats:
Markdown — human-readable, day headers, [HH:mm] ChatType Sender:
prefix per line, trailing total.
JSON — single object with metadata (filter snapshot, exported_at,
plugin name) and a messages array carrying id, ISO-8601 date,
numeric and named ChatType, source/target kinds, receiver,
content_id, sender plaintext, content plaintext.
CSV — header line plus quoted-when-needed rows for spreadsheet
ingestion.
Sender plaintext, channel filter, date range and format are
exposed as form fields above the Export button. Empty channel
selection means "all stored channels", a 0-day range means "no
time limit". Result count and target path are reported via
WrapperUtil notifications.