github ReagentX/imessage-exporter 5.0.1
Speckled Clarkia

3 hours ago

iMessage Exporter 5.0.1: Speckled Clarkia contains the following fixes and improvements:

  • New Features
    • Contacts-based conversation merging
      • Combine phone numbers and email addresses belonging to one person, including linked Contacts cards on macOS and iOS
      • Merge conversations split across those addresses, including group chats
      • Preserve separate group chats with different names unless Messages explicitly links them
      • Skip ambiguous identity matches when an address belongs to multiple Contacts cards
    • Allow --contacts-path (-n) to override the Contacts database in encrypted and unencrypted iOS backups
  • Performance
    • Read message bodies and edit histories with message rows instead of fetching them separately for each message
    • Parse body data directly from query results, avoiding intermediate buffers in the main decoding path
    • Replace the separate payload-presence query with a flag in the message query
  • Bug Fixes
    • Fix inflated poll vote counts when participants change selections or Messages repeats vote updates for #823
    • Fix null values in archived app-message payloads and render links as plain URLs when preview metadata is absent or null for #805
    • Preserve recovered body components and edit history when text recovery fails
    • Keep attachments and handwriting from recovered deleted messages in their conversation’s attachment directory for #827
    • Route messages from linked chat rows without participant records to their conversation instead of the orphaned transcript
    • Fix incorrect contact matches caused by country-code collisions and iOS search-index phone fragments
    • Reject unmatched conversation filters even when date filters are supplied
    • Reject out-of-range handwriting dimensions and handle empty text-rendering canvases
    • Fix a performance regression where the bundled SQLite 3.54 update recompiled cached queries for every message for #839
  • Enhancements
    • Improve conversation naming and filtering
      • Use one filename and attachment directory for every chat row in a merged conversation
      • Choose consistent contact names and fallback addresses, honoring linked contacts’ preferred names
      • List each participant once and improve long filename truncation and remaining-participant counts
      • Match conversation filters against every Messages address belonging to a grouped participant
    • Clarify diagnostic counts and report participants and conversations merged through Contacts
    • Improve database and backup path errors for #829, #808, #647, #590, #493, and #359
      • Distinguish missing paths, permission failures, invalid SQLite files, and databases without Messages data
      • Suggest database and backup locations based on files found on disk
      • Improve default home-directory resolution, including Windows support
  • API Changes
    • Breaking (migration guide)
      • Decode message text, body components, and edit history during row loading; remove separate body-decoding calls
      • Replace callback streaming and generic query/cache traits with prepared-statement iteration and concrete APIs
      • Separate participant identity groups from stored addresses and use those groups for chat deduplication
      • Return decoded timestamps in UTC and accept explicit timezones for date filtering and presentation
      • Separate exported attachment paths and media types from database rows
      • Revise diagnostic fields, error variants, and public module paths
    • Ergonomic
      • Re-export chrono, plist, and rusqlite from imessage_database
  • Miscellaneous
    • Exclude test fixtures from the published library package
    • Recommend cargo install --locked
    • Expand regression coverage, consolidate exporter tests, and enforce formatting in CI
    • Update supported-version documentation
    • Bump dependencies and build with latest rustc

⚠️ Version 5.0 includes breaking API changes and changes to conversation grouping, filenames, and attachment directories. See the migration guide for replacement APIs, examples, and export behavior.

Don't miss a new imessage-exporter release

NewReleases is sending notifications on new releases.