🚀 Major New Features
Timeline UI Enhancements
- ✨ Implemented sticky timeline markers that remain fixed at the top while scrolling, showing position number and timestamp
- ✨ Added vertical connection lines between timeline markers with dynamic height calculation for better visual hierarchy
- 🖼️ Created full-screen image preview overlay with zoom, pan, keyboard navigation, and multi-image support
- 📎 Added
AttachmentStripViewto display clickable attachment buttons in message cards - 🎨 Implemented marker opacity fade effect when scrolling past the top
- 🔄 Enhanced scroll behavior tracking to distinguish user-initiated scrolling from programmatic scrolling
- ⚡ Improved Now Mode detection with user activity window to prevent false toggles
Image Attachment Support
- 🖼️ Extended Claude session parsing to support image content blocks and extract data URLs
- 📦 Added
TimelineAttachmentDecoderservice to decode data URLs and extract image data with MIME type detection - 🔓 Created
TimelineAttachmentOpenerservice to resolve and open attachments in external applications - 💾 Implemented temporary file caching for data URL attachments via
TimelineAttachmentResolver - 🎨 Support for multiple image formats (PNG, JPEG, GIF, WebP, HEIC, TIFF, BMP, SVG)
- 📝 Extended data models (
EventMessagePayload,TimelineAttachment) to support both embedded and file-based attachments
Message Deduplication & Parsing Improvements
- 🔍 Added UUID-based deduplication to prevent processing duplicate JSONL records with identical UUIDs
- 🔄 Improved user message deduplication using timestamp+content hash for messages without message.id
- 🔗 Implemented
mergeConsecutiveUserMessagesinSessionTimelineLoaderto merge user messages with identical timestamps - 🚫 Added filtering logic to skip auto-generated image description messages (starting with "[Image:")
- 📊 Enhanced
SessionTimelineLoaderto convertimagesfrom payloads intoTimelineAttachmentobjects
Session Management Enhancements
- 🎯 Enhanced session project assignment with automatic matching based on directory paths after editing
- 👁️ Added methods to manage timeline visibility kinds for sessions, allowing for overrides and clearing of visibility settings
- 🔄 Refactored project assignment logic in
ProjectsListViewto utilize the new project matching method - 📋 Normalized conversation message types and visibility management across the application
Compatibility & Stability
- 🍎 Backported macOS 13.5 UI compatibility with availability fallbacks for SwiftUI APIs
- 🔧 Unified empty-state UI on older macOS versions
- 🔄 Restored
onChange(initial:)behavior for macOS 13.x - 🛠️ Aligned build target derivation from Xcode build settings in DMG script
- 🔗 Fixed timeline sync loop between message and marker lists using suppression flags
- ⏱️ Deferred marker scroll to allow layout updates for accordion effect
- 🖱️ Improved sticky header hit testing by replacing tap gesture with Button
⚡ Performance Optimizations
- 🚀 Optimized timeline refresh token mechanism and local activity state tracking
- 💨 Improved scroll state management to prevent unintended Now Mode toggles during user interaction
- 📦 Enhanced attachment resolution and caching for better performance
🐛 Bug Fixes
- 🔄 Fixed timeline sync and interaction issues between message and marker lists
- 🖱️ Improved sticky header interaction by replacing tap gesture with proper Button implementation
- ⏱️ Fixed marker scroll timing to properly support accordion layout effects
- 🍎 Resolved macOS 13.5 compatibility issues with SwiftUI API availability
- 🔧 Fixed build target derivation in DMG packaging script
🎨 UI/UX Improvements
- 🎯 Enhanced timeline navigation with persistent context (sticky marker) during scrolling
- 🔗 Improved visual hierarchy with connection lines showing relationships between timeline events
- 🖼️ Enabled rich image preview experience directly within the conversation timeline
- 📎 Added seamless attachment browsing and preview workflow
- 🎨 Improved scroll state management and user interaction feedback
- 🔄 Enhanced project assignment workflow with automatic directory matching
📊 Change Statistics
- Files Changed: 65 files
- Code Changes: +3,782 / -1,198 lines
- Major Commits: 8 feature and fix commits
📝 Technical Details
Data Model Extensions
- Added
imagesfield toEventMessagePayloadinSessionEvent.swift - Extended
TimelineAttachmentwithid,dataURL, andurlproperties - Implemented
Hashableconformance forTimelineAttachmentusingidas unique identifier
Service Layer Enhancements
- Created
TimelineAttachmentDecoderfor data URL decoding and MIME type detection - Created
TimelineAttachmentOpenerfor external application integration - Enhanced
ClaudeSessionParserwith image content block parsing - Improved
SessionTimelineLoaderwith message merging and attachment conversion logic
View Layer Improvements
- Major refactoring of
ConversationTimelineViewwith sticky markers and connection lines - Enhanced
SessionDetailViewwith timeline refresh token mechanism - Improved
ProjectsListViewwith automatic project matching - Added
AttachmentStripViewfor attachment display in message cards
Upgrade Recommendation: This release focuses on timeline UI enhancements and image attachment support. The sticky markers and connection lines significantly improve navigation in long conversations. Image preview functionality provides a seamless experience for reviewing visual content in Claude sessions. macOS 13.5 compatibility ensures the app runs smoothly on older systems. It is recommended to test the new timeline features with your existing sessions to familiarize yourself with the improved navigation.