github ReagentX/imessage-exporter 4.0.0
Sand Verbena

15 hours ago

iMessage Exporter 4.0.0: Sand Verbena contains the following fixes and improvements:

  • New Features
    • Support for jailbroken iOS filesystem data with --attachment-root (contributed by @iCrazeiOS)
    • Restructured diagnostics output
      • New diagnostics:
        • Recoverable deleted messages count
        • Message date range with human-readable time span
    • Improve chatroom participant deduplication using union-find
  • Performance (≈+8%)
    • Reduce dependency surface
      • Make protobuf-codegen optional behind proto-regen feature flag (-44 build dependencies for normal
        builds)
      • Remove indicatif dependency, replace with custom progress indicator (-7 transitive dependencies)
      • Remove filetime dependency (-2 transitive dependencies)
    • Refactor sanitization functions for improved performance
    • Cache from_guid query with prepare_cached
    • Optimize capacity allocation in handle and chat_handle_join caches
    • Defer clones in message body parsing
  • Bug Fixes
    • Fix incorrect contact matching on country codes for #671
    • Fix group removal/addition messages #670 and #681
    • Fix filename truncation panics on multi-byte UTF-8 characters using floor_char_boundary()
    • Fix estimated export space double-counting attachment sizes
    • Fix poll messages with no associated_message_guid being misclassified as poll updates
    • Fix is_from_me() incorrectly considering other_handle/share_direction on non-location-sharing messages
    • Fix file extension being added twice to attachment filenames
    • Remove duplicate fallback check and duplicate query in chat_handle_join diagnostics
    • Parameterize from_guid query to prevent SQL injection
    • Remove mismatched paragraph tag added to recovered messages
    • Use correct permissions when updating file metadata on Windows
    • Fix custom attachment path not applying to diagnostic runs
  • API Changes
    • Breaking
      • generate_text() replaced by parse_body() + apply_body() API
      • Table::stream() now propagates callback errors: Result<(), E> where E: From<TableError>
      • Diagnostic and Deduplicate traits removed; methods moved to inherent impls
      • run_diagnostic() methods return structured data types
      • Service::from() renamed to Service::from_name()
      • All Message::date() related signatures changed from &i64 to i64
      • date module functions now receive &DateTime instead of Result<&DateTime, MessageError>
      • get_sticker_effect() signature changed from Vec<u8> to &[u8]
      • util::output module removed
    • Ergonomic
      • Implement std::error::Error with source() chains for all error types
      • Table::extract() now has a default implementation
      • Chat::Properties fields made public
      • Derive PartialEq/Eq on most data types
  • Security
    • Introduce HtmlBuilder to separate trusted HTML structure from untrusted content
    • Sanitize Attachment metadata in HTML output
  • Miscellaneous
    • Support "Phone Number Changed" group action type
    • Deduplicate common exporter logic into shared.rs
    • Replace panic! with continue in Handle::build_person_id_lookup
    • Bump dependencies
    • Build with latest rustc

Don't miss a new imessage-exporter release

NewReleases is sending notifications on new releases.