iMessage Exporter 4.3.0: Shining Willow contains the following fixes and improvements:
- New Features
- macOS Golden Gate and iOS 27 Support
- Parse SMS filter categories, including allowed, junk, promotional, and transactional messages, for #790
- Preserve raw filter subcategory values for downstream crate consumers
- Parse attachment source attribution, including app name, bundle ID, and App Store ID, for #791
- Identify drawings created with the Messages drawing board
- Optional message-derived file timestamps for #785
- Add
--use-message-timesto stamp each transcript's creation time from its earliest rendered message and modification time from its latest - Set each new attachment file's creation time to its message date on macOS and Windows
- Leave directories and transcript files without messages unchanged
- Add
- macOS Golden Gate and iOS 27 Support
- Performance
- Resolve message result-set columns once per query instead of selecting an extraction path and rescanning column names for every row for #792
- Preserve narrow projections for current schemas and remove redundant joined columns from legacy queries
- Schema detection is now capability-based
- Bug Fixes
- Fix preflight attachment disk-space estimates ignoring conversation and date filters for #778
- Prevent a solo
-pinvocation that doesn't request diagnostics or exports from decrypting a database just to do nothing
- Enhancements
- Support reordered and omitted optional columns across Messages database schemas and custom message queries
- Tapbacks and tapback stickers render in chronological order
- Diagnostic output now shows detected database schema features
- Expose chat filtering status for #801
- API Changes
- Breaking
- Add
filter_actionandfilter_sub_actionfields toMessage Message::from_row()now deserializes by column name instead of assuming a fixed positional layout- Custom queries must preserve the required
rowid,guid,date,is_from_me,num_attachments, andnum_repliescolumn names
- Custom queries must preserve the required
- Query methods now take
&CapabilitiesMessage::from_guid,stream_rows,get_count,get_replies,get_votes,as_pollAttachment::from_message
- Add
- Ergonomic
- Add
FilterActionwith parsing, display, and filtered-category helpers - Add
Message::filter_action() - Add
AttachmentAttributionwith bundle ID, app name, App Store ID, and drawing-detection helpers - Add
Attachment::get_attribution() - Add
tables::capabilities::CapabilitiestypeCapabilities::determine(&Connection)probes a schema once- Query construction derives from the result
- Add
- Breaking
- Miscellaneous
- Reorganize message models into focused modules while preserving their public paths
- Update supported-version documentation
- Significant new test coverage
- Bump dependencies
- Build with latest
rustc