FR-2: New Message Detection
- Compare the fetched message list against the currently cached
list
- Use message GUID as the canonical identifier (not text, not
timestamp)
- Detect both:
- Append: new messages at the end (most common)
- Insert: messages appearing in the middle (rare, but
possible with iMessage sync delays)
- Do not re-fetch the entire message history on every poll — fetch
only recent messages (e.g., last 10 or messages since the newest cached
timestamp)