github ReagentX/imessage-exporter 4.2.0
Stream Orchid

6 hours ago

iMessage Exporter 4.20: Stream Orchid contains the following fixes and improvements:

  • New Features
    • Inline sticker rendering for #755 and #756
      • Render Memoji, Genmoji, and custom stickers inline with surrounding message text in HTML exports
      • Scale inline-only sticker and emoji messages like jumbomoji
      • Resolve inline sticker attachments by file-transfer GUID instead of attachment row order
    • Digital Touch rendering for #344
      • Support taps, sketches, kisses, heartbeats, heartbreaks, fireballs, photos, and videos
      • HTML exports now render static Digital Touch frames as embedded SVG on a black 4:5 canvas
      • Photo Digital Touch messages render the photo backdrop with drawing overlays
      • Video Digital Touch messages render as embedded video players
      • TXT exports describe each effect with useful stroke, point, or beat metadata
    • Business Chat messages for #769 and #770
      • Render Quick Replies in HTML and TXT exports
      • Render Interactive Forms, including requests and submitted responses
      • Render List Pickers, including prompts and selected replies
    • Expanded Data Detector support
      • Parse structured currency amounts, postal addresses, package tracking numbers, flights, and unit/timezone conversions from DDScannerResult payloads
      • Preserve structured detector metadata for downstream crate consumers
  • Performance (≈+29%)
    • Optimize blob reads and database connection settings
    • Skip immediately discarded queries for tapbacks, poll votes, and poll updates
    • Cache resolved chat filenames
    • Increase base buffered-writer capacity
    • Pre-size date formatting buffers
  • Bug Fixes
    • Fix multi-attachment and inline-sticker pairing by matching body ranges to attachment rows by GUID
    • Preserve translated text, original text, and inline stickers in mixed HTML and TXT runs
    • Render edited Memoji / Genmoji history as inline images
    • Fix malformed empty-stroke handling in handwriting messages
    • Fix handwriting SVG file writes
    • Prevent Check In timestamp overflow
    • Add overflow handling to message parsing paths
    • Add plist UID recursion-limit handling
    • Fix index references in event parsing errors
    • Fix currency detection edge cases
    • Fix Digital Touch alpha conversion for SVG/CSS colors
    • Improve Digital Touch media kind matching in HTML exports
    • Remove CSS :has selector usage for broader HTML viewer compatibility
    • Improve resolved-contact percentage calculation
    • Correct busy-bar gating for attachment work
  • Enhancements
    • Refactor AttachmentManager into focused planning, target-resolution, mode, and execution modules
    • Reuse existing attachment outputs when rerunning exports against the same destination
    • Refactor temporary encrypted-backup database handling so cleanup happens after SQLite connections close
    • Add table and column existence checks for diagnostics on older database schemas
    • Centralize diagnostic count queries
    • Centralize URL/rich-link metadata handling behind shared helper traits
    • Centralize progress tracking logic
    • Migrate typedstream parsing to crabstep's foundation feature
    • Reorganize text-effect parsing into focused animation, style, and detected-data modules
    • Add dedicated Digital Touch models and SVG render pipeline
    • Add Business Chat parsing and rendering models behind the shared balloon-provider flow
  • API Changes
    • Breaking
      • Replace BubbleComponent::Text and BubbleComponent::Attachment with BubbleComponent::Run(Vec<AttributedRange>)
      • Replace TextAttributes with AttributedRange
        • Use AttributedRange::text(...), AttributedRange::attachment(...), or AttributedRange::inline_attachment(...)
        • Attachment ranges now carry attachment: Option<AttachmentMeta> and emoji_image
      • Move text-effect types into submodules:
        • message_types::text_effects::text_effect::TextEffect
        • message_types::text_effects::style::Style
        • message_types::text_effects::animation::Animation
        • message_types::text_effects::detected::unit::Unit
      • Replace digital_touch::from_payload with DigitalTouchMessage::from_payload
      • Replace the exported DigitalTouch alias with typed Digital Touch message models
      • Add guid to Attachment
      • Remove the unused typedstream error module
    • Ergonomic
      • Add BusinessMessage, QuickReply, FormRequest, FormResponse, ListPicker, and related model types
      • Add DigitalTouchMessage::render_svg() and DigitalTouchMessage::render_text()
      • Add DigitalTouchError
      • Add structured detected-data models:
        • DetectedAddress
        • DetectedCurrency
        • Flight
        • ShipmentTracking
        • Expanded Unit
      • Add ScannerResult and FromScannerResult helpers for Data Detector payload parsing
      • Add Attachment::is_animated_sticker()
      • Add HasUrl implementations for message types with URL-like payloads
      • Add translation helper methods used by shared rendering paths
  • Security
    • Add capped buffers for payload parsing
    • Reject oversized Digital Touch stroke counts before allocation
    • Add plist recursion-limit handling
    • Harden URL parsing logic
    • Prevent integer overflow in timestamp conversion paths
  • Miscellaneous
    • Update supported-features documentation
    • Update Digital Touch FAQ
    • Add substantial fixtures for Business Chat, Digital Touch, Data Detector, typedstream, inline sticker, translation, and edited-message cases
    • Significant new test coverage
    • Remove dead code
    • Clippy cleanups
    • Bump dependencies
    • Build with latest rustc

Don't miss a new imessage-exporter release

NewReleases is sending notifications on new releases.